Skip to content

Commit 3f3161e

Browse files
committed
Merge branch 'dev' into dev2
2 parents a68ed4d + bd93d26 commit 3f3161e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+6491
-6192
lines changed

CHANGELOG_LATEST.md

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ For more details go to [docs.emsesp.org](https://docs.emsesp.org/).
1717
- CR11 thermostat [#2295](https://github.com/emsesp/EMS-ESP32/issues/2295)
1818
- Show ESP32's CPU temp in Hardware Status
1919
- vacation mode for the CR50 [#2403](https://github.com/emsesp/EMS-ESP32/issues/2403)
20+
- new Console command "set admin password" to set WebUI admin password
2021

2122
## Fixed
2223

@@ -28,6 +29,7 @@ For more details go to [docs.emsesp.org](https://docs.emsesp.org/).
2829
- thermostat date [#2313](https://github.com/emsesp/EMS-ESP32/issues/2313)
2930
- Updated unknown compressor stati "enum_hpactivity" [#2311](https://github.com/emsesp/EMS-ESP32/pull/2311)
3031
- Underline Tab headers in WebUI
32+
- console unit tests fixed due to changed shell output
3133

3234
## Changed
3335

Makefile

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ T := $(shell $(MAKE) $(MAKECMDGOALS) --no-print-directory \
1616
ECHO="COUNTTHIS" | grep -c "COUNTTHIS")
1717
N := x
1818
C = $(words $N)$(eval N := x $N)
19-
ECHO = python3 $(I)/echo_progress.py --stepno=$C --nsteps=$T
19+
ECHO = python3 $(I)/scripts/echo_progress.py --stepno=$C --nsteps=$T
2020
endif
2121

2222
# determine number of parallel compiles based on OS
@@ -64,7 +64,7 @@ DEFINES += -DARDUINOJSON_ENABLE -DARDUINOJSON_ENABLE_ARDUINO_STRING -DARDUINOJSO
6464
DEFINES += -DEMSESP_STANDALONE -DEMSESP_TEST -DEMSESP_DEBUG -DEMC_RX_BUFFER_SIZE=1500
6565
DEFINES += $(ARGS)
6666

67-
DEFAULTS = -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.7.2-dev\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S3\"
67+
DEFAULTS = -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.7.3-dev\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32S3\"
6868

6969
#----------------------------------------------------------------------
7070
# Sources & Files
@@ -151,7 +151,7 @@ COMPILE.cpp = $(CXX) $(CXX_STANDARD) $(CXXFLAGS) $(DEPFLAGS) -c $< -o $@
151151
.SILENT: $(OUTPUT)
152152

153153
all: $(OUTPUT)
154-
@$(ECHO) All done
154+
@$(ECHO) Build complete.
155155

156156
$(OUTPUT): $(OBJS)
157157
@mkdir -p $(@D)

docs/Modbus-Entity-Registers.md

+5,302-5,301
Large diffs are not rendered by default.

docs/dump_entities.csv

+3-2
Original file line numberDiff line numberDiff line change
@@ -3822,7 +3822,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
38223822
"RC200, CW100, CR120, CR50",thermostat,157,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,53,1
38233823
"RC200, CW100, CR120, CR50",thermostat,157,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,54,1
38243824
"RC200, CW100, CR120, CR50",thermostat,157,hc1.currsolarinfl,curent solar influence,uint8 (>=0<=25),C,false,sensor.thermostat_hc1_curent_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,55,1
3825-
"RC200, CW100, CR120, CR50",thermostat,157,dhw.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
3825+
"RC200, CW100, CR120, CR50",thermostat,157,dhw.mode,operating mode,enum [off\|on\|auto], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
38263826
"RC200, CW100, CR120, CR50",thermostat,157,dhw.settemp,set temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,1,1
38273827
"RC200, CW100, CR120, CR50",thermostat,157,dhw.settemplow,set low temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_low_temperature,number.thermostat_dhw_settemplow,6,9,1,2,1
38283828
"RC200, CW100, CR120, CR50",thermostat,157,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog], ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,3,1
@@ -4001,7 +4001,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
40014001
"RC100, CR10, Moduline 1000/1010",thermostat,165,hc1.redthreshold,reduction threshold,int8 (>=12<=22),C,true,number.thermostat_hc1_reduction_threshold,number.thermostat_hc1_redthreshold,6,1,1/2,53,1
40024002
"RC100, CR10, Moduline 1000/1010",thermostat,165,hc1.solarinfl,solar influence,uint8 (>=-5<=4294967295),C,true,number.thermostat_hc1_solar_influence,number.thermostat_hc1_solarinfl,6,1,1,54,1
40034003
"RC100, CR10, Moduline 1000/1010",thermostat,165,hc1.currsolarinfl,curent solar influence,uint8 (>=0<=25),C,false,sensor.thermostat_hc1_curent_solar_influence,sensor.thermostat_hc1_currsolarinfl,6,1,1/10,55,1
4004-
"RC100, CR10, Moduline 1000/1010",thermostat,165,dhw.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
4004+
"RC100, CR10, Moduline 1000/1010",thermostat,165,dhw.mode,operating mode,enum [off\|on\|auto], ,true,select.thermostat_dhw_operating_mode,select.thermostat_dhw_mode,6,9,1,0,1
40054005
"RC100, CR10, Moduline 1000/1010",thermostat,165,dhw.settemp,set temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_temperature,number.thermostat_dhw_settemp,6,9,1,1,1
40064006
"RC100, CR10, Moduline 1000/1010",thermostat,165,dhw.settemplow,set low temperature,uint8 (>=0<=254),C,true,number.thermostat_dhw_set_low_temperature,number.thermostat_dhw_settemplow,6,9,1,2,1
40074007
"RC100, CR10, Moduline 1000/1010",thermostat,165,dhw.circmode,circulation pump mode,enum [off\|on\|auto\|own prog], ,true,select.thermostat_dhw_circulation_pump_mode,select.thermostat_dhw_circmode,6,9,1,3,1
@@ -5214,6 +5214,7 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/
52145214
"Logavent HRV176",ventilation,231,ventmode,ventilation mode,enum [auto\|off\|L1\|L2\|L3\|L4\|demand\|sleep\|intense\|bypass\|party\|fireplace], ,true,select.ventilation_ventilation_mode,select.ventilation_ventmode,18,0,1,6,1
52155215
"Logavent HRV176",ventilation,231,airquality,air quality (voc),uint16 (>=0<=31999), ,false,sensor.ventilation_air_quality_(voc),sensor.ventilation_airquality,18,0,1,7,1
52165216
"Logavent HRV176",ventilation,231,airhumidity,relative air humidity,uint8 (>=0<=100),%,false,sensor.ventilation_relative_air_humidity,sensor.ventilation_airhumidity,18,0,1,8,1
5217+
"Logavent HRV176",ventilation,231,bypass,bypass,boolean, ,true,switch.ventilation_bypass,switch.ventilation_bypass,18,0,1,9,1
52175218
"IPM",water,100,dhw.seltemp,selected temperature,uint8 (>=0<=254),C,true,number.water_dhw_selected_temperature,number.water_dhw_seltemp,19,9,1,0,1
52185219
"IPM",water,100,dhw.temp,current temperature,uint16 (>=0<=3199),C,false,sensor.water_dhw_current_temperature,sensor.water_dhw_temp,19,9,1/10,1,1
52195220
"IPM",water,100,dhw.curtemp2,current extern temperature,uint16 (>=0<=3199),C,false,sensor.water_dhw_current_extern_temperature,sensor.water_dhw_curtemp2,19,9,1/10,2,1

echo_progress.py

-28
This file was deleted.

interface/package.json

+15-15
Original file line numberDiff line numberDiff line change
@@ -24,41 +24,41 @@
2424
"@alova/adapter-xhr": "2.1.1",
2525
"@emotion/react": "^11.14.0",
2626
"@emotion/styled": "^11.14.0",
27-
"@mui/icons-material": "^6.4.4",
28-
"@mui/material": "^6.4.4",
27+
"@mui/icons-material": "^6.4.7",
28+
"@mui/material": "^6.4.7",
2929
"@table-library/react-table-library": "4.1.12",
30-
"alova": "3.2.8",
30+
"alova": "3.2.10",
3131
"async-validator": "^4.2.5",
3232
"jwt-decode": "^4.0.0",
3333
"mime-types": "^2.1.35",
34-
"preact": "^10.26.0",
34+
"preact": "^10.26.4",
3535
"react": "^19.0.0",
3636
"react-dom": "^19.0.0",
37-
"react-icons": "^5.4.0",
38-
"react-router": "^7.1.5",
39-
"react-toastify": "^11.0.3",
37+
"react-icons": "^5.5.0",
38+
"react-router": "^7.3.0",
39+
"react-toastify": "^11.0.5",
4040
"typesafe-i18n": "^5.26.2",
41-
"typescript": "^5.7.3"
41+
"typescript": "^5.8.2"
4242
},
4343
"devDependencies": {
4444
"@babel/core": "^7.26.9",
45-
"@eslint/js": "^9.20.0",
45+
"@eslint/js": "^9.22.0",
4646
"@preact/compat": "^18.3.1",
4747
"@preact/preset-vite": "^2.10.1",
4848
"@trivago/prettier-plugin-sort-imports": "^5.2.2",
4949
"@types/formidable": "^3",
50-
"@types/node": "^22.13.4",
50+
"@types/node": "^22.13.10",
5151
"@types/react": "^19.0.10",
5252
"@types/react-dom": "^19.0.4",
5353
"concurrently": "^9.1.2",
54-
"eslint": "^9.20.1",
55-
"eslint-config-prettier": "^10.0.1",
54+
"eslint": "^9.22.0",
55+
"eslint-config-prettier": "^10.1.1",
5656
"formidable": "^3.5.2",
57-
"prettier": "^3.5.1",
57+
"prettier": "^3.5.3",
5858
"rollup-plugin-visualizer": "^5.14.0",
5959
"terser": "^5.39.0",
60-
"typescript-eslint": "8.24.0",
61-
"vite": "^6.1.0",
60+
"typescript-eslint": "8.26.0",
61+
"vite": "^6.2.1",
6262
"vite-plugin-imagemin": "^0.6.1",
6363
"vite-tsconfig-paths": "^5.1.4"
6464
},

interface/src/App.tsx

+9-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useEffect, useState } from 'react';
2-
import { Slide, ToastContainer } from 'react-toastify';
2+
import { ToastContainer, Zoom } from 'react-toastify';
33

44
import AppRouting from 'AppRouting';
55
import CustomTheme from 'CustomTheme';
@@ -43,17 +43,20 @@ const App = () => {
4343
<AppRouting />
4444
<ToastContainer
4545
position="bottom-left"
46-
autoClose={2000}
46+
autoClose={3000}
4747
hideProgressBar={false}
4848
newestOnTop={false}
49-
closeOnClick={true}
49+
closeOnClick
5050
rtl={false}
51-
pauseOnFocusLoss={false}
51+
pauseOnFocusLoss
5252
draggable={false}
5353
pauseOnHover={false}
54-
transition={Slide}
54+
transition={Zoom}
5555
closeButton={false}
56-
theme="light"
56+
theme="dark"
57+
toastStyle={{
58+
border: '1px solid #177ac9'
59+
}}
5760
/>
5861
</CustomTheme>
5962
</TypesafeI18n>

interface/src/AuthenticatedRouting.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import DownloadUpload from 'app/settings/DownloadUpload';
1515
import MqttSettings from 'app/settings/MqttSettings';
1616
import NTPSettings from 'app/settings/NTPSettings';
1717
import Settings from 'app/settings/Settings';
18-
import Version from 'app/settings/Version';
1918
import Network from 'app/settings/network/Network';
2019
import Security from 'app/settings/security/Security';
2120
import APStatus from 'app/status/APStatus';
@@ -26,6 +25,7 @@ import NTPStatus from 'app/status/NTPStatus';
2625
import NetworkStatus from 'app/status/NetworkStatus';
2726
import Status from 'app/status/Status';
2827
import SystemLog from 'app/status/SystemLog';
28+
import Version from 'app/status/Version';
2929
import { Layout } from 'components';
3030
import { AuthenticatedContext } from 'contexts/authentication';
3131

@@ -48,11 +48,11 @@ const AuthenticatedRouting = () => {
4848
<Route path="/status/ntp" element={<NTPStatus />} />
4949
<Route path="/status/ap" element={<APStatus />} />
5050
<Route path="/status/network" element={<NetworkStatus />} />
51+
<Route path="/status/version" element={<Version />} />
5152

5253
{me.admin && (
5354
<>
5455
<Route path="/settings" element={<Settings />} />
55-
<Route path="/settings/version" element={<Version />} />
5656
<Route path="/settings/application" element={<ApplicationSettings />} />
5757
<Route path="/settings/mqtt" element={<MqttSettings />} />
5858
<Route path="/settings/ntp" element={<NTPSettings />} />

interface/src/api/endpoints.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export const alovaInstance = createAlova({
2222
method.config.headers.Authorization =
2323
'Bearer ' + localStorage.getItem(ACCESS_TOKEN);
2424
}
25-
// for simulating vrey slow networks
25+
// for simulating very slow networks
2626
// return new Promise((resolve) => {
2727
// const random = 3000 + Math.random() * 2000;
2828
// setTimeout(resolve, Math.floor(random));

interface/src/api/system.ts

+3
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@ export const updateLogSettings = (data: LogSettings) =>
1414
export const fetchLogES = () => alovaInstance.Get('/es/log');
1515

1616
// Get versions from GitHub
17+
// cache for 10 minutes to stop getting the IP blocked by GitHub
1718
export const getStableVersion = () =>
1819
alovaInstanceGH.Get('latest', {
20+
cacheFor: 60 * 10 * 1000,
1921
transform(response: { data: { name: string; published_at: string } }) {
2022
return {
2123
name: response.data.name.substring(1),
@@ -25,6 +27,7 @@ export const getStableVersion = () =>
2527
});
2628
export const getDevVersion = () =>
2729
alovaInstanceGH.Get('tags/latest', {
30+
cacheFor: 60 * 10 * 1000,
2831
transform(response: { data: { name: string; published_at: string } }) {
2932
return {
3033
name: response.data.name.split(/\s+/).splice(-1)[0].substring(1),

interface/src/app/main/Customizations.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -593,7 +593,7 @@ const Customizations = () => {
593593
</Button>
594594
</Grid>
595595
<Grid>
596-
<Typography variant="subtitle2" color="primary">
596+
<Typography variant="subtitle2" color="grey">
597597
{LL.SHOWING()}&nbsp;{shown_data.length}/{deviceEntities.length}
598598
&nbsp;{LL.ENTITIES(deviceEntities.length)}
599599
</Typography>

0 commit comments

Comments
 (0)