• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Делюсь опытом Библиотека для работы с погодой

H`UGO

New member
А как можно подобным способом запросить курс валют например с сайта ЦБ Центральный банк Российской Федерации, или, точнее а также, цену на нефть?
Перековырял весь интернет, не нашёл даже близко ничего. Может есть ссылка или совет в каком направлении идти.
Или хотя бы поясните как вообще может выглядеть обращение ESP8266 - 12 на сайт, и прочитать данные с него, в порт, для начала.
 

enjoynering

Well-known member
открываете хром в режиме разработчика и смотрите запросы-ответы или ставите wireshark
 

fps

Active member
Перековырял весь интернет, не нашёл даже близко ничего
У меня, похоже, какой-то другой интернет.
google.com/search?q=курс+валют+json+api - сходу выдает просто море ссылок

Про нефть не так много но, тоже вроде аналогично есть.
 

H`UGO

New member
Я вроде бы как понятно сформулировал вопрос. Зайти в интернет с ноута или смартфона, наконец установить соответствующее приложение можно и без помощи ESP8266 да и зачем она вообще нужна!?
Я интересуюсь как это сделать только при помощь ESP?
Запросить данные на сайте (с ESP8266) и постлать в порт полученный ответ.
Если он будет внятный, я отфильтрую лишнее и выведу на экран то, что мне надо.
А ссылки на сайты с курсами валют мне не надо, типа я поисковиком не умею пользоваться.
 

p-a-h-a

Member
А как можно подобным способом запросить курс валют например с сайта ЦБ Центральный банк Российской Федерации, или, точнее а также, цену на нефть?
Перековырял весь интернет, не нашёл даже близко ничего. Может есть ссылка или совет в каком направлении идти.
Или хотя бы поясните как вообще может выглядеть обращение ESP8266 - 12 на сайт, и прочитать данные с него, в порт, для начала.
ищите "API Центральный банк " и разбираетесь в нем. Кусок кода (на ESP32 отлажен) для получения курса валют Приватбанка:
C:
#include <HTTPClient.h>
#include <ArduinoJson.h>
struct {
  float USD[2], EURO[2];
} LCD;

void Privat24() {
  HTTPClient http;
  http.begin("https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5");
  http.GET();
  DynamicJsonDocument Answer(1200);                                 // Инициализируем буфер под JSON // Эта константа определяет размер буфера под содержимое JSON 8ми датчиков (расчитывается тут https://arduinojson.org/v5/assistant/)
  deserializeJson(Answer, http.getString());                     // Парсим JSON-содержимое ответа сервера
  http.end();
  //Serial.println(Answer.as<String>()); //Выводим содержимое что прислал сервер
  if (debug) {
    serializeJsonPretty(Answer, Serial); Serial.println(); //Выводим содержимое что прислал сервер красиво по строчкам
    Serial.print(String(Answer[0]["buy"].as<String>().substring(0, 5)) + " USD "); // Покупка USD
    Serial.println(Answer[0]["sale"].as<String>().substring(0, 5)); // Продажа USD
    Serial.print(String(Answer[1]["buy"].as<String>().substring(0, 5)) + " EUR "); // Покупка EUR
    Serial.println(Answer[1]["sale"].as<String>().substring(0, 5)); //Продажа EUR
  }
  boolean data_ok = true;
  if (Answer[0]["buy"] == "null" || Answer[1]["buy"] == "null") {
    esp_sleep_enable_timer_wakeup(60e6);
    data_ok = false;
  }
// Дальше заполняются глобальные переменные
  if (data_ok) { //Только если получили данные - обновляем их в переменных отображения на дисплее
    LCD.USD[0] = Answer[0]["buy"];
    LCD.USD[1] = Answer[0]["sale"];
    LCD.EURO[0] = Answer[1]["buy"];
    LCD.EURO[1] = Answer[1]["sale"];
    Answer.clear();
  }
}
 

p-a-h-a

Member
изображение_viber_2021-02-11_23-41-47.jpg
Вот функция Openweather c прогнозом (ESP32), оперативку кушает дай бог, не уверен что на 8266 заведется.
Код:
#include <HTTPClient.h>
#include <ArduinoJson.h>
#include <TimeLib.h>
#define debug true
#define openweatheGET "https://api.openweathermap.org/data/2.5/onecall?lat=47.010042&lon=35.950216&units=metric&lang=ru&exclude=minutely,hourly&appid=тут_apikey_свой_нужно_писать_"
struct {
  float temp;
  int temp_day[5], temp_night[5];
  byte wind_speed[5];
  int wind_deg[5]; 
  byte icon[5],icon_now;
  int pressure;
  byte humidity;
  float battary_voltage = 3.31;
  float USD[2], EURO[2];
  int ID[5],ID_now;
  String wind[5];
} LCD;

