From 0afb996af0c9a67742fb9a7c17e1e633356801f2 Mon Sep 17 00:00:00 2001 From: Mit4el Date: Wed, 11 Oct 2023 22:01:56 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=BF=D1=82=D0=B8=D0=BC=D0=B8=D0=B7?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F=20Weather=20=D0=B8=20owmWeather?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/virtual/Weather/Weather.cpp | 6 +++--- src/modules/virtual/owmWeather/modinfo.json | 2 +- src/modules/virtual/owmWeather/owmWeather.cpp | 21 +++++++++++-------- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/modules/virtual/Weather/Weather.cpp b/src/modules/virtual/Weather/Weather.cpp index 9cadadeb..b173593f 100644 --- a/src/modules/virtual/Weather/Weather.cpp +++ b/src/modules/virtual/Weather/Weather.cpp @@ -3,7 +3,7 @@ #include long prevWeatherMillis = millis() - 60001; -StaticJsonDocument Weatherdoc; +//StaticJsonDocument 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"); diff --git a/src/modules/virtual/owmWeather/modinfo.json b/src/modules/virtual/owmWeather/modinfo.json index 62eb7c2c..778c0fd7 100644 --- a/src/modules/virtual/owmWeather/modinfo.json +++ b/src/modules/virtual/owmWeather/modinfo.json @@ -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", diff --git a/src/modules/virtual/owmWeather/owmWeather.cpp b/src/modules/virtual/owmWeather/owmWeather.cpp index 44785e7d..90699baf 100644 --- a/src/modules/virtual/owmWeather/owmWeather.cpp +++ b/src/modules/virtual/owmWeather/owmWeather.cpp @@ -4,7 +4,7 @@ #include "NTP.h" // long prevWeatherMillis = millis() - 60001; // TODO Зачем так много??? -StaticJsonDocument Weatherdoc1; +// StaticJsonDocument 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)