Оптимизация Weather и owmWeather

This commit is contained in:
Mit4el
2023-10-11 22:01:56 +03:00
parent a3ec0681da
commit 0afb996af0
3 changed files with 16 additions and 13 deletions

View File

@@ -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");

View File

@@ -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",

View File

@@ -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)