void Openweather() {
  HTTPClient http;
  if (debug) Serial.println(openweatheGET);
  http.begin(openweatheGET); //http://api.openweathermap.org/data/2.5/weather?lat=47.810042&lon=35.050216&units=metric&lang=ru&appid=&appid=80b41293c19a2c505d3b05d42f22bc8e
  http.GET();
  DynamicJsonDocument Answer(8000);                                 // Инициализируем буфер под JSON // Эта константа определяет размер буфера под содержимое JSON 8ми датчиков (расчитывается тут https://arduinojson.org/v5/assistant/)
  deserializeJson(Answer, http.getString());                     // Парсим JSON-содержимое ответа сервера
  http.end();
  //Serial.println(Answer.as<String>()); //Выводим содержимое что прислал сервер
  if (debug) serializeJsonPretty(Answer, Serial); Serial.println(); //Выводим содержимое что прислал сервер красиво по строчкам

  if (Answer["current"]["weather"][0]["description"].as<String>() == "null") {
    Serial.println("Данные openweathermap.org не получены. Перезагрузка.");
    ESP.restart();
  }
  boolean data_ok = true;
  if (Answer["current"]["temp"] == "null" || Answer["current"]["wind_speed"] == "null") {
    esp_sleep_enable_timer_wakeup(60e6);
    data_ok = false;
  }

  if (data_ok) { //Только если получили данные - обновляем их в переменных отображения на дисплее
    //Забиваем структуру вывода на дисплей текущей погодой
    LCD.temp = Answer["current"]["temp"]; //Температура
    LCD.icon_now = Answer["current"]["weather"][0]["icon"].as<String>().substring(0, 2).toInt(); //Иконка. Берем от начала два знака и переводим их в числовое значение
    LCD.wind_speed[0] = Answer["current"]["wind_speed"]; //Скорость ветра
    LCD.pressure = Answer["current"]["pressure"]; //Давление мПа
    LCD.pressure = LCD.pressure * 100 / 133; //Переводим в мм.рт.ст
    LCD.humidity = Answer["current"]["humidity"]; //Влажность
    LCD.wind_deg[0] = Answer["current"]["wind_deg"]; //Направление ветра
    LCD.ID_now= Answer["current"]["weather"][0]["id"].as<String>().toInt(); // id погоды
    //Забиваем структуру вывода на дисплей прогнозом на 4 дня
    for (int Day = 0; Day < 4; Day++) {
      LCD.temp_day[Day] = Answer["daily"][Day]["temp"]["day"];
      LCD.temp_night[Day] = Answer["daily"][Day]["temp"]["night"];
      LCD.icon[Day] = Answer["daily"][Day]["weather"][0]["icon"].as<String>().substring(0, 2).toInt();
      LCD.ID[Day]=Answer["daily"][Day]["weather"][0]["id"].as<String>().toInt();
      LCD.wind_speed[Day] = Answer["daily"][Day]["wind_speed"];
      LCD.wind_deg[Day] = Answer["daily"][Day]["wind_deg"];
      LCD.wind[Day]=wind_deg_to_Word(Answer["daily"][Day]["wind_deg"]);
    }
  }

  if (debug) {
    //// Погода сейчас
    Serial.println("Данные openweathermap.org " + Answer["timezone"].as<String>());//город
    Serial.println("Погода за окном:");
    Serial.println(Answer["current"]["weather"][0]["description"].as<String>());// Явление погоды
    Serial.println("Иконка " + Answer["current"]["weather"][0]["icon"].as<String>());// Иконка
    Serial.println("ID " + Answer["current"]["weather"][0]["id"].as<String>());// Иконка
    Serial.println("Температура " + Answer["current"]["temp"].as<String>() + " ощущается как " + Answer["current"]["feels_like"].as<String>()); // Температура

    Serial.println("Облачность " + Answer["current"]["clouds"].as<String>() + " %"); // Облачность
    Serial.println("Скорость ветра " + Answer["current"]["wind_speed"].as<String>() + " м/с"); // Скорость ветра
    Serial.println("Давление " + Answer["current"]["pressure"].as<String>() + " Па");
    Serial.println("Влажность " + Answer["current"]["humidity"].as<String>() + " %");
    Serial.println("Точка росы " + Answer["current"]["dew_point"].as<String>() + " 'С");
    Serial.println("Ультрафиолетовый индекс " + Answer["current"]["uvi"].as<String>());
    Serial.println("Видимость " + Answer["current"]["visibility"].as<String>() + " м");
    Serial.println("Направление ветра " + Answer["current"]["wind_deg"].as<String>() + " градусов метеорологических\r\n");
    ////Прогноз наперед
    time_t unix;
    time_t timezone = Answer["timezone_offset"].as<time_t>();
    for (byte Day = 1; Day < 8; Day++) {
      Serial.println(Day);
      unix = Answer["daily"][Day]["dt"].as<time_t>() + timezone;
      Serial.printf("Прогноз на %02d.%02d.%4d\r\n", day(unix), month(unix), year(unix));
      unix = Answer["daily"][Day]["sunrise"].as<time_t>() + timezone;
      Serial.printf("Восход в %02d:%02d\r\n", hour(unix), minute(unix));
      unix = Answer["daily"][Day]["sunset"].as<time_t>() + timezone;
      Serial.printf("Закат в %02d:%02d\r\n", hour(unix), minute(unix));
      Serial.println(Answer["daily"][Day]["weather"][0]["description"].as<String>() + "."); //Погодное явление
      Serial.println("Температура утром " + Answer["daily"][Day]["temp"]["morn"].as<String>() + " 'С");
      Serial.println("Температура днем " + Answer["daily"][Day]["temp"]["day"].as<String>() + " 'С");
      Serial.println("Температура вечером " + Answer["daily"][Day]["temp"]["eve"].as<String>() + " 'С");
      Serial.println("Температура ночью " + Answer["daily"][Day]["temp"]["night"].as<String>() + " 'С");
      Serial.println("Давление " + Answer["daily"][Day]["pressure"].as<String>() + " Па");
      Serial.println("Влажность " + Answer["daily"][Day]["humidity"].as<String>() + " %");
      Serial.println("Точка росы " + Answer["daily"][Day]["dew_point"].as<String>() + " 'С");
      Serial.println("Ветер " + Answer["daily"][Day]["wind_speed"].as<String>() + " м/с");
      Serial.println("Направление ветра " + Answer["daily"][Day]["wind_deg"].as<String>() + " градусов метеорологических");
      Serial.println("Облачность " + Answer["daily"][Day]["clouds"].as<String>() + " %");
      Serial.println("Вероятность осадков " + Answer["daily"][Day]["pop"].as<String>() + " %");
      Serial.println("Ультрафиолетовый индекс  " + Answer["daily"][Day]["uvi"].as<String>() + " %");
      Serial.println("Иконка " + Answer["daily"][Day]["weather"][0]["icon"].as<String>() );
      Serial.println("Иконка " + Answer["daily"][Day]["weather"][0]["id"].as<String>() + "\r\n");
    }
  }
  Answer.clear();
}

