diff --git a/tools/esp8266/README.md b/tools/esp8266/README.md
index e8c8be5f..d2c4114f 100644
--- a/tools/esp8266/README.md
+++ b/tools/esp8266/README.md
@@ -73,7 +73,26 @@ For now the following inverters should work out of the box:
## Changelog
(*) EEPROM changes require settings to be changed, your settings will be overwritten and need to be set again!
-
+- v0.5.9 *fix PowerLimit PowerPFDev.Desc=0x0001 for permanent
+- v0.5.8 *fix #146 device name in setup
+- v0.5.7 *add collapsible setup
+- v0.5.6 *fix only MQTT sub after the first loop in a conenction
+- v0.5.5 *fixed MQTT sub only after connection is established (HorstG-57)
+ + added in app.cpp some compiler if statements
+ *fix: compile possible for non repository versions (if project was download as zip - lumapu)
+ *fix README.md - Update line 69 (`RF24` 1.4.2 -> 1.4.5) (DanielR92)
+ *Update hmRadio.h (lumapu)
+- v0.5.4 + added Github report text with a URL (aschiffler)
+ + added auto_firmware_version.py for GIT_HASH
+ + added switch case AlarmData/AlarmUpdate
+- v0.5.3 #Bugfix #125 PowerLimit
+ + prototype webapi to get info, improved pwr limit (aschiffler)
+ + Merge remote-tracking branch 'upstream/main' into pwrlimit
+- v0.5.2 add #114 ntp_server_name and port to eeprom
+ + stefan123t added some functions (devcontrol/cbMqtt/...)
+- v0.5.1 *Merge branch 'upstream/HEAD' into control
+ *update revision (0.4.26 -> 0.5.1)
+- v0.4.26 first poc for power set via mqtt
- v0.4.25 added default SERIAL/MQTT/SEND_INTERVAL #100, fixed env:node_mcu_v2 build #101
- v0.4.24 added fixes for #63, #88, #93. revert #36 (*) EEPROM changes
- v0.4.23 added workflow, fix index.html to load inverter info immediately, changed timestamp to 1 for stand alone ESP #90, Implement MQTT discovery for Home Assistant
diff --git a/tools/esp8266/app.cpp b/tools/esp8266/app.cpp
index 151ddb13..0e558bf1 100644
--- a/tools/esp8266/app.cpp
+++ b/tools/esp8266/app.cpp
@@ -86,7 +86,7 @@ void app::setup(uint32_t timeout) {
if(NULL != iv) {
mEep->read(ADDR_INV_PWR_LIM + (i * 2),(uint16_t *)&(iv->powerLimit[0]));
if (iv->powerLimit[0] != 0xffff) { // only set it, if it is changed by user. Default value in the html setup page is -1 = 0xffff
- iv->powerLimit[1] = 0x0100; // set the limit as persistent
+ iv->powerLimit[1] = 0x0001; // set the limit as persistent
iv->devControlCmd = ActivePowerContr; // set active power limit
iv->devControlRequest = true; // set to true to update the active power limit from setup html page
DPRINTLN(DBG_INFO, F("add inverter: ") + String(name) + ", SN: " + String(invSerial, HEX) + ", Power Limit: " + String(iv->powerLimit[0]));
diff --git a/tools/esp8266/defines.h b/tools/esp8266/defines.h
index b5813f93..f229e1da 100644
--- a/tools/esp8266/defines.h
+++ b/tools/esp8266/defines.h
@@ -21,7 +21,7 @@
//-------------------------------------
#define VERSION_MAJOR 0
#define VERSION_MINOR 5
-#define VERSION_PATCH 6
+#define VERSION_PATCH 9
//-------------------------------------
diff --git a/tools/esp8266/hmInverter.h b/tools/esp8266/hmInverter.h
index 531e1e60..f7a50cf7 100644
--- a/tools/esp8266/hmInverter.h
+++ b/tools/esp8266/hmInverter.h
@@ -84,7 +84,7 @@ class Inverter {
Inverter() {
ts = 0;
powerLimit[0] = -1; // 65535 W Limit -> unlimited
- powerLimit[1] = 0x0100; // 0x0000 --> set temporary , 0x0100 --> set persistent
+ powerLimit[1] = 0x0001; // 0x0000 --> set temporary , 0x0001 --> set persistent
devControlRequest = false;
devControlCmd = 0xff;
}
diff --git a/tools/esp8266/html/convert.py b/tools/esp8266/html/convert.py
index 8171b69e..4cbecb20 100755
--- a/tools/esp8266/html/convert.py
+++ b/tools/esp8266/html/convert.py
@@ -1,8 +1,19 @@
import re
+import sys
+import os
def convert2Header(inFile):
- outName = "h/" + inFile.replace(".", "_") + ".h"
- fileType = inFile.split(".")[1]
+ fileType = inFile.split(".")[1]
+ define = inFile.split(".")[0].upper()
+ define2 = inFile.split(".")[1].upper()
+ inFileVarName = inFile.replace(".", "_")
+
+ if os.getcwd()[-4:] != "html":
+ print("ok")
+ outName = "html/" + "h/" + inFileVarName + ".h"
+ inFile = "html/" + inFile
+ else:
+ outName = "h/" + inFileVarName + ".h"
f = open(inFile, "r")
data = f.read().replace('\n', '')
@@ -14,12 +25,10 @@ def convert2Header(inFile):
else:
data = re.sub(r"(\;|\}|\:|\{)\s+", r'\1', data) # whitespaces inner css
- define = inFile.split(".")[0].upper()
- define2 = inFile.split(".")[1].upper()
f = open(outName, "w")
f.write("#ifndef __{}_{}_H__\n".format(define, define2))
f.write("#define __{}_{}_H__\n".format(define, define2))
- f.write("const char {}[] PROGMEM = \"{}\";\n".format(inFile.replace(".", "_"), data))
+ f.write("const char {}[] PROGMEM = \"{}\";\n".format(inFileVarName, data))
f.write("#endif /*__{}_{}_H__*/\n".format(define, define2))
f.close()
diff --git a/tools/esp8266/html/h/setup_html.h b/tools/esp8266/html/h/setup_html.h
index ae14aab2..ebd3ce15 100644
--- a/tools/esp8266/html/h/setup_html.h
+++ b/tools/esp8266/html/h/setup_html.h
@@ -1,4 +1,4 @@
#ifndef __SETUP_HTML_H__
#define __SETUP_HTML_H__
-const char setup_html[] PROGMEM = "
Setup - {DEVICE}Setup
Enter the credentials to your prefered WiFi station. After rebooting the device tries to connect with this information.
";
+const char setup_html[] PROGMEM = "Setup - {DEVICE}Setup
";
#endif /*__SETUP_HTML_H__*/
diff --git a/tools/esp8266/html/h/style_css.h b/tools/esp8266/html/h/style_css.h
index 5f972cf8..b7fec0cf 100644
--- a/tools/esp8266/html/h/style_css.h
+++ b/tools/esp8266/html/h/style_css.h
@@ -1,4 +1,4 @@
#ifndef __STYLE_CSS_H__
#define __STYLE_CSS_H__
-const char style_css[] PROGMEM = "h1 {margin:0;padding:20pt;font-size:22pt;color:#fff;background-color:#006ec0;display:block;text-transform:uppercase;}html, body {font-family:Arial;margin:0;padding:0;}p {text-align:justify;font-size:13pt;}p.lic, p.lic a {font-size:8pt;color:#999;}.des {margin-top:35px;font-size:13pt;color:#006ec0;}.subdes {font-size:12pt;color:#006ec0;margin-left:7px;}.subsubdes {font-size:12pt;color:#006ec0;margin:0 0 7px 12px;}.hide {display:none;}a:link, a:visited {text-decoration:none;font-size:13pt;color:#006ec0;}a:hover, a:focus {color:#f00;}a.erase {background-color:#006ec0;color:#fff;padding:7px;display:inline-block;margin-top:30px;float:right;}#content {padding:15px 15px 60px 15px;}#footer {position:fixed;bottom:0px;height:45px;background-color:#006ec0;width:100%;border-top:5px solid #fff;}#footer p, #footer a {color:#fff;padding:0 7px 0 7px;font-size:10pt !important;}div.content {background-color:#fff;padding-bottom:65px;overflow:auto;}input, select {padding:7px;font-size:13pt;}input.text, select {width:70%;box-sizing:border-box;margin-bottom:10px;border:1px solid #ccc;}input.sh {max-width:150px !important;margin-right:10px;}input.btn {background-color:#006ec0;color:#fff;border:0px;float:right;margin:10px 0 30px;text-transform:uppercase;}input.cb {margin-bottom:20px;}label {width:20%;display:inline-block;font-size:12pt;padding-right:10px;margin-left:15px;}.left {float:left;}.right {float:right;}div.ch-iv {width:100%;background-color:#32b004;display:inline-block;margin-bottom:15px;padding-bottom:20px;overflow:auto;}div.ch {width:220px;min-height:350px;background-color:#006ec0;display:inline-block;margin:0 10px 15px 10px;overflow:auto;padding-bottom:20px;}div.ch .value, div.ch .info, div.ch .head, div.ch-iv .value, div.ch-iv .info, div.ch-iv .head {color:#fff;display:block;width:100%;text-align:center;}.subgrp {float:left;width:220px;}div.ch .unit, div.ch-iv .unit {font-size:19px;margin-left:10px;}div.ch .value, div.ch-iv .value {margin-top:20px;font-size:24px;}div.ch .info, div.ch-iv .info {margin-top:3px;font-size:10px;}div.ch .head {background-color:#003c80;padding:10px 0 10px 0;}div.ch-iv .head {background-color:#1c6800;padding:10px 0 10px 0;}div.iv {max-width:960px;margin-bottom:40px;}div.ts {font-size:13px;background-color:#ddd;border-top:7px solid #999;padding:7px;}#note {margin:50px 10px 10px 10px;padding-top:10px;width:100%;border-top:1px solid #bbb;}@media(max-width:500px) {div.ch .unit, div.ch-iv .unit {font-size:18px;}div.ch {width:170px;min-height:100px;}.subgrp {width:180px;}}";
+const char style_css[] PROGMEM = "h1 {margin:0;padding:20pt;font-size:22pt;color:#fff;background-color:#006ec0;display:block;text-transform:uppercase;}html, body {font-family:Arial;margin:0;padding:0;}p {text-align:justify;font-size:13pt;}p.lic, p.lic a {font-size:8pt;color:#999;}.des {margin-top:20px;font-size:13pt;color:#006ec0;}.s_active, .s_collapsible:hover {background-color:#006ec0;}.s_content {display:none;overflow:hidden;margin-bottom:20px;}.s_collapsible {background-color:#044e86;color:white;cursor:pointer;padding:18px;width:100%;border:none;text-align:left;outline:none;font-size:15px;margin-bottom:4px;}.subdes {font-size:12pt;color:#006ec0;margin-left:7px;}.subsubdes {font-size:12pt;color:#006ec0;margin:0 0 7px 12px;}.hide {display:none;}a:link, a:visited {text-decoration:none;font-size:13pt;color:#006ec0;}a:hover, a:focus {color:#f00;}a.erase {background-color:#006ec0;color:#fff;padding:7px;display:inline-block;margin-top:30px;float:right;}#content {padding:15px 15px 60px 15px;}#footer {position:fixed;bottom:0px;height:45px;background-color:#006ec0;width:100%;border-top:5px solid #fff;}#footer p, #footer a {color:#fff;padding:0 7px 0 7px;font-size:10pt !important;}div.content {background-color:#fff;padding-bottom:65px;overflow:auto;}input, select {padding:7px;font-size:13pt;}input.text, select {width:70%;box-sizing:border-box;margin-bottom:10px;border:1px solid #ccc;}input.sh {max-width:150px !important;margin-right:10px;}input.btn {background-color:#006ec0;color:#fff;border:0px;float:right;margin:10px 0 30px;text-transform:uppercase;}input.cb {margin-bottom:20px;}label {width:20%;display:inline-block;font-size:12pt;padding-right:10px;margin-left:15px;}.left {float:left;}.right {float:right;}div.ch-iv {width:100%;background-color:#32b004;display:inline-block;margin-bottom:15px;padding-bottom:20px;overflow:auto;}div.ch {width:220px;min-height:350px;background-color:#006ec0;display:inline-block;margin:0 10px 15px 10px;overflow:auto;padding-bottom:20px;}div.ch .value, div.ch .info, div.ch .head, div.ch-iv .value, div.ch-iv .info, div.ch-iv .head {color:#fff;display:block;width:100%;text-align:center;}.subgrp {float:left;width:220px;}div.ch .unit, div.ch-iv .unit {font-size:19px;margin-left:10px;}div.ch .value, div.ch-iv .value {margin-top:20px;font-size:24px;}div.ch .info, div.ch-iv .info {margin-top:3px;font-size:10px;}div.ch .head {background-color:#003c80;padding:10px 0 10px 0;}div.ch-iv .head {background-color:#1c6800;padding:10px 0 10px 0;}div.iv {max-width:960px;margin-bottom:40px;}div.ts {font-size:13px;background-color:#ddd;border-top:7px solid #999;padding:7px;}#note {margin:50px 10px 10px 10px;padding-top:10px;width:100%;border-top:1px solid #bbb;}@media(max-width:500px) {div.ch .unit, div.ch-iv .unit {font-size:18px;}div.ch {width:170px;min-height:100px }.subgrp {width:180px;}}";
#endif /*__STYLE_CSS_H__*/
diff --git a/tools/esp8266/html/setup.html b/tools/esp8266/html/setup.html
index a1e0d51c..3b2078d2 100644
--- a/tools/esp8266/html/setup.html
+++ b/tools/esp8266/html/setup.html
@@ -52,64 +52,88 @@
Setup
-
- Enter the credentials to your prefered WiFi station. After rebooting the device tries to connect with this information.
-
+
ERASE SETTINGS (not WiFi)
+
+
+