Browse Source

fix setup and patch from homeautomation22

pull/345/head
DanielR92 3 years ago
parent
commit
e9e89d3fc6
  1. 18
      tools/esp8266/app.cpp
  2. 10
      tools/esp8266/defines.h
  3. 1
      tools/esp8266/html/index.html
  4. 30
      tools/esp8266/html/setup.html
  5. 10
      tools/esp8266/web.cpp
  6. 10
      tools/esp8266/webApi.cpp
  7. 2
      tools/esp8266/webApi.h

18
tools/esp8266/app.cpp

@ -44,8 +44,6 @@ void app::setup(uint32_t timeout) {
mWebInst = new web(this, &mSysConfig, &mConfig, &mStat, mVersion); mWebInst = new web(this, &mSysConfig, &mConfig, &mStat, mVersion);
mWebInst->setup(); 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) { if(++mSendTicker >= mConfig.sendInterval) {
mSendTicker = 0; mSendTicker = 0;
bool DisableNightCommunication = false; // ToDo: Add option in setup to disable inverter communication at night 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(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(mConfig.serialDebug) if(mConfig.serialDebug)
DPRINTLN(DBG_DEBUG, F("Free heap: 0x") + String(ESP.getFreeHeap(), HEX)); DPRINTLN(DBG_DEBUG, F("Free heap: 0x") + String(ESP.getFreeHeap(), HEX));
@ -746,9 +743,9 @@ void app::loadDefaultConfig(void) {
mConfig.ntpPort = DEF_NTP_PORT; mConfig.ntpPort = DEF_NTP_PORT;
// Latitude + Longitude // Latitude + Longitude
mConfig.lat = 0; mConfig.sunLat = 0.0;
mConfig.lon = 0; mConfig.sunLon = 0.0;
mConfig.disnightcom = false; // disable night communication mConfig.sunDisNightCom = false;
// mqtt // mqtt
snprintf(mConfig.mqtt.broker, MQTT_ADDR_LEN, "%s", DEF_MQTT_BROKER); snprintf(mConfig.mqtt.broker, MQTT_ADDR_LEN, "%s", DEF_MQTT_BROKER);
@ -803,6 +800,9 @@ void app::loadEEpconfig(void) {
if(NULL != iv) if(NULL != iv)
resetPayload(iv); resetPayload(iv);
} }
// load sun localization
mSun.setLocalization(mConfig.sunLat, mConfig.sunLon);
} }
} }
@ -826,6 +826,10 @@ void app::saveValues(void) {
} }
updateCrc(); updateCrc();
// update sun localization
mSun.setLocalization(mConfig.sunLat, mConfig.sunLon);
mLatestSunTimestamp = 0;
} }

10
tools/esp8266/defines.h