String wind_deg_to_Word(int wind_deg){
if (wind_deg<22) return "с"; // Инфа по переводу градусов в направление ветра тут https://studopedia.org/11-92976.html
if (wind_deg<45) return "ссв";
if (wind_deg<67) return "св";
if (wind_deg<90) return "всв";
if (wind_deg<112) return "в";
if (wind_deg<135) return "вюв";
if (wind_deg<157) return "юв";
if (wind_deg<180) return "ююв";
if (wind_deg<202) return "ю";
if (wind_deg<225) return "ююз";
if (wind_deg<247) return "юз";
if (wind_deg<270) return "зюз";
if (wind_deg<292) return "з";
if (wind_deg<315) return "зсз";
if (wind_deg<337) return "сз";//сз
if (wind_deg<361) return "с";
return "--";
}
Вот это бы запихнуть в библиотеку...
 

p-a-h-a

Member
И собственно что функция в Serial пишет:
Код:
https://api.openweathermap.org/data/2.5/onecall?lat=47.010042&lon=35.950216&units=metric&lang=ru&exclude=minutely,hourly&appid=_Ваш_ipi_key
{
  "lat": 47.81,
  "lon": 35.0502,
  "timezone": "Europe/Zaporozhye",
  "timezone_offset": 7200,
  "current": {
    "dt": 1613079371,
    "sunrise": 1613019158,
    "sunset": 1613055337,
    "temp": 6.84,
    "feels_like": 3.08,
    "pressure": 1005,
    "humidity": 93,
    "dew_point": 5.79,
    "uvi": 0,
    "clouds": 75,
    "visibility": 10000,
    "wind_speed": 4,
    "wind_deg": 130,
    "weather": [
      {
        "id": 803,
        "main": "Clouds",
        "description": "облачно с прояснениями",
        "icon": "04n"
      }
    ]
  },
  "daily": [
    {
      "dt": 1613034000,
      "sunrise": 1613019158,
      "sunset": 1613055337,
      "temp": {
        "day": 4.22,
        "min": -1.15,
        "max": 7.2,
        "night": 6.84,
        "eve": 6.57,
        "morn": -0.97
      },
      "feels_like": {
        "day": -0.65,
        "night": 1.47,
        "eve": 1.79,
        "morn": -4.1
      },
      "pressure": 1013,
      "humidity": 82,
      "dew_point": 1.52,
      "wind_speed": 4.43,
      "wind_deg": 122,
      "weather": [
        {
          "id": 803,
          "main": "Clouds",
          "description": "облачно с прояснениями",
          "icon": "04d"
        }
      ],
      "clouds": 72,
      "pop": 0,
      "uvi": 1.24
    },
    {
      "dt": 1613120400,
      "sunrise": 1613105462,
      "sunset": 1613141832,
      "temp": {
        "day": 4.55,
        "min": -10.07,
        "max": 7.11,
        "night": -10.07,
        "eve": -6.96,
        "morn": 5.97
      },
      "feels_like": {
        "day": 0.09,
        "night": -18.74,
        "eve": -16.14,
        "morn": 0.84
      },
      "pressure": 1002,
      "humidity": 87,
      "dew_point": 2.65,
      "wind_speed": 4.12,
      "wind_deg": 275,
      "weather": [
        {
          "id": 616,
          "main": "Snow",
          "description": "снег с дождём",
          "icon": "13d"
        }
      ],
      "clouds": 100,
      "pop": 1,
      "rain": 0.79,
      "snow": 4.52,
      "uvi": 0.56
    },
    {
      "dt": 1613206800,
      "sunrise": 1613191766,
      "sunset": 1613228328,
      "temp": {
        "day": -8.83,
        "min": -10.38,
        "max": -8.400001,
        "night": -9.8,
        "eve": -8.87,
        "morn": -10.28
      },
      "feels_like": {
        "day": -19.05,
        "night": -17.98,
        "eve": -18.03,
        "morn": -19.23
      },
      "pressure": 1014,
      "humidity": 88,
      "dew_point": -14.05,
      "wind_speed": 10.18,
      "wind_deg": 251,
      "weather": [
        {
          "id": 804,
          "main": "Clouds",
          "description": "пасмурно",
          "icon": "04d"
        }
      ],
      "clouds": 100,
      "pop": 0.05,
      "uvi": 1.46
    },
    {
      "dt": 1613293200,
      "sunrise": 1613278067,
      "sunset": 1613314824,
      "temp": {
        "day": -8.63,
        "min": -10.51,
        "max": -7.75,
        "night": -9.82,
        "eve": -8.52,
        "morn": -10.22
      },
      "feels_like": {
        "day": -15.73,
        "night": -15.57,
        "eve": -14.47,
        "morn": -17.7
      },
      "pressure": 1023,
      "humidity": 89,
      "dew_point": -13.26,
      "wind_speed": 5.77,
      "wind_deg": 291,
      "weather": [
        {
          "id": 804,
          "main": "Clouds",
          "description": "пасмурно",
          "icon": "04d"
        }
      ],
      "clouds": 100,
      "pop": 0.15,
      "uvi": 1.57
    },
    {
      "dt": 1613379600,
      "sunrise": 1613364368,
      "sunset": 1613401319,
      "temp": {
        "day": -7.35,
        "min": -11.59,
        "max": -4.82,
        "night": -5.78,
        "eve": -6.69,
        "morn": -11.59
      },
      "feels_like": {
        "day": -11.64,
        "night": -10.32,
        "eve": -11.09,
        "morn": -16.38
      },
      "pressure": 1026,
      "humidity": 86,
      "dew_point": -13.67,
      "wind_speed": 1.84,
      "wind_deg": 263,
      "weather": [
        {
          "id": 600,
          "main": "Snow",
          "description": "небольшой снег",
          "icon": "13d"
        }
      ],
      "clouds": 0,
      "pop": 0.3,
      "snow": 0.21,
      "uvi": 1.53
    },
    {
      "dt": 1613466000,
      "sunrise": 1613450667,
      "sunset": 1613487814,
      "temp": {
        "day": -5.81,
        "min": -8.24,
        "max": -4.88,
        "night": -8.24,
        "eve": -6.41,
        "morn": -7.34
      },
      "feels_like": {
        "day": -11.15,
        "night": -15.54,
        "eve": -12.8,
        "morn": -12.07
      },
      "pressure": 1023,
      "humidity": 93,
      "dew_point": -9.16,
      "wind_speed": 3.65,
      "wind_deg": 6,
      "weather": [
        {
          "id": 600,
          "main": "Snow",
          "description": "небольшой снег",
          "icon": "13d"
        }
      ],
      "clouds": 88,
      "pop": 0.28,
      "snow": 0.14,
      "uvi": 1.48
    },
    {
      "dt": 1613552400,
      "sunrise": 1613536965,
      "sunset": 1613574309,
      "temp": {
        "day": -5.91,
        "min": -9.09,
        "max": -5.01,
        "night": -9.09,
        "eve": -6.53,
        "morn": -7.1
      },
      "feels_like": {
        "day": -14.61,
        "night": -16.93,
        "eve": -14.68,
        "morn": -14.54
      },
      "pressure": 1021,
      "humidity": 87,
      "dew_point": -11.97,
      "wind_speed": 8.32,
      "wind_deg": 26,
      "weather": [
        {
          "id": 804,
          "main": "Clouds",
          "description": "пасмурно",
          "icon": "04d"
        }
      ],
      "clouds": 100,
      "pop": 0,
      "uvi": 2
    },
    {
      "dt": 1613638800,
      "sunrise": 1613623261,
      "sunset": 1613660804,
      "temp": {
        "day": -8.58,
        "min": -11.84,
        "max": -6.88,
        "night": -11.84,
        "eve": -8.54,
        "morn": -10.81
      },
      "feels_like": {
        "day": -15.4,
        "night": -17.83,
        "eve": -15.04,
        "morn": -18.36
      },
      "pressure": 1027,
      "humidity": 84,
      "dew_point": -15.35,
      "wind_speed": 5.29,
      "wind_deg": 12,
      "weather": [
        {
          "id": 803,
          "main": "Clouds",
          "description": "облачно с прояснениями",
          "icon": "04d"
        }
      ],
      "clouds": 76,
      "pop": 0,
      "uvi": 2
    }
  ]
}
Данные openweathermap.org Europe/Zaporozhye
Погода за окном:
облачно с прояснениями
Иконка 04n
ID 803
Температура 6.84 ощущается как 3.08
Облачность 75 %
Скорость ветра 4 м/с
Давление 1005 Па
Влажность 93 %
Точка росы 5.79 'С
Ультрафиолетовый индекс 0
Видимость 10000 м
Направление ветра 130 градусов метеорологических

