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