@ -131,10 +131,10 @@ typedef struct {
// mqtt // mqtt
mqttConfig_t mqtt; mqttConfig_t mqtt;
// Latitude + Longitude // sun
float lat; float sunLat;
float lon; float sunLon;
bool disnightcom; bool sunDisNightCom; // disable night communication
// serial // serial
uint16_t serialInterval; 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_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_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_START 0
#define ADDR_CFG_SYS ADDR_START #define ADDR_CFG_SYS ADDR_START

1
tools/esp8266/html/index.html

@ -13,6 +13,7 @@
<a href="/live">Visualization</a><br/> <a href="/live">Visualization</a><br/>
<br/> <br/>
<a href="/setup">Setup</a><br/> <a href="/setup">Setup</a><br/>
<br/>
<a href="/serial">Webserial & Commands</a><br/> <a href="/serial">Webserial & Commands</a><br/>
</p> </p>
<p><span class="des">Uptime: </span><span id="uptime"></span></p> <p><span class="des">Uptime: </span><span id="uptime"></span></p>

30
tools/esp8266/html/setup.html

@ -75,16 +75,13 @@
<div class="s_content"> <div class="s_content">
<fieldset> <fieldset>
<legend class="des">Sunrise & Sunset</legend> <legend class="des">Sunrise & Sunset</legend>
<input id="clickMe" type="button" value="Get Location from Browser" onclick="getLocation();" /> Info: work only in SSL. <label for="sunLat">Latitude (decimal)</label>
<p id="demo"></p> <input type="text" class="text" name="sunLat"/>
<label for="sunLon">Longitude (decimal)</label>
<input type="text" class="text" name="sunLon"/>
<br> <br>
<label for="lat">Latitude</label> <label for="sunDisNightCom">disable night communication</label>
<input type="text" class="text" name="lat"/> <input type="checkbox" class="cb" name="sunDisNightCom"/><br/>
<label for="lon">Longitude</label>
<input type="text" class="text" name="lon"/>
<br>
<label for="disnightcom">disable night communication</label>
<input type="checkbox" class="cb" name="disnightcom"/><br/>
</fieldset> </fieldset>
</div> </div>
@ -159,10 +156,9 @@
function setTime() { function setTime() {
var date = new Date(); var date = new Date();
var offset = date.getTimezoneOffset() * -60;
var obj = new Object(); var obj = new Object();
obj.cmd = "set_time"; 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)); 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(lbl(id + i[0], i[2]));
iv.appendChild(inp(id + i[0], obj[i[1]], i[3])); iv.appendChild(inp(id + i[0], obj[i[1]], i[3]));
} }
@ -254,10 +250,10 @@
document.getElementsByName(i[0])[0].value = obj[i[1]]; document.getElementsByName(i[0])[0].value = obj[i[1]];
} }
function parseLatLong(obj) { function parseSun(obj) {
for(var i of [["lat", "Latitude"], ["lon", "Longitude"]]) document.getElementsByName("sunDisNightCom")[0].checked = obj["disnightcom"] ? true : false;
document.getElementsByName(i[0])[0].value = obj[i[1]]; document.getElementsByName("sunLat")[0].value = parseFloat(obj["lat"]);
document.getElementById("disnightcom").innerHTML = obj["obj"] document.getElementsByName("sunLon")[0].value = parseFloat(obj["lon"]);
} }
function parsePinout(obj) { function parsePinout(obj) {
@ -310,7 +306,7 @@
parseIv(root["inverter"]); parseIv(root["inverter"]);
parseMqtt(root["mqtt"]); parseMqtt(root["mqtt"]);
parseNtp(root["ntp"]); parseNtp(root["ntp"]);
parseLatLong(root["LatiLong"]); parseSun(root["sun"]);
parsePinout(root["pinout"]); parsePinout(root["pinout"]);
parseRadio(root["radio"]); parseRadio(root["radio"]);
parseSerial(root["serial"]); parseSerial(root["serial"]);

10
tools/esp8266/web.cpp

@ -272,12 +272,10 @@ void web::showSave(AsyncWebServerRequest *request) {
mConfig->ntpPort = request->arg("ntpPort").toInt() & 0xffff; mConfig->ntpPort = request->arg("ntpPort").toInt() & 0xffff;
} }
// Latitude + Longitude // sun
if(request->arg("lon") != "") { if(request->arg("sunDisNightCom") != "") mConfig->sunDisNightCom = (request->arg("sunDisNightCom") == "on");
mConfig->lat = request->arg("lat").toFloat(); if(request->arg("sunLat") != "") mConfig->sunLat = request->arg("sunLat").toFloat();
mConfig->lon = request->arg("lon").toFloat(); if(request->arg("sunLon") != "") mConfig->sunLon = request->arg("sunLon").toFloat();
mConfig->disnightcom = (request->arg("disnightcom") == "on");
}
// mqtt // mqtt
if(request->arg("mqttAddr") != "") { if(request->arg("mqttAddr") != "") {

10
tools/esp8266/webApi.cpp

@ -186,10 +186,10 @@ void webApi::getNtp(JsonObject obj) {
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void webApi::getLatiLong(JsonObject obj) { void webApi::getSun(JsonObject obj) {
obj[F("lat")] = mConfig->lat; obj[F("lat")] = mConfig->sunLat ? String(mConfig->sunLat, 5) : "";
obj[F("lon")] = mConfig->lon; obj[F("lon")] = mConfig->sunLat ? String(mConfig->sunLon, 5) : "";
obj[F("disnightcom")] = mConfig->disnightcom; obj[F("disnightcom")] = mConfig->sunDisNightCom;
} }
@ -259,7 +259,7 @@ void webApi::getSetup(JsonObject obj) {
getInverterList(obj.createNestedObject(F("inverter"))); getInverterList(obj.createNestedObject(F("inverter")));
getMqtt(obj.createNestedObject(F("mqtt"))); getMqtt(obj.createNestedObject(F("mqtt")));
getNtp(obj.createNestedObject(F("ntp"))); getNtp(obj.createNestedObject(F("ntp")));
getLatiLong(obj.createNestedObject(F("LatiLong"))); getSun(obj.createNestedObject(F("sun")));
getPinout(obj.createNestedObject(F("pinout"))); getPinout(obj.createNestedObject(F("pinout")));
getRadio(obj.createNestedObject(F("radio"))); getRadio(obj.createNestedObject(F("radio")));
getSerial(obj.createNestedObject(F("serial"))); getSerial(obj.createNestedObject(F("serial")));

2
tools/esp8266/webApi.h

@ -32,7 +32,7 @@ class webApi {
void getInverterList(JsonObject obj); void getInverterList(JsonObject obj);
void getMqtt(JsonObject obj); void getMqtt(JsonObject obj);
void getNtp(JsonObject obj); void getNtp(JsonObject obj);
void getLatiLong(JsonObject obj); void getSun(JsonObject obj);
void getPinout(JsonObject obj); void getPinout(JsonObject obj);
void getRadio(JsonObject obj); void getRadio(JsonObject obj);
void getSerial(JsonObject obj); void getSerial(JsonObject obj);

Loading…
Cancel
Save