From e9e89d3fc664f9834d7bf2cf3217623d7bd5b2f2 Mon Sep 17 00:00:00 2001 From: DanielR92 Date: Thu, 13 Oct 2022 16:50:30 +0200 Subject: [PATCH] fix setup and patch from homeautomation22 --- tools/esp8266/app.cpp | 18 +++++++++++------- tools/esp8266/defines.h | 10 +++++----- tools/esp8266/html/index.html | 1 + tools/esp8266/html/setup.html | 30 +++++++++++++----------------- tools/esp8266/web.cpp | 10 ++++------ tools/esp8266/webApi.cpp | 10 +++++----- tools/esp8266/webApi.h | 2 +- 7 files changed, 40 insertions(+), 41 deletions(-) diff --git a/tools/esp8266/app.cpp b/tools/esp8266/app.cpp index 21c1ef60..5987a320 100644 --- a/tools/esp8266/app.cpp +++ b/tools/esp8266/app.cpp @@ -44,8 +44,6 @@ void app::setup(uint32_t timeout) { mWebInst = new web(this, &mSysConfig, &mConfig, &mStat, mVersion); mWebInst->setup(); - - mSun.setLocalization(52.6479, 13.6922); // ToDo: add lan/lon to setup, can also in app::loadEEpconfig or somewhere else in app.cpp } //----------------------------------------------------------------------------- @@ -206,8 +204,7 @@ void app::loop(void) { if(++mSendTicker >= mConfig.sendInterval) { mSendTicker = 0; - bool DisableNightCommunication = false; // ToDo: Add option in setup to disable inverter communication at night - if(mUtcTimestamp > 946684800 && (!DisableNightCommunication || !mLatestSunTimestamp || (mTimestamp >= mSunrise && mTimestamp <= mSunset))) { // Timestamp is set and (inverter communication only during the day if the option is activated and sunrise/sunset is set) + if(mUtcTimestamp > 946684800 && (!mConfig.sunDisNightCom || !mLatestSunTimestamp || (mTimestamp >= mSunrise && mTimestamp <= mSunset))) { // Timestamp is set and (inverter communication only during the day if the option is activated and sunrise/sunset is set) if(mConfig.serialDebug) DPRINTLN(DBG_DEBUG, F("Free heap: 0x") + String(ESP.getFreeHeap(), HEX)); @@ -746,9 +743,9 @@ void app::loadDefaultConfig(void) { mConfig.ntpPort = DEF_NTP_PORT; // Latitude + Longitude - mConfig.lat = 0; - mConfig.lon = 0; - mConfig.disnightcom = false; // disable night communication + mConfig.sunLat = 0.0; + mConfig.sunLon = 0.0; + mConfig.sunDisNightCom = false; // mqtt snprintf(mConfig.mqtt.broker, MQTT_ADDR_LEN, "%s", DEF_MQTT_BROKER); @@ -803,6 +800,9 @@ void app::loadEEpconfig(void) { if(NULL != iv) resetPayload(iv); } + + // load sun localization + mSun.setLocalization(mConfig.sunLat, mConfig.sunLon); } } @@ -826,6 +826,10 @@ void app::saveValues(void) { } updateCrc(); + + // update sun localization + mSun.setLocalization(mConfig.sunLat, mConfig.sunLon); + mLatestSunTimestamp = 0; } diff --git a/tools/esp8266/defines.h b/tools/esp8266/defines.h index aa61d193..c5c21f98 100644 --- a/tools/esp8266/defines.h +++ b/tools/esp8266/defines.h @@ -131,10 +131,10 @@ typedef struct { // mqtt mqttConfig_t mqtt; - // Latitude + Longitude - float lat; - float lon; - bool disnightcom; + // sun + float sunLat; + float sunLon; + bool sunDisNightCom; // disable night communication // serial uint16_t serialInterval; @@ -153,7 +153,7 @@ typedef struct { #define CFG_MQTT_LEN MQTT_ADDR_LEN + 2 + MQTT_USER_LEN + MQTT_PWD_LEN +MQTT_TOPIC_LEN #define CFG_SYS_LEN DEVNAME_LEN + SSID_LEN + PWD_LEN + 1 -#define CFG_LEN 7 + NTP_ADDR_LEN + 2 + CFG_MQTT_LEN + (4 + 4 + 1) + 4 // in the brackets its needed for lon+lat+bool +#define CFG_LEN 7 + NTP_ADDR_LEN + 2 + CFG_MQTT_LEN + 9 + 4 #define ADDR_START 0 #define ADDR_CFG_SYS ADDR_START diff --git a/tools/esp8266/html/index.html b/tools/esp8266/html/index.html index 759e4309..048e85d1 100644 --- a/tools/esp8266/html/index.html +++ b/tools/esp8266/html/index.html @@ -13,6 +13,7 @@ Visualization

Setup
+
Webserial & Commands

Uptime:

diff --git a/tools/esp8266/html/setup.html b/tools/esp8266/html/setup.html index 651c93ac..7e7de2be 100644 --- a/tools/esp8266/html/setup.html +++ b/tools/esp8266/html/setup.html @@ -75,16 +75,13 @@
Sunrise & Sunset - Info: work only in SSL. -

+ + + +
- - - - -
- -
+ +
@@ -159,10 +156,9 @@ function setTime() { var date = new Date(); - var offset = date.getTimezoneOffset() * -60; var obj = new Object(); obj.cmd = "set_time"; - obj.ts = parseInt(offset + (date.getTime() / 1000)); + obj.ts = parseInt(date.getTime() / 1000); getAjax("/api/setup", apiCb, "POST", JSON.stringify(obj)); } @@ -207,7 +203,7 @@ } }); - for(var i of [["Name", "name", "Name*", 32]]) { // so richtig? + for(var i of [["Name", "name", "Name*", 32]]) { iv.appendChild(lbl(id + i[0], i[2])); iv.appendChild(inp(id + i[0], obj[i[1]], i[3])); } @@ -254,10 +250,10 @@ document.getElementsByName(i[0])[0].value = obj[i[1]]; } - function parseLatLong(obj) { - for(var i of [["lat", "Latitude"], ["lon", "Longitude"]]) - document.getElementsByName(i[0])[0].value = obj[i[1]]; - document.getElementById("disnightcom").innerHTML = obj["obj"] + function parseSun(obj) { + document.getElementsByName("sunDisNightCom")[0].checked = obj["disnightcom"] ? true : false; + document.getElementsByName("sunLat")[0].value = parseFloat(obj["lat"]); + document.getElementsByName("sunLon")[0].value = parseFloat(obj["lon"]); } function parsePinout(obj) { @@ -310,7 +306,7 @@ parseIv(root["inverter"]); parseMqtt(root["mqtt"]); parseNtp(root["ntp"]); - parseLatLong(root["LatiLong"]); + parseSun(root["sun"]); parsePinout(root["pinout"]); parseRadio(root["radio"]); parseSerial(root["serial"]); diff --git a/tools/esp8266/web.cpp b/tools/esp8266/web.cpp index 5cee9a4a..22d3db12 100644 --- a/tools/esp8266/web.cpp +++ b/tools/esp8266/web.cpp @@ -272,12 +272,10 @@ void web::showSave(AsyncWebServerRequest *request) { mConfig->ntpPort = request->arg("ntpPort").toInt() & 0xffff; } - // Latitude + Longitude - if(request->arg("lon") != "") { - mConfig->lat = request->arg("lat").toFloat(); - mConfig->lon = request->arg("lon").toFloat(); - mConfig->disnightcom = (request->arg("disnightcom") == "on"); - } + // sun + if(request->arg("sunDisNightCom") != "") mConfig->sunDisNightCom = (request->arg("sunDisNightCom") == "on"); + if(request->arg("sunLat") != "") mConfig->sunLat = request->arg("sunLat").toFloat(); + if(request->arg("sunLon") != "") mConfig->sunLon = request->arg("sunLon").toFloat(); // mqtt if(request->arg("mqttAddr") != "") { diff --git a/tools/esp8266/webApi.cpp b/tools/esp8266/webApi.cpp index c104974c..938667b5 100644 --- a/tools/esp8266/webApi.cpp +++ b/tools/esp8266/webApi.cpp @@ -186,10 +186,10 @@ void webApi::getNtp(JsonObject obj) { } //----------------------------------------------------------------------------- -void webApi::getLatiLong(JsonObject obj) { - obj[F("lat")] = mConfig->lat; - obj[F("lon")] = mConfig->lon; - obj[F("disnightcom")] = mConfig->disnightcom; +void webApi::getSun(JsonObject obj) { + obj[F("lat")] = mConfig->sunLat ? String(mConfig->sunLat, 5) : ""; + obj[F("lon")] = mConfig->sunLat ? String(mConfig->sunLon, 5) : ""; + obj[F("disnightcom")] = mConfig->sunDisNightCom; } @@ -259,7 +259,7 @@ void webApi::getSetup(JsonObject obj) { getInverterList(obj.createNestedObject(F("inverter"))); getMqtt(obj.createNestedObject(F("mqtt"))); getNtp(obj.createNestedObject(F("ntp"))); - getLatiLong(obj.createNestedObject(F("LatiLong"))); + getSun(obj.createNestedObject(F("sun"))); getPinout(obj.createNestedObject(F("pinout"))); getRadio(obj.createNestedObject(F("radio"))); getSerial(obj.createNestedObject(F("serial"))); diff --git a/tools/esp8266/webApi.h b/tools/esp8266/webApi.h index 1ab21c7f..601cb979 100644 --- a/tools/esp8266/webApi.h +++ b/tools/esp8266/webApi.h @@ -32,7 +32,7 @@ class webApi { void getInverterList(JsonObject obj); void getMqtt(JsonObject obj); void getNtp(JsonObject obj); - void getLatiLong(JsonObject obj); + void getSun(JsonObject obj); void getPinout(JsonObject obj); void getRadio(JsonObject obj); void getSerial(JsonObject obj);