1
Прогноз на 12.02.2021
Восход в 06:51
Закат в 16:57
снег с дождём.
Температура утром 5.97 'С
Температура днем 4.55 'С
Температура вечером -6.96 'С
Температура ночью -10.07 'С
Давление 1002 Па
Влажность 87 %
Точка росы 2.65 'С
Ветер 4.12 м/с
Направление ветра 275 градусов метеорологических
Облачность 100 %
Вероятность осадков 1 %
Ультрафиолетовый индекс  0.56 %
Иконка 13d
Иконка 616

2
Прогноз на 13.02.2021
Восход в 06:49
Закат в 16:58
пасмурно.
Температура утром -10.28 'С
Температура днем -8.83 'С
Температура вечером -8.87 'С
Температура ночью -9.8 'С
Давление 1014 Па
Влажность 88 %
Точка росы -14.05 'С
Ветер 10.18 м/с
Направление ветра 251 градусов метеорологических
Облачность 100 %
Вероятность осадков 0.05 %
Ультрафиолетовый индекс  1.46 %
Иконка 04d
Иконка 804

3
Прогноз на 14.02.2021
Восход в 06:47
Закат в 17:00
пасмурно.
Температура утром -10.22 'С
Температура днем -8.63 'С
Температура вечером -8.52 'С
Температура ночью -9.82 'С
Давление 1023 Па
Влажность 89 %
Точка росы -13.26 'С
Ветер 5.77 м/с
Направление ветра 291 градусов метеорологических
Облачность 100 %
Вероятность осадков 0.15 %
Ультрафиолетовый индекс  1.57 %
Иконка 04d
Иконка 804

