From ffc4ac1ac1242b45f386d4a1bead5f7e089e2b31 Mon Sep 17 00:00:00 2001 From: Mit4el Date: Fri, 20 Oct 2023 21:56:41 +0300 Subject: [PATCH] AstroTimer in owmWeather, upd boards --- data_svelte/widgets.json | 16 +++- platformio.ini | 20 ++++- src/modules/virtual/owmWeather/modinfo.json | 11 ++- src/modules/virtual/owmWeather/owmWeather.cpp | 74 +++++++++++++------ 4 files changed, 93 insertions(+), 28 deletions(-) diff --git a/data_svelte/widgets.json b/data_svelte/widgets.json index 76a4712c..9da79005 100644 --- a/data_svelte/widgets.json +++ b/data_svelte/widgets.json @@ -307,7 +307,21 @@ "widget": "anydata", "after": "ltr", "icon": "speedometer" - }, + }, + { + "name": "anydataSpeed", + "label": "мерты в секунду", + "widget": "anydata", + "after": "m/s", + "icon": "speedometer" + }, + { + "name": "anydataСorner", + "label": "угол градусов", + "widget": "anydata", + "after": "°", + "icon": "speedometer" + }, { "name": "nil", "label": "Без виджета" diff --git a/platformio.ini b/platformio.ini index 6a7fcc1f..4d65245f 100644 --- a/platformio.ini +++ b/platformio.ini @@ -1,5 +1,5 @@ [platformio] -default_envs = esp32s3_16mb +default_envs = esp8266_4mb data_dir = data_svelte [common_env_data] @@ -733,8 +733,24 @@ build_src_filter = [env:esp32c3m_4mb_fromitems] lib_deps = build_src_filter = - + + + + + + + + + + + + + + + + + [env:esp32s3_16mb_fromitems] lib_deps = build_src_filter = + + + + + + + + + + + + + + + + diff --git a/src/modules/virtual/owmWeather/modinfo.json b/src/modules/virtual/owmWeather/modinfo.json index 0788ba07..43d3708a 100644 --- a/src/modules/virtual/owmWeather/modinfo.json +++ b/src/modules/virtual/owmWeather/modinfo.json @@ -65,14 +65,19 @@ "funcInfo": [ { "name": "sunrise", - "descr": "Функция астрологического таймера, можно задать время до/после рассвета, вернётся количество минут до сработки, когда 0 - значит время подошло или больше установленной разницы", + "descr": "Функция астрологического таймера, можно задать время до/после рассвета, вернётся количество минут до сработки или после (-). После заката будет возвращать +999 (Значение <=0 будет от сработки и до заката), когда 0 - значит время подошло", "params": ["количество минут до(-)/после(+) рассвета"] }, { "name": "sunset", - "descr": "Функция астрологического таймера, можно задать время до/после заката, вернётся количество минут до сработки, когда 0 - значит время подошло или больше установленной разницы", + "descr": "Функция астрологического таймера, можно задать время до/после заката, вернётся количество минут до сработки или после (-), когда 0 - значит время подошло", "params": ["количество минут до(-)/после(+) заката"] - } + }, + { + "name": "night", + "descr": "Вернет 1 если ночь (уже закат) и 0 если день (рассвет)", + "params": [] + } ] }, diff --git a/src/modules/virtual/owmWeather/owmWeather.cpp b/src/modules/virtual/owmWeather/owmWeather.cpp index da7a9139..6204db5c 100644 --- a/src/modules/virtual/owmWeather/owmWeather.cpp +++ b/src/modules/virtual/owmWeather/owmWeather.cpp @@ -203,48 +203,78 @@ public: // getWeather(); doByInterval(); } + else if (command == "night") + { + if (_sunsetTime == 0 || !isTimeSynch) + { + SerialPrint("i", ("AstroTimer"), "Not TimeSynch or Weather data server"); + value.valD = 0; + return value; + } + long dt_cur = getSystemTime() + _tzone; + // Если светло + if (dt_cur >= _sunriseTime && dt_cur < _sunsetTime) + value.valD = 0; + else // если темно + value.valD = 1; + if (_debug) + { + SerialPrint("i", ("AstroTimer"), "night: " + String(value.valD)); + } + } + else if (command == "sunset") { + if (_sunsetTime == 0 || !isTimeSynch) + { + SerialPrint("i", ("AstroTimer"), "Not TimeSynch or Weather data server"); + value.valD = 999; + return value; + } + long dt_cur = getSystemTime() + _tzone; if (param.size()) { if (param[0].isDecimal) - if ((unsigned long)(getSystemTime() + _tzone) >= (unsigned long)(_sunsetTime + (param[0].valD * 60))) - value.valD = 0; - else + { + long dt_set = (_sunsetTime + (int)(param[0].valD * 60)); + long dt = dt_set - dt_cur; + value.valD = dt / 60; + if (_debug) { - if (_debug) - { - SerialPrint("i", ("owmWeather"), "set sunset astroTimer: " + String(_sunsetTime + param[0].valD * 60) + " date: " + getTimeDotFormatedFromUnix(_sunsetTime + param[0].valD * 60)); - } - value.valD = (float)(((_sunsetTime + (int)(param[0].valD * 60)) - getSystemTime() + _tzone) / 60); + SerialPrint("i", ("AstroTimer"), "set: " + getTimeDotFormatedFromUnix(dt_set) + " time: " + getTimeDotFormatedFromUnix(dt_cur) + " sunset: " + getTimeDotFormatedFromUnix(_sunsetTime) + " Dt: " + String(param[0].valD) + " diff: " + String(value.valD)); } - } - if (_debug) - { - SerialPrint("i", ("owmWeather"), "time: " + String(getSystemTime() + _tzone) + " sunset: " + String(_sunsetTime) + " Dt: " + String(param[0].valD) + " diff: " + String(value.valD)); + } } } else if (command == "sunrise") { + if (_sunriseTime == 0 || !isTimeSynch) + { + SerialPrint("i", ("AstroTimer"), "Not TimeSynch or Weather data server"); + value.valD = 999; + return value; + } + long dt_cur = getSystemTime() + _tzone; + if (dt_cur >= _sunsetTime) + { + SerialPrint("i", ("AstroTimer"), "УЖЕ Закат, таймер не считаем time: " + getTimeDotFormatedFromUnix(dt_cur) + " diff: " + String(value.valD)); + value.valD = 999; + return value; + } if (param.size()) { - if ((unsigned long)(getSystemTime() + _tzone) >= (unsigned long)(_sunriseTime + (param[0].valD * 60))) - value.valD = 0; - else + if (param[0].isDecimal) { + long dt_set = (_sunriseTime + (int)(param[0].valD * 60)); + long dt = dt_set - dt_cur; + value.valD = dt / 60; if (_debug) { - SerialPrint("i", ("owmWeather"), "set sunrise astroTimer: " + String(_sunriseTime + param[0].valD * 60) + " date: " + getTimeDotFormatedFromUnix(_sunriseTime + param[0].valD * 60)); + SerialPrint("i", ("AstroTimer"), "set: " + getTimeDotFormatedFromUnix(dt_set) + " time: " + getTimeDotFormatedFromUnix(dt_cur) + " sunrise: " + getTimeDotFormatedFromUnix(_sunriseTime) + " Dt: " + String(param[0].valD) + " diff: " + String(value.valD)); } - value.valD = (float)(((_sunriseTime + (int)(param[0].valD * 60)) - getSystemTime() + _tzone) / 60); } } - if (_debug) - { - SerialPrint("i", ("owmWeather"), "time: " + String(getSystemTime() + _tzone) + " sunrise: " + String(_sunriseTime) + " Dt: " + String(param[0].valD) + " diff: " + String(value.valD)); - } } - return value; }