Compare commits

...
84 Commits
Author SHA1 Message Date
proddy c8a96352ec 3.8.4 2026-08-04 08:13:45 +02:00
proddy 02caaef916 fix firmware size check 2026-08-03 09:59:46 +02:00
proddy ba0f4cd008 3.8.3 2026-08-02 09:56:04 +02:00
proddy 45f7d91b43 Merge remote-tracking branch 'origin/dev' 2026-08-02 09:55:48 +02:00
Proddy e0f59a4c31 Merge pull request #3176 from proddy/dev
pkg update and getting ready for stable
2026-08-01 17:05:18 +02:00
proddy 7eba8acbb4 3.8.3-dev.11 2026-08-01 17:04:13 +02:00
proddy d0e6a603bb auto-formatting 2026-08-01 16:57:41 +02:00
proddy 36b4dd55a7 pkg update 2026-08-01 16:44:16 +02:00
proddy 341a4d4e1d update version 2026-08-01 16:44:11 +02:00
proddy a61745b710 formatting 2026-08-01 16:44:03 +02:00
proddy b1ebd81ca2 update 2026-08-01 16:43:55 +02:00
Proddy 1ff53e6ac7 Merge pull request #3171 from MichaelDvP/dev
fix water SM100
2026-07-28 19:02:52 +02:00
MichaelDvP 9cab3b480e chore: update generated files for v3.8.3-dev.10 2026-07-22 15:37:09 +00:00
Proddy bacd3faac2 Merge pull request #3159 from MichaelDvP/dev
dev9
2026-07-15 08:44:31 +02:00
proddy ee3a5d231a Merge remote-tracking branch 'origin/dev' 2026-05-12 20:15:32 +02:00
proddy e8f57b6343 v3.8.1 2026-01-11 19:28:38 +01:00
proddy a1ab81de66 Merge branch 'dev' 2026-01-11 19:14:11 +01:00
proddy 28135c225b Merge branch 'dev' 2025-12-31 21:26:15 +01:00
proddy eaa277fef0 v3.7.2 2025-03-22 10:32:03 +01:00
proddy e418b7d8e7 fix routing in tabs - #2264 2024-11-30 21:31:42 +01:00
proddy a4e3be6a69 3.7.1 changelog 2024-11-29 10:30:14 +01:00
proddy a1bc5bb055 3.7.1 2024-11-29 10:30:05 +01:00
proddy f444ca31e0 Merge remote-tracking branch 'origin/dev' 2024-10-27 11:41:47 +01:00
proddy 1b70b55989 update demo url 2024-08-10 14:58:48 +02:00
proddy 1487f30c43 Merge remote-tracking branch 'origin/dev' for 3.6.5 2024-03-23 17:56:05 +01:00
Proddy e00eb8e64f 3.6.4 2023-11-26 20:11:36 +01:00
Proddy f41bb3671c 3.6.4 2023-11-24 07:36:36 +01:00
Proddy 22c75e6df3 3.6.4 2023-11-24 07:36:29 +01:00
proddy 5ab10b7aa6 fixes #1450 2023-11-22 09:48:09 +01:00
Proddy ee5fd4d0eb 3.6.3 2023-11-21 14:40:47 +01:00
Proddy 46f35bc67c another patch on 3.6.3 2023-11-21 14:40:32 +01:00
Proddy ec85a7ec24 3.6.3 (refershed) 2023-11-19 21:24:01 +01:00
Proddy 02f2389587 add workflow_dispatch: 2023-11-18 18:51:12 +01:00
Proddy 7f140021aa quick fix - https://github.com/emsesp/EMS-ESP32/pull/1438 2023-11-18 18:47:28 +01:00
Proddy 6796962c1e 3.6.3 2023-11-18 13:35:20 +01:00
Proddy df6de21cf4 Merge remote-tracking branch 'origin/dev' 2023-11-18 13:35:04 +01:00
Proddy df9f75a5c9 updated yarn for 3.6.2 2023-10-01 17:42:54 +02:00
Proddy 7bd8710eb6 3.6.2 2023-10-01 17:40:09 +02:00
Proddy 32f2c6d341 Merge remote-tracking branch 'origin/dev' 2023-10-01 17:40:02 +02:00
Proddy 86919c1684 Merge branch 'origin/dev' 2023-09-09 14:12:07 +02:00
Proddy 86e29515e7 build s3 2023-08-15 18:44:24 +02:00
Proddy 46eb4185d7 update with 3.6.0 2023-08-13 14:37:13 +02:00
Proddy 8da6761a48 Merge branch 'dev' 2023-08-13 14:32:41 +02:00
Proddy 9233f0dfcc v3.5.1 - merge with patch 2023-03-11 16:06:05 +01:00
Proddy 292f743b14 Update bug_report.md 2023-02-19 11:18:08 +01:00
Proddy dd6dfffd57 Delete questions---troubleshooting.md 2023-02-19 10:49:52 +01:00
Proddy ec705a5307 Delete feature_request.md 2023-02-19 10:49:45 +01:00
Proddy f45f071710 Create config.yml 2023-02-19 10:49:32 +01:00
Proddy f3858546de Merge branch 'origin/dev' 2023-02-06 21:58:27 +01:00
Proddy d0ac0b7804 update with version on dev 2022-10-30 16:58:37 +01:00
Proddy d8284ec09f Merge pull request #705 from MichaelDvP/main
v3.4.4 Fix for new installations with filesystem not initializing
2022-10-29 10:46:41 +02:00
MichaelDvP 6e982acde8 v3.4.4 Fix for new installations with filesystem not initializing 2022-10-28 10:50:51 +02:00
Proddy 8c94ce99b2 quick fix for filesystem initialization 2022-10-08 09:23:00 +02:00
proddy fc057d18c9 Merge remote-tracking branch 'origin/dev' 2022-09-18 14:33:23 +02:00
Proddy 18e9b99413 Merge remote-tracking branch 'origin/dev' into main 2022-05-29 16:16:38 +02:00
Proddy a47e0e8266 update for 3.4.0 2022-05-23 21:20:45 +02:00
Proddy f412ddc716 Merge remote-tracking branch 'origin/dev' into main 2022-05-23 21:20:36 +02:00
proddy 29110e96e5 Merge remote-tracking branch 'origin/dev' 2022-01-20 10:51:40 +01:00
proddy b65866217a 3.4.0 2021-11-28 23:03:28 +01:00
proddy 611e3b1243 Merge remote-tracking branch 'origin/dev' 2021-11-28 23:03:15 +01:00
proddy 2ca0a0c634 v3.2.1 merged from dev 2021-08-08 14:46:14 +02:00
proddy 7eb1f061b7 Merge remote-tracking branch 'origin/dev' for 3.2.0 release 2021-08-06 12:06:08 +02:00
proddy 50459a23fe force v16 of nodejs 2021-06-26 11:13:07 +02:00
proddy 5bf53c3389 3.1.1 2021-06-26 11:03:03 +02:00
proddy 4b7aa95be3 Merge remote-tracking branch 'origin/dev' 2021-06-26 11:02:55 +02:00
Proddy 70943f5758 Update pre_release.yml 2021-05-16 15:52:09 +02:00
Proddy 3bc280b817 Delete check_code.yml 2021-05-16 15:51:56 +02:00
Proddy 62b15a5319 Update pre_release.yml 2021-05-16 15:35:06 +02:00
Proddy 8dd18802d6 Update tagged_release.yml 2021-05-16 15:34:45 +02:00
proddy 57a516a83a updated README and images 2021-05-09 15:13:16 +02:00
proddy a57fdaa4b3 Merge remote-tracking branch 'origin/dev' into main 2021-05-04 12:21:51 +02:00
proddy 4841e42286 Merge remote-tracking branch 'origin/dev' into main 2021-03-30 16:35:18 +02:00
proddy 8c2d2b06ed cleaned up old changelog 2021-03-18 20:59:09 +01:00
proddy 38c8b1b7f0 3.0.0 2021-03-18 20:58:21 +01:00
proddy 6fb5933a02 Merge remote-tracking branch 'origin/dev' into main 2021-03-18 20:58:12 +01:00
proddy c0944433be remove workspace.code-workspace 2021-03-16 17:41:42 +01:00
Proddy 478e6362c9 Merge pull request #27 from FauthD:main
Add global names to Dallas sensors to avoid ugly <unknown> and other …
2021-03-16 17:39:00 +01:00
fauthd 4d6354db78 Add stuff to gitignore, add vscode workspace 2021-03-16 16:47:09 +01:00
fauthd beab0f0c77 Add global names to Dallas sensors to avoid ugly <unknown> and other issues in HA 2021-03-16 16:00:23 +01:00
Proddy c17749bd22 Update README.md 2021-03-14 23:43:33 +01:00
proddy 2bad769c5c build: include assets 2021-03-14 21:20:51 +01:00
proddy 8ad89ca64b move repo 2021-03-14 21:05:15 +01:00
proddy 9244d8daec Semantic Commit Messages 2021-03-14 18:10:57 +01:00
proddy 02d01334b2 update new build 2021-03-14 17:37:18 +01:00
20 changed files with 6657 additions and 7184 deletions
+37 -1
View File
@@ -5,6 +5,43 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [3.8.4] 4 August 2026
## Fixed
- Allow auto-download and install of firmware versions which are smaller to allow update to the latest 3.9.0-development version.
## [3.8.3] 1 August 2026
## Added
- KM300 at address 0x4A [#3084](https://github.com/emsesp/EMS-ESP32/issues/3084)
## Fixed
- signed value for solarInfuence [#3077](https://github.com/emsesp/EMS-ESP32/issues/3077)
- set bin file upload limit to 1M again [#3086](https://github.com/emsesp/EMS-ESP32/issues/3086)
- check arithmetric operations on strings [#3127](https://github.com/emsesp/EMS-ESP32/discussions/3127)
- prevent system crash during WiFi network discovery on ESP32-S3 hardware [#3128](https://github.com/emsesp/EMS-ESP32/pull/3128)
- fix setting date/time on Junkers thermostats
- offset of hpminflowtemp [#3144](https://github.com/emsesp/EMS-ESP32/issues/3144)
- water circulation command [#3149](https://github.com/emsesp/EMS-ESP32/pull/3149)
- start scheduler after customEntities, delay scheduler loop after startup, handling of `system/restart` command [#3146](https://github.com/emsesp/EMS-ESP32/issues/3146)
- possible memory leaks fixed.
- repeated startup schedules compute value
- call `system/message` called from scheduler processes compute twice
- water module SM100/200 as dhw1/dhw2 [#3164](https://github.com/emsesp/EMS-ESP32/issues/3164)
## Changed
- call compute value direct, enlarge TCP stack [#3127](https://github.com/emsesp/EMS-ESP32/discussions/3127)
- Dewtemperature for Easycontrol calculated by ems-esp [#3135](https://github.com/emsesp/EMS-ESP32/issues/3135)
- add option for sync thermostat to ntp, allow different time zones [#3148](https://github.com/emsesp/EMS-ESP32/discussions/3148), **defaults to sync**.
- block too many GET requests [mentioned in #3104](https://github.com/emsesp/EMS-ESP32/issues/3104)
- set 10 sec timeout for http requests [#3104](https://github.com/emsesp/EMS-ESP32/issues/3104)
- language code "cs" [#3161](https://github.com/emsesp/EMS-ESP32/issues/3161)
## [3.8.2] 12 May 2026 ## [3.8.2] 12 May 2026
## Added ## Added
@@ -71,7 +108,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- board profile `CUSTOM` can only be selected in developer mode - board profile `CUSTOM` can only be selected in developer mode
- mqtt sends round values without decimals (`28` instead of `28.0`) - mqtt sends round values without decimals (`28` instead of `28.0`)
## [3.8.0] 31 December 2025 ## [3.8.0] 31 December 2025
## Added ## Added
-30
View File
@@ -1,33 +1,3 @@
# Changelog # Changelog
For more details go to [emsesp.org](https://emsesp.org/). For more details go to [emsesp.org](https://emsesp.org/).
## [3.8.3]
## Added
- KM300 at address 0x4A [#3084](https://github.com/emsesp/EMS-ESP32/issues/3084)
## Fixed
- signed value for solarInfuence [#3077](https://github.com/emsesp/EMS-ESP32/issues/3077)
- set bin file upload limit to 1M again [#3086](https://github.com/emsesp/EMS-ESP32/issues/3086)
- check arithmetric operations on strings [#3127](https://github.com/emsesp/EMS-ESP32/discussions/3127)
- prevent system crash during WiFi network discovery on ESP32-S3 hardware [#3128](https://github.com/emsesp/EMS-ESP32/pull/3128)
- fix setting date/time on Junkers thermostats
- offset of hpminflowtemp [#3144](https://github.com/emsesp/EMS-ESP32/issues/3144)
- water circulation command [#3149](https://github.com/emsesp/EMS-ESP32/pull/3149)
- start scheduler after customEntities, delay scheduler loop after startup, handling of `system/restart` command [#3146](https://github.com/emsesp/EMS-ESP32/issues/3146)
- possible memory leaks fixed.
- repeated startup schedules compute value
- call `system/message` called from scheduler processes compute twice
- water module SM100/200 as dhw1/dhw2 [#3164](https://github.com/emsesp/EMS-ESP32/issues/3164)
## Changed
- call compute value direct, enlarge TCP stack [#3127](https://github.com/emsesp/EMS-ESP32/discussions/3127)
- Dewtemperature for Easycontrol calculated by ems-esp [#3135](https://github.com/emsesp/EMS-ESP32/issues/3135)
- add option for sync thermostat to ntp, allow different time zones [#3148](https://github.com/emsesp/EMS-ESP32/discussions/3148), **defaults to sync**.
- block too many GET requests [mentioned in #3104](https://github.com/emsesp/EMS-ESP32/issues/3104)
- set 10 sec timeout for http requests [#3104](https://github.com/emsesp/EMS-ESP32/issues/3104)
- language code "cs" [#3161](https://github.com/emsesp/EMS-ESP32/issues/3161)
+10 -40
View File
@@ -8356,70 +8356,40 @@ uint8
| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | | shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor |
|-|-|-|-|-|-|-|-|-| |-|-|-|-|-|-|-|-|-|
| dhw.temp | current temperature | uint16 | C | false | DHW | 1 | 1 | 1/10 | | dhw.temp | current temperature | uint16 | C | false | DHW | 1 | 1 | 1/10 |
| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 16 | 1 | 1/10 | | dhw.tempstatus | temperature switch in assigned dhw (MC1) | int8 | | false | DHW | 11 | 1 | 1 |
| dhw.coldtemp | cold water | uint16 | C | false | DHW | 17 | 1 | 1/10 |
| dhw.temp5 | temperature 5 | uint16 | C | false | DHW | 18 | 1 | 1/10 |
| dhw.rettemp | return temperature | uint16 | C | false | DHW | 19 | 1 | 1/10 |
| dhw.pump | pump | boolean | | false | DHW | 4 | 1 | 1 | | dhw.pump | pump | boolean | | false | DHW | 4 | 1 | 1 |
uint8 uint8
| dhw.maxtemp | maximum temperature | uint8 (&gt;=0&lt;=0) | C | true | DHW | 12 | 1 | 1 | | dhw.maxtemp | maximum temperature | uint8 (&gt;=0&lt;=0) | C | true | DHW | 12 | 1 | 1 |
int8
| dhw.difftemp | start differential temperature | int8 (&gt;=0&lt;=0) | C | true | DHW | 13 | 1 | 1 |
uint8 uint8
| dhw.seltemp | selected temperature | uint8 (&gt;=0&lt;=0) | C | true | DHW | 0 | 1 | 1 | | dhw.disinfectiontemp | disinfection temperature | uint8 (&gt;=0&lt;=0) | C | true | DHW | 8 | 1 | 1 |
uint8 uint8
| dhw.redtemp | reduced temperature | uint8 (&gt;=0&lt;=0) | C | true | DHW | 14 | 1 | 1 | | dhw.redtemp | reduced temperature | uint8 (&gt;=0&lt;=0) | C | true | DHW | 14 | 1 | 1 |
uint8 uint8
| dhw.hottemp | extra hot temperature | uint8 (&gt;=0&lt;=0) | C | true | DHW | 20 | 1 | 1 | | dhw.requiredtemp | required temperature | uint8 (&gt;=0&lt;=0) | C | true | DHW | 15 | 1 | 1 |
uint8
| dhw.dailytemp | daily temperature | uint8 (&gt;=0&lt;=0) | C | true | DHW | 21 | 1 | 1 |
uint8
| dhw.disinfectiontemp | disinfection temperature | uint8 (&gt;=0&lt;=0) | C | true | DHW | 8 | 1 | 1 |
| dhw.circ | circulation active | boolean | | true | DHW | 9 | 1 | 1 | | dhw.circ | circulation active | boolean | | true | DHW | 9 | 1 | 1 |
| dhw.circmode | circulation pump mode | enum | | true | DHW | 10 | 1 | 1 | | dhw.circmode | circulation pump mode | enum | | true | DHW | 10 | 1 | 1 |
| dhw.circtc | circulation time controlled | boolean | | true | DHW | 22 | 1 | 1 |
| dhw.keepwarm | keep warm | boolean | | true | DHW | 23 | 1 | 1 |
| dhw.status2 | status 2 | enum | | false | DHW | 24 | 1 | 1 |
| dhw.pumpmod | pump modulation | uint8 | % | false | DHW | 25 | 1 | 1 |
| dhw.flow | flow rate | uint16 | l/min | false | DHW | 26 | 1 | 1/10 |
uint8
| dhw.valvereturn | return valve | uint8 (&gt;=0&lt;=0) | % | true | DHW | 27 | 1 | 1 |
uint8
| dhw.deltatret | temp. diff. return valve | uint8 (&gt;=0&lt;=0) | K | true | DHW | 28 | 1 | 1 |
| dhw.errordisp | error display | enum | | true | DHW | 29 | 1 | 1 |
### SM200, MS200 ### SM200, MS200
| shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor | | shortname | fullname | type | uom | writeable | tag type | register offset | register count | scale factor |
|-|-|-|-|-|-|-|-|-| |-|-|-|-|-|-|-|-|-|
| dhw.temp | current temperature | uint16 | C | false | DHW | 1 | 1 | 1/10 | | dhw.temp | current temperature | uint16 | C | false | DHW | 1 | 1 | 1/10 |
| dhw.storagetemp1 | storage intern temperature | uint16 | C | false | DHW | 16 | 1 | 1/10 | | dhw.tempstatus | temperature switch in assigned dhw (MC1) | int8 | | false | DHW | 11 | 1 | 1 |
| dhw.coldtemp | cold water | uint16 | C | false | DHW | 17 | 1 | 1/10 |
| dhw.temp5 | temperature 5 | uint16 | C | false | DHW | 18 | 1 | 1/10 |
| dhw.rettemp | return temperature | uint16 | C | false | DHW | 19 | 1 | 1/10 |
| dhw.pump | pump | boolean | | false | DHW | 4 | 1 | 1 | | dhw.pump | pump | boolean | | false | DHW | 4 | 1 | 1 |
uint8 uint8
| dhw.maxtemp | maximum temperature | uint8 (&gt;=0&lt;=0) | C | true | DHW | 12 | 1 | 1 | | dhw.maxtemp | maximum temperature | uint8 (&gt;=0&lt;=0) | C | true | DHW | 12 | 1 | 1 |
int8
| dhw.difftemp | start differential temperature | int8 (&gt;=0&lt;=0) | C | true | DHW | 13 | 1 | 1 |
uint8 uint8
| dhw.seltemp | selected temperature | uint8 (&gt;=0&lt;=0) | C | true | DHW | 0 | 1 | 1 | | dhw.disinfectiontemp | disinfection temperature | uint8 (&gt;=0&lt;=0) | C | true | DHW | 8 | 1 | 1 |
uint8 uint8
| dhw.redtemp | reduced temperature | uint8 (&gt;=0&lt;=0) | C | true | DHW | 14 | 1 | 1 | | dhw.redtemp | reduced temperature | uint8 (&gt;=0&lt;=0) | C | true | DHW | 14 | 1 | 1 |
uint8 uint8
| dhw.hottemp | extra hot temperature | uint8 (&gt;=0&lt;=0) | C | true | DHW | 20 | 1 | 1 | | dhw.requiredtemp | required temperature | uint8 (&gt;=0&lt;=0) | C | true | DHW | 15 | 1 | 1 |
uint8
| dhw.dailytemp | daily temperature | uint8 (&gt;=0&lt;=0) | C | true | DHW | 21 | 1 | 1 |
uint8
| dhw.disinfectiontemp | disinfection temperature | uint8 (&gt;=0&lt;=0) | C | true | DHW | 8 | 1 | 1 |
| dhw.circ | circulation active | boolean | | true | DHW | 9 | 1 | 1 | | dhw.circ | circulation active | boolean | | true | DHW | 9 | 1 | 1 |
| dhw.circmode | circulation pump mode | enum | | true | DHW | 10 | 1 | 1 | | dhw.circmode | circulation pump mode | enum | | true | DHW | 10 | 1 | 1 |
| dhw.circtc | circulation time controlled | boolean | | true | DHW | 22 | 1 | 1 |
| dhw.keepwarm | keep warm | boolean | | true | DHW | 23 | 1 | 1 |
| dhw.status2 | status 2 | enum | | false | DHW | 24 | 1 | 1 |
| dhw.pumpmod | pump modulation | uint8 | % | false | DHW | 25 | 1 | 1 |
| dhw.flow | flow rate | uint16 | l/min | false | DHW | 26 | 1 | 1/10 |
uint8
| dhw.valvereturn | return valve | uint8 (&gt;=0&lt;=0) | % | true | DHW | 27 | 1 | 1 |
uint8
| dhw.deltatret | temp. diff. return valve | uint8 (&gt;=0&lt;=0) | K | true | DHW | 28 | 1 | 1 |
| dhw.errordisp | error display | enum | | true | DHW | 29 | 1 | 1 |
## Devices of type \_pool ## Devices of type \_pool
+5995 -5995
View File
File diff suppressed because it is too large Load Diff
+5 -5
View File
@@ -52,8 +52,8 @@
"@preact/compat": "^18.3.2", "@preact/compat": "^18.3.2",
"@preact/preset-vite": "^2.10.5", "@preact/preset-vite": "^2.10.5",
"@trivago/prettier-plugin-sort-imports": "^6.0.2", "@trivago/prettier-plugin-sort-imports": "^6.0.2",
"@types/node": "^25.9.5", "@types/node": "^25.7.0",
"@types/react": "^19.2.17", "@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3", "@types/react-dom": "^19.2.3",
"axe-core": "^4.12.1", "axe-core": "^4.12.1",
"concurrently": "^9.2.4", "concurrently": "^9.2.4",
@@ -61,9 +61,9 @@
"eslint-config-prettier": "^10.1.8", "eslint-config-prettier": "^10.1.8",
"prettier": "^3.9.5", "prettier": "^3.9.5",
"rollup-plugin-visualizer": "^7.0.1", "rollup-plugin-visualizer": "^7.0.1",
"terser": "^5.49.0", "terser": "^5.47.1",
"typescript-eslint": "^8.63.0", "typescript-eslint": "^8.59.3",
"vite": "^8.1.4", "vite": "^8.0.12",
"vite-plugin-imagemin": "^0.6.1", "vite-plugin-imagemin": "^0.6.1",
"vite-tsconfig-paths": "^6.1.1" "vite-tsconfig-paths": "^6.1.1"
}, },
+491 -1011
View File
File diff suppressed because it is too large Load Diff
+1 -5
View File
@@ -13,11 +13,7 @@ import VisibilityOutlinedIcon from '@mui/icons-material/VisibilityOutlined';
import type { SvgIconProps } from '@mui/material'; import type { SvgIconProps } from '@mui/material';
export type OptionType = export type OptionType =
| 'deleted' 'deleted' | 'readonly' | 'web_exclude' | 'api_mqtt_exclude' | 'favorite';
| 'readonly'
| 'web_exclude'
| 'api_mqtt_exclude'
| 'favorite';
type IconPair = [ type IconPair = [
React.ComponentType<SvgIconProps>, React.ComponentType<SvgIconProps>,
+10 -3
View File
@@ -8,11 +8,11 @@ import {
Box, Box,
Button, Button,
Checkbox, Checkbox,
Grid,
Dialog, Dialog,
DialogActions, DialogActions,
DialogContent, DialogContent,
DialogTitle, DialogTitle,
Grid,
MenuItem, MenuItem,
TextField, TextField,
Typography Typography
@@ -40,7 +40,12 @@ import { formatLocalDateTime, updateValueDirty, useRest } from 'utils';
import { ValidationError, validate } from 'validators'; import { ValidationError, validate } from 'validators';
import { NTP_SETTINGS_VALIDATOR } from 'validators/ntp'; import { NTP_SETTINGS_VALIDATOR } from 'validators/ntp';
import { TIME_ZONES, selectedTimeZone, useTimeZoneSelectItems, timeZoneSelectItemsT } from './TZ'; import {
TIME_ZONES,
selectedTimeZone,
timeZoneSelectItemsT,
useTimeZoneSelectItems
} from './TZ';
const NTPSettings = () => { const NTPSettings = () => {
const { const {
@@ -226,7 +231,9 @@ const NTPSettings = () => {
> >
<MenuItem value={0}>{LL.OFF()}</MenuItem> <MenuItem value={0}>{LL.OFF()}</MenuItem>
<MenuItem value={1}>{LL.ON()}</MenuItem> <MenuItem value={1}>{LL.ON()}</MenuItem>
<MenuItem value={2} >{LL.USE()} {LL.TIME_ZONE()}</MenuItem > <MenuItem value={2}>
{LL.USE()} {LL.TIME_ZONE()}
</MenuItem>
</ValidatedTextField> </ValidatedTextField>
</Grid> </Grid>
<Grid> <Grid>
+3 -2
View File
@@ -2,6 +2,7 @@
"name": "mock-api", "name": "mock-api",
"version": "3.8.2", "version": "3.8.2",
"description": "mock api for EMS-ESP", "description": "mock api for EMS-ESP",
"type": "module",
"author": "proddy, emsesp.org", "author": "proddy, emsesp.org",
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
@@ -12,8 +13,8 @@
"@msgpack/msgpack": "^3.1.3", "@msgpack/msgpack": "^3.1.3",
"@trivago/prettier-plugin-sort-imports": "^6.0.2", "@trivago/prettier-plugin-sort-imports": "^6.0.2",
"formidable": "^3.5.4", "formidable": "^3.5.4",
"itty-router": "^5.0.23", "itty-router": "^5.0.24",
"prettier": "^3.8.3" "prettier": "^3.9.6"
}, },
"packageManager": "pnpm@10.33.4+sha512.1c67b3b359b2d408119ba1ed289f34b8fc3c6873412bec6fd264fbdc82489e510fcbecb9ce9d22dae7f3b76269d8441046014bdca53b9979cd7a561ad631b800" "packageManager": "pnpm@10.33.4+sha512.1c67b3b359b2d408119ba1ed289f34b8fc3c6873412bec6fd264fbdc82489e510fcbecb9ce9d22dae7f3b76269d8441046014bdca53b9979cd7a561ad631b800"
} }
+63 -63
View File
@@ -13,54 +13,54 @@ importers:
version: 3.1.3 version: 3.1.3
'@trivago/prettier-plugin-sort-imports': '@trivago/prettier-plugin-sort-imports':
specifier: ^6.0.2 specifier: ^6.0.2
version: 6.0.2(prettier@3.8.3) version: 6.0.2(prettier@3.9.6)
formidable: formidable:
specifier: ^3.5.4 specifier: ^3.5.4
version: 3.5.4 version: 3.5.4
itty-router: itty-router:
specifier: ^5.0.23 specifier: ^5.0.24
version: 5.0.23 version: 5.0.24
prettier: prettier:
specifier: ^3.8.3 specifier: ^3.9.6
version: 3.8.3 version: 3.9.6
packages: packages:
'@babel/code-frame@7.29.0': '@babel/code-frame@7.29.7':
resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
'@babel/generator@7.29.1': '@babel/generator@7.29.8':
resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
'@babel/helper-globals@7.28.0': '@babel/helper-globals@7.29.7':
resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
'@babel/helper-string-parser@7.27.1': '@babel/helper-string-parser@7.29.7':
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
'@babel/helper-validator-identifier@7.28.5': '@babel/helper-validator-identifier@7.29.7':
resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
'@babel/parser@7.29.3': '@babel/parser@7.29.8':
resolution: {integrity: sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==} resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==}
engines: {node: '>=6.0.0'} engines: {node: '>=6.0.0'}
hasBin: true hasBin: true
'@babel/template@7.28.6': '@babel/template@7.29.7':
resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
'@babel/traverse@7.29.0': '@babel/traverse@7.29.8':
resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
'@babel/types@7.29.0': '@babel/types@7.29.8':
resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
'@jridgewell/gen-mapping@0.3.13': '@jridgewell/gen-mapping@0.3.13':
@@ -112,8 +112,8 @@ packages:
balanced-match@1.0.2: balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
brace-expansion@2.1.0: brace-expansion@2.1.4:
resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==} resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==}
debug@4.4.3: debug@4.4.3:
resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
@@ -131,8 +131,8 @@ packages:
resolution: {integrity: sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==} resolution: {integrity: sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
itty-router@5.0.23: itty-router@5.0.24:
resolution: {integrity: sha512-i49WU+SNPrwOZA4Z61En1RYd5h2Lcqa+5IvCpMrNi4dxymzJK15ozUUnRrWIUAv95Zamd4eJPAot2UvHRrQg7w==} resolution: {integrity: sha512-PXij1qGKtE6jg3dLgrTRdh/Frovl5Wc4Av67sD2xfhDPrgNt4u79++/il8/c/OfZGkhD/8uYJub8tjo+H165rA==}
javascript-natural-sort@0.7.1: javascript-natural-sort@0.7.1:
resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==}
@@ -167,8 +167,8 @@ packages:
picocolors@1.1.1: picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
prettier@3.8.3: prettier@3.9.6:
resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==} resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==}
engines: {node: '>=14'} engines: {node: '>=14'}
hasBin: true hasBin: true
@@ -177,52 +177,52 @@ packages:
snapshots: snapshots:
'@babel/code-frame@7.29.0': '@babel/code-frame@7.29.7':
dependencies: dependencies:
'@babel/helper-validator-identifier': 7.28.5 '@babel/helper-validator-identifier': 7.29.7
js-tokens: 4.0.0 js-tokens: 4.0.0
picocolors: 1.1.1 picocolors: 1.1.1
'@babel/generator@7.29.1': '@babel/generator@7.29.8':
dependencies: dependencies:
'@babel/parser': 7.29.3 '@babel/parser': 7.29.8
'@babel/types': 7.29.0 '@babel/types': 7.29.8
'@jridgewell/gen-mapping': 0.3.13 '@jridgewell/gen-mapping': 0.3.13
'@jridgewell/trace-mapping': 0.3.31 '@jridgewell/trace-mapping': 0.3.31
jsesc: 3.1.0 jsesc: 3.1.0
'@babel/helper-globals@7.28.0': {} '@babel/helper-globals@7.29.7': {}
'@babel/helper-string-parser@7.27.1': {} '@babel/helper-string-parser@7.29.7': {}
'@babel/helper-validator-identifier@7.28.5': {} '@babel/helper-validator-identifier@7.29.7': {}
'@babel/parser@7.29.3': '@babel/parser@7.29.8':
dependencies: dependencies:
'@babel/types': 7.29.0 '@babel/types': 7.29.8
'@babel/template@7.28.6': '@babel/template@7.29.7':
dependencies: dependencies:
'@babel/code-frame': 7.29.0 '@babel/code-frame': 7.29.7
'@babel/parser': 7.29.3 '@babel/parser': 7.29.8
'@babel/types': 7.29.0 '@babel/types': 7.29.8
'@babel/traverse@7.29.0': '@babel/traverse@7.29.8':
dependencies: dependencies:
'@babel/code-frame': 7.29.0 '@babel/code-frame': 7.29.7
'@babel/generator': 7.29.1 '@babel/generator': 7.29.8
'@babel/helper-globals': 7.28.0 '@babel/helper-globals': 7.29.7
'@babel/parser': 7.29.3 '@babel/parser': 7.29.8
'@babel/template': 7.28.6 '@babel/template': 7.29.7
'@babel/types': 7.29.0 '@babel/types': 7.29.8
debug: 4.4.3 debug: 4.4.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@babel/types@7.29.0': '@babel/types@7.29.8':
dependencies: dependencies:
'@babel/helper-string-parser': 7.27.1 '@babel/helper-string-parser': 7.29.7
'@babel/helper-validator-identifier': 7.28.5 '@babel/helper-validator-identifier': 7.29.7
'@jridgewell/gen-mapping@0.3.13': '@jridgewell/gen-mapping@0.3.13':
dependencies: dependencies:
@@ -246,17 +246,17 @@ snapshots:
dependencies: dependencies:
'@noble/hashes': 1.8.0 '@noble/hashes': 1.8.0
'@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.3)': '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.9.6)':
dependencies: dependencies:
'@babel/generator': 7.29.1 '@babel/generator': 7.29.8
'@babel/parser': 7.29.3 '@babel/parser': 7.29.8
'@babel/traverse': 7.29.0 '@babel/traverse': 7.29.8
'@babel/types': 7.29.0 '@babel/types': 7.29.8
javascript-natural-sort: 0.7.1 javascript-natural-sort: 0.7.1
lodash-es: 4.18.1 lodash-es: 4.18.1
minimatch: 9.0.9 minimatch: 9.0.9
parse-imports-exports: 0.2.4 parse-imports-exports: 0.2.4
prettier: 3.8.3 prettier: 3.9.6
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -264,7 +264,7 @@ snapshots:
balanced-match@1.0.2: {} balanced-match@1.0.2: {}
brace-expansion@2.1.0: brace-expansion@2.1.4:
dependencies: dependencies:
balanced-match: 1.0.2 balanced-match: 1.0.2
@@ -283,7 +283,7 @@ snapshots:
dezalgo: 1.0.4 dezalgo: 1.0.4
once: 1.4.0 once: 1.4.0
itty-router@5.0.23: {} itty-router@5.0.24: {}
javascript-natural-sort@0.7.1: {} javascript-natural-sort@0.7.1: {}
@@ -295,7 +295,7 @@ snapshots:
minimatch@9.0.9: minimatch@9.0.9:
dependencies: dependencies:
brace-expansion: 2.1.0 brace-expansion: 2.1.4
ms@2.1.3: {} ms@2.1.3: {}
@@ -311,6 +311,6 @@ snapshots:
picocolors@1.1.1: {} picocolors@1.1.1: {}
prettier@3.8.3: {} prettier@3.9.6: {}
wrappy@1.0.2: {} wrappy@1.0.2: {}
+2 -2
View File
@@ -141,8 +141,8 @@ let system_status = {
let DEV_VERSION_IS_UPGRADEABLE: boolean; let DEV_VERSION_IS_UPGRADEABLE: boolean;
let STABLE_VERSION_IS_UPGRADEABLE: boolean; let STABLE_VERSION_IS_UPGRADEABLE: boolean;
let THIS_VERSION: string; let THIS_VERSION: string;
let LATEST_STABLE_VERSION = '3.8.2'; let LATEST_STABLE_VERSION = '3.8.3';
let LATEST_DEV_VERSION = '3.8.3-dev.2'; let LATEST_DEV_VERSION = '3.9.0-dev.0';
// scenarios for testing versioning // scenarios for testing versioning
let version_test = 0; // on latest stable, or switch to dev let version_test = 0; // on latest stable, or switch to dev
+17 -11
View File
@@ -3,28 +3,34 @@
# run from root folder, like `sh ./scripts/update_all.sh` # run from root folder, like `sh ./scripts/update_all.sh`
# as well as GNUMake (make) and python3 # as well as GNUMake (make) and python3
# abort on first error so a failed lint/build isn't silently swallowed
set -e
cd interface cd interface
rm -rf node_modules rm -rf node_modules
corepack use pnpm@latest-10 corepack use pnpm@latest
pnpm update --latest pnpm update
pnpm install pnpm install
pnpm format pnpm format
pnpm lint pnpm lint
pnpm build-webUI
cd ../mock-api cd ../mock-api
rm -rf node_modules rm -rf node_modules
corepack use pnpm@latest-10 corepack use pnpm@latest
pnpm update --latest pnpm update
pnpm install pnpm install
pnpm format pnpm format
cd ..
cd interface
pnpm build-webUI
cd .. cd ..
npx cspell "**" npx cspell "**"
# platformio run -e build_modbus # build files that go into docs folder
# platformio run -e build_standalone
# platformio run -e native-test -t exec platformio run -e build_modbus -t clean
platformio run -e build_modbus
platformio run -e build_standalone -t clean
platformio run -e build_standalone
# run tests
platformio run -e native-test -t exec
+11 -5
View File
@@ -3024,18 +3024,24 @@ bool System::uploadFirmwareURL(const char * url) {
return false; // error return false; // error
} }
// the Content-Length from the response header, -1 if the server didn't send one.
int firmware_size = http.getSize(); int firmware_size = http.getSize();
if (firmware_size <= 0) {
LOG_ERROR("Firmware upload failed - unknown size");
http.end();
return false; // error
}
// check we have a valid size // catch a wrong URL early, before streaming. Smallest shipped image is ~1.9MB
if (firmware_size < 2097152) { // 2MB or greater is required if (firmware_size < 1677721) { // 1.6MB
LOG_ERROR("Firmware upload failed - invalid size"); LOG_ERROR("Firmware upload failed - too small (%d KB)", firmware_size / 1024);
http.end(); http.end();
return false; // error return false; // error
} }
// check we have enough space for the upload in the ota partition // check we have enough space for the upload in the ota partition
if (!Update.begin(firmware_size)) { if (!Update.begin(firmware_size)) {
LOG_ERROR("Firmware upload failed - no space"); LOG_ERROR("Firmware upload failed - %s", Update.errorString());
http.end(); http.end();
return false; // error return false; // error
} }
@@ -3052,7 +3058,7 @@ bool System::uploadFirmwareURL(const char * url) {
// get tcp stream and send it to Updater // get tcp stream and send it to Updater
WiFiClient * stream = http.getStreamPtr(); WiFiClient * stream = http.getStreamPtr();
if (Update.writeStream(*stream) != firmware_size) { if (Update.writeStream(*stream) != (size_t)firmware_size) {
LOG_ERROR("Firmware upload failed - size differences"); LOG_ERROR("Firmware upload failed - size differences");
http.end(); http.end();
EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_ERROR_UPLOAD); EMSESP::system_.systemStatus(SYSTEM_STATUS::SYSTEM_STATUS_ERROR_UPLOAD);
+2 -1
View File
@@ -362,7 +362,8 @@ bool Water::set_wwCircTc(const char * value, const int8_t id) {
write_command(0x33B + dhw_, 4, b ? 0x01 : 0x00, 0x33B + dhw_); write_command(0x33B + dhw_, 4, b ? 0x01 : 0x00, 0x33B + dhw_);
} else { // SM100 } else { // SM100
write_command(0x7A5, 4, b ? 0xFF : 0x00, 0x7A5); write_command(0x7A5, 4, b ? 0xFF : 0x00, 0x7A5);
} return true; }
return true;
} }
bool Water::set_wwKeepWarm(const char * value, const int8_t id) { bool Water::set_wwKeepWarm(const char * value, const int8_t id) {
+1 -1
View File
@@ -1 +1 @@
#define EMSESP_APP_VERSION "3.8.3-dev.10" #define EMSESP_APP_VERSION "3.8.4"