4
Прогноз на 15.02.2021
Восход в 06:46
Закат в 17:01
небольшой снег.
Температура утром -11.59 'С
Температура днем -7.35 'С
Температура вечером -6.69 'С
Температура ночью -5.78 'С
Давление 1026 Па
Влажность 86 %
Точка росы -13.67 'С
Ветер 1.84 м/с
Направление ветра 263 градусов метеорологических
Облачность 0 %
Вероятность осадков 0.3 %
Ультрафиолетовый индекс  1.53 %
Иконка 13d
Иконка 600

5
Прогноз на 16.02.2021
Восход в 06:44
Закат в 17:03
небольшой снег.
Температура утром -7.34 'С
Температура днем -5.81 'С
Температура вечером -6.41 'С
Температура ночью -8.24 'С
Давление 1023 Па
Влажность 93 %
Точка росы -9.16 'С
Ветер 3.65 м/с
Направление ветра 6 градусов метеорологических
Облачность 88 %
Вероятность осадков 0.28 %
Ультрафиолетовый индекс  1.48 %
Иконка 13d
Иконка 600

6
Прогноз на 17.02.2021
Восход в 06:42
Закат в 17:05
пасмурно.
Температура утром -7.1 'С
Температура днем -5.91 'С
Температура вечером -6.53 'С
Температура ночью -9.09 'С
Давление 1021 Па
Влажность 87 %
Точка росы -11.97 'С
Ветер 8.32 м/с
Направление ветра 26 градусов метеорологических
Облачность 100 %
Вероятность осадков 0 %
Ультрафиолетовый индекс  2 %
Иконка 04d
Иконка 804

