mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +03:00
Оптимизация Weather и owmWeather
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
#include <ArduinoJson.h>
|
||||
|
||||
long prevWeatherMillis = millis() - 60001;
|
||||
StaticJsonDocument<JSON_BUFFER_SIZE * 2> Weatherdoc;
|
||||
//StaticJsonDocument<JSON_BUFFER_SIZE * 2> Weatherdoc;
|
||||
|
||||
extern IoTGpio IoTgpio;
|
||||
class Weather : public IoTItem
|
||||
@@ -12,9 +12,9 @@ private:
|
||||
String _location;
|
||||
String _param;
|
||||
// long interval;
|
||||
|
||||
DynamicJsonDocument Weatherdoc;
|
||||
public:
|
||||
Weather(String parameters) : IoTItem(parameters)
|
||||
Weather(String parameters) : Weatherdoc(1024), IoTItem(parameters)
|
||||
{
|
||||
_location = jsonReadStr(parameters, "location");
|
||||
_param = jsonReadStr(parameters, "param");
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
"param": "Тип текущего Item: temp - температура, humidity - влажность, pressure - давление, speed - скорость ветра, deg - направление ветра, all - процент облачности, sunrise - рассвет, sunset - закат, description - Погодные условия, icon - код иконки, name - город. Если оставить пустым пудет искать и публиковать при изменении в Items с именами wea_temp и т.д. wea_...",
|
||||
"int": "Интервал запроса погоды в минутах",
|
||||
"API_key": "API ключ",
|
||||
"сity": "Название города, через запятую можно уочнить код страны. Наример Moscow или Moscow,ru или Москва. Если город не задан будут использоваться координаты. OWM рекомендует координаты",
|
||||
"city": "Название города, через запятую можно уочнить код страны. Наример Moscow или Moscow,ru или Москва. Если город не задан будут использоваться координаты. OWM рекомендует координаты",
|
||||
"lon": "Долгота, при использовании координат, будет автоматически выбран ближайший город",
|
||||
"lat": "Широта, при использовании координат, будет автоматически выбран ближайший город",
|
||||
"lang": "Язык используемый в ответах OpenWetaherMap",
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "NTP.h"
|
||||
// long prevWeatherMillis = millis() - 60001;
|
||||
// TODO Зачем так много???
|
||||
StaticJsonDocument<JSON_BUFFER_SIZE * 2> Weatherdoc1;
|
||||
// StaticJsonDocument<JSON_BUFFER_SIZE * 2> Weatherdoc1;
|
||||
|
||||
extern IoTGpio IoTgpio;
|
||||
class owmWeather : public IoTItem
|
||||
@@ -21,17 +21,19 @@ private:
|
||||
String _lon = "";
|
||||
String _lang = "";
|
||||
bool _debug = false;
|
||||
DynamicJsonDocument Weatherdoc1;
|
||||
|
||||
public:
|
||||
owmWeather(String parameters) : IoTItem(parameters)
|
||||
owmWeather(String parameters) : Weatherdoc1(1024), IoTItem(parameters)
|
||||
{
|
||||
_API_key = jsonReadStr(parameters, "API_key");
|
||||
// _ID_sity = jsonReadStr(parameters, "ID_sity");
|
||||
_city = jsonReadStr(parameters, "city");
|
||||
_lon = jsonReadStr(parameters, "lon");
|
||||
_lat = jsonReadStr(parameters, "lat");
|
||||
_lang = jsonReadStr(parameters, "lang");
|
||||
_param = jsonReadStr(parameters, "param");
|
||||
if (!jsonRead(parameters, "city", _city))
|
||||
_city = "";
|
||||
jsonRead(parameters, "lon", _lon);
|
||||
jsonRead(parameters, "lat", _lat);
|
||||
jsonRead(parameters, "lang", _lang);
|
||||
jsonRead(parameters, "param", _param);
|
||||
jsonRead(parameters, "debug", _debug);
|
||||
long interval;
|
||||
jsonRead(parameters, F("int"), interval); // в минутах
|
||||
@@ -79,7 +81,8 @@ public:
|
||||
payload = http.getString();
|
||||
|
||||
deserializeJson(Weatherdoc1, payload);
|
||||
ret += payload;
|
||||
// ret += payload;
|
||||
SerialPrint("i", "Weatherdoc1", "memoryUsage: " + String(Weatherdoc1.memoryUsage()));
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -181,7 +184,7 @@ public:
|
||||
}
|
||||
|
||||
// проверяем если пришедшее значение отличается от предыдущего регистрируем событие
|
||||
static void publishNew(String root, String param)
|
||||
void publishNew(String root, String param)
|
||||
{
|
||||
IoTItem *tmp = findIoTItem("wea_" + param);
|
||||
if (!tmp)
|
||||
|
||||
Reference in New Issue
Block a user