cozy

На Пикабу
поставил 0 плюсов и 1 минус
отредактировал 0 постов
проголосовал за 0 редактирований
Награды:
5 лет на Пикабу
1433 рейтинг 1 подписчик 0 подписок 15 постов 4 в горячем

Реклама в Берлинском метро

Реклама в Берлинском метро Берлин, Метро, Реклама, Боги маркетинга
Показать полностью 1

Барселона. Саграда

Барселона. Саграда

Черногория. Дурмитор

Черногория. Дурмитор

Черногория

Черногория Путешествия, Черногория
Черногория Путешествия, Черногория
Показать полностью 1

Weather widget на NodeMCU или ESP8266

Отступление

Не люблю смотреть погоду на телефоне и часто забываю сделать это перед выходом из дома. А такой виджет всегда на виду и волей не волей погоду узнаешь.


Захотелось сделать что-то своими руками полезного. На instructables нашелся отличный пост по тому как сделать погодный виджет на базе esp8266 или nodemcu.

На nodemcu проще - плата, oled, 4 провода и готово. На esp8266 сложнее, но и интереснее.

Я сделал оба варианта и добавил кое-что от себя в данный проект: скорость ветра, время рассвета и заката, загруженность дорог.


По ссылке http://www.instructables.com/id/ESP8266-Weather-Widget/ описано все подробно и проблем возникнуть не должно. Сделав все по инструкции мы получим окна с текущей датой и временем, окно с текущей погодой, прогноз на три дня, давление, осадки и влажность.

Единственный момент - в этой инструкции перепутаны SDA и SCL пины. Подключить нужно в обратном порядке.


Чтобы добавить дополнительных экранов нужно:


В коде указать нужное кол-во экранов в переменной и дописать drawFrame{N} в следующем месте:

void (*frameCallbacks[])(int x, int y) = {drawFrame1, drawFrame2, drawFrame3, drawFrame4};

int numberOfFrames = 4;


Далее в программе в соответствующих функциях дополнить своим кодом:

void drawFrame4(int x, int y) {...}


Загруженность трафиком, время рассвета и заката я получал с помощью thingspeak.com

Делал все по этой инструкции: https://www.youtube.com/watch?v=4vKxGHGYOtI


В двух словах: портал парсит страницу, выдерает нужный кусок данных и отдает через свой API. Все что оставалось, так это почистить немного данные от мусора (в видео об этом сказано) и вывести на экран.


Парсил я страницу городского портала. На ней, к слову, было много полезной инфы: курсы валют, погода, погода по ощущению и т.д.


В итоге кусок кода для получения времени рассвета и заката у меня выглядит так:


String sunset()

{

String result;

HTTPClient http;

const char kUrl[] = "api.thingspeak.com";

const char kPath[] = "/apps/thinghttp/send_request?api_key=my_apikey_here";

http.begin(kUrl,80,kPath);

int httpCode = http.GET();

if(httpCode == 200) {

String payload = http.getString();

int i = 0;

while (payload.charAt(i) != ':') // Character before required data starts.

i++;

String sunr = payload.substring(i-2,i+3);

payload = payload.substring(i+2);

int j = 0;

while (payload.charAt(j) != ':') // Character after required data ends.

j++;

String suns = payload.substring(j-2, j+3);

result = sunr+"-"+suns;

}

return (result);

}



Какую информацию выводить на экране - решать вам. У меня сразу появилось несколько неплохих идей. Например, вместо индекса загруженности города выводить загруженность по  определенному рутинному маршруту (дом-работа). Или для этого маршрута, при наличии нескольких альтернативных дорого, выводить ту, по которой быстрее всего.

Weather widget на NodeMCU или ESP8266 Arduino, Esp8266, Nodemcu, Видео, Длиннопост, Погода, Виджет
Weather widget на NodeMCU или ESP8266 Arduino, Esp8266, Nodemcu, Видео, Длиннопост, Погода, Виджет
Weather widget на NodeMCU или ESP8266 Arduino, Esp8266, Nodemcu, Видео, Длиннопост, Погода, Виджет
Weather widget на NodeMCU или ESP8266 Arduino, Esp8266, Nodemcu, Видео, Длиннопост, Погода, Виджет
Weather widget на NodeMCU или ESP8266 Arduino, Esp8266, Nodemcu, Видео, Длиннопост, Погода, Виджет
Weather widget на NodeMCU или ESP8266 Arduino, Esp8266, Nodemcu, Видео, Длиннопост, Погода, Виджет
Показать полностью 6 1

Тбилиси. Кафе Purpur

Тбилиси. Кафе Purpur

Грузия. Джвари

Грузия. Джвари Грузия, Джвари, Фотография
Показать полностью 1

Где-то в старом Тбилиси

Где-то в старом Тбилиси
Отличная работа, все прочитано!