7
Прогноз на 18.02.2021
Восход в 06:41
Закат в 17:06
облачно с прояснениями.
Температура утром -10.81 'С
Температура днем -8.58 'С
Температура вечером -8.54 'С
Температура ночью -11.84 'С
Давление 1027 Па
Влажность 84 %
Точка росы -15.35 'С
Ветер 5.29 м/с
Направление ветра 12 градусов метеорологических
Облачность 76 %
Вероятность осадков 0 %
Ультрафиолетовый индекс  2 %
Иконка 04d
Иконка 803
 

p-a-h-a

Member
Немного сейчас поразмыслил и решил сэкономить 5,5 кБ памяти применив фильтр. На 8266 точно заведется.
C++:
#include <ArduinoJson.h>
void setup() {
  Serial.begin(115200);
  //Тут фильтр, который разрешает конкретные параметры только принимать
  static const char filter_arr[] PROGMEM = "{timezone:true,current:{temp:true,pressure:true,wind_speed:true,wind_deg:true,weather:[{id:true}]},daily:[{temp:{day:true,night:true},pressure:true,wind_speed:true,wind_deg:true,weather:[{id:true}]},{temp:{day:true,night:true},pressure:true,wind_speed:true,wind_deg:true,weather:[{id:true}]}]}";// 294 байта
  //Тут прогноз на неделю
  static const char Openweather_arr[] PROGMEM = "{\"lat\":47.81,\"lon\":35.0502,\"timezone\":\"Europe/Zaporozhye\",\"timezone_offset\":7200,\"current\":{\"dt\":1613079371,\"sunrise\":1613019158,\"sunset\":1613055337,\"temp\":6.84,\"feels_like\":3.08,\"pressure\":1005,\"humidity\":93,\"dew_point\":5.79,\"uvi\":0,\"clouds\":75,\"visibility\":10000,\"wind_speed\":4,\"wind_deg\":130,\"weather\":[{\"id\":803,\"main\":\"Clouds\",\"description\":\"облачно с прояснениями\",\"icon\":\"04n\"}]},\"daily\":[{\"dt\":1613034000,\"sunrise\":1613019158,\"sunset\":1613055337,\"temp\":{\"day\":4.22,\"min\":-1.15,\"max\":7.2,\"night\":6.84,\"eve\":6.57,\"morn\":-0.97},\"feels_like\":{\"day\":-0.65,\"night\":1.47,\"eve\":1.79,\"morn\":-4.1},\"pressure\":1013,\"humidity\":82,\"dew_point\":1.52,\"wind_speed\":4.43,\"wind_deg\":122,\"weather\":[{\"id\":803,\"main\":\"Clouds\",\"description\":\"облачно с прояснениями\",\"icon\":\"04d\"}],\"clouds\":72,\"pop\":0,\"uvi\":1.24},{\"dt\":1613120400,\"sunrise\":1613105462,\"sunset\":1613141832,\"temp\":{\"day\":4.55,\"min\":-10.07,\"max\":7.11,\"night\":-10.07,\"eve\":-6.96,\"morn\":5.97},\"feels_like\":{\"day\":0.09,\"night\":-18.74,\"eve\":-16.14,\"morn\":0.84},\"pressure\":1002,\"humidity\":87,\"dew_point\":2.65,\"wind_speed\":4.12,\"wind_deg\":275,\"weather\":[{\"id\":616,\"main\":\"Snow\",\"description\":\"снег с дождём\",\"icon\":\"13d\"}],\"clouds\":100,\"pop\":1,\"rain\":0.79,\"snow\":4.52,\"uvi\":0.56},{\"dt\":1613206800,\"sunrise\":1613191766,\"sunset\":1613228328,\"temp\":{\"day\":-8.83,\"min\":-10.38,\"max\":-8.400001,\"night\":-9.8,\"eve\":-8.87,\"morn\":-10.28},\"feels_like\":{\"day\":-19.05,\"night\":-17.98,\"eve\":-18.03,\"morn\":-19.23},\"pressure\":1014,\"humidity\":88,\"dew_point\":-14.05,\"wind_speed\":10.18,\"wind_deg\":251,\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"пасмурно\",\"icon\":\"04d\"}],\"clouds\":100,\"pop\":0.05,\"uvi\":1.46},{\"dt\":1613293200,\"sunrise\":1613278067,\"sunset\":1613314824,\"temp\":{\"day\":-8.63,\"min\":-10.51,\"max\":-7.75,\"night\":-9.82,\"eve\":-8.52,\"morn\":-10.22},\"feels_like\":{\"day\":-15.73,\"night\":-15.57,\"eve\":-14.47,\"morn\":-17.7},\"pressure\":1023,\"humidity\":89,\"dew_point\":-13.26,\"wind_speed\":5.77,\"wind_deg\":291,\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"пасмурно\",\"icon\":\"04d\"}],\"clouds\":100,\"pop\":0.15,\"uvi\":1.57},{\"dt\":1613379600,\"sunrise\":1613364368,\"sunset\":1613401319,\"temp\":{\"day\":-7.35,\"min\":-11.59,\"max\":-4.82,\"night\":-5.78,\"eve\":-6.69,\"morn\":-11.59},\"feels_like\":{\"day\":-11.64,\"night\":-10.32,\"eve\":-11.09,\"morn\":-16.38},\"pressure\":1026,\"humidity\":86,\"dew_point\":-13.67,\"wind_speed\":1.84,\"wind_deg\":263,\"weather\":[{\"id\":600,\"main\":\"Snow\",\"description\":\"небольшой снег\",\"icon\":\"13d\"}],\"clouds\":0,\"pop\":0.3,\"snow\":0.21,\"uvi\":1.53},{\"dt\":1613466000,\"sunrise\":1613450667,\"sunset\":1613487814,\"temp\":{\"day\":-5.81,\"min\":-8.24,\"max\":-4.88,\"night\":-8.24,\"eve\":-6.41,\"morn\":-7.34},\"feels_like\":{\"day\":-11.15,\"night\":-15.54,\"eve\":-12.8,\"morn\":-12.07},\"pressure\":1023,\"humidity\":93,\"dew_point\":-9.16,\"wind_speed\":3.65,\"wind_deg\":6,\"weather\":[{\"id\":600,\"main\":\"Snow\",\"description\":\"небольшой снег\",\"icon\":\"13d\"}],\"clouds\":88,\"pop\":0.28,\"snow\":0.14,\"uvi\":1.48},{\"dt\":1613552400,\"sunrise\":1613536965,\"sunset\":1613574309,\"temp\":{\"day\":-5.91,\"min\":-9.09,\"max\":-5.01,\"night\":-9.09,\"eve\":-6.53,\"morn\":-7.1},\"feels_like\":{\"day\":-14.61,\"night\":-16.93,\"eve\":-14.68,\"morn\":-14.54},\"pressure\":1021,\"humidity\":87,\"dew_point\":-11.97,\"wind_speed\":8.32,\"wind_deg\":26,\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"пасмурно\",\"icon\":\"04d\"}],\"clouds\":100,\"pop\":0,\"uvi\":2},{\"dt\":1613638800,\"sunrise\":1613623261,\"sunset\":1613660804,\"temp\":{\"day\":-8.58,\"min\":-11.84,\"max\":-6.88,\"night\":-11.84,\"eve\":-8.54,\"morn\":-10.81},\"feels_like\":{\"day\":-15.4,\"night\":-17.83,\"eve\":-15.04,\"morn\":-18.36},\"pressure\":1027,\"humidity\":84,\"dew_point\":-15.35,\"wind_speed\":5.29,\"wind_deg\":12,\"weather\":[{\"id\":803,\"main\":\"Clouds\",\"description\":\"облачно с прояснениями\",\"icon\":\"04d\"}],\"clouds\":76,\"pop\":0,\"uvi\":2}]}";

  StaticJsonDocument<480> filter;
  deserializeJson(filter, filter_arr);
  serializeJsonPretty(filter, Serial); Serial.println("\n\n\n\n\nПогода:\n");

  DynamicJsonDocument Answer(2048);
  deserializeJson(Answer, Openweather_arr, DeserializationOption::Filter(filter));
  serializeJsonPretty(Answer, Serial); Serial.println();

  /*
    const char* timezone = Answer["timezone"]; // "Europe/Zaporozhye"

    JsonObject current = Answer["current"];
    float current_temp = current["temp"]; // 6.84
    int current_pressure = current["pressure"]; // 1005
    int current_wind_speed = current["wind_speed"]; // 4
    int current_wind_deg = current["wind_deg"]; // 130

    int current_weather_0_id = current["weather"][0]["id"]; // 803

    for (JsonObject elem : Answer["daily"].as<JsonArray>()) {

    float temp_day = elem["temp"]["day"]; // 4.22, 4.55, -8.83, -8.63, -7.35, -5.81, -5.91, -8.58
    float temp_night = elem["temp"]["night"]; // 6.84, -10.07, -9.8, -9.82, -5.78, -8.24, -9.09, -11.84

    int pressure = elem["pressure"]; // 1013, 1002, 1014, 1023, 1026, 1023, 1021, 1027
    float wind_speed = elem["wind_speed"]; // 4.43, 4.12, 10.18, 5.77, 1.84, 3.65, 8.32, 5.29
    int wind_deg = elem["wind_deg"]; // 122, 275, 251, 291, 263, 6, 26, 12

    int weather_0_id = elem["weather"][0]["id"]; // 803, 616, 804, 804, 600, 600, 804, 803

    }
  */
}

