diff --git a/Makefile b/Makefile
index a8c45f781..090085a82 100644
--- a/Makefile
+++ b/Makefile
@@ -102,7 +102,7 @@ CPPFLAGS += -Os
CFLAGS += $(CPPFLAGS)
CFLAGS += -Wall -Wextra -Werror -Wswitch-enum
-CFLAGS += -Wno-unused-parameter -Wno-missing-braces -Wno-sign-compare
+CFLAGS += -Wno-unused-parameter -Wno-missing-braces -Wno-sign-compare -Wno-tautological-constant-out-of-range-compare
CXXFLAGS += $(CFLAGS) -MMD
#----------------------------------------------------------------------
diff --git a/boards/esp32dev.json b/boards/esp32dev.json
new file mode 100644
index 000000000..0ed450c4a
--- /dev/null
+++ b/boards/esp32dev.json
@@ -0,0 +1,34 @@
+{
+ "build": {
+ "core": "esp32",
+ "f_cpu": "240000000L",
+ "f_flash": "40000000L",
+ "flash_mode": "dio",
+ "mcu": "esp32",
+ "variant": "esp32"
+ },
+ "connectivity": [
+ "wifi",
+ "ethernet"
+ ],
+ "debug": {
+ "openocd_board": "esp32.cfg"
+ },
+ "frameworks": [
+ "arduino",
+ "espidf"
+ ],
+ "name": "Espressif ESP32 Dev Module",
+ "upload": {
+ "flash_size": "16MB",
+ "maximum_ram_size": 327680,
+ "maximum_size": 16777216,
+ "require_upload_port": true,
+ "speed": 460800
+ },
+ "download": {
+ "speed": 230400
+ },
+ "url": "https://en.wikipedia.org/wiki/ESP32",
+ "vendor": "Espressif"
+ }
\ No newline at end of file
diff --git a/boards/s3_16M_P.json b/boards/s3_16M_P.json
index 39a795ee5..25949c7b1 100644
--- a/boards/s3_16M_P.json
+++ b/boards/s3_16M_P.json
@@ -24,7 +24,7 @@
"arduino",
"espidf"
],
- "name": "Espressif Generic ESP32-S3 16M Flash OPI PSRAM, 4608KB Code/OTA, 2MB FS",
+ "name": "Espressif ESP32-S3 16M Flash OPI PSRAM, 4608KB Code/OTA, 2MB FS",
"upload": {
"flash_size": "16MB",
"maximum_ram_size": 327680,
diff --git a/boards/s3_32M_P.json b/boards/s3_32M_P.json
index c247db39e..1aa0746c1 100644
--- a/boards/s3_32M_P.json
+++ b/boards/s3_32M_P.json
@@ -21,7 +21,7 @@
"arduino",
"espidf"
],
- "name": "Espressif Generic ESP32-S3 32M Flash OPI PSRAM, 4608KB Code/OTA, 2MB FS",
+ "name": "Espressif ESP32-S3 32M Flash OPI PSRAM, 4608KB Code/OTA, 2MB FS",
"upload": {
"flash_size": "32MB",
"maximum_ram_size": 327680,
diff --git a/boards/s_16M.json b/boards/s_16M.json
index 6362f296d..6dc0a7f65 100644
--- a/boards/s_16M.json
+++ b/boards/s_16M.json
@@ -3,7 +3,7 @@
"core": "esp32",
"extra_flags": "-DTASMOTA_SDK",
"f_cpu": "240000000L",
- "f_flash": "80000000L",
+ "f_flash": "40000000L",
"flash_mode": "dio",
"mcu": "esp32",
"variant": "esp32"
@@ -19,7 +19,7 @@
"arduino",
"espidf"
],
- "name": "Espressif Generic ESP32 16M Flash, Tasmota 4608KB Code/OTA, 2MB FS",
+ "name": "Espressif ESP32 16M Flash, 4608KB Code/OTA, 2MB FS",
"upload": {
"flash_size": "16MB",
"maximum_ram_size": 327680,
diff --git a/boards/s_16M_P.json b/boards/s_16M_P.json
index 3ed91d6e5..462f17bb6 100644
--- a/boards/s_16M_P.json
+++ b/boards/s_16M_P.json
@@ -19,7 +19,7 @@
"arduino",
"espidf"
],
- "name": "Espressif Generic ESP32 16M Flash DIO PSRAM, 4608KB Code/OTA, 2MB FS",
+ "name": "Espressif ESP32 16M Flash DIO PSRAM, 4608KB Code/OTA, 2MB FS",
"upload": {
"flash_size": "16MB",
"maximum_ram_size": 327680,
diff --git a/boards/s_4M.json b/boards/s_4M.json
index 13a127242..68ccf38bd 100644
--- a/boards/s_4M.json
+++ b/boards/s_4M.json
@@ -18,7 +18,7 @@
"arduino",
"espidf"
],
- "name": "Espressif Generic ESP32 4M Flash, Tasmota 4608KB Code/OTA, 2MB FS",
+ "name": "Tasmota ESP32 4M Flash, 4608KB Code/OTA, 2MB FS",
"upload": {
"flash_size": "4MB",
"maximum_ram_size": 327680,
diff --git a/docs/Modbus-Entity-Registers.md b/docs/Modbus-Entity-Registers.md
index e7f0403a5..3ad7cedee 100644
--- a/docs/Modbus-Entity-Registers.md
+++ b/docs/Modbus-Entity-Registers.md
@@ -4835,6 +4835,8 @@
| cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 |
| switchprogmode | switch program mode | enum [level\|absolute] | | true | HC | 51 | 1 | 1 |
| redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 52 | 1 | 1/2 |
+| solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | -1 | 1 | 1 |
+| currsolarinfl | curent solar influence | uint8 (>=0<=25) | C | false | HC | -1 | 1 | 1/10 |
| mode | operating mode | enum [off\|normal\|comfort\|auto\|own prog] | | true | DHW | 0 | 1 | 1 |
| settemp | set temperature | uint8 (>=0<=254) | C | true | DHW | 1 | 1 | 1 |
| settemplow | set low temperature | uint8 (>=0<=254) | C | true | DHW | 2 | 1 | 1 |
@@ -4934,6 +4936,8 @@
| cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 |
| switchprogmode | switch program mode | enum [level\|absolute] | | true | HC | 51 | 1 | 1 |
| redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 52 | 1 | 1/2 |
+| solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | -1 | 1 | 1 |
+| currsolarinfl | curent solar influence | uint8 (>=0<=25) | C | false | HC | -1 | 1 | 1/10 |
| mode | operating mode | enum [off\|comfort\|auto] | | true | DHW | 0 | 1 | 1 |
| settemp | set temperature | uint8 (>=0<=254) | C | true | DHW | 1 | 1 | 1 |
| settemplow | set low temperature | uint8 (>=0<=254) | C | true | DHW | 2 | 1 | 1 |
@@ -5041,6 +5045,8 @@
| cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 |
| switchprogmode | switch program mode | enum [level\|absolute] | | true | HC | 51 | 1 | 1 |
| redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 52 | 1 | 1/2 |
+| solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | -1 | 1 | 1 |
+| currsolarinfl | curent solar influence | uint8 (>=0<=25) | C | false | HC | -1 | 1 | 1/10 |
| mode | operating mode | enum [off\|normal\|comfort\|auto\|own prog] | | true | DHW | 0 | 1 | 1 |
| settemp | set temperature | uint8 (>=0<=254) | C | true | DHW | 1 | 1 | 1 |
| settemplow | set low temperature | uint8 (>=0<=254) | C | true | DHW | 2 | 1 | 1 |
@@ -5172,6 +5178,8 @@
| cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 |
| switchprogmode | switch program mode | enum [level\|absolute] | | true | HC | 51 | 1 | 1 |
| redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 52 | 1 | 1/2 |
+| solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | -1 | 1 | 1 |
+| currsolarinfl | curent solar influence | uint8 (>=0<=25) | C | false | HC | -1 | 1 | 1/10 |
| mode | operating mode | enum [off\|normal\|comfort\|auto\|own prog] | | true | DHW | 0 | 1 | 1 |
| settemp | set temperature | uint8 (>=0<=254) | C | true | DHW | 1 | 1 | 1 |
| settemplow | set low temperature | uint8 (>=0<=254) | C | true | DHW | 2 | 1 | 1 |
@@ -5419,6 +5427,8 @@
| cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 |
| switchprogmode | switch program mode | enum [level\|absolute] | | true | HC | 51 | 1 | 1 |
| redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 52 | 1 | 1/2 |
+| solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | -1 | 1 | 1 |
+| currsolarinfl | curent solar influence | uint8 (>=0<=25) | C | false | HC | -1 | 1 | 1/10 |
| mode | operating mode | enum [normal\|comfort\|eco+] | | true | DHW | 0 | 1 | 1 |
| settemp | set temperature | uint8 (>=0<=254) | C | true | DHW | 1 | 1 | 1 |
| settemplow | set low temperature | uint8 (>=0<=254) | C | true | DHW | 2 | 1 | 1 |
@@ -5510,6 +5520,8 @@
| cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 |
| switchprogmode | switch program mode | enum [level\|absolute] | | true | HC | 51 | 1 | 1 |
| redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 52 | 1 | 1/2 |
+| solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | -1 | 1 | 1 |
+| currsolarinfl | curent solar influence | uint8 (>=0<=25) | C | false | HC | -1 | 1 | 1/10 |
| mode | operating mode | enum [off\|eco+\|eco\|comfort\|auto] | | true | DHW | 0 | 1 | 1 |
| settemp | set temperature | uint8 (>=0<=254) | C | true | DHW | 1 | 1 | 1 |
| settemplow | set low temperature | uint8 (>=0<=254) | C | true | DHW | 2 | 1 | 1 |
@@ -5611,6 +5623,8 @@
| cooloffdelay | cooling off delay | uint8 (>=1<=48) | hours | true | HC | 50 | 1 | 1 |
| switchprogmode | switch program mode | enum [level\|absolute] | | true | HC | 51 | 1 | 1 |
| redthreshold | reduction threshold | int8 (>=12<=22) | C | true | HC | 52 | 1 | 1/2 |
+| solarinfl | solar influence | uint8 (>=-5<=4294967295) | C | true | HC | -1 | 1 | 1 |
+| currsolarinfl | curent solar influence | uint8 (>=0<=25) | C | false | HC | -1 | 1 | 1/10 |
| mode | operating mode | enum [off\|eco+\|eco\|comfort\|auto] | | true | DHW | 0 | 1 | 1 |
| settemp | set temperature | uint8 (>=0<=254) | C | true | DHW | 1 | 1 | 1 |
| settemplow | set low temperature | uint8 (>=0<=254) | C | true | DHW | 2 | 1 | 1 |
diff --git a/docs/dump_entities.csv b/docs/dump_entities.csv
index 4a8a45133..dfde50bfd 100644
--- a/docs/dump_entities.csv
+++ b/docs/dump_entities.csv
@@ -3438,6 +3438,8 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"UI800, BC400",thermostat,4,cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,50,1
"UI800, BC400",thermostat,4,switchprogmode,switch program mode,enum [level\|absolute], ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,51,1
"UI800, BC400",thermostat,4,redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,52,1
+"UI800, BC400",thermostat,4,solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,-1,1
+"UI800, BC400",thermostat,4,currsolarinfl,curent solar influence,uint8 (>=0<=25),C,false,sensor.thermostat_hc1_curent_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,-1,1
"UI800, BC400",thermostat,4,mode,operating mode,enum [off\|eco+\|eco\|comfort\|auto], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
"UI800, BC400",thermostat,4,settemp,set temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,1,1
"UI800, BC400",thermostat,4,settemplow,set low temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_low_temperature,number.thermostat_dhw_settemplow,6,9,1,2,1
@@ -3816,6 +3818,8 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"RC200, CW100, CR120, CR50",thermostat,157,cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,50,1
"RC200, CW100, CR120, CR50",thermostat,157,switchprogmode,switch program mode,enum [level\|absolute], ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,51,1
"RC200, CW100, CR120, CR50",thermostat,157,redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,52,1
+"RC200, CW100, CR120, CR50",thermostat,157,solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,-1,1
+"RC200, CW100, CR120, CR50",thermostat,157,currsolarinfl,curent solar influence,uint8 (>=0<=25),C,false,sensor.thermostat_hc1_curent_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,-1,1
"RC200, CW100, CR120, CR50",thermostat,157,mode,operating mode,enum [off\|normal\|comfort\|auto\|own prog], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
"RC200, CW100, CR120, CR50",thermostat,157,settemp,set temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,1,1
"RC200, CW100, CR120, CR50",thermostat,157,settemplow,set low temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_low_temperature,number.thermostat_dhw_settemplow,6,9,1,2,1
@@ -3903,6 +3907,8 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,50,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,switchprogmode,switch program mode,enum [level\|absolute], ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,51,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,52,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,-1,1
+"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,currsolarinfl,curent solar influence,uint8 (>=0<=25),C,false,sensor.thermostat_hc1_curent_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,-1,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,mode,operating mode,enum [off\|normal\|comfort\|auto\|own prog], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,settemp,set temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,1,1
"RC3*0, Moduline 3000/1010H, CW400, Sense II, HPC410",thermostat,158,settemplow,set low temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_low_temperature,number.thermostat_dhw_settemplow,6,9,1,2,1
@@ -3988,6 +3994,8 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"RC100, CR10, Moduline 1000/1010",thermostat,165,cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,50,1
"RC100, CR10, Moduline 1000/1010",thermostat,165,switchprogmode,switch program mode,enum [level\|absolute], ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,51,1
"RC100, CR10, Moduline 1000/1010",thermostat,165,redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,52,1
+"RC100, CR10, Moduline 1000/1010",thermostat,165,solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,-1,1
+"RC100, CR10, Moduline 1000/1010",thermostat,165,currsolarinfl,curent solar influence,uint8 (>=0<=25),C,false,sensor.thermostat_hc1_curent_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,-1,1
"RC100, CR10, Moduline 1000/1010",thermostat,165,mode,operating mode,enum [off\|normal\|comfort\|auto\|own prog], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
"RC100, CR10, Moduline 1000/1010",thermostat,165,settemp,set temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,1,1
"RC100, CR10, Moduline 1000/1010",thermostat,165,settemplow,set low temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_low_temperature,number.thermostat_dhw_settemplow,6,9,1,2,1
@@ -4076,6 +4084,8 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"Rego 2000/3000",thermostat,172,cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,50,1
"Rego 2000/3000",thermostat,172,switchprogmode,switch program mode,enum [level\|absolute], ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,51,1
"Rego 2000/3000",thermostat,172,redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,52,1
+"Rego 2000/3000",thermostat,172,solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,-1,1
+"Rego 2000/3000",thermostat,172,currsolarinfl,curent solar influence,uint8 (>=0<=25),C,false,sensor.thermostat_hc1_curent_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,-1,1
"Rego 2000/3000",thermostat,172,mode,operating mode,enum [normal\|comfort\|eco+], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
"Rego 2000/3000",thermostat,172,settemp,set temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,1,1
"Rego 2000/3000",thermostat,172,settemplow,set low temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_low_temperature,number.thermostat_dhw_settemplow,6,9,1,2,1
@@ -4190,6 +4200,8 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"Rego 3000, UI800, Logamatic BC400",thermostat,253,cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,50,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,switchprogmode,switch program mode,enum [level\|absolute], ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,51,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,52,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,-1,1
+"Rego 3000, UI800, Logamatic BC400",thermostat,253,currsolarinfl,curent solar influence,uint8 (>=0<=25),C,false,sensor.thermostat_hc1_curent_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,-1,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,mode,operating mode,enum [off\|eco+\|eco\|comfort\|auto], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,settemp,set temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,1,1
"Rego 3000, UI800, Logamatic BC400",thermostat,253,settemplow,set low temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_low_temperature,number.thermostat_dhw_settemplow,6,9,1,2,1
@@ -4841,6 +4853,8 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
"RC120",thermostat,157,cooloffdelay,cooling off delay,uint8 (>=1<=48),hours,true,number.thermostat_hc1_cooling_off_delay,number.thermostat_hc1_cooloffdelay,6,1,1,50,1
"RC120",thermostat,157,switchprogmode,switch program mode,enum [level\|absolute], ,true,select.thermostat_hc1_switch_program_mode,select.thermostat_hc1_switchprogmode,6,1,1,51,1
"RC120",thermostat,157,redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,52,1
+"RC120",thermostat,157,solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,-1,1
+"RC120",thermostat,157,currsolarinfl,curent solar influence,uint8 (>=0<=25),C,false,sensor.thermostat_hc1_curent_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,-1,1
"RC120",thermostat,157,mode,operating mode,enum [off\|comfort\|auto], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
"RC120",thermostat,157,settemp,set temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,1,1
"RC120",thermostat,157,settemplow,set low temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_low_temperature,number.thermostat_dhw_settemplow,6,9,1,2,1
diff --git a/interface/package.json b/interface/package.json
index 4e94ea688..a74ec2056 100644
--- a/interface/package.json
+++ b/interface/package.json
@@ -42,16 +42,16 @@
},
"devDependencies": {
"@babel/core": "^7.26.0",
- "@eslint/js": "^9.17.0",
+ "@eslint/js": "^9.18.0",
"@preact/compat": "^18.3.1",
"@preact/preset-vite": "^2.9.4",
"@trivago/prettier-plugin-sort-imports": "^5.2.1",
"@types/formidable": "^3",
"@types/node": "^22.10.5",
- "@types/react": "^19.0.3",
- "@types/react-dom": "^19.0.2",
+ "@types/react": "^19.0.5",
+ "@types/react-dom": "^19.0.3",
"concurrently": "^9.1.2",
- "eslint": "^9.17.0",
+ "eslint": "^9.18.0",
"eslint-config-prettier": "^9.1.0",
"formidable": "^3.5.2",
"prettier": "^3.4.2",
diff --git a/interface/src/CustomTheme.tsx b/interface/src/CustomTheme.tsx
index b42b7d0cc..579a8d597 100644
--- a/interface/src/CustomTheme.tsx
+++ b/interface/src/CustomTheme.tsx
@@ -1,11 +1,7 @@
import type { FC } from 'react';
-import { CssBaseline } from '@mui/material';
-import {
- ThemeProvider,
- createTheme,
- responsiveFontSizes
-} from '@mui/material/styles';
+import { CssBaseline, ThemeProvider, responsiveFontSizes } from '@mui/material';
+import { createTheme } from '@mui/material/styles';
import type { RequiredChildrenProps } from 'utils';
diff --git a/interface/src/app/main/CustomEntitiesDialog.tsx b/interface/src/app/main/CustomEntitiesDialog.tsx
index 0e08c6d14..a821c9fb8 100644
--- a/interface/src/app/main/CustomEntitiesDialog.tsx
+++ b/interface/src/app/main/CustomEntitiesDialog.tsx
@@ -12,11 +12,11 @@ import {
DialogActions,
DialogContent,
DialogTitle,
+ Grid2 as Grid,
InputAdornment,
MenuItem,
TextField
} from '@mui/material';
-import Grid from '@mui/material/Grid2';
import { dialogStyle } from 'CustomTheme';
import type Schema from 'async-validator';
diff --git a/interface/src/app/main/Customizations.tsx b/interface/src/app/main/Customizations.tsx
index 119c32032..b8f3aaef0 100644
--- a/interface/src/app/main/Customizations.tsx
+++ b/interface/src/app/main/Customizations.tsx
@@ -16,6 +16,7 @@ import {
DialogActions,
DialogContent,
DialogTitle,
+ Grid2 as Grid,
InputAdornment,
Link,
MenuItem,
@@ -24,7 +25,6 @@ import {
ToggleButtonGroup,
Typography
} from '@mui/material';
-import Grid from '@mui/material/Grid2';
import {
Body,
diff --git a/interface/src/app/main/CustomizationsDialog.tsx b/interface/src/app/main/CustomizationsDialog.tsx
index a6936b2d3..60488cbde 100644
--- a/interface/src/app/main/CustomizationsDialog.tsx
+++ b/interface/src/app/main/CustomizationsDialog.tsx
@@ -10,10 +10,10 @@ import {
DialogActions,
DialogContent,
DialogTitle,
+ Grid2 as Grid,
TextField,
Typography
} from '@mui/material';
-import Grid from '@mui/material/Grid2';
import { dialogStyle } from 'CustomTheme';
import { useI18nContext } from 'i18n/i18n-react';
diff --git a/interface/src/app/main/Dashboard.tsx b/interface/src/app/main/Dashboard.tsx
index ea174607f..60908ff8e 100644
--- a/interface/src/app/main/Dashboard.tsx
+++ b/interface/src/app/main/Dashboard.tsx
@@ -10,13 +10,13 @@ import UnfoldLessIcon from '@mui/icons-material/UnfoldLess';
import UnfoldMoreIcon from '@mui/icons-material/UnfoldMore';
import {
Box,
+ Grid2 as Grid,
IconButton,
ToggleButton,
ToggleButtonGroup,
Tooltip,
Typography
} from '@mui/material';
-import Grid from '@mui/material/Grid2';
import { Body, Cell, Row, Table } from '@table-library/react-table-library/table';
import { useTheme } from '@table-library/react-table-library/theme';
diff --git a/interface/src/app/main/Devices.tsx b/interface/src/app/main/Devices.tsx
index d34625839..62d239fed 100644
--- a/interface/src/app/main/Devices.tsx
+++ b/interface/src/app/main/Devices.tsx
@@ -30,6 +30,7 @@ import {
DialogActions,
DialogContent,
DialogTitle,
+ Grid2 as Grid,
IconButton,
List,
ListItem,
@@ -40,7 +41,6 @@ import {
styled,
tooltipClasses
} from '@mui/material';
-import Grid from '@mui/material/Grid2';
import { useRowSelect } from '@table-library/react-table-library/select';
import { SortToggleType, useSort } from '@table-library/react-table-library/sort';
diff --git a/interface/src/app/main/DevicesDialog.tsx b/interface/src/app/main/DevicesDialog.tsx
index 7e0389426..21789a33d 100644
--- a/interface/src/app/main/DevicesDialog.tsx
+++ b/interface/src/app/main/DevicesDialog.tsx
@@ -11,12 +11,12 @@ import {
DialogContent,
DialogTitle,
FormHelperText,
+ Grid2 as Grid,
InputAdornment,
MenuItem,
TextField,
Typography
} from '@mui/material';
-import Grid from '@mui/material/Grid2';
import { dialogStyle } from 'CustomTheme';
import type Schema from 'async-validator';
diff --git a/interface/src/app/main/ModulesDialog.tsx b/interface/src/app/main/ModulesDialog.tsx
index e045c69f7..9ba069c89 100644
--- a/interface/src/app/main/ModulesDialog.tsx
+++ b/interface/src/app/main/ModulesDialog.tsx
@@ -10,9 +10,9 @@ import {
DialogActions,
DialogContent,
DialogTitle,
+ Grid2 as Grid,
TextField
} from '@mui/material';
-import Grid from '@mui/material/Grid2';
import { dialogStyle } from 'CustomTheme';
import { BlockFormControlLabel } from 'components';
diff --git a/interface/src/app/main/SchedulerDialog.tsx b/interface/src/app/main/SchedulerDialog.tsx
index b29789e4c..c647ffc6e 100644
--- a/interface/src/app/main/SchedulerDialog.tsx
+++ b/interface/src/app/main/SchedulerDialog.tsx
@@ -13,12 +13,12 @@ import {
DialogActions,
DialogContent,
DialogTitle,
+ Grid2 as Grid,
TextField,
ToggleButton,
ToggleButtonGroup,
Typography
} from '@mui/material';
-import Grid from '@mui/material/Grid2';
import { dialogStyle } from 'CustomTheme';
import type Schema from 'async-validator';
diff --git a/interface/src/app/main/SensorsAnalogDialog.tsx b/interface/src/app/main/SensorsAnalogDialog.tsx
index 420c790bc..274b4eb6a 100644
--- a/interface/src/app/main/SensorsAnalogDialog.tsx
+++ b/interface/src/app/main/SensorsAnalogDialog.tsx
@@ -10,12 +10,12 @@ import {
DialogActions,
DialogContent,
DialogTitle,
+ Grid2 as Grid,
InputAdornment,
MenuItem,
TextField,
Typography
} from '@mui/material';
-import Grid from '@mui/material/Grid2';
import { dialogStyle } from 'CustomTheme';
import type Schema from 'async-validator';
diff --git a/interface/src/app/main/SensorsTemperatureDialog.tsx b/interface/src/app/main/SensorsTemperatureDialog.tsx
index 71bfa4fc1..63733113a 100644
--- a/interface/src/app/main/SensorsTemperatureDialog.tsx
+++ b/interface/src/app/main/SensorsTemperatureDialog.tsx
@@ -9,11 +9,11 @@ import {
DialogActions,
DialogContent,
DialogTitle,
+ Grid2 as Grid,
InputAdornment,
TextField,
Typography
} from '@mui/material';
-import Grid from '@mui/material/Grid2';
import { dialogStyle } from 'CustomTheme';
import type Schema from 'async-validator';
diff --git a/interface/src/app/main/deviceValue.ts b/interface/src/app/main/deviceValue.ts
index e03bf712c..57b0dfaa3 100644
--- a/interface/src/app/main/deviceValue.ts
+++ b/interface/src/app/main/deviceValue.ts
@@ -36,7 +36,9 @@ export function formatValue(
}
return (
(value as string) +
- (value === '' || uom === undefined || uom === 0 ? '' : ' ' + DeviceValueUOM_s[uom])
+ (value === '' || uom === undefined || uom === 0
+ ? ''
+ : ' ' + DeviceValueUOM_s[uom])
);
}
diff --git a/interface/src/app/settings/ApplicationSettings.tsx b/interface/src/app/settings/ApplicationSettings.tsx
index 0abf36959..871d15e28 100644
--- a/interface/src/app/settings/ApplicationSettings.tsx
+++ b/interface/src/app/settings/ApplicationSettings.tsx
@@ -9,12 +9,12 @@ import {
Button,
Checkbox,
Divider,
+ Grid2 as Grid,
InputAdornment,
MenuItem,
TextField,
Typography
} from '@mui/material';
-import Grid from '@mui/material/Grid2';
import { readSystemStatus } from 'api/system';
@@ -204,7 +204,16 @@ const ApplicationSettings = () => {
disabled={!hardwareData.psram}
/>
}
- label={LL.ENABLE_MODBUS()}
+ label={
+
+ {LL.ENABLE_MODBUS()}
+ {!hardwareData.psram && (
+
+ ({LL.IS_REQUIRED('PSRAM')})
+
+ )}
+
+ }
/>
{data.modbus_enabled && (
diff --git a/interface/src/app/settings/DownloadUpload.tsx b/interface/src/app/settings/DownloadUpload.tsx
index 15a915f23..7bb1d8dca 100644
--- a/interface/src/app/settings/DownloadUpload.tsx
+++ b/interface/src/app/settings/DownloadUpload.tsx
@@ -2,8 +2,7 @@ import { useState } from 'react';
import { toast } from 'react-toastify';
import DownloadIcon from '@mui/icons-material/GetApp';
-import { Box, Button, Typography } from '@mui/material';
-import Grid from '@mui/material/Grid2';
+import { Box, Button, Grid2 as Grid, Typography } from '@mui/material';
import * as SystemApi from 'api/system';
import { API, callAction } from 'api/app';
diff --git a/interface/src/app/settings/MqttSettings.tsx b/interface/src/app/settings/MqttSettings.tsx
index 66f653861..a03f139b9 100644
--- a/interface/src/app/settings/MqttSettings.tsx
+++ b/interface/src/app/settings/MqttSettings.tsx
@@ -5,12 +5,12 @@ import WarningIcon from '@mui/icons-material/Warning';
import {
Button,
Checkbox,
+ Grid2 as Grid,
InputAdornment,
MenuItem,
TextField,
Typography
} from '@mui/material';
-import Grid from '@mui/material/Grid2';
import * as MqttApi from 'api/mqtt';
diff --git a/interface/src/app/settings/Version.tsx b/interface/src/app/settings/Version.tsx
index 0f4067105..c17804e50 100644
--- a/interface/src/app/settings/Version.tsx
+++ b/interface/src/app/settings/Version.tsx
@@ -13,10 +13,10 @@ import {
DialogActions,
DialogContent,
DialogTitle,
+ Grid2 as Grid,
Link,
Typography
} from '@mui/material';
-import Grid from '@mui/material/Grid2';
import * as SystemApi from 'api/system';
import { callAction } from 'api/app';
@@ -60,8 +60,10 @@ const Version = () => {
send: loadData,
error
} = useRequest(SystemApi.readSystemStatus).onSuccess((event) => {
- // older version of EMS-ESP didn't have the psram set, so we can't do an OTA upgrade
- setDownloadOnly(event.data.psram === undefined);
+ // older version of EMS-ESP on 4MB boards, can't use OTA because of SSL support in HttpClient
+ if (event.data.arduino_version.startsWith('Tasmota')) {
+ setDownloadOnly(true);
+ }
setUsingDevVersion(event.data.emsesp_version.includes('dev'));
});
@@ -252,7 +254,12 @@ const Version = () => {
Platform
- {getPlatform()}
+
+ {getPlatform()}
+
+ ({data.psram ? '+PSRAM' : '-PSRAM'})
+
+
diff --git a/interface/src/app/status/SystemLog.tsx b/interface/src/app/status/SystemLog.tsx
index 743ee3176..3c5a0bb58 100644
--- a/interface/src/app/status/SystemLog.tsx
+++ b/interface/src/app/status/SystemLog.tsx
@@ -8,12 +8,12 @@ import {
Box,
Button,
Checkbox,
+ Grid2 as Grid,
IconButton,
MenuItem,
TextField,
styled
} from '@mui/material';
-import Grid from '@mui/material/Grid2';
import { API } from 'api/app';
import { fetchLogES, readLogSettings, updateLogSettings } from 'api/system';
diff --git a/interface/yarn.lock b/interface/yarn.lock
index 0e3f3e977..12a609548 100644
--- a/interface/yarn.lock
+++ b/interface/yarn.lock
@@ -44,10 +44,10 @@ __metadata:
languageName: node
linkType: hard
-"@babel/compat-data@npm:^7.25.9":
- version: 7.26.3
- resolution: "@babel/compat-data@npm:7.26.3"
- checksum: 10c0/d63e71845c34dfad8d7ff8c15b562e620dbf60e68e3abfa35681d24d612594e8e5ec9790d831a287ecd79ce00f48e7ffddc85c5ce94af7242d45917b9c1a5f90
+"@babel/compat-data@npm:^7.26.5":
+ version: 7.26.5
+ resolution: "@babel/compat-data@npm:7.26.5"
+ checksum: 10c0/9d2b41f0948c3dfc5de44d9f789d2208c2ea1fd7eb896dfbb297fe955e696728d6f363c600cd211e7f58ccbc2d834fe516bb1e4cf883bbabed8a32b038afc1a0
languageName: node
linkType: hard
@@ -74,16 +74,16 @@ __metadata:
languageName: node
linkType: hard
-"@babel/generator@npm:^7.26.0, @babel/generator@npm:^7.26.2, @babel/generator@npm:^7.26.3":
- version: 7.26.3
- resolution: "@babel/generator@npm:7.26.3"
+"@babel/generator@npm:^7.26.0, @babel/generator@npm:^7.26.2, @babel/generator@npm:^7.26.5":
+ version: 7.26.5
+ resolution: "@babel/generator@npm:7.26.5"
dependencies:
- "@babel/parser": "npm:^7.26.3"
- "@babel/types": "npm:^7.26.3"
+ "@babel/parser": "npm:^7.26.5"
+ "@babel/types": "npm:^7.26.5"
"@jridgewell/gen-mapping": "npm:^0.3.5"
"@jridgewell/trace-mapping": "npm:^0.3.25"
jsesc: "npm:^3.0.2"
- checksum: 10c0/54f260558e3e4ec8942da3cde607c35349bb983c3a7c5121243f96893fba3e8cd62e1f1773b2051f936f8c8a10987b758d5c7d76dbf2784e95bb63ab4843fa00
+ checksum: 10c0/3be79e0aa03f38858a465d12ee2e468320b9122dc44fc85984713e32f16f4d77ce34a16a1a9505972782590e0b8d847b6f373621f9c6fafa1906d90f31416cb0
languageName: node
linkType: hard
@@ -97,15 +97,15 @@ __metadata:
linkType: hard
"@babel/helper-compilation-targets@npm:^7.25.9":
- version: 7.25.9
- resolution: "@babel/helper-compilation-targets@npm:7.25.9"
+ version: 7.26.5
+ resolution: "@babel/helper-compilation-targets@npm:7.26.5"
dependencies:
- "@babel/compat-data": "npm:^7.25.9"
+ "@babel/compat-data": "npm:^7.26.5"
"@babel/helper-validator-option": "npm:^7.25.9"
browserslist: "npm:^4.24.0"
lru-cache: "npm:^5.1.1"
semver: "npm:^6.3.1"
- checksum: 10c0/a6b26a1e4222e69ef8e62ee19374308f060b007828bc11c65025ecc9e814aba21ff2175d6d3f8bf53c863edd728ee8f94ba7870f8f90a37d39552ad9933a8aaa
+ checksum: 10c0/9da5c77e5722f1a2fcb3e893049a01d414124522bbf51323bb1a0c9dcd326f15279836450fc36f83c9e8a846f3c40e88be032ed939c5a9840922bed6073edfb4
languageName: node
linkType: hard
@@ -133,9 +133,9 @@ __metadata:
linkType: hard
"@babel/helper-plugin-utils@npm:^7.25.9":
- version: 7.25.9
- resolution: "@babel/helper-plugin-utils@npm:7.25.9"
- checksum: 10c0/483066a1ba36ff16c0116cd24f93de05de746a603a777cd695ac7a1b034928a65a4ecb35f255761ca56626435d7abdb73219eba196f9aa83b6c3c3169325599d
+ version: 7.26.5
+ resolution: "@babel/helper-plugin-utils@npm:7.26.5"
+ checksum: 10c0/cdaba71d4b891aa6a8dfbe5bac2f94effb13e5fa4c2c487667fdbaa04eae059b78b28d85a885071f45f7205aeb56d16759e1bed9c118b94b16e4720ef1ab0f65
languageName: node
linkType: hard
@@ -170,14 +170,14 @@ __metadata:
languageName: node
linkType: hard
-"@babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2, @babel/parser@npm:^7.26.3":
- version: 7.26.3
- resolution: "@babel/parser@npm:7.26.3"
+"@babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2, @babel/parser@npm:^7.26.5":
+ version: 7.26.5
+ resolution: "@babel/parser@npm:7.26.5"
dependencies:
- "@babel/types": "npm:^7.26.3"
+ "@babel/types": "npm:^7.26.5"
bin:
parser: ./bin/babel-parser.js
- checksum: 10c0/48f736374e61cfd10ddbf7b80678514ae1f16d0e88bc793d2b505d73d9b987ea786fc8c2f7ee8f8b8c467df062030eb07fd0eb2168f0f541ca1f542775852cad
+ checksum: 10c0/2e77dd99ee028ee3c10fa03517ae1169f2432751adf71315e4dc0d90b61639d51760d622f418f6ac665ae4ea65f8485232a112ea0e76f18e5900225d3d19a61e
languageName: node
linkType: hard
@@ -239,27 +239,27 @@ __metadata:
linkType: hard
"@babel/traverse@npm:^7.25.9":
- version: 7.26.4
- resolution: "@babel/traverse@npm:7.26.4"
+ version: 7.26.5
+ resolution: "@babel/traverse@npm:7.26.5"
dependencies:
"@babel/code-frame": "npm:^7.26.2"
- "@babel/generator": "npm:^7.26.3"
- "@babel/parser": "npm:^7.26.3"
+ "@babel/generator": "npm:^7.26.5"
+ "@babel/parser": "npm:^7.26.5"
"@babel/template": "npm:^7.25.9"
- "@babel/types": "npm:^7.26.3"
+ "@babel/types": "npm:^7.26.5"
debug: "npm:^4.3.1"
globals: "npm:^11.1.0"
- checksum: 10c0/cf25d0eda9505daa0f0832ad786b9e28c9d967e823aaf7fbe425250ab198c656085495aa6bed678b27929e095c84eea9fd778b851a31803da94c9bc4bf4eaef7
+ checksum: 10c0/0779059ecf63e31446564cf31adf170e701e8017ef02c819c57924a9a83d6b2ce41dbff3ef295589da9410497a3e575655bb8084ca470e0ab1bc193128afa9fe
languageName: node
linkType: hard
-"@babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.26.3":
- version: 7.26.3
- resolution: "@babel/types@npm:7.26.3"
+"@babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.26.5":
+ version: 7.26.5
+ resolution: "@babel/types@npm:7.26.5"
dependencies:
"@babel/helper-string-parser": "npm:^7.25.9"
"@babel/helper-validator-identifier": "npm:^7.25.9"
- checksum: 10c0/966c5242c5e55c8704bf7a7418e7be2703a0afa4d19a8480999d5a4ef13d095dd60686615fe5983cb7593b4b06ba3a7de8d6ca501c1d78bdd233a10d90be787b
+ checksum: 10c0/0278053b69d7c2b8573aa36dc5242cad95f0d965e1c0ed21ccacac6330092e59ba5949753448f6d6eccf6ad59baaef270295cc05218352e060ea8c68388638c4
languageName: node
linkType: hard
@@ -620,12 +620,12 @@ __metadata:
languageName: node
linkType: hard
-"@eslint/core@npm:^0.9.0":
- version: 0.9.1
- resolution: "@eslint/core@npm:0.9.1"
+"@eslint/core@npm:^0.10.0":
+ version: 0.10.0
+ resolution: "@eslint/core@npm:0.10.0"
dependencies:
"@types/json-schema": "npm:^7.0.15"
- checksum: 10c0/638104b1b5833a9bbf2329f0c0ddf322e4d6c0410b149477e02cd2b78c04722be90c14b91b8ccdef0d63a2404dff72a17b6b412ce489ea429ae6a8fcb8abff28
+ checksum: 10c0/074018075079b3ed1f14fab9d116f11a8824cdfae3e822badf7ad546962fafe717a31e61459bad8cc59cf7070dc413ea9064ddb75c114f05b05921029cde0a64
languageName: node
linkType: hard
@@ -646,10 +646,10 @@ __metadata:
languageName: node
linkType: hard
-"@eslint/js@npm:9.17.0, @eslint/js@npm:^9.17.0":
- version: 9.17.0
- resolution: "@eslint/js@npm:9.17.0"
- checksum: 10c0/a0fda8657a01c60aa540f95397754267ba640ffb126e011b97fd65c322a94969d161beeaef57c1441c495da2f31167c34bd38209f7c146c7225072378c3a933d
+"@eslint/js@npm:9.18.0, @eslint/js@npm:^9.18.0":
+ version: 9.18.0
+ resolution: "@eslint/js@npm:9.18.0"
+ checksum: 10c0/3938344c5ac7feef4b73fcb30f3c3e753570cea74c24904bb5d07e9c42fcd34fcbc40f545b081356a299e11f360c9c274b348c05fb0113fc3d492e5175eee140
languageName: node
linkType: hard
@@ -660,12 +660,13 @@ __metadata:
languageName: node
linkType: hard
-"@eslint/plugin-kit@npm:^0.2.3":
- version: 0.2.4
- resolution: "@eslint/plugin-kit@npm:0.2.4"
+"@eslint/plugin-kit@npm:^0.2.5":
+ version: 0.2.5
+ resolution: "@eslint/plugin-kit@npm:0.2.5"
dependencies:
+ "@eslint/core": "npm:^0.10.0"
levn: "npm:^0.4.1"
- checksum: 10c0/1bcfc0a30b1df891047c1d8b3707833bded12a057ba01757a2a8591fdc8d8fe0dbb8d51d4b0b61b2af4ca1d363057abd7d2fb4799f1706b105734f4d3fa0dbf1
+ checksum: 10c0/ba9832b8409af618cf61791805fe201dd62f3c82c783adfcec0f5cd391e68b40beaecb47b9a3209e926dbcab65135f410cae405b69a559197795793399f61176
languageName: node
linkType: hard
@@ -1085,135 +1086,135 @@ __metadata:
languageName: node
linkType: hard
-"@rollup/rollup-android-arm-eabi@npm:4.29.1":
- version: 4.29.1
- resolution: "@rollup/rollup-android-arm-eabi@npm:4.29.1"
+"@rollup/rollup-android-arm-eabi@npm:4.30.1":
+ version: 4.30.1
+ resolution: "@rollup/rollup-android-arm-eabi@npm:4.30.1"
conditions: os=android & cpu=arm
languageName: node
linkType: hard
-"@rollup/rollup-android-arm64@npm:4.29.1":
- version: 4.29.1
- resolution: "@rollup/rollup-android-arm64@npm:4.29.1"
+"@rollup/rollup-android-arm64@npm:4.30.1":
+ version: 4.30.1
+ resolution: "@rollup/rollup-android-arm64@npm:4.30.1"
conditions: os=android & cpu=arm64
languageName: node
linkType: hard
-"@rollup/rollup-darwin-arm64@npm:4.29.1":
- version: 4.29.1
- resolution: "@rollup/rollup-darwin-arm64@npm:4.29.1"
+"@rollup/rollup-darwin-arm64@npm:4.30.1":
+ version: 4.30.1
+ resolution: "@rollup/rollup-darwin-arm64@npm:4.30.1"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
-"@rollup/rollup-darwin-x64@npm:4.29.1":
- version: 4.29.1
- resolution: "@rollup/rollup-darwin-x64@npm:4.29.1"
+"@rollup/rollup-darwin-x64@npm:4.30.1":
+ version: 4.30.1
+ resolution: "@rollup/rollup-darwin-x64@npm:4.30.1"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
-"@rollup/rollup-freebsd-arm64@npm:4.29.1":
- version: 4.29.1
- resolution: "@rollup/rollup-freebsd-arm64@npm:4.29.1"
+"@rollup/rollup-freebsd-arm64@npm:4.30.1":
+ version: 4.30.1
+ resolution: "@rollup/rollup-freebsd-arm64@npm:4.30.1"
conditions: os=freebsd & cpu=arm64
languageName: node
linkType: hard
-"@rollup/rollup-freebsd-x64@npm:4.29.1":
- version: 4.29.1
- resolution: "@rollup/rollup-freebsd-x64@npm:4.29.1"
+"@rollup/rollup-freebsd-x64@npm:4.30.1":
+ version: 4.30.1
+ resolution: "@rollup/rollup-freebsd-x64@npm:4.30.1"
conditions: os=freebsd & cpu=x64
languageName: node
linkType: hard
-"@rollup/rollup-linux-arm-gnueabihf@npm:4.29.1":
- version: 4.29.1
- resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.29.1"
+"@rollup/rollup-linux-arm-gnueabihf@npm:4.30.1":
+ version: 4.30.1
+ resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.30.1"
conditions: os=linux & cpu=arm & libc=glibc
languageName: node
linkType: hard
-"@rollup/rollup-linux-arm-musleabihf@npm:4.29.1":
- version: 4.29.1
- resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.29.1"
+"@rollup/rollup-linux-arm-musleabihf@npm:4.30.1":
+ version: 4.30.1
+ resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.30.1"
conditions: os=linux & cpu=arm & libc=musl
languageName: node
linkType: hard
-"@rollup/rollup-linux-arm64-gnu@npm:4.29.1":
- version: 4.29.1
- resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.29.1"
+"@rollup/rollup-linux-arm64-gnu@npm:4.30.1":
+ version: 4.30.1
+ resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.30.1"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
-"@rollup/rollup-linux-arm64-musl@npm:4.29.1":
- version: 4.29.1
- resolution: "@rollup/rollup-linux-arm64-musl@npm:4.29.1"
+"@rollup/rollup-linux-arm64-musl@npm:4.30.1":
+ version: 4.30.1
+ resolution: "@rollup/rollup-linux-arm64-musl@npm:4.30.1"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
-"@rollup/rollup-linux-loongarch64-gnu@npm:4.29.1":
- version: 4.29.1
- resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.29.1"
+"@rollup/rollup-linux-loongarch64-gnu@npm:4.30.1":
+ version: 4.30.1
+ resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.30.1"
conditions: os=linux & cpu=loong64 & libc=glibc
languageName: node
linkType: hard
-"@rollup/rollup-linux-powerpc64le-gnu@npm:4.29.1":
- version: 4.29.1
- resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.29.1"
+"@rollup/rollup-linux-powerpc64le-gnu@npm:4.30.1":
+ version: 4.30.1
+ resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.30.1"
conditions: os=linux & cpu=ppc64 & libc=glibc
languageName: node
linkType: hard
-"@rollup/rollup-linux-riscv64-gnu@npm:4.29.1":
- version: 4.29.1
- resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.29.1"
+"@rollup/rollup-linux-riscv64-gnu@npm:4.30.1":
+ version: 4.30.1
+ resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.30.1"
conditions: os=linux & cpu=riscv64 & libc=glibc
languageName: node
linkType: hard
-"@rollup/rollup-linux-s390x-gnu@npm:4.29.1":
- version: 4.29.1
- resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.29.1"
+"@rollup/rollup-linux-s390x-gnu@npm:4.30.1":
+ version: 4.30.1
+ resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.30.1"
conditions: os=linux & cpu=s390x & libc=glibc
languageName: node
linkType: hard
-"@rollup/rollup-linux-x64-gnu@npm:4.29.1":
- version: 4.29.1
- resolution: "@rollup/rollup-linux-x64-gnu@npm:4.29.1"
+"@rollup/rollup-linux-x64-gnu@npm:4.30.1":
+ version: 4.30.1
+ resolution: "@rollup/rollup-linux-x64-gnu@npm:4.30.1"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
-"@rollup/rollup-linux-x64-musl@npm:4.29.1":
- version: 4.29.1
- resolution: "@rollup/rollup-linux-x64-musl@npm:4.29.1"
+"@rollup/rollup-linux-x64-musl@npm:4.30.1":
+ version: 4.30.1
+ resolution: "@rollup/rollup-linux-x64-musl@npm:4.30.1"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
-"@rollup/rollup-win32-arm64-msvc@npm:4.29.1":
- version: 4.29.1
- resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.29.1"
+"@rollup/rollup-win32-arm64-msvc@npm:4.30.1":
+ version: 4.30.1
+ resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.30.1"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
-"@rollup/rollup-win32-ia32-msvc@npm:4.29.1":
- version: 4.29.1
- resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.29.1"
+"@rollup/rollup-win32-ia32-msvc@npm:4.30.1":
+ version: 4.30.1
+ resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.30.1"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
-"@rollup/rollup-win32-x64-msvc@npm:4.29.1":
- version: 4.29.1
- resolution: "@rollup/rollup-win32-x64-msvc@npm:4.29.1"
+"@rollup/rollup-win32-x64-msvc@npm:4.30.1":
+ version: 4.30.1
+ resolution: "@rollup/rollup-win32-x64-msvc@npm:4.30.1"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
@@ -1425,12 +1426,12 @@ __metadata:
languageName: node
linkType: hard
-"@types/react-dom@npm:^19.0.2":
- version: 19.0.2
- resolution: "@types/react-dom@npm:19.0.2"
+"@types/react-dom@npm:^19.0.3":
+ version: 19.0.3
+ resolution: "@types/react-dom@npm:19.0.3"
peerDependencies:
"@types/react": ^19.0.0
- checksum: 10c0/3d0c7b78dbe8df64ea769f30af990a5950173a8321c745fe11094d765423f7964c3519dca6e7cd36b4be6521c8efc690bdd3b79b327b229dd1e9d5a8bad677dd
+ checksum: 10c0/3867427b333cbe8cbba496d7cc20ec9676d32c25ae44f4d1263a4129d42e57cf4adf0039ad263432f1215b88075c27d326e7eb4ed646128235d01a76e661d48f
languageName: node
linkType: hard
@@ -1443,12 +1444,12 @@ __metadata:
languageName: node
linkType: hard
-"@types/react@npm:^19.0.3":
- version: 19.0.3
- resolution: "@types/react@npm:19.0.3"
+"@types/react@npm:^19.0.5":
+ version: 19.0.5
+ resolution: "@types/react@npm:19.0.5"
dependencies:
csstype: "npm:^3.0.2"
- checksum: 10c0/90129c45f2f09154d9409964964d0ccbac7f04d5f7fcf73fc146d33887931fbfdfd1e2947514298f94f986cc264aff8ba3201e9a4ea207d3308f20a06d47c805
+ checksum: 10c0/6f3a25c826e8b274cf26b25ef7bd4a97aaa4d7b30a0ea529bf252c6f0387d74f44940dea55cfcac75829bee53cd4c82fdb41653b978954a08036d2812a0ae6d6
languageName: node
linkType: hard
@@ -1590,7 +1591,7 @@ __metadata:
"@babel/core": "npm:^7.26.0"
"@emotion/react": "npm:^11.14.0"
"@emotion/styled": "npm:^11.14.0"
- "@eslint/js": "npm:^9.17.0"
+ "@eslint/js": "npm:^9.18.0"
"@mui/icons-material": "npm:^6.3.1"
"@mui/material": "npm:^6.3.1"
"@preact/compat": "npm:^18.3.1"
@@ -1599,12 +1600,12 @@ __metadata:
"@trivago/prettier-plugin-sort-imports": "npm:^5.2.1"
"@types/formidable": "npm:^3"
"@types/node": "npm:^22.10.5"
- "@types/react": "npm:^19.0.3"
- "@types/react-dom": "npm:^19.0.2"
+ "@types/react": "npm:^19.0.5"
+ "@types/react-dom": "npm:^19.0.3"
alova: "npm:3.2.7"
async-validator: "npm:^4.2.5"
concurrently: "npm:^9.1.2"
- eslint: "npm:^9.17.0"
+ eslint: "npm:^9.18.0"
eslint-config-prettier: "npm:^9.1.0"
formidable: "npm:^3.5.2"
jwt-decode: "npm:^4.0.0"
@@ -1914,8 +1915,8 @@ __metadata:
linkType: hard
"browserslist@npm:^4.24.0":
- version: 4.24.3
- resolution: "browserslist@npm:4.24.3"
+ version: 4.24.4
+ resolution: "browserslist@npm:4.24.4"
dependencies:
caniuse-lite: "npm:^1.0.30001688"
electron-to-chromium: "npm:^1.5.73"
@@ -1923,7 +1924,7 @@ __metadata:
update-browserslist-db: "npm:^1.1.1"
bin:
browserslist: cli.js
- checksum: 10c0/bab261ef7b6e1656a719a9fa31240ae7ce4d5ba68e479f6b11e348d819346ab4c0ff6f4821f43adcc9c193a734b186775a83b37979e70a69d182965909fe569a
+ checksum: 10c0/db7ebc1733cf471e0b490b4f47e3e2ea2947ce417192c9246644e92c667dd56a71406cc58f62ca7587caf828364892e9952904a02b7aead752bc65b62a37cfe9
languageName: node
linkType: hard
@@ -2035,9 +2036,9 @@ __metadata:
linkType: hard
"caniuse-lite@npm:^1.0.30001688":
- version: 1.0.30001690
- resolution: "caniuse-lite@npm:1.0.30001690"
- checksum: 10c0/646bd469032afa90400a84dec30a2b00a6eda62c03ead358117e3f884cda8aacec02ec058a6dbee5eaf9714f83e483b9b0eb4fb42febb8076569f5ca40f1d347
+ version: 1.0.30001692
+ resolution: "caniuse-lite@npm:1.0.30001692"
+ checksum: 10c0/fca5105561ea12f3de593f3b0f062af82f7d07519e8dbcb97f34e7fd23349bcef1b1622a9a6cd2164d98e3d2f20059ef7e271edae46567aef88caf4c16c7708a
languageName: node
linkType: hard
@@ -2554,13 +2555,13 @@ __metadata:
linkType: hard
"domutils@npm:^3.0.1":
- version: 3.2.1
- resolution: "domutils@npm:3.2.1"
+ version: 3.2.2
+ resolution: "domutils@npm:3.2.2"
dependencies:
dom-serializer: "npm:^2.0.0"
domelementtype: "npm:^2.3.0"
domhandler: "npm:^5.0.3"
- checksum: 10c0/af2a8e28fe51137307d2400c4b6483a3294ac8f784b14fc74b67f3aca3aa53a63144bd9e2bb96f23174c0c1aa680544bf2d77b4cc94e6f90f33314ed65c12a4f
+ checksum: 10c0/47938f473b987ea71cd59e59626eb8666d3aa8feba5266e45527f3b636c7883cca7e582d901531961f742c519d7514636b7973353b648762b2e3bedbf235fada
languageName: node
linkType: hard
@@ -2618,9 +2619,9 @@ __metadata:
linkType: hard
"electron-to-chromium@npm:^1.5.73":
- version: 1.5.76
- resolution: "electron-to-chromium@npm:1.5.76"
- checksum: 10c0/5a977be9fd5810769a7b4eae0e4b41b6beca65f2b3f3b7442819f6c93366d767d183cfbf408714f944a9bf3aa304f8c9ab9d0cdfd8e878ab8f2cbb61f8b22acd
+ version: 1.5.80
+ resolution: "electron-to-chromium@npm:1.5.80"
+ checksum: 10c0/6aaf1891e1b05251efac6f4a63c0ddccf567f0f76506cf0cb284f11413762423fddd7786558066f74c3a95e2a533dad7a97bebe38779b46b7a799d8dd20cea53
languageName: node
linkType: hard
@@ -3049,17 +3050,17 @@ __metadata:
languageName: node
linkType: hard
-"eslint@npm:^9.17.0":
- version: 9.17.0
- resolution: "eslint@npm:9.17.0"
+"eslint@npm:^9.18.0":
+ version: 9.18.0
+ resolution: "eslint@npm:9.18.0"
dependencies:
"@eslint-community/eslint-utils": "npm:^4.2.0"
"@eslint-community/regexpp": "npm:^4.12.1"
"@eslint/config-array": "npm:^0.19.0"
- "@eslint/core": "npm:^0.9.0"
+ "@eslint/core": "npm:^0.10.0"
"@eslint/eslintrc": "npm:^3.2.0"
- "@eslint/js": "npm:9.17.0"
- "@eslint/plugin-kit": "npm:^0.2.3"
+ "@eslint/js": "npm:9.18.0"
+ "@eslint/plugin-kit": "npm:^0.2.5"
"@humanfs/node": "npm:^0.16.6"
"@humanwhocodes/module-importer": "npm:^1.0.1"
"@humanwhocodes/retry": "npm:^0.4.1"
@@ -3094,7 +3095,7 @@ __metadata:
optional: true
bin:
eslint: bin/eslint.js
- checksum: 10c0/9edd8dd782b4ae2eb00a158ed4708194835d4494d75545fa63a51f020ed17f865c49b4ae1914a2ecbc7fdb262bd8059e811aeef9f0bae63dced9d3293be1bbdd
+ checksum: 10c0/7f592ad228b9bd627a24870fdc875bacdab7bf535d4b67316c4cb791e90d0125130a74769f3c407b0c4b7027b3082ef33864a63ee1024552a60a17db60493f15
languageName: node
linkType: hard
@@ -3268,15 +3269,15 @@ __metadata:
linkType: hard
"fast-glob@npm:^3.0.3, fast-glob@npm:^3.3.2":
- version: 3.3.2
- resolution: "fast-glob@npm:3.3.2"
+ version: 3.3.3
+ resolution: "fast-glob@npm:3.3.3"
dependencies:
"@nodelib/fs.stat": "npm:^2.0.2"
"@nodelib/fs.walk": "npm:^1.2.3"
glob-parent: "npm:^5.1.2"
merge2: "npm:^1.3.0"
- micromatch: "npm:^4.0.4"
- checksum: 10c0/42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845
+ micromatch: "npm:^4.0.8"
+ checksum: 10c0/f6aaa141d0d3384cf73cbcdfc52f475ed293f6d5b65bfc5def368b09163a9f7e5ec2b3014d80f733c405f58e470ee0cc451c2937685045cddcdeaa24199c43fe
languageName: node
linkType: hard
@@ -4732,7 +4733,7 @@ __metadata:
languageName: node
linkType: hard
-"micromatch@npm:^4.0.4":
+"micromatch@npm:^4.0.8":
version: 4.0.8
resolution: "micromatch@npm:4.0.8"
dependencies:
@@ -5362,7 +5363,7 @@ __metadata:
languageName: node
linkType: hard
-"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0, picocolors@npm:^1.1.1":
+"picocolors@npm:^1.0.0, picocolors@npm:^1.1.1":
version: 1.1.1
resolution: "picocolors@npm:1.1.1"
checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58
@@ -5858,28 +5859,28 @@ __metadata:
linkType: hard
"rollup@npm:^4.23.0":
- version: 4.29.1
- resolution: "rollup@npm:4.29.1"
+ version: 4.30.1
+ resolution: "rollup@npm:4.30.1"
dependencies:
- "@rollup/rollup-android-arm-eabi": "npm:4.29.1"
- "@rollup/rollup-android-arm64": "npm:4.29.1"
- "@rollup/rollup-darwin-arm64": "npm:4.29.1"
- "@rollup/rollup-darwin-x64": "npm:4.29.1"
- "@rollup/rollup-freebsd-arm64": "npm:4.29.1"
- "@rollup/rollup-freebsd-x64": "npm:4.29.1"
- "@rollup/rollup-linux-arm-gnueabihf": "npm:4.29.1"
- "@rollup/rollup-linux-arm-musleabihf": "npm:4.29.1"
- "@rollup/rollup-linux-arm64-gnu": "npm:4.29.1"
- "@rollup/rollup-linux-arm64-musl": "npm:4.29.1"
- "@rollup/rollup-linux-loongarch64-gnu": "npm:4.29.1"
- "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.29.1"
- "@rollup/rollup-linux-riscv64-gnu": "npm:4.29.1"
- "@rollup/rollup-linux-s390x-gnu": "npm:4.29.1"
- "@rollup/rollup-linux-x64-gnu": "npm:4.29.1"
- "@rollup/rollup-linux-x64-musl": "npm:4.29.1"
- "@rollup/rollup-win32-arm64-msvc": "npm:4.29.1"
- "@rollup/rollup-win32-ia32-msvc": "npm:4.29.1"
- "@rollup/rollup-win32-x64-msvc": "npm:4.29.1"
+ "@rollup/rollup-android-arm-eabi": "npm:4.30.1"
+ "@rollup/rollup-android-arm64": "npm:4.30.1"
+ "@rollup/rollup-darwin-arm64": "npm:4.30.1"
+ "@rollup/rollup-darwin-x64": "npm:4.30.1"
+ "@rollup/rollup-freebsd-arm64": "npm:4.30.1"
+ "@rollup/rollup-freebsd-x64": "npm:4.30.1"
+ "@rollup/rollup-linux-arm-gnueabihf": "npm:4.30.1"
+ "@rollup/rollup-linux-arm-musleabihf": "npm:4.30.1"
+ "@rollup/rollup-linux-arm64-gnu": "npm:4.30.1"
+ "@rollup/rollup-linux-arm64-musl": "npm:4.30.1"
+ "@rollup/rollup-linux-loongarch64-gnu": "npm:4.30.1"
+ "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.30.1"
+ "@rollup/rollup-linux-riscv64-gnu": "npm:4.30.1"
+ "@rollup/rollup-linux-s390x-gnu": "npm:4.30.1"
+ "@rollup/rollup-linux-x64-gnu": "npm:4.30.1"
+ "@rollup/rollup-linux-x64-musl": "npm:4.30.1"
+ "@rollup/rollup-win32-arm64-msvc": "npm:4.30.1"
+ "@rollup/rollup-win32-ia32-msvc": "npm:4.30.1"
+ "@rollup/rollup-win32-x64-msvc": "npm:4.30.1"
"@types/estree": "npm:1.0.6"
fsevents: "npm:~2.3.2"
dependenciesMeta:
@@ -5925,7 +5926,7 @@ __metadata:
optional: true
bin:
rollup: dist/bin/rollup
- checksum: 10c0/fcd0321df78fdc74b36858e92c4b73ebf5aa8f0b9cf7c446f008e0dc3c5c4ed855d662dc44e5a09c7794bbe91017b4dd7be88b619c239f0494f9f0fbfa67c557
+ checksum: 10c0/a318c57e2ca9741e1503bcd75483949c6e83edd72234a468010a3098a34248f523e44f7ad4fde90dc5c2da56abc1b78ac42a9329e1dbd708682728adbd8df7cc
languageName: node
linkType: hard
@@ -6717,16 +6718,16 @@ __metadata:
linkType: hard
"update-browserslist-db@npm:^1.1.1":
- version: 1.1.1
- resolution: "update-browserslist-db@npm:1.1.1"
+ version: 1.1.2
+ resolution: "update-browserslist-db@npm:1.1.2"
dependencies:
escalade: "npm:^3.2.0"
- picocolors: "npm:^1.1.0"
+ picocolors: "npm:^1.1.1"
peerDependencies:
browserslist: ">= 4.21.0"
bin:
update-browserslist-db: cli.js
- checksum: 10c0/536a2979adda2b4be81b07e311bd2f3ad5e978690987956bc5f514130ad50cac87cd22c710b686d79731e00fbee8ef43efe5fcd72baa241045209195d43dcc80
+ checksum: 10c0/9cb353998d6d7d6ba1e46b8fa3db888822dd972212da4eda609d185eb5c3557a93fd59780ceb757afd4d84240518df08542736969e6a5d6d6ce2d58e9363aac6
languageName: node
linkType: hard
diff --git a/mock-api/rest_server.ts b/mock-api/rest_server.ts
index 27cfdf1fc..41c2360e1 100644
--- a/mock-api/rest_server.ts
+++ b/mock-api/rest_server.ts
@@ -14,16 +14,116 @@ const headers = {
'Content-type': 'application/msgpack'
};
+// EMS-ESP Application Settings
+let settings = {
+ locale: 'en',
+ tx_mode: 1,
+ ems_bus_id: 11,
+ syslog_enabled: false,
+ syslog_level: 3,
+ trace_raw: false,
+ syslog_mark_interval: 0,
+ syslog_host: '192.168.1.8',
+ syslog_port: 514,
+ boiler_heatingoff: false,
+ remote_timeout: 24,
+ remote_timeout_en: false,
+ shower_timer: true,
+ shower_alert: false,
+ shower_alert_coldshot: 10,
+ shower_alert_trigger: 7,
+ shower_min_duration: 180,
+ rx_gpio: 4,
+ tx_gpio: 5,
+ dallas_gpio: 14,
+ dallas_parasite: false,
+ led_gpio: 2,
+ hide_led: true,
+ low_clock: false,
+ telnet_enabled: true,
+ notoken_api: false,
+ readonly_mode: false,
+ analog_enabled: true,
+ pbutton_gpio: 34,
+ solar_maxflow: 30,
+ board_profile: 'E32V2',
+ fahrenheit: false,
+ bool_format: 1,
+ bool_dashboard: 1,
+ enum_format: 1,
+ weblog_level: 6,
+ weblog_buffer: 50,
+ weblog_compact: true,
+ phy_type: 1,
+ eth_power: 15,
+ eth_phy_addr: 0,
+ eth_clock_mode: 1,
+ platform: 'ESP32',
+ modbus_enabled: false,
+ modbus_port: 502,
+ modbus_max_clients: 10,
+ modbus_timeout: 10000,
+ developer_mode: true
+};
+
+// EMS-ESP System Settings
+let system_status = {
+ emsesp_version: 'XX.XX.XX', // defined later
+ bus_status: 0,
+ // status: 2,
+ uptime: 77186,
+ bus_uptime: 77121,
+ num_devices: 2,
+ num_sensors: 1,
+ num_analogs: 1,
+ free_heap: 143,
+ ntp_status: 2,
+ ntp_time: '2021-04-01T14:25:42Z',
+ mqtt_status: true,
+ ap_status: false,
+ network_status: 3, // wifi connected
+ // network_status: 10, // ethernet connected
+ // network_status: 6, // wifi disconnected
+ wifi_rssi: -41,
+ esp_platform: 'ESP32S3',
+ build_flags: 'DEMO',
+ cpu_type: 'ESP32-S3',
+ cpu_rev: 0,
+ cpu_cores: 2,
+ cpu_freq_mhz: 240,
+ max_alloc_heap: 191,
+ arduino_version: 'ESP32 Arduino v2.0.17',
+ sdk_version: 'v4.4.7',
+ partition: 'app0',
+ flash_chip_size: 16384,
+ flash_chip_speed: 80000000,
+ app_used: 2258,
+ app_free: 3438,
+ fs_used: 24,
+ fs_free: 2024,
+ free_caps: 8376,
+ psram: true,
+ psram_size: 8189,
+ free_psram: 8166,
+ has_loader: true,
+ model: '',
+ // model: 'BBQKees Electronics EMS Gateway E32 V2 (E32 V2.0 P3/2024011)',
+ status: 'downloading'
+};
+
let VERSION_IS_UPGRADEABLE: boolean;
// Versions
// default - on latest stable, no upgrades
-let THIS_VERSION = '3.7.2';
-let LATEST_STABLE_VERSION = '3.7.2';
-let LATEST_DEV_VERSION = '3.7.3-dev.1';
+let THIS_VERSION = '3.7.1';
+let LATEST_STABLE_VERSION = '3.7.1';
+let LATEST_DEV_VERSION = '3.7.2-dev.9';
-// scenarios for testing, overriding the default
-const version_test = 0;
+// scenarios for testing versioning
+const version_test = 0; // on latest stable, no upgrades, but can switch
+// const version_test = 1; // on latest dev, no update
+// const version_test = 2; // upgrade stable to latest stable
+// const version_test = 3; // upgrade dev to latest dev
switch (version_test as number) {
case 0:
@@ -33,9 +133,9 @@ switch (version_test as number) {
break;
case 1:
// on latest dev, no update
- THIS_VERSION = '3.7.2-dev.12';
+ THIS_VERSION = '3.7.2-dev.9';
LATEST_STABLE_VERSION = '3.7.1';
- LATEST_DEV_VERSION = '3.7.2-dev.12';
+ LATEST_DEV_VERSION = '3.7.2-dev.9';
VERSION_IS_UPGRADEABLE = false;
break;
case 2:
@@ -54,6 +154,43 @@ switch (version_test as number) {
break;
}
+// set the version
+system_status.emsesp_version = THIS_VERSION;
+
+const emulate_esp = "ESP32S3";
+// const emulate_esp = 'ESP32';
+
+switch (emulate_esp as string) {
+ // ESP32 4MB
+ case 'ESP32':
+ system_status.esp_platform = 'ESP32';
+ system_status.cpu_type = 'ESP32';
+ system_status.arduino_version = 'Tasmota Arduino v2.0.17';
+ system_status.sdk_version = 'v4.4.7';
+ system_status.psram = false;
+ system_status.psram_size = 0;
+ system_status.free_psram = 0;
+ settings.board_profile = 'E32V2';
+ settings.platform = 'ESP32';
+ break;
+
+ // ESP32S3
+ case 'ESP32S3':
+ default:
+ system_status.esp_platform = 'ESP32S3';
+ system_status.cpu_type = 'ESP32-S3';
+ system_status.arduino_version = 'ESP32 Arduino v2.0.18';
+ system_status.sdk_version = 'v4.4.7';
+ system_status.psram = true;
+ system_status.psram_size = 8189;
+ system_status.free_psram = 8166;
+ settings.board_profile = 'S3';
+ settings.platform = 'ESP32S3';
+ break;
+}
+
+// simulate different ESP32 chips
+
// GLOBAL VARIABLES
let countWifiScanPoll = 0; // wifi network scan
let countHardwarePoll = 0; // for during an upload
@@ -252,60 +389,6 @@ function check_upgrade(version: string) {
return data;
}
-// START DATA
-
-// EMS-ESP Application Settings
-let settings = {
- locale: 'en',
- tx_mode: 1,
- ems_bus_id: 11,
- syslog_enabled: false,
- syslog_level: 3,
- trace_raw: false,
- syslog_mark_interval: 0,
- syslog_host: '192.168.1.8',
- syslog_port: 514,
- boiler_heatingoff: false,
- remote_timeout: 24,
- remote_timeout_en: false,
- shower_timer: true,
- shower_alert: false,
- shower_alert_coldshot: 10,
- shower_alert_trigger: 7,
- shower_min_duration: 180,
- rx_gpio: 4,
- tx_gpio: 5,
- dallas_gpio: 14,
- dallas_parasite: false,
- led_gpio: 2,
- hide_led: true,
- low_clock: false,
- telnet_enabled: true,
- notoken_api: false,
- readonly_mode: false,
- analog_enabled: true,
- pbutton_gpio: 34,
- solar_maxflow: 30,
- board_profile: 'E32V2',
- fahrenheit: false,
- bool_format: 1,
- bool_dashboard: 1,
- enum_format: 1,
- weblog_level: 6,
- weblog_buffer: 50,
- weblog_compact: true,
- phy_type: 1,
- eth_power: 15,
- eth_phy_addr: 0,
- eth_clock_mode: 1,
- platform: 'ESP32',
- modbus_enabled: false,
- modbus_port: 502,
- modbus_max_clients: 10,
- modbus_timeout: 10000,
- developer_mode: true
-};
-
// LOG
const LOG_SETTINGS_ENDPOINT = REST_ENDPOINT_ROOT + 'logSettings';
let log_settings = {
@@ -507,51 +590,6 @@ const VERIFY_AUTHORIZATION_ENDPOINT = REST_ENDPOINT_ROOT + 'verifyAuthorization'
const SIGN_IN_ENDPOINT = REST_ENDPOINT_ROOT + 'signIn';
const GENERATE_TOKEN_ENDPOINT = REST_ENDPOINT_ROOT + 'generateToken';
-let system_status = {
- emsesp_version: THIS_VERSION,
- bus_status: 0,
- // status: 2,
- uptime: 77186,
- bus_uptime: 77121,
- num_devices: 2,
- num_sensors: 1,
- num_analogs: 1,
- free_heap: 143,
- ntp_status: 2,
- ntp_time: '2021-04-01T14:25:42Z',
- mqtt_status: true,
- ap_status: false,
- network_status: 3, // wifi connected
- // network_status: 10, // ethernet connected
- // network_status: 6, // wifi disconnected
- wifi_rssi: -41,
- esp_platform: 'ESP32S3',
- build_flags: 'DEMO',
- cpu_type: 'ESP32-S3',
- cpu_rev: 0,
- cpu_cores: 2,
- cpu_freq_mhz: 240,
- max_alloc_heap: 191,
- arduino_version: 'ESP32 Arduino v2.0.17',
- sdk_version: 'v4.4.7-dirty',
- partition: 'app0',
- flash_chip_size: 16384,
- flash_chip_speed: 80000000,
- app_used: 2258,
- app_free: 3438,
- fs_used: 24,
- fs_free: 2024,
- free_caps: 8376,
- // psram: false,
- psram: true,
- psram_size: 8189,
- free_psram: 8166,
- has_loader: true,
- model: '',
- // model: 'BBQKees Electronics EMS Gateway E32 V2 (E32 V2.0 P3/2024011)',
- status: 'downloading'
-};
-
let security_settings = {
jwt_secret: 'naughty!',
users: [
@@ -4230,8 +4268,6 @@ const emsesp_deviceentities_7 = [
{ v: 102151, n: 'dhw active time', id: 'dhw/workm', m: 0, w: false }
];
-// END DATA
-
// LOG
router
.get(LOG_SETTINGS_ENDPOINT, () => log_settings)
diff --git a/mock-api/yarn.lock b/mock-api/yarn.lock
index 4c99202d5..0db64f3f0 100644
--- a/mock-api/yarn.lock
+++ b/mock-api/yarn.lock
@@ -16,16 +16,16 @@ __metadata:
languageName: node
linkType: hard
-"@babel/generator@npm:^7.26.2, @babel/generator@npm:^7.26.3":
- version: 7.26.3
- resolution: "@babel/generator@npm:7.26.3"
+"@babel/generator@npm:^7.26.2, @babel/generator@npm:^7.26.5":
+ version: 7.26.5
+ resolution: "@babel/generator@npm:7.26.5"
dependencies:
- "@babel/parser": "npm:^7.26.3"
- "@babel/types": "npm:^7.26.3"
+ "@babel/parser": "npm:^7.26.5"
+ "@babel/types": "npm:^7.26.5"
"@jridgewell/gen-mapping": "npm:^0.3.5"
"@jridgewell/trace-mapping": "npm:^0.3.25"
jsesc: "npm:^3.0.2"
- checksum: 10c0/54f260558e3e4ec8942da3cde607c35349bb983c3a7c5121243f96893fba3e8cd62e1f1773b2051f936f8c8a10987b758d5c7d76dbf2784e95bb63ab4843fa00
+ checksum: 10c0/3be79e0aa03f38858a465d12ee2e468320b9122dc44fc85984713e32f16f4d77ce34a16a1a9505972782590e0b8d847b6f373621f9c6fafa1906d90f31416cb0
languageName: node
linkType: hard
@@ -43,14 +43,14 @@ __metadata:
languageName: node
linkType: hard
-"@babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.2, @babel/parser@npm:^7.26.3":
- version: 7.26.3
- resolution: "@babel/parser@npm:7.26.3"
+"@babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.2, @babel/parser@npm:^7.26.5":
+ version: 7.26.5
+ resolution: "@babel/parser@npm:7.26.5"
dependencies:
- "@babel/types": "npm:^7.26.3"
+ "@babel/types": "npm:^7.26.5"
bin:
parser: ./bin/babel-parser.js
- checksum: 10c0/48f736374e61cfd10ddbf7b80678514ae1f16d0e88bc793d2b505d73d9b987ea786fc8c2f7ee8f8b8c467df062030eb07fd0eb2168f0f541ca1f542775852cad
+ checksum: 10c0/2e77dd99ee028ee3c10fa03517ae1169f2432751adf71315e4dc0d90b61639d51760d622f418f6ac665ae4ea65f8485232a112ea0e76f18e5900225d3d19a61e
languageName: node
linkType: hard
@@ -66,27 +66,27 @@ __metadata:
linkType: hard
"@babel/traverse@npm:^7.25.9":
- version: 7.26.4
- resolution: "@babel/traverse@npm:7.26.4"
+ version: 7.26.5
+ resolution: "@babel/traverse@npm:7.26.5"
dependencies:
"@babel/code-frame": "npm:^7.26.2"
- "@babel/generator": "npm:^7.26.3"
- "@babel/parser": "npm:^7.26.3"
+ "@babel/generator": "npm:^7.26.5"
+ "@babel/parser": "npm:^7.26.5"
"@babel/template": "npm:^7.25.9"
- "@babel/types": "npm:^7.26.3"
+ "@babel/types": "npm:^7.26.5"
debug: "npm:^4.3.1"
globals: "npm:^11.1.0"
- checksum: 10c0/cf25d0eda9505daa0f0832ad786b9e28c9d967e823aaf7fbe425250ab198c656085495aa6bed678b27929e095c84eea9fd778b851a31803da94c9bc4bf4eaef7
+ checksum: 10c0/0779059ecf63e31446564cf31adf170e701e8017ef02c819c57924a9a83d6b2ce41dbff3ef295589da9410497a3e575655bb8084ca470e0ab1bc193128afa9fe
languageName: node
linkType: hard
-"@babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.26.3":
- version: 7.26.3
- resolution: "@babel/types@npm:7.26.3"
+"@babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.26.5":
+ version: 7.26.5
+ resolution: "@babel/types@npm:7.26.5"
dependencies:
"@babel/helper-string-parser": "npm:^7.25.9"
"@babel/helper-validator-identifier": "npm:^7.25.9"
- checksum: 10c0/966c5242c5e55c8704bf7a7418e7be2703a0afa4d19a8480999d5a4ef13d095dd60686615fe5983cb7593b4b06ba3a7de8d6ca501c1d78bdd233a10d90be787b
+ checksum: 10c0/0278053b69d7c2b8573aa36dc5242cad95f0d965e1c0ed21ccacac6330092e59ba5949753448f6d6eccf6ad59baaef270295cc05218352e060ea8c68388638c4
languageName: node
linkType: hard
diff --git a/pio_local.ini_example b/pio_local.ini_example
index cf009cd42..975fe8725 100644
--- a/pio_local.ini_example
+++ b/pio_local.ini_example
@@ -15,11 +15,13 @@
; my_build_flags = -DEMSESP_TEST -DEMSESP_DEBUG
; my_build_flags = -DEMSESP_DEBUG -DEMSESP_TEST -DEMSESP_PINGTEST
; my_build_flags = -DEMSESP_DEBUG -DCORE_DEBUG_LEVEL=5
-my_build_flags =
+my_build_flags =
[platformio]
; default_envs = s_16M_P ; BBQKees E32V2
-default_envs = s3_16M_P ; BBQKees S3
+; default_envs = s3_16M_P ; BBQKees S3
+; default_envs = s_4M ; BBQKees older S32, 4MB no psram
+default_envs = s_16M ; BBQKees newer S32 V2, 16MB no psram
[env]
@@ -27,11 +29,11 @@ default_envs = s3_16M_P ; BBQKees S3
; build_type = debug
; monitor_filters = colorize, esp32_exception_decoder
-; customize the scripts
+; uncomment if you want to upload the firmware via OTA (must have upload_protocol = custom)
; extra_scripts =
- ; pre:scripts/build_interface.py ; builds the WebUI (unless NO_BUILD_WEBUI is set) - comment out if you don't want to build each time
- ; scripts/rename_fw.py ; renames the firmware .bin file - comment out if not needed
- ; scripts/upload.py ; optionally upload the firmware via OTA (must have upload_protocol = custom)
+; pre:scripts/build_interface.py ; builds the WebUI (unless NO_BUILD_WEBUI is set) - comment out if you don't want to build each time
+; scripts/rename_fw.py ; renames the firmware .bin file - comment out if not needed
+; scripts/upload.py ; optionally upload the firmware via OTA (must have upload_protocol = custom)
; set the username and password for the admin account (default password is admin)
custom_username = admin
@@ -45,9 +47,8 @@ custom_password = admin
; upload_protocol = custom
; custom_emsesp_ip = or ems-esp.local
-upload_protocol = custom
-custom_emsesp_ip = 10.10.10.93 ; S3
-; custom_emsesp_ip = 192.168.1.225 ; E32V2
+; upload_protocol = custom
+; custom_emsesp_ip = 10.10.10.93
; ** debug settings **
; to be used with esp-prog/JTAG hardware device like https://docs.espressif.com/projects/esp-dev-kits/en/latest/other/esp-prog/user_guide.html
diff --git a/platformio.ini b/platformio.ini
index 9404a1777..911d9c031 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -54,8 +54,7 @@ framework = arduino
board_build.partitions = partitions/esp32_partition_16M.csv
board_upload.flash_size = 16MB
platform = espressif32@6.9.0 ; Arduino Core 2.0.18 / IDF 4.4.8
-; platform = https://github.com/pioarduino/platform-espressif32/releases/download/stable/platform-espressif32.zip ; Arduino Core 3.1.0 / IDF 5.3.2
-; platform = https://github.com/pioarduino/platform-espressif32.git#develop
+; platform = https://github.com/pioarduino/platform-espressif32/releases/download/53.03.11/platform-espressif32.zip ; Arduino Core 3.1.1 / IDF 5.3.2
;
; Experimental for building using espidf and the Hybrid mode to remove core libraries.
;
@@ -124,22 +123,24 @@ board_build.filesystem = littlefs
lib_deps =
bblanchon/ArduinoJson @ 7.3.0
mathieucarbou/AsyncTCP @ 3.3.2
- mathieucarbou/ESPAsyncWebServer @ 3.5.0
+ mathieucarbou/ESPAsyncWebServer @ 3.6.0
https://github.com/emsesp/EMS-ESP-Modules.git @ 1.0.4
;
; Builds for different board types
-; If the environment variable (windows or linux) "NO_BUILD_WEBUI" is set, the WebUI will not be built.
-; If you're building for a single target, create a pio_local.ini file (look at example)
+; We use Tasmota for boards without PSRAM as this framework has mbedtls removed to save memory.
+;
+; Note, if the system environment variable (windows or linux) "NO_BUILD_WEBUI" is set, the WebUI will not be built.
+; If you're building for a single target environment, we recommend creating a pio_local.ini (see example file)
;
[env:s_4M]
-; 4MB ESP32 - using Tasmota - no SSL, no PSRAM - like a BBQKees older S32 and E32 models
+; 4MB ESP32 - no SSL, no PSRAM - like a BBQKees older S32 and E32 models - uses Tasmota
extends = espressif32_base_T_4M
board = s_4M
[env:s_16M]
-; 16MB ESP32 - using Tasmota - no SSL, no PSRAM - like a BBQKees later S32 models
+; 16MB ESP32 - no PSRAM - like a BBQKees later S32 V2 models - uses Tasmota
extends = espressif32_base_T_16M
board = s_16M
@@ -159,12 +160,12 @@ extends = espressif32_base_32M
board = s3_32M_P
[env:s2_4M_P]
-; based on lolin_s2_mini with 2MB PSRAM
+; based on lolin_s2_mini 4MB with 2MB PSRAM - uses Tasmota
extends = espressif32_base_T_4M
board = s2_4M_P
[env:c3_mini_4M]
-; based on lolin_c3_mini, no PSRAM
+; based on lolin_c3_mini 4MB, no PSRAM - uses Tasmota
extends = espressif32_base_T_4M
board = c3_mini_4M
diff --git a/project-words.txt b/project-words.txt
index 944eb9b5b..f78a36626 100644
--- a/project-words.txt
+++ b/project-words.txt
@@ -1407,4 +1407,6 @@ elheat
elgenheat
fueldhw
eldhw
-elgendhw
\ No newline at end of file
+elgendhw
+solarinfl
+currsolarinfl
\ No newline at end of file
diff --git a/src/core/mqtt.cpp b/src/core/mqtt.cpp
index 4dcd38ec5..04b21244a 100644
--- a/src/core/mqtt.cpp
+++ b/src/core/mqtt.cpp
@@ -559,8 +559,8 @@ void Mqtt::ha_status() {
snprintf(topic, sizeof(topic), "binary_sensor/%s/system_status/config", mqtt_basename_.c_str());
Mqtt::queue_ha(topic, doc.as()); // publish the config payload with retain flag
-// create the sensors - must match the MQTT payload keys
-// these are all from the heartbeat MQTT topic
+// create the HA sensors - must match the MQTT payload keys in the heartbeat topic
+// Note we don't use camelCase as it would change the HA entity_id and impact historic data
#ifndef EMSESP_STANDALONE
if (!EMSESP::system_.ethernet_connected() || WiFi.isConnected()) {
publish_system_ha_sensor_config(DeviceValueType::INT8, "WiFi RSSI", "rssi", DeviceValueUOM::DBM);
@@ -568,23 +568,26 @@ void Mqtt::ha_status() {
}
#endif
- // These come from the heartbeat MQTT topic
- // we don't use camelCase as it would change the HA entity_id and impact historic data
publish_system_ha_sensor_config(DeviceValueType::STRING, "EMS Bus", "bus_status", DeviceValueUOM::NONE);
publish_system_ha_sensor_config(DeviceValueType::STRING, "Uptime", "uptime", DeviceValueUOM::NONE);
publish_system_ha_sensor_config(DeviceValueType::INT8, "Uptime (sec)", "uptime_sec", DeviceValueUOM::SECONDS);
publish_system_ha_sensor_config(DeviceValueType::INT8, "Free memory", "freemem", DeviceValueUOM::KB);
- publish_system_ha_sensor_config(DeviceValueType::INT8, "Max Alloc", "max_alloc", DeviceValueUOM::KB);
+ publish_system_ha_sensor_config(DeviceValueType::INT8, "Max alloc", "max_alloc", DeviceValueUOM::KB);
publish_system_ha_sensor_config(DeviceValueType::INT8, "MQTT fails", "mqttfails", DeviceValueUOM::NONE);
publish_system_ha_sensor_config(DeviceValueType::INT8, "Rx received", "rxreceived", DeviceValueUOM::NONE);
publish_system_ha_sensor_config(DeviceValueType::INT8, "Rx fails", "rxfails", DeviceValueUOM::NONE);
publish_system_ha_sensor_config(DeviceValueType::INT8, "Tx reads", "txreads", DeviceValueUOM::NONE);
publish_system_ha_sensor_config(DeviceValueType::INT8, "Tx writes", "txwrites", DeviceValueUOM::NONE);
publish_system_ha_sensor_config(DeviceValueType::INT8, "Tx fails", "txfails", DeviceValueUOM::NONE);
+
+#if CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32S2
+ publish_system_ha_sensor_config(DeviceValueType::INT8, "CPU temperature", "temperature", DeviceValueUOM::DEGREES);
+#endif
+
if (!EMSESP::system_.ethernet_connected()) {
publish_system_ha_sensor_config(DeviceValueType::INT16, "WiFi reconnects", "wifireconnects", DeviceValueUOM::NONE);
}
- // This comes from the info MQTT topic - and handled in the publish_ha_sensor_config function
+ // This one comes from the info MQTT topic - and handled in the publish_ha_sensor_config function
publish_system_ha_sensor_config(DeviceValueType::STRING, "Version", "version", DeviceValueUOM::NONE);
}
diff --git a/src/core/system.cpp b/src/core/system.cpp
index 3dde2406c..93ba984b6 100644
--- a/src/core/system.cpp
+++ b/src/core/system.cpp
@@ -320,8 +320,7 @@ void System::system_restart(const char * partitionname) {
void System::wifi_reconnect() {
EMSESP::esp32React.getNetworkSettingsService()->read(
[](NetworkSettings & networkSettings) { LOG_INFO("WiFi reconnecting to SSID '%s'...", networkSettings.ssid.c_str()); });
- Shell::loop_all();
- delay(1000); // wait a second
+ delay(500); // wait
EMSESP::webSettingsService.save(); // save local settings
EMSESP::esp32React.getNetworkSettingsService()->callUpdateHandlers(); // in case we've changed ssid or password
}
@@ -1517,7 +1516,7 @@ bool System::command_info(const char * value, const int8_t id, JsonObject output
// System
node = output["system"].to();
-// prevent false negative in Unity tests every time the version changes
+// prevent false-negatives in Unity tests every time the version changes
#if defined(EMSESP_UNITY)
node["version"] = "dev";
#else
@@ -1526,16 +1525,17 @@ bool System::command_info(const char * value, const int8_t id, JsonObject output
node["uptime"] = uuid::log::format_timestamp_ms(uuid::get_uptime_ms(), 3);
node["uptimeSec"] = uuid::get_uptime_sec();
#ifndef EMSESP_STANDALONE
- node["platform"] = EMSESP_PLATFORM;
- node["cpuType"] = ESP.getChipModel();
- node["arduino"] = ARDUINO_VERSION;
- node["sdk"] = ESP.getSdkVersion();
- node["freeMem"] = getHeapMem();
- node["maxAlloc"] = getMaxAllocMem();
- node["freeCaps"] = heap_caps_get_free_size(MALLOC_CAP_8BIT) / 1024; // includes heap and psram
- node["usedApp"] = EMSESP::system_.appUsed(); // kilobytes
- node["freeApp"] = EMSESP::system_.appFree(); // kilobytes
- node["partition"] = esp_ota_get_running_partition()->label; // active partition
+ node["platform"] = EMSESP_PLATFORM;
+ node["cpuType"] = ESP.getChipModel();
+ node["arduino"] = ARDUINO_VERSION;
+ node["sdk"] = ESP.getSdkVersion();
+ node["freeMem"] = getHeapMem();
+ node["maxAlloc"] = getMaxAllocMem();
+ node["freeCaps"] = heap_caps_get_free_size(MALLOC_CAP_8BIT) / 1024; // includes heap and psram
+ node["usedApp"] = EMSESP::system_.appUsed(); // kilobytes
+ node["freeApp"] = EMSESP::system_.appFree(); // kilobytes
+ node["partition"] = esp_ota_get_running_partition()->label; // active partition
+ node["flash_chip_size"] = ESP.getFlashChipSize() / 1024; // kilobytes
#endif
node["resetReason"] = EMSESP::system_.reset_reason(0) + " / " + EMSESP::system_.reset_reason(1);
#ifndef EMSESP_STANDALONE
diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h
index a0bc6dff0..38142b6bd 100644
--- a/src/devices/thermostat.h
+++ b/src/devices/thermostat.h
@@ -109,8 +109,8 @@ class Thermostat : public EMSdevice {
uint8_t instantstart; // 1-10K
uint8_t boost;
uint8_t boosttime; // hours
- int8_t currSolarInfl;
- int8_t solarInfl;
+ int8_t currSolarInfl;
+ int8_t solarInfl;
uint8_t hc_num() const {
return hc_num_;
diff --git a/src/modbus_entity_parameters.hpp b/src/modbus_entity_parameters.hpp
index a5e25b92e..783b7bd9e 100644
--- a/src/modbus_entity_parameters.hpp
+++ b/src/modbus_entity_parameters.hpp
@@ -373,6 +373,8 @@ const std::initializer_list Modbus::modbus_register_ma
REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heattemp), 195, 1), // heattemp
REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(roomsensor), 196, 1), // roomsensor
REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(heatup), 197, 1), // heatup
+ REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(solarinfl), 198, 1), // solarinfl
+ REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_HC, FL_(currsolarinfl), 199, 1), // currsolarinfl
REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_DHW, FL_(mode), 0, 1), // mode
REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_DHW, FL_(wwSetTemp), 1, 1), // settemp
REGISTER_MAPPING(dt::THERMOSTAT, TAG_TYPE_DHW, FL_(wwSetTempLow), 2, 1), // settemplow
diff --git a/src/version.h b/src/version.h
index 22b113617..8dc02cafc 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1 +1 @@
-#define EMSESP_APP_VERSION "3.7.2-dev.9"
+#define EMSESP_APP_VERSION "3.7.2-dev.10"
diff --git a/src/web/WebModulesService.cpp b/src/web/WebModulesService.cpp
index a85b23d13..cb3f4d84a 100644
--- a/src/web/WebModulesService.cpp
+++ b/src/web/WebModulesService.cpp
@@ -51,12 +51,12 @@ void WebModulesService::loop() {
// and also calls when the Modules web page is refreshed/loaded
void WebModules::read(WebModules & webModules, JsonObject root) {
JsonDocument doc_modules;
- auto root_modules = doc_modules.to();
+ auto root_modules = doc_modules.to();
moduleLibrary.list(root_modules); // get list the external library modules, put in a json object
- auto modules_new = root["modules"].to();
- auto modules = root_modules["modules"].as();
- uint8_t counter = 0;
+ auto modules_new = root["modules"].to();
+ auto modules = root_modules["modules"].as();
+ uint8_t counter = 0;
for (const JsonObject module : modules) {
JsonObject mi = modules_new.add();
mi["id"] = counter++; // id is only used to render the table and must be unique