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