void loop() {}
 

enjoynering

Well-known member
кстати в ArduinoJson 6 есть встроенный фильтр. Пробовал и весть ответ, тоже влазит без проблем, но оставил с фильтром тк реально экономит память, так мне весь ответ с Openweather.

Код:
  DeserializationError jsonError = deserializeJson(jsonDoc, http.getStream(), DeserializationOption::Filter(filter));
 

pvvx

Активный участник сообщества

pvvx

Активный участник сообщества
Я даже вас кормить не буду и просто промолчу.
Мне то зачем ваши бинарники?
Такие вещи проще решаются, без всяких роутеров и прочей лабуды показывающей неизвестно что:
Да и история показаний так-же есть на не менее пол года и читается в любом смарте :p
 

enjoynering

Well-known member
Давайте ещё раз с начала. Без инета щас никуда. Инет и электричество наше все.

Энегоэффективный BLE хорош когда он подключен к жрущему не в себя смарту или компьютеру. :)

TLSR8269 сам в интернет выйти и забрать погоду не сможет. Для это его надо сопрягать со смартфоном у которого цена не $3.

А ESP8266 спокойно это делает за $3.


Шах и мат TLSR8269.
 

svs2007m

Active member
Без инета щас никуда. Инет и электричество наше все.
Увы дружище на большинстве территорий России это только мечта. Можно верить что где то там Москве, Питере и ... Сам в живу в этих территориях и унас с этим полная жоп... :)
 

enjoynering

Well-known member
Я как бы не говорил о покрытии всей территории. Я про населенный пункт. Электричество и интернет там навсегда. Неужели у вас дома нет инета?
 

enjoynering

Well-known member
нет не надо, верю. вы щас обидитесь, но в том, что у вас нет электричества и инета виноваты вы сами. это раньше без прописки на работу не брали и жить негде. так ее 20 лет назад отменили. я 15 лет назад вышел из зоны комфорта и теперь у меня инет есть всегда. было трудно, но оно того стоило. это раньше государство думало и решало все за нас (где жить, где работать, где отдыхать). эти дни давно прошли, сейчас все решаете вы.
 

pvvx

Активный участник сообщества
Давайте ещё раз с начала. Без инета щас никуда. Инет и электричество наше все.

Энегоэффективный BLE хорош когда он подключен к жрущему не в себя смарту или компьютеру. :)

TLSR8269 сам в интернет выйти и забрать погоду не сможет. Для это его надо сопрягать со смартфоном у которого цена не $3.

А ESP8266 спокойно это делает за $3.


Шах и мат TLSR8269.
У вас что-то плохо с пониманием прочитанного.
Он показывает и "забирает" погоду без Инет, без роутера, без смартфона прямо на индикатор с выводом и домашней температуры и влажности :p
А в инет белиберда - хотя-бы недавно на улице -20С, а ваш любимый инет говорит +1С :)
Мне то из дома на улицу выходить, а не в Инет, как вам :) :)
 
Сверху Снизу