1777 Commits

Author SHA1 Message Date
Proddy
b320d8ded2 Merge pull request #2963 from MichaelDvP/core3
Core3 network fixes
2026-02-16 18:12:33 +01:00
MichaelDvP
0be1b20996 statemachine for network connection replaces onEvent 2026-02-16 10:37:28 +01:00
MichaelDvP
6c55460622 Merge branch 'dev' into core3 2026-02-16 08:34:23 +01:00
MichaelDvP
421da246ed fix SRC seltemp offset for auto mode #2960 2026-02-16 07:51:10 +01:00
MichaelDvP
d627404dc2 skip onEvent for AP, MQTT, NTP 2026-02-16 07:47:13 +01:00
MichaelDvP
148a721e17 read connect seltemp after mode/icon to create HA-climate 2026-02-15 16:49:21 +01:00
proddy
f317123c26 fix standalone 2026-02-15 15:27:11 +01:00
proddy
e4df1887b0 remove 2026-02-15 14:16:55 +01:00
proddy
34142c3e85 use Tasmota everywhere 2026-02-15 14:16:50 +01:00
proddy
6e7f8bdf02 add -DNO_TLS_SUPPORT 2026-02-15 14:16:27 +01:00
proddy
3dd9fcfb58 update 2026-02-15 14:16:04 +01:00
proddy
35e2954b8b fix lint errors 2026-02-15 14:15:55 +01:00
proddy
59aa63db0f package update 2026-02-15 14:15:43 +01:00
proddy
7a41a190f8 support s3 2026-02-15 14:15:13 +01:00
proddy
6741232450 WIP: ESP-IDF Core 3 migration - mbedtls SSL, module library, board configs, MQTT and network updates 2026-02-15 13:53:13 +01:00
MichaelDvP
a811670c5a 3.8.2-dev.6, changelog 2026-02-15 12:03:33 +01:00
MichaelDvP
72f08a86cf fix SRC climate, #2960 2026-02-15 12:03:07 +01:00
MichaelDvP
27c471f45f set model for ems-esp devices, #2958 2026-02-15 12:02:36 +01:00
MichaelDvP
e303972d26 update AsyncWebserver and pkg 2026-02-15 12:01:50 +01:00
MichaelDvP
97bb03d703 add missing check for number mode change 2026-02-15 12:01:10 +01:00
Proddy
e9f77c1bde Merge pull request #2954 from MichaelDvP/dev
fix brand in HA
2026-02-12 17:54:41 +01:00
MichaelDvP
81cba6c0a8 fix brand in HA 2026-02-12 17:41:10 +01:00
Proddy
89029df25e Merge pull request #2953 from MichaelDvP/dev
customize device brand #2784
2026-02-12 13:19:46 +01:00
MichaelDvP
3463b6818d update testdata 2026-02-12 12:14:13 +01:00
MichaelDvP
349843e666 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2026-02-12 12:02:45 +01:00
MichaelDvP
96ae3bbbba customze device brand #2784 2026-02-12 12:01:39 +01:00
Proddy
b153364b60 Merge pull request #2947 from MichaelDvP/dev
save scheduler, custom to nvs, fix #2946
2026-02-10 19:39:59 +01:00
MichaelDvP
ccc40937fb chore: update generated files for v3.8.2-dev.3 2026-02-09 12:02:38 +00:00
MichaelDvP
909edf394d add back 4wayValve as bool, #2844 2026-02-09 09:36:13 +01:00
MichaelDvP
ac8ef646e9 fix standalone test 2026-02-08 14:46:54 +01:00
MichaelDvP
3ef279ea10 3.8.2-dev.3, changelog, update pkg 2026-02-08 14:17:20 +01:00
MichaelDvP
769beeda37 save scheduler active flag to nvs 2026-02-08 13:53:57 +01:00
MichaelDvP
f83404c216 add custom entity type NVS 2026-02-08 13:53:32 +01:00
MichaelDvP
c239658131 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2026-02-02 18:52:29 +01:00
MichaelDvP
be82afd778 add translated heat/eco modes to mode_str_tpl 2026-02-02 18:52:21 +01:00
Proddy
2156c96368 Merge pull request #2942 from misa1515/patch-28
Update locale_translations.h
2026-02-02 17:48:39 +01:00
misa1515
f7f078d82a Update locale_translations.h 2026-02-02 14:15:09 +01:00
Proddy
95168cf514 Add DeepWiki badge to README 2026-02-01 12:57:10 +01:00
Proddy
6dc601c4a2 Merge pull request #2940 from proddy/dev
set range for comfort point temp + offset - #2935
2026-02-01 12:03:22 +01:00
proddy
6b87bbb882 set range for comfort point temp + offset - #2935 2026-02-01 12:02:40 +01:00
proddy
abdf2c5037 package update 2026-02-01 12:02:04 +01:00
Proddy
7beec1b80f Merge pull request #2939 from MichaelDvP/dev
fixes and additions: #2918, #2931, #2933, #2935, #2936
2026-01-30 11:30:34 +01:00
MichaelDvP
3a0e46f064 update expected test data 2026-01-30 11:21:44 +01:00
MichaelDvP
85cc85a923 remove MAX_LOG_ENTRIES check in logger web page 2026-01-30 09:56:38 +01:00
MichaelDvP
ca0079c0df Merge branch 'dev' of https://github.com/MichaelDvP/EMS-ESP32 into dev 2026-01-30 08:58:21 +01:00
MichaelDvP
28b662ad43 update to ESPAsyncWebServer 3.9.6 2026-01-30 08:57:14 +01:00
MichaelDvP
6bac6bbfeb chore: update generated files for v3.8.2-dev.2 2026-01-30 07:08:12 +00:00
MichaelDvP
958ec1002b dev.2 2026-01-30 07:56:39 +01:00
MichaelDvP
438852ecaf Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2026-01-30 07:51:12 +01:00
MichaelDvP
92d82c0a00 remove burnMinPower, #2918 2026-01-30 07:50:54 +01:00
Proddy
7d37267f57 Merge pull request #2934 from proddy/dev
a collection of small changes
2026-01-29 21:03:23 +01:00
MichaelDvP
5641d53cc3 revert syslog buffer (still in heap) 2026-01-29 18:26:03 +01:00
MichaelDvP
8fc6752290 HA climate mode and icon check 2026-01-29 09:53:20 +01:00
proddy
cca6f87500 package update 2026-01-28 21:47:20 +01:00
proddy
758d76051f update discord URL 2026-01-28 21:47:13 +01:00
proddy
95f7e66cff update discord URL and tidy up 2026-01-28 21:46:58 +01:00
MichaelDvP
4e194287c9 remove SRC climate for test 2026-01-28 18:07:47 +01:00
MichaelDvP
3545830552 chore: update generated files for v3.8.2-dev.1 2026-01-28 14:20:04 +00:00
MichaelDvP
074f4c32ed dev.1, changelog 2026-01-28 15:08:28 +01:00
MichaelDvP
b3fec5ed7d fix SRC climate creation, #2936 2026-01-28 15:02:28 +01:00
MichaelDvP
ffb90b8f9a comfortpoint temperature and offset, #2935 2026-01-28 15:01:57 +01:00
MichaelDvP
584618043d weblog buffer max 1000 messages with psram, syslog buffer 250 with psram 2026-01-28 15:01:15 +01:00
MichaelDvP
d702c485b7 validate custom entity writes, #2931 2026-01-25 19:37:34 +01:00
MichaelDvP
d3561da331 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2026-01-25 19:22:07 +01:00
MichaelDvP
0e0aaf37df add climate modes night/eco as off 2026-01-25 19:21:59 +01:00
proddy
5ec068409f package update 2026-01-24 12:10:52 +01:00
proddy
8796b6d340 update dictionary 2026-01-24 12:10:45 +01:00
proddy
bfbb18655d memory optimzations 2026-01-23 19:37:21 +01:00
proddy
9088651e53 asyncwebserver update, improved caching 2026-01-23 19:35:53 +01:00
proddy
3e8f379502 package update 2026-01-23 19:35:37 +01:00
proddy
265c2c4231 3.8.2-dev.1 2026-01-23 12:52:55 +01:00
proddy
f671d79280 package update 2026-01-22 16:40:37 +01:00
proddy
97c89d1d13 add psram 2026-01-22 16:40:15 +01:00
proddy
e0a26a38fa replace unordered_map with map, less heap 2026-01-22 16:40:05 +01:00
proddy
038f06e59f show psram on startup 2026-01-22 16:39:14 +01:00
proddy
f4d2bae04f add psram 2026-01-22 16:38:52 +01:00
proddy
d443e275ea Merge branch 'dev' of https://github.com/proddy/EMS-ESP32 into dev 2026-01-21 14:46:10 +01:00
Proddy
30d2057e01 Merge pull request #2930 from jvhaarst/patch-1
Update Dutch translations for various terms
2026-01-20 08:49:45 +00:00
Jan van Haarst
d952b9aaae Update Dutch translations for various terms
As I don't have the board yet, I saw the error message "Als deze waarschuwing blijft staan na een paar seconden dan loop de instellingen na en in het bijzonder het apparaat type profiel na."
That sentence didn't really flow right for me, so I had a look at the rest of the text, with this result.
2026-01-20 08:27:24 +01:00
proddy
3402215e8d optimizations 2026-01-18 15:49:35 +00:00
proddy
f01031dc26 optimize 2026-01-18 15:00:43 +00:00
proddy
01d4d116b9 cspell updates 2026-01-18 12:36:34 +00:00
proddy
bc7f82eef1 package update 2026-01-18 12:36:20 +00:00
Proddy
efdb355033 Merge pull request #2923 from proddy/dev
v3.8.2
2026-01-12 12:07:02 +01:00
proddy
87c9fd010f v3.8.2 2026-01-11 19:49:01 +01:00
Proddy
930f0e615a Merge pull request #2921 from MichaelDvP/dev
set gpios when switching to custom board
2026-01-11 19:00:24 +01:00
MichaelDvP
4dbbdb3290 dangling Divider 2026-01-11 16:27:49 +01:00
MichaelDvP
8379b3f5aa Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2026-01-11 16:26:00 +01:00
MichaelDvP
08124fa4db set gpio when switching to custom board 2026-01-11 16:25:42 +01:00
Proddy
39414db732 Merge pull request #2920 from proddy/dev
add SECURITY
2026-01-11 16:13:29 +01:00
proddy
da57a08005 add 2026-01-11 16:12:28 +01:00
Proddy
b6b8700c3f Merge pull request #2919 from proddy/dev
rollback ApplicationSettings for CUSTOM
2026-01-11 14:23:07 +01:00
proddy
8ee0789dad emsesp.org ownership 2026-01-11 14:17:49 +01:00
proddy
1eabe86015 package update 2026-01-11 13:17:15 +01:00
proddy
5fe4b315f3 make reference to emsesp docs 2026-01-11 13:13:40 +01:00
proddy
03ec96bf96 rollback 2026-01-11 13:13:27 +01:00
Proddy
aa05e37fbb Merge pull request #2916 from proddy/dev
webUI changes and comments
2026-01-10 22:21:48 +01:00
Proddy
959a00c19a Merge branch 'emsesp:dev' into dev 2026-01-10 22:10:23 +01:00
Proddy
b42060be3a Merge pull request #2917 from MichaelDvP/dev 2026-01-10 20:23:37 +01:00
MichaelDvP
33bb433d7e always set valid gpio in load board profile 2026-01-10 19:47:03 +01:00
proddy
28a5d4ef1a fix comment 2026-01-10 19:00:15 +01:00
proddy
b78d47cbd0 minor ui change to how board profile is shown 2026-01-10 19:00:15 +01:00
proddy
8a7a1383a7 added comment reference to HA 2026-01-10 19:00:15 +01:00
Proddy
3f5163c1e4 Merge branch 'emsesp:dev' into dev 2026-01-10 18:39:48 +01:00
Proddy
fad82c8c68 Merge pull request #2915 from MichaelDvP/dev
fix board change ignore old gpio settings
2026-01-10 18:39:17 +01:00
MichaelDvP
6fc3bf30b6 HA uom L, formatting 2026-01-10 18:19:14 +01:00
proddy
43b3e74c08 input number format 2026-01-10 18:09:38 +01:00
proddy
64c9882d8c add children to avoid linting errors 2026-01-10 18:09:17 +01:00
proddy
a690510903 update 2026-01-10 18:09:02 +01:00
proddy
c732ec301a update 2026-01-10 18:08:54 +01:00
proddy
cc1f16596a add ha_number_node 2026-01-10 18:08:44 +01:00
proddy
66c74f85a4 formatting 2026-01-10 18:08:17 +01:00
proddy
db667b9437 package update 2026-01-10 18:08:06 +01:00
MichaelDvP
8799015f59 fix board change ignore old gpio settings 2026-01-10 16:06:43 +01:00
Proddy
d71b3c64e1 Merge pull request #2914 from proddy/dev
remove build section, refer to docs
2026-01-10 09:43:15 +01:00
proddy
6d3083fff4 remove build section, refer to docs 2026-01-10 09:39:23 +01:00
Proddy
56b2c111b8 Merge pull request #2912 from MichaelDvP/dev
update testdata (no `.0`-decimales), fix c3 compile issue
2026-01-09 21:25:29 +01:00
MichaelDvP
12ce736580 remove eth fixed pins 2026-01-09 21:03:23 +01:00
MichaelDvP
debe90eb8d formatting, update gpios for C3, S2 2026-01-09 18:57:25 +01:00
Proddy
8d318143a4 Merge pull request #2913 from proddy/dev
fix ha climate mode to use bool format
2026-01-09 18:48:45 +01:00
proddy
59f90f5d1c comment change 2026-01-09 18:47:34 +01:00
proddy
0efbd0528e fix ha mode, boolean to match setting bool format 2026-01-09 18:47:14 +01:00
proddy
3218620a0e update dictionary 2026-01-09 18:46:00 +01:00
proddy
a93921c875 adding missing board to settings 2026-01-09 18:45:50 +01:00
MichaelDvP
fb77b455be testdata without decimals 2026-01-09 17:21:44 +01:00
MichaelDvP
b64c392c58 rename uom::HZ to HERTZ, avoids compile error on ESP32C3 2026-01-09 17:21:26 +01:00
Proddy
7bc6cf3910 Merge pull request #2911 from MichaelDvP/dev
day schedule defaults to all days, allow gpio 1,3 for custom #2908
2026-01-09 17:00:53 +01:00
MichaelDvP
e19e76546e update changelog, dev7 2026-01-09 16:45:18 +01:00
MichaelDvP
b9aaaae90a allow uart0 pins for custom boards 2026-01-09 16:30:07 +01:00
MichaelDvP
86b395d612 don't allow day schedule without selecting a day, default to daily 2026-01-09 16:29:12 +01:00
Proddy
6204b9acc7 Merge pull request #2909 from MichaelDvP/dev
HA number mode selection #2900, board specific gpio settings
2026-01-09 12:48:52 +01:00
MichaelDvP
0777f420b0 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2026-01-09 11:52:42 +01:00
MichaelDvP
4a6a662aa0 known board gpio settings, custom with less restriction 2026-01-09 11:52:18 +01:00
Proddy
66837d399f Merge pull request #2907 from MichaelDvP/dev
add gpios for system sensors on first start
2026-01-09 09:43:46 +01:00
MichaelDvP
34ff5f12ea mqtt decimals: remove trailing zeros 2026-01-08 21:18:16 +01:00
MichaelDvP
82d160cabb merge mqtt ha number mode 2026-01-08 21:17:14 +01:00
MichaelDvP
2c85d3829b Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2026-01-08 21:05:59 +01:00
MichaelDvP
cc258dae16 add gpios for system sensors on first start 2026-01-08 19:15:48 +01:00
Proddy
577964befe Merge pull request #2904 from MichaelDvP/dev
GPIOs depends on board profile, #2901
2026-01-08 17:42:34 +01:00
MichaelDvP
f2500013ab test fix 2026-01-08 16:55:57 +01:00
MichaelDvP
98fb6941d2 add E32V2_2 single led as system sensor 2026-01-08 16:32:22 +01:00
MichaelDvP
7308b8e73d fix another test 2026-01-08 16:31:36 +01:00
Proddy
e97cfaf9ee Merge pull request #2905 from proddy/dev
min/max fixes
2026-01-08 14:50:13 +01:00
MichaelDvP
fd0734d8d8 custom board option only in developer mode 2026-01-08 14:43:35 +01:00
MichaelDvP
739f32f045 update pkg 2026-01-08 13:10:56 +01:00
MichaelDvP
b66b49e812 remove blank line 2026-01-08 12:25:23 +01:00
MichaelDvP
d4b81a2909 Merge branch 'dev' of https://github.com/proddy/EMS-ESP32 into dev2 2026-01-08 12:24:46 +01:00
MichaelDvP
fb57537e88 fix standalone 2026-01-08 12:19:18 +01:00
MichaelDvP
335b1274cf test version 2026-01-08 12:08:14 +01:00
MichaelDvP
f6d1c87eaf skip trailing zeros 2026-01-08 12:07:00 +01:00
MichaelDvP
5e07e9a11b add ha number mode selection #2900 2026-01-08 12:06:48 +01:00
MichaelDvP
dd0ea5df0e fix test gpios for S32 gateway 2026-01-08 11:16:32 +01:00
proddy
2b7f592957 use max version for dummy data, don't show min/max range for non writeable entries. fixes entity_dump.xls 2026-01-07 22:02:19 +01:00
proddy
db7b5df85d auto-gen 2026-01-07 22:01:13 +01:00
proddy
1c2534ed8f package update 2026-01-07 22:01:06 +01:00
MichaelDvP
90535d7b94 changelog, dev5 2026-01-07 11:43:02 +01:00
MichaelDvP
0d3a8fc719 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2026-01-07 10:30:40 +01:00
MichaelDvP
d624b9eac9 GPIOs depends on board profile, #2901 2026-01-07 10:29:59 +01:00
Proddy
068cbf757c Merge pull request #2903 from MichaelDvP/dev
HP entities #2883, Mqtt queue to psram #2889
2026-01-07 09:54:11 +01:00
MichaelDvP
738d6f0b0f chore: update generated files for v3.8.1-dev.4 2026-01-07 08:17:16 +00:00
MichaelDvP
d9551bc4c3 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2026-01-07 08:38:01 +01:00
Proddy
722659325a Merge pull request #2884 from proddy/dev
some small fixes and changes
2026-01-06 22:19:40 +01:00
proddy
927e7c80f4 update 2026-01-06 22:18:35 +01:00
proddy
39919b4ad8 update 2026-01-06 22:17:54 +01:00
proddy
b5defa552e improve chunking and fix circular refs 2026-01-06 22:15:22 +01:00
proddy
e8fbbe5a1c skip blured paper component when in systemMonitor 2026-01-06 22:04:54 +01:00
proddy
949172128f update packages 2026-01-06 22:04:26 +01:00
proddy
35a8db4581 fix missing progress bar on WebUI upload 2026-01-06 22:04:15 +01:00
proddy
3a74abb4db fix blue dots appearing when transitioning 2026-01-06 22:03:53 +01:00
proddy
bcc7687b1b pins 22-25 don't exist on S2+S3 2026-01-06 21:01:26 +01:00
MichaelDvP
13aa544214 mqtt queue: prefere PSram 2026-01-06 18:50:50 +01:00
proddy
696141721a updated with BBQKees pins 2026-01-06 11:57:21 +01:00
proddy
4781eea665 gpios 2026-01-06 10:56:44 +01:00
proddy
2fd6bed485 update test 2026-01-05 21:37:40 +01:00
proddy
db40d1d381 set default values, just to be sure 2026-01-05 21:36:21 +01:00
proddy
33bde8b407 fix default version just to be sure 2026-01-05 21:36:10 +01:00
proddy
bf5990a992 fix setting default version 2026-01-05 21:35:39 +01:00
proddy
cff4bd0a71 add debug statement 2026-01-05 21:35:18 +01:00
proddy
28ee0834d8 don't log debug messages if nothing connected 2026-01-05 21:35:03 +01:00
proddy
9be1cb1d3e always set fresh flag 2026-01-05 21:34:50 +01:00
proddy
81d46fede2 check for USB uploads and set 'fresh' flag 2026-01-05 21:34:32 +01:00
proddy
664a8e9f5f remove defaults 2026-01-05 21:26:58 +01:00
proddy
def7501c62 dictionary update 2026-01-05 20:12:21 +01:00
proddy
1cc4dc52d4 package update 2026-01-05 20:12:12 +01:00
MichaelDvP
978c738f27 add hp entities, +2883 2026-01-05 17:32:49 +01:00
proddy
feeb8500ac #2896 2026-01-05 13:34:10 +01:00
proddy
18a55d4622 more gpio pin updates 2026-01-05 13:31:27 +01:00
Proddy
29ea67f438 Merge branch 'emsesp:dev' into dev 2026-01-05 10:10:27 +01:00
Proddy
a3df77171b Merge pull request #2898 from g6094199/patch-1
Update mqtt.cpp: use the same nomenclature as Tasmota and OpenBK uses…
2026-01-05 10:10:14 +01:00
g6094199
aa6f5c50b2 Update mqtt.cpp: use the same nomenclature as Tasmota and OpenBK uses for Homeassistant
to be compliant to the HA typical nomenclatura use the same wording.

since we are anyway connecting via wifi or ethernet the wording of "WIFI rssi" is redundant. just use "RSSI" as other platforms do.
2026-01-05 09:03:12 +01:00
proddy
53a43ca147 update gpio to not conflict with board profile 2026-01-04 21:56:37 +01:00
proddy
da76fe3871 asyncTCP change 2026-01-04 21:51:57 +01:00
proddy
84af132e2c fix mix-up of GPIOs 2026-01-04 21:33:30 +01:00
proddy
712a8537c9 remove unused struct 2026-01-04 21:32:32 +01:00
proddy
bb22386f7f updated 2026-01-04 21:32:15 +01:00
proddy
89dfe11ee3 fix tests 2026-01-04 12:45:54 +01:00
proddy
be1e08af9c update 2026-01-04 12:21:17 +01:00
proddy
68ebcdded4 gpio exclusion, add name 2026-01-04 11:44:28 +01:00
Proddy
4afe041880 Merge branch 'emsesp:dev' into dev 2026-01-04 11:41:07 +01:00
Proddy
8b690d23da Merge pull request #2892 from MichaelDvP/dev
Junkers wwcharge offset #2860, fix minflowtemp #2890
2026-01-04 11:39:32 +01:00
MichaelDvP
62c7fb671b Junkers wwcharge offset #2860, fix minflowtemp #2890 2026-01-04 11:05:38 +01:00
proddy
5a82064a88 add name to gpios 2026-01-04 00:08:17 +01:00
proddy
4ae4000944 asyncTCP fix 2026-01-03 22:48:17 +01:00
proddy
616c73f658 first test to exclude gpios 2026-01-03 22:16:33 +01:00
Proddy
b698485814 Merge branch 'emsesp:dev' into dev 2026-01-03 19:00:11 +01:00
Proddy
b4036bf8cd Merge pull request #2888 from MichaelDvP/dev
don't add HA uom/classes for bool values, fix #2885
2026-01-03 18:59:44 +01:00
MichaelDvP
4b457d6cdb don't add HA uom/classes for bool values, fix #2885 2026-01-03 18:24:54 +01:00
proddy
425b44e334 init settings 2026-01-03 14:13:54 +01:00
proddy
41bf293db3 AsyncTCP change 2026-01-03 13:58:25 +01:00
proddy
af349edd54 text changes 2026-01-03 13:58:10 +01:00
proddy
5b303bd58a package update 2026-01-03 13:58:00 +01:00
proddy
b992f90fe2 AsyncTCP changes 2026-01-03 13:56:27 +01:00
proddy
92c34dddba add comment 2026-01-03 13:56:11 +01:00
proddy
1475fc094d ESPAsyncWebServer @ 3.9.4 2026-01-03 13:55:57 +01:00
Proddy
48f7b48216 Merge pull request #2882 from MichaelDvP/dev 2026-01-02 16:54:15 +01:00
MichaelDvP
cd054b293a dev3 2026-01-02 16:13:52 +01:00
MichaelDvP
ea6b7c0be0 revert commit 1a03b98, used fixed buffer length 2026-01-02 16:13:14 +01:00
MichaelDvP
a49a5537d3 fix minflowtemp #2879 2026-01-02 16:04:02 +01:00
MichaelDvP
c407ad04bf Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2026-01-01 18:58:45 +01:00
MichaelDvP
480e0951b8 update asyncTCP 2026-01-01 18:58:20 +01:00
Proddy
a06c5bb297 Merge pull request #2878 from MichaelDvP/dev
fix selflowtemp #2876 and other
2026-01-01 17:04:00 +01:00
Proddy
77a54792dd Merge pull request #2877 from proddy/dev
fix modbus md doc
2026-01-01 13:17:36 +01:00
proddy
d0d49397ca fix modbus table for emsesp.org doc 2026-01-01 13:00:18 +01:00
proddy
b51abeabac auto-gen 2026-01-01 13:00:06 +01:00
MichaelDvP
f0e4f17ab8 safe update time in nvs 2026-01-01 11:50:14 +01:00
MichaelDvP
205da33fe5 snapshot gpios in temporarly ram 2026-01-01 11:49:38 +01:00
MichaelDvP
9aa78111be fix selflowtemp #2876 2026-01-01 10:48:21 +01:00
proddy
c3f93d4aae fix for demo building 2026-01-01 10:47:54 +01:00
Proddy
5a5c0d7179 Merge pull request #2875 from proddy/dev
fixes #1953 #2874
2026-01-01 10:10:10 +01:00
proddy
ba57942b7d txpause in system info (#1953), added Wemos S3 pins (#2874) 2026-01-01 10:08:57 +01:00
proddy
c782deb581 package udpate 2026-01-01 10:07:11 +01:00
Proddy
566edfcd7b Merge pull request #2872 from proddy/dev
3.8.1-dev-0
2025-12-31 22:01:08 +01:00
proddy
c3cf38c330 3.8.1-dev-0 2025-12-31 21:54:36 +01:00
Proddy
4953a41330 Merge pull request #2871 from proddy/dev
overcome strange chars in header files
2025-12-31 17:05:04 +01:00
proddy
7ff4ed640d overcome strange chars in header files 2025-12-31 16:53:32 +01:00
Proddy
898a13fcb5 Merge pull request #2870 from proddy/dev
minor fixes
2025-12-31 15:31:16 +01:00
proddy
3fdc370466 clean up check_upgrade, remove OTA onProgress setting status each time 2025-12-31 15:25:05 +01:00
proddy
39055ad0d2 show firmware size in KB 2025-12-31 15:23:38 +01:00
Proddy
21e73c973a Merge pull request #2869 from MichaelDvP/dev
fix minflowtemp #2781
2025-12-31 12:13:44 +01:00
MichaelDvP
4d03976032 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-12-31 11:45:59 +01:00
MichaelDvP
eb7587270f fix minflowtemp #2781 2025-12-31 11:45:29 +01:00
Proddy
3ea88a2be0 Merge pull request #2867 from proddy/dev
last minute 3.8 cleanup
2025-12-31 09:25:51 +01:00
proddy
55778ba0b5 update test data to 3.8 2025-12-31 09:22:53 +01:00
proddy
5d3694abd3 update package manager 2025-12-31 09:22:43 +01:00
proddy
21d9ba0182 update test data to 3.8 2025-12-31 09:22:28 +01:00
Proddy
27848feddd Merge pull request #2865 from proddy/dev
force 3.8.0-dev.1
2025-12-30 10:28:37 +01:00
proddy
ce261eeb65 Merge branch 'dev' of https://github.com/proddy/EMS-ESP32 into dev 2025-12-30 10:28:10 +01:00
proddy
8de3ae5468 package update 2025-12-30 10:28:09 +01:00
proddy
367d27d48f 3.8.0-dev.1 2025-12-30 10:28:03 +01:00
Proddy
1a9b6ab2a5 Merge pull request #2864 from proddy/dev
fixes #2862
2025-12-30 10:26:44 +01:00
Proddy
323b8ee67d Merge branch 'emsesp:dev' into dev 2025-12-30 10:23:51 +01:00
Proddy
5b95e1d41f Merge pull request #2863 from MichaelDvP/dev
fixes #2844, #2856
2025-12-30 10:23:32 +01:00
MichaelDvP
a272d8e253 chore: update generated files for v3.8.0-dev.0 2025-12-30 09:07:17 +00:00
MichaelDvP
79285ca12e remove wrong 4wayValve, #2844 2025-12-30 09:55:42 +01:00
proddy
f90f676faf fixes #2862 2025-12-29 21:30:33 +01:00
MichaelDvP
3224d8823d fix HA config topic to basename 2025-12-29 18:35:34 +01:00
MichaelDvP
1a03b98670 avoid variabe length array 2025-12-29 18:35:06 +01:00
Proddy
80f32bfeb4 Merge pull request #2859 from proddy/dev
fix modbus md, so its compatible with docusaurus markup
2025-12-29 16:35:28 +01:00
proddy
1b4693b981 fix show md compatible with docusaurus markup 2025-12-29 16:34:01 +01:00
proddy
535b760dd7 auto-generated 2025-12-29 16:33:44 +01:00
proddy
14775f6503 added comments 2025-12-29 16:33:36 +01:00
proddy
a856d249c9 update screenshots 2025-12-29 16:31:37 +01:00
proddy
484b547df5 fix typo 2025-12-29 12:31:42 +01:00
Proddy
d73ca2c890 Merge pull request #2858 from proddy/dev
rename docs.emsesp.org to emsesp.org
2025-12-29 10:45:26 +01:00
Proddy
6211bd8c69 Merge branch 'emsesp:dev' into dev 2025-12-29 10:44:46 +01:00
proddy
e638a471d1 rename docs.emsesp.org to emsesp.org 2025-12-29 10:44:32 +01:00
Proddy
42ee21e883 Merge pull request #2840 from proddy/dev
a selection of minor fixes and some new features
2025-12-29 10:39:13 +01:00
proddy
263af58dc0 package update 2025-12-29 10:37:55 +01:00
proddy
6727c0655a update dictionary 2025-12-28 11:20:46 +01:00
proddy
cba249938a add missing translations (thanks to AI) 2025-12-27 17:35:58 +01:00
proddy
9fbed47617 txenabled to txpause 2025-12-27 17:34:19 +01:00
proddy
b5dd722888 rename txenabled to txpause 2025-12-27 17:34:04 +01:00
proddy
11bef52568 fix HA mapping for uA and l/min 2025-12-27 17:33:46 +01:00
proddy
d22a369333 add tests for txmode 2025-12-27 11:20:38 +01:00
proddy
dfe95296d9 fix txmode on/off logic 2025-12-27 11:20:30 +01:00
proddy
8d39893e5e use Yellow RGB for flash and button 2025-12-27 10:58:08 +01:00
proddy
b8b8a501e1 package update 2025-12-27 10:24:43 +01:00
proddy
2a36f378b4 auto-formatting 2025-12-27 10:24:35 +01:00
proddy
6746df37a1 updated logic on fresh firmware install 2025-12-26 17:10:26 +01:00
proddy
364f66b7d4 updated comment 2025-12-26 16:55:05 +01:00
proddy
84bbd93216 fix standalone 2025-12-26 16:24:46 +01:00
proddy
85ef8d7d50 text changes 2025-12-26 15:28:03 +01:00
proddy
2b6606d8ad disable uart when uploading, show when uploading, store flag showing its a new firmware 2025-12-26 15:25:41 +01:00
proddy
4772a61e7c use EMS_TXMODE_INIT 2025-12-26 15:24:56 +01:00
proddy
d30375f3c4 set_partition_install_date - when NVS connects 2025-12-26 13:34:02 +01:00
proddy
8c831ac0e9 only update partition info on boot 2025-12-26 13:33:38 +01:00
proddy
1ede7028a5 add back missing webLogService.loop() 2025-12-26 12:06:31 +01:00
proddy
5b8dd0a693 msgpack update 2025-12-26 11:56:48 +01:00
proddy
cc041510be fixes install time in NVS 2025-12-26 10:18:58 +01:00
proddy
05baec85b7 implement txenabled system command - #2850 2025-12-26 10:10:27 +01:00
proddy
fb698fd029 if LED flashing skip other chores 2025-12-26 09:34:25 +01:00
proddy
bbfec136e8 use EMS_TXMODE_OFF 2025-12-26 09:33:59 +01:00
proddy
36271a2c24 add comments 2025-12-26 09:33:50 +01:00
proddy
bbe1f133dc add EMS_TXMODE_INIT and EMS_TXMODE_NONE 2025-12-26 09:33:17 +01:00
proddy
d7b0614556 add comment 2025-12-26 09:32:57 +01:00
proddy
7e9f27a613 tidy up comments 2025-12-26 09:32:46 +01:00
proddy
3bdc97d4d5 rollback changes to get_metrics_prometheus() 2025-12-24 17:56:07 +01:00
proddy
8a7511a941 default no sleep is true in standalone 2025-12-24 17:55:27 +01:00
proddy
a9511e6a29 implements #2848 2025-12-24 16:59:18 +01:00
Proddy
ac37ead419 Merge branch 'emsesp:dev' into dev 2025-12-24 13:25:26 +01:00
proddy
39fcda59da update 3.7.3->3.8.0 2025-12-24 13:24:48 +01:00
Proddy
9c44e104bb Merge pull request #2847 from VlastiBroucek/dev
Added some missing Czech translations
2025-12-24 13:18:34 +01:00
proddy
18f8db7942 text changes 2025-12-24 13:06:28 +01:00
proddy
71281bc82d rename to stored version, use same infoDialog 2025-12-24 12:54:08 +01:00
proddy
0557def0b6 add install date to firmware versions 2025-12-24 11:18:22 +01:00
proddy
1a3f7fbbee don't run pio as default 2025-12-24 11:17:55 +01:00
Vlasti Broucek
7bed8bf84e Added some missing Czech translations 2025-12-24 12:22:11 +11:00
proddy
790371a9e2 minor optimizations 2025-12-23 23:28:10 +01:00
proddy
537cf19e97 only show previous if in developer mode and there are something to show 2025-12-23 23:28:02 +01:00
proddy
35ad43b7b3 package update 2025-12-23 23:27:22 +01:00
proddy
3d70e8c1e6 clear_snapshot_gpios 2025-12-23 19:32:25 +01:00
proddy
7bb30d37ce rollback to other partitions - #2837 2025-12-23 18:08:50 +01:00
proddy
0267f00b48 package update 2025-12-23 18:08:05 +01:00
Proddy
5a7cec91c5 Merge branch 'emsesp:dev' into dev 2025-12-23 08:25:22 +01:00
Proddy
642bf63abc Merge pull request #2842 from misa1515/patch-27
Update locale_translations.h
2025-12-23 08:25:11 +01:00
misa1515
6f3197f482 Update locale_translations.h 2025-12-22 23:03:16 +01:00
proddy
5c88968879 reset data and remove Apply button when error 2025-12-22 17:43:11 +01:00
proddy
c4a43183b3 GPIOs not checked when board profile is adjusted
#2841
2025-12-22 17:18:37 +01:00
Proddy
94b583d7f3 Merge branch 'emsesp:dev' into dev 2025-12-22 15:46:23 +01:00
Proddy
37012e55e3 Merge pull request #2839 from MichaelDvP/dev
add back uom and factor inputs for some analogsensor types
2025-12-22 15:45:40 +01:00
proddy
ea4d613d12 updates to add_ha_classes 2025-12-22 15:41:14 +01:00
proddy
0e6108b5a9 3.7.3-dev.40 2025-12-22 15:40:27 +01:00
MichaelDvP
fdbaf7509f add back uom and factor inputs for some analogsensor types 2025-12-22 15:13:54 +01:00
Proddy
74182031ae Merge pull request #2838 from proddy/dev
formatting and EMS bus logging
2025-12-22 11:28:59 +01:00
proddy
6c80a34578 don't output Rx errors in log if no bus connected 2025-12-22 09:07:04 +01:00
proddy
09f1c13d28 formatting 2025-12-22 09:06:27 +01:00
proddy
5668fe13ae package update 2025-12-22 08:57:29 +01:00
proddy
78a02b6d85 run unit tests 2025-12-22 08:57:22 +01:00
proddy
ccab932e8d dont long rx garbage if ems bus not connected 2025-12-21 22:30:03 +01:00
proddy
eaea1f383b formatting 2025-12-21 22:29:28 +01:00
Proddy
de8309de4a Merge pull request #2836 from MichaelDvP/dev
force publish single on connect
2025-12-21 14:45:49 +01:00
MichaelDvP
bc3269037f chore: update generated files for v3.7.3-dev.39 2025-12-21 11:05:49 +00:00
MichaelDvP
31131427b8 fix RC120RF check 2025-12-21 11:53:39 +01:00
MichaelDvP
9957bff62b check Mqtt::enabled 2025-12-21 11:17:31 +01:00
MichaelDvP
f1841347a7 set lastresponse also if not connected 2025-12-19 18:50:51 +01:00
MichaelDvP
1b8b72c443 publish mqtt emsesp on-change messages on connect 2025-12-19 17:14:50 +01:00
MichaelDvP
b4affbff6d Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-12-19 16:53:36 +01:00
Proddy
c8b4a38bb6 Merge pull request #2829 from proddy/dev
HA fixes part 3
2025-12-19 16:36:17 +01:00
proddy
eec373e2ae publish ha only if ha is enabled 2025-12-19 16:35:55 +01:00
proddy
48b261317d 3.7.3-dev.39 2025-12-19 16:35:40 +01:00
proddy
e6beb01075 package update 2025-12-19 16:35:29 +01:00
proddy
ecc6e9286a tidy up add_ha_dev_section 2025-12-19 08:55:33 +01:00
proddy
179351cb6b add back force, fix for non-HA 2025-12-19 08:54:59 +01:00
proddy
778fe43012 package update 2025-12-19 08:54:30 +01:00
Proddy
d84d52df4b Merge pull request #2827 from proddy/dev
fix HA custom entities
2025-12-18 21:53:22 +01:00
proddy
11d4109915 package update 2025-12-18 21:40:53 +01:00
proddy
0eddbac150 remove force in HA MQTT 2025-12-18 21:40:41 +01:00
proddy
99afeb221a changes to HA 2025-12-18 21:40:08 +01:00
proddy
39d18b78a1 formatting 2025-12-18 21:39:43 +01:00
MichaelDvP
4ebe8cc0cc dallas dev_cla 2025-12-18 17:17:00 +01:00
MichaelDvP
6dabfb7fe2 analogsensor: add_ha_classes 2025-12-18 13:31:10 +01:00
MichaelDvP
611b1d9aca add RC120RF as remote 2025-12-18 13:30:41 +01:00
Proddy
2821f8e750 Merge pull request #2824 from MichaelDvP/dev
some more fixes
2025-12-18 11:23:37 +01:00
MichaelDvP
1cccd8dc2c Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-12-18 09:18:03 +01:00
Proddy
4d13982594 Merge pull request #2823 from proddy/dev
fix HA sensors not been added to HA device
2025-12-18 08:43:57 +01:00
MichaelDvP
10c63640c0 Merge branch 'dev' of https://github.com/proddy/EMS-ESP32 into dev 2025-12-18 07:20:50 +01:00
proddy
14ad1239db don't need to add name to ids each time for HA 2025-12-18 06:45:48 +01:00
proddy
2a16cb6e64 3.7.3-dev.38 2025-12-18 06:45:25 +01:00
proddy
89fa5947bd fix standalone 2025-12-17 22:10:17 +01:00
proddy
a81e56e3bf package update 2025-12-17 22:10:05 +01:00
proddy
90ad2dde54 minor optimization 2025-12-17 22:09:55 +01:00
proddy
9c243cbe8d sort types 2025-12-17 22:09:32 +01:00
proddy
c1b444541f fix HA 2025-12-17 22:09:17 +01:00
MichaelDvP
8527b16e9d dev 38 2025-12-17 18:14:09 +01:00
MichaelDvP
a728420010 small fix 2025-12-17 18:13:35 +01:00
MichaelDvP
378d9e8634 Merge branch 'dev' of https://github.com/proddy/EMS-ESP32 into dev 2025-12-17 18:11:53 +01:00
MichaelDvP
1973081529 ha_dev_section for custom and scheduler 2025-12-17 18:11:43 +01:00
MichaelDvP
45ae6d802c use (const char *) for PSRAM-stored sensor.name in ArduinoJson 2025-12-17 16:42:38 +01:00
MichaelDvP
c4297e2996 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-12-17 12:34:54 +01:00
proddy
310afe3ab8 fix HA sensor referencing 2025-12-17 11:37:46 +01:00
MichaelDvP
3215f36530 fix typo in analogsensor:remove_ha_topic 2025-12-17 11:36:50 +01:00
proddy
55621e12d9 package update - fixes vite-tsconfig-paths 2025-12-17 11:26:57 +01:00
Proddy
458dc516f4 Merge pull request #2822 from proddy/dev
fix HA shower sensor
2025-12-16 23:15:53 +01:00
Proddy
f2ae84bd22 Merge branch 'emsesp:dev' into dev 2025-12-16 23:15:20 +01:00
proddy
f093df1cb9 fix build for windows 2025-12-16 23:14:48 +01:00
proddy
05f15f7876 package update 2025-12-16 23:14:36 +01:00
proddy
12f4a74094 fix mqtt base for shower 2025-12-16 23:14:02 +01:00
Proddy
15d895fd0a Merge pull request #2821 from MichaelDvP/dev
mqtt publish on change: wait for queue empty
2025-12-16 22:35:30 +01:00
MichaelDvP
1890948924 mqtt-queue check also for publish-on-change analog/temperature 2025-12-16 11:36:58 +01:00
MichaelDvP
fec246127f Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-12-16 08:27:45 +01:00
MichaelDvP
ecab30d4ac do not flood mqtt queue if publish on change is set 2025-12-16 08:27:21 +01:00
Proddy
f8cc688241 Merge pull request #2820 from proddy/dev
fix HA modes
2025-12-15 21:13:11 +01:00
proddy
f51b3528d5 ESPAsyncWebServer @ 3.9.3 2025-12-15 21:12:20 +01:00
proddy
42c94a1017 formatting 2025-12-15 21:12:09 +01:00
proddy
acccb56f07 add comment 2025-12-15 20:47:07 +01:00
proddy
3a2d3ac985 fix mixed up logic with HA modes 2025-12-15 19:34:48 +01:00
proddy
0ab18e6e08 package update 2025-12-15 19:34:36 +01:00
proddy
44db5991e7 package update 2025-12-15 19:34:22 +01:00
Proddy
15a6c50326 Merge pull request #2819 from MichaelDvP/dev
dev37, fix mqtt booleans, add SRC climate icon
2025-12-15 19:29:21 +01:00
MichaelDvP
911aa40ca1 fix mqtt bool output for analog, scheduler 2025-12-15 16:48:33 +01:00
MichaelDvP
2b679daabc dev 37, add SRC thermostat icons to climate 2025-12-15 11:56:54 +01:00
MichaelDvP
71b956e613 fix analog mqtt 2025-12-15 10:58:32 +01:00
Proddy
79089a93bc Merge pull request #2817 from proddy/dev
SRC for HA climate, "show gpio" command
2025-12-14 21:11:54 +01:00
proddy
da3ac1794e add telnet command show gpio 2025-12-14 21:10:45 +01:00
proddy
bc870b2aa2 add HA climate control with cool for SRC thermostat controls 2025-12-14 21:10:29 +01:00
Proddy
6bc40ce2e1 Merge pull request #2815 from proddy/dev
package update
2025-12-14 12:44:48 +01:00
Proddy
84544979fa Merge branch 'emsesp:dev' into dev 2025-12-14 12:44:23 +01:00
proddy
2446e4d1fd package update 2025-12-14 12:44:04 +01:00
Proddy
4a15b39945 Merge pull request #2814 from MichaelDvP/dev
remove unused parameter
2025-12-14 12:12:19 +01:00
MichaelDvP
df080bbad9 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-12-14 11:32:46 +01:00
Proddy
8632af8820 Merge pull request #2813 from proddy/dev
fix HA modes (#2812)
2025-12-14 11:07:58 +01:00
Proddy
27047c0f39 Merge branch 'emsesp:dev' into dev 2025-12-14 11:07:33 +01:00
proddy
95de3e339d fix HA modes 2025-12-14 11:07:16 +01:00
MichaelDvP
99f44aece5 remove unused parameter 2025-12-14 09:23:28 +01:00
MichaelDvP
4e589aecbf Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-12-14 09:20:58 +01:00
Proddy
ab013554bd Merge pull request #2805 from gr3enk/dev
Fix system/metrics endpoint duplicate labels & add enum support for metrics
2025-12-13 19:28:56 +01:00
Jakob
5c966e291b chore: avoid dangling references while processing json objects recursively 2025-12-13 15:50:04 +01:00
MichaelDvP
068744b681 config check 2025-12-13 15:01:14 +01:00
Jakob
8c794baa7b Merge branch 'dev' into dev 2025-12-13 14:34:05 +01:00
Proddy
f6a23723f8 Merge pull request #2811 from proddy/dev
minor HA improvements
2025-12-13 11:38:06 +01:00
proddy
4b3cc2e3ec update 2025-12-13 11:30:43 +01:00
proddy
4ee743d309 fix standalone 2025-12-13 11:29:01 +01:00
proddy
d3b4bab40a dynamically add HA thermostat modes based on model 2025-12-13 11:22:22 +01:00
proddy
c71b54fb5b auto-formatting 2025-12-13 11:21:57 +01:00
proddy
ecbdf01bdf add HA dev section linking all devices to ems-esp 2025-12-13 11:21:45 +01:00
proddy
c2e8a6c73d added get_ip_or_hostname() 2025-12-13 11:20:48 +01:00
proddy
29037d19fb auto-formatting 2025-12-13 11:20:24 +01:00
proddy
67d242d210 package update 2025-12-13 11:19:52 +01:00
proddy
91a67def99 minor fix 2025-12-13 11:19:45 +01:00
MichaelDvP
c8ab89ef37 fix pl translation 2025-12-13 10:52:58 +01:00
proddy
17a9b7eb0a send HA modes based on actual thermostat modes 2025-12-12 21:58:35 +01:00
proddy
cdb592d744 package update 2025-12-12 21:58:15 +01:00
proddy
af19941a07 https://github.com/emsesp/EMS-ESP32/discussions/2761 2025-12-12 21:58:06 +01:00
Jakob
00dce83096 Merge branch 'dev' of https://github.com/gr3enk/EMS-ESP32 into dev 2025-12-12 17:57:13 +01:00
Jakob
597e60d6f1 chore: filter out entities with no values 2025-12-12 17:53:50 +01:00
Jakob
4e4311cac0 Merge branch 'dev' into dev 2025-12-12 14:42:59 +01:00
Jakob
c11402195f chore: reserve string capacity for prometheus metrics 2025-12-12 14:08:47 +01:00
Proddy
31ec15811f Merge pull request #2806 from MichaelDvP/dev
small fixes,update changelog
2025-12-12 11:53:04 +01:00
MichaelDvP
739ac7b42e update changelog 2025-12-12 11:02:47 +01:00
MichaelDvP
ad3049ab0a smal fixes 2025-12-12 10:47:06 +01:00
MichaelDvP
d96c3f3ed7 removelast topic/payload 2025-12-12 10:46:26 +01:00
Jakob
dcfd0d5b11 test: add unit tests for metrics enum outputs 2025-12-12 10:06:02 +01:00
Jakob
b05712cf83 fix: check for duplicate labels 2025-12-12 10:04:51 +01:00
Jakob
df15485d7c feat: add enum support for metrics endpoint 2025-12-12 10:03:52 +01:00
Proddy
bb15fcdc46 Merge pull request #2804 from proddy/dev
various minor fixes to dev-35
2025-12-12 00:03:08 +01:00
proddy
e34291fbd5 replace VLAs with standard C++ 2025-12-12 00:00:49 +01:00
proddy
55b8c2d04c fix standalone/make, fix HA avty, fix deprecated arduinojson, update packages 2025-12-11 23:52:44 +01:00
Proddy
8bd1cd03b4 Merge pull request #2793 from MichaelDvP/dev
PSram memory
2025-12-11 22:09:41 +01:00
MichaelDvP
bafb7c35fb Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-12-11 16:26:16 +01:00
MichaelDvP
9425558ff7 Merge branch 'dev' of https://github.com/MichaelDvP/EMS-ESP32 into dev 2025-12-11 16:22:18 +01:00
MichaelDvP
f20aad3813 add Phy RTL8201 2025-12-11 16:10:41 +01:00
MichaelDvP
7a683d3637 more to psram, names for sensors, schedule, custom as char[20] 2025-12-11 16:00:24 +01:00
MichaelDvP
ac982cbb15 fix #2800 2025-12-09 21:11:36 +01:00
Proddy
9889b1b5c4 Merge pull request #2796 from gr3enk/dev
Adding api/system/metrics endpoint for Prometheus integration
2025-12-08 18:49:42 +01:00
MichaelDvP
7cb647e5f1 chore: update generated files for v3.7.3-dev.35 2025-12-08 15:09:51 +00:00
MichaelDvP
515b75160c stub to remove #ifndef EMSESP_STANDALONE 2025-12-08 12:42:11 +01:00
MichaelDvP
a365dc7519 remove syslog debug level 2025-12-07 18:25:12 +01:00
MichaelDvP
764520714b fix syslog quality calculation 2025-12-07 18:24:41 +01:00
MichaelDvP
43e087ae91 allow uart0 pin for eth (check eth first) #2794 2025-12-07 13:02:25 +01:00
Jakob
bffccc585a test: add tests for /api/system/metrics endpoint 2025-12-07 11:32:37 +01:00
Jakob
a01f10b042 feat: add /api/system/metrics endpoint 2025-12-07 11:31:55 +01:00
MichaelDvP
26a5f98aae testdata 2025-12-06 14:30:45 +01:00
MichaelDvP
67280546af weblog queue complete in psram, save weblog settings in one call 2025-12-06 14:06:15 +01:00
Proddy
64058b0f61 Merge pull request #2792 from proddy/dev
small updates
2025-12-04 20:32:21 +01:00
proddy
d7b5c81b0e package update 2025-12-04 20:29:20 +01:00
MichaelDvP
1d03056784 move some vectors to psram, fix syslog start/stop 2025-12-04 19:57:01 +01:00
MichaelDvP
dd0ab8f962 Merge branch 'dev' of https://github.com/proddy/EMS-ESP32 into dev 2025-12-04 09:22:47 +01:00
proddy
02e8dba971 fix max size to 32MB 2025-12-03 22:16:39 +01:00
proddy
59878fb190 remove vscode settings and package.json 2025-12-03 22:11:44 +01:00
proddy
9ff0f83af9 remove obsolete double auto-commit 2025-12-03 22:06:06 +01:00
proddy
e6f825371e fix make for Windows 2025-12-03 22:05:45 +01:00
proddy
45f3f23033 package update 2025-12-03 21:53:33 +01:00
proddy
ffd27db208 show elapsed time 2025-12-03 21:53:26 +01:00
proddy
a452d6131b DiffTemp ranged to 4-15 K - fix #2783 2025-12-03 21:53:16 +01:00
MichaelDvP
0bc478f9d3 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-12-02 21:08:49 +01:00
Proddy
03ef981765 Merge pull request #2788 from proddy/dev
fix mem issue
2025-12-02 19:42:05 +01:00
proddy
9ca9f25fd3 rollback modbus hash map - fix #2752 2025-12-02 19:41:17 +01:00
proddy
41122dddb2 dev-34 2025-12-02 19:40:45 +01:00
proddy
1e0c94d007 package update 2025-12-02 19:40:38 +01:00
proddy
3e42a7fb4c package update 2025-12-01 19:56:59 +01:00
proddy
a8fcc1fb44 show mem 2025-12-01 19:56:53 +01:00
proddy
e43416019d package update 2025-12-01 17:40:53 +01:00
Proddy
9f467ecec1 Merge pull request #2782 from proddy/dev
MQTT base fixes
2025-11-30 23:28:16 +01:00
proddy
273d87dbf1 use ~ as MQTT base 2025-11-30 23:27:28 +01:00
proddy
befd21f8cb fixe #2780 2025-11-30 23:27:18 +01:00
MichaelDvP
882e3bc1cd Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-11-30 21:25:07 +01:00
Proddy
15e05c4abc Merge pull request #2778 from proddy/dev
update to show heap
2025-11-30 20:51:42 +01:00
proddy
748a2f5fcf update to show heap 2025-11-30 20:51:17 +01:00
Proddy
37ba42faf8 Merge pull request #2775 from proddy/dev
loop tests
2025-11-30 17:24:56 +01:00
proddy
19e343e517 loop tests 2025-11-30 17:23:58 +01:00
Proddy
8f39129bf8 Merge pull request #2773 from proddy/dev
a collection of changes
2025-11-30 15:43:18 +01:00
proddy
9c3521caf2 add target native-test-create 2025-11-30 15:39:36 +01:00
proddy
40fc0fd2f9 anti-rollback! 2025-11-30 15:39:13 +01:00
proddy
ff8566498f typo 2025-11-30 15:15:03 +01:00
proddy
dd06882860 auto-formatting 2025-11-30 14:05:50 +01:00
proddy
fb2294c945 added Prometheus metrics 2025-11-30 14:05:02 +01:00
proddy
26ea8320ce rollback for #2752 2025-11-30 14:04:45 +01:00
proddy
0f4963d91e formatting 2025-11-30 14:04:14 +01:00
proddy
91020abc90 formatting 2025-11-30 14:04:05 +01:00
Proddy
64906f3ea0 Merge branch 'emsesp:dev' into dev 2025-11-30 13:54:26 +01:00
Proddy
28f85b4c5a Merge pull request #2774 from gr3enk/dev
Adding api/metrics endpoint for Prometheus integration
2025-11-30 13:51:47 +01:00
Jakob
b44a0d6813 test: add tests for api/metrics endpoint 2025-11-30 10:37:34 +01:00
Jakob
8af7cde2d6 feat: add api/metrics endpoint 2025-11-30 10:35:19 +01:00
proddy
3fcd656bb6 package update with new alova 2025-11-30 10:22:20 +01:00
proddy
76c827257e mqtt heartbeat, no need to check if connected 2025-11-30 10:22:08 +01:00
proddy
8ca9f7ee30 change ip 2025-11-29 15:36:24 +01:00
proddy
da7a06646a rollback AsyncWS fix #2752 2025-11-29 15:35:57 +01:00
proddy
0a36f1df7a updated 2025-11-29 15:14:33 +01:00
proddy
80e5d30781 dev-33 2025-11-29 15:14:26 +01:00
proddy
9c4beba3b1 add LWT to HA discovery config topic 2025-11-29 15:12:07 +01:00
proddy
0cf932f57e comment change 2025-11-29 14:49:08 +01:00
proddy
5cb9f3b014 init board profile correctly 2025-11-29 14:48:57 +01:00
proddy
3eb581142a default keep alive 60 seconds 2025-11-29 14:48:42 +01:00
proddy
d6c460e7fd ESP32Async/ESPAsyncWebServer @ 3.9.2 2025-11-29 14:48:24 +01:00
proddy
a2baa50530 show users reports error if not admin 2025-11-29 14:48:13 +01:00
proddy
6569b8c038 enable TLS for test data 2025-11-29 14:47:42 +01:00
proddy
48b4bf02a3 wider box for TLS 2025-11-29 14:47:35 +01:00
proddy
693054a92a package update 2025-11-29 14:47:27 +01:00
MichaelDvP
1472e53410 update asyncwebserver 3.9.1 2025-11-28 09:09:12 +01:00
MichaelDvP
5ed4970d62 change uart pins without restart 2025-11-28 09:08:53 +01:00
MichaelDvP
056cf3cbd6 settingservice gpio initialization for custom boards 2025-11-26 18:17:40 +01:00
MichaelDvP
2bcd548747 add counter 0..2 for short pulses, high frequency, #2758 2025-11-26 18:14:58 +01:00
MichaelDvP
9edcf47073 tx read, wait 2 sec brfore 3rd. retry 2025-11-26 18:12:24 +01:00
MichaelDvP
084d90e714 solar heat assistance, rounding custom entities #2763 2025-11-26 18:11:48 +01:00
Proddy
a738cc36dd Merge pull request #2762 from proddy/dev
gpio update
2025-11-26 17:03:09 +01:00
proddy
9b6f9aeda3 dev-32 2025-11-26 16:52:54 +01:00
proddy
8ea8c1821d Merge branch 'dev' of https://github.com/proddy/EMS-ESP32 into dev 2025-11-26 14:00:08 +01:00
proddy
53a1a8826e update 2025-11-26 14:00:06 +01:00
proddy
237551d9f6 remove eth power gpio if set 2025-11-26 14:00:02 +01:00
proddy
f7c7bc65f2 keep loop even if there is gpio errors 2025-11-26 13:59:46 +01:00
proddy
badbd9c6fe show system status in status page 2025-11-26 13:59:34 +01:00
proddy
cc7ac5b911 package update 2025-11-26 13:59:08 +01:00
proddy
5957300c4e change (c) date to 2025 2025-11-24 23:27:01 +01:00
proddy
2e343ce0c3 optimize modbus 2025-11-24 23:25:53 +01:00
proddy
3113a4be2b remove old todos 2025-11-24 23:25:43 +01:00
proddy
7d9cb2932f update tests 2025-11-24 23:17:37 +01:00
proddy
026c2caea0 fix when manually setting board type 2025-11-24 23:17:27 +01:00
proddy
eb058b688d lint warnings 2025-11-24 22:37:51 +01:00
proddy
2a7a0ce3f6 formatting 2025-11-24 22:37:41 +01:00
proddy
a330110eef update 2025-11-24 22:37:30 +01:00
proddy
feed534be5 package update 2025-11-24 22:37:23 +01:00
proddy
2375633bca don't show confusing release type checkboxes 2025-11-24 22:35:07 +01:00
proddy
7018139289 update version data 2025-11-24 22:34:34 +01:00
proddy
5f67934f26 updated 2025-11-24 22:12:46 +01:00
proddy
574cc8ad33 error message text change 2025-11-24 22:12:41 +01:00
proddy
658c613c4e init data with 0, no difference really 2025-11-24 22:12:24 +01:00
proddy
c2ce54c2a7 adjust gpio for ESP32 boards 2025-11-24 16:58:06 +01:00
proddy
58da0d9778 update 2025-11-24 16:57:55 +01:00
proddy
8b90036c11 fixed uart0 for esp chips 2025-11-24 16:44:13 +01:00
proddy
65678ea739 package update 2025-11-24 16:44:03 +01:00
Proddy
34ddc9b7ff Merge pull request #2750 from proddy/dev
adjustments to invalid sensors
2025-11-23 20:35:46 +01:00
proddy
97f9914d33 grey out entities with no value 2025-11-23 20:32:25 +01:00
proddy
8b64851f6f renaming 2025-11-23 20:07:36 +01:00
proddy
c00f50238e add/remove analog gpio from list - fixes #2758 2025-11-23 20:07:22 +01:00
proddy
25ea57e02f don't allow gpio 1 and 3, as will conflict with Serial/UART0 2025-11-23 20:06:50 +01:00
proddy
a951afe205 rename valid_gpio_list to available_gpios 2025-11-23 20:06:26 +01:00
proddy
44c7954ce7 package update 2025-11-23 20:05:17 +01:00
proddy
ef315b6dde consistent borders and removed some comments 2025-11-23 16:55:46 +01:00
proddy
935a9dcbb7 fix remove_gpio 2025-11-23 16:55:25 +01:00
proddy
2bda432d70 show in log if we're autodetecting board 2025-11-23 16:54:56 +01:00
proddy
d567ea3cf0 adjusted remove pin 2025-11-23 16:34:06 +01:00
proddy
7b5e386595 update tests 2025-11-23 14:54:31 +01:00
proddy
1c65a7caba fix count of temp sensors - #2756 2025-11-23 14:46:57 +01:00
proddy
12ebacf1a7 typo 2025-11-23 14:13:29 +01:00
proddy
f2c176111f allow some strapping pins (Michael's fix) 2025-11-23 13:19:09 +01:00
proddy
cc242e5eba get rid of scrollbar 2025-11-23 13:12:59 +01:00
proddy
4888808ad0 skip if CUSTOM 2025-11-23 13:05:06 +01:00
proddy
cd1b5e1d57 skip if CUSTOM 2025-11-23 13:04:54 +01:00
proddy
9661c9a0eb typo 2025-11-23 13:04:31 +01:00
proddy
f6ccf6da44 formatting 2025-11-23 13:04:10 +01:00
proddy
b691488240 fix standalone 2025-11-22 23:05:58 +01:00
proddy
eb71996e6a align signon username/password boxes 2025-11-22 22:58:17 +01:00
proddy
b9566ae1d6 changed debug text 2025-11-22 22:57:59 +01:00
proddy
8016fc4287 gpio checking 2025-11-22 22:38:46 +01:00
proddy
c95b43ea69 remove emsesp namespace 2025-11-22 22:38:20 +01:00
proddy
d767a503cd remove log out of loop if we find a gpio error 2025-11-22 22:37:12 +01:00
proddy
221131f9d3 restart after setting board profile in console 2025-11-22 22:36:43 +01:00
proddy
f307cccabb don't check gpio 2025-11-22 22:36:15 +01:00
proddy
2f21d0d94c remove emsesp namespace 2025-11-22 22:34:28 +01:00
proddy
132d1292ce remove emsesp namespace 2025-11-22 22:34:14 +01:00
proddy
df9a10cb53 remove esmesp:: 2025-11-22 22:33:31 +01:00
proddy
95d564901b formatting 2025-11-22 22:33:17 +01:00
proddy
6424d9b1c0 package update 2025-11-22 22:33:06 +01:00
proddy
38a3d20acf prevent double calling api 2025-11-22 22:32:49 +01:00
proddy
89b117bbc2 formatting 2025-11-22 22:32:39 +01:00
proddy
eeba7a3a6b fix 2025-11-20 23:03:06 +01:00
proddy
23a660aabb updated gpio test logic 2025-11-20 22:58:26 +01:00
proddy
c9bddba446 fix standalone 2025-11-20 15:21:38 +01:00
proddy
3a508a3ec4 fixes #2752 2025-11-20 14:58:54 +01:00
proddy
6bf33f6447 update test API 2025-11-20 14:57:57 +01:00
proddy
a02054ceb6 new test for #2752 2025-11-20 14:35:58 +01:00
proddy
8422521975 formatting of error message box to align buttons 2025-11-20 14:25:25 +01:00
proddy
fbfacc5ed5 3.7.3-dev.31 2025-11-20 14:24:57 +01:00
proddy
b9d96620a4 show restart needed after changing board profile. also no need to restart sensors. 2025-11-20 14:24:40 +01:00
proddy
8c61735579 package update 2025-11-20 14:12:04 +01:00
proddy
56e8ccdfc4 remove gpio checks, as they are performed in supporting functions 2025-11-18 21:38:19 +01:00
proddy
5454e7dd16 warning message formatting so its same as Dashboard 2025-11-18 21:37:55 +01:00
proddy
901a27140c only dallas and led use GPIO 0 for disabled 2025-11-18 20:41:30 +01:00
proddy
37db2b9504 add comment 2025-11-18 20:40:07 +01:00
proddy
5e7768f912 package update 2025-11-18 20:39:51 +01:00
proddy
80dd16740d some fixes on https://github.com/emsesp/EMS-ESP32/pull/2750 2025-11-17 23:00:45 +01:00
proddy
24421a0224 package update 2025-11-17 17:50:43 +01:00
proddy
26d26cf088 formatting 2025-11-17 17:50:34 +01:00
proddy
615c5e8439 addition 2025-11-17 17:49:37 +01:00
proddy
090387ef37 replace disabled sensor gpio (99) with code logic 2025-11-17 17:49:30 +01:00
Proddy
25ea7d8b0c Merge pull request #2749 from proddy/dev
updated doc
2025-11-17 14:36:08 +01:00
proddy
68f067f2c4 added MQTT Refresh button 2025-11-17 14:35:32 +01:00
proddy
e20fa5ab39 package update 2025-11-17 14:35:21 +01:00
proddy
bee307a91d formatting 2025-11-17 14:35:14 +01:00
Proddy
f85226ce55 Merge pull request #2748 from MichaelDvP/dev
fix gpio check
2025-11-17 14:32:17 +01:00
MichaelDvP
f112e6f6cc exclude disabled sensors from dashboard 2025-11-17 13:57:30 +01:00
MichaelDvP
5df82b7e2c Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-11-17 13:29:20 +01:00
MichaelDvP
ea75a34c82 fix gpio check 2025-11-17 13:28:00 +01:00
Proddy
07d0de0151 Merge pull request #2747 from proddy/dev
MQTT reset button & label color for TextFields when disabled
2025-11-17 12:27:11 +01:00
proddy
0a75dd7e3c new action resetMQTT, called from MQTT Settings page 2025-11-17 12:26:14 +01:00
proddy
88afd3f453 use ValidatedTextField 2025-11-17 12:25:52 +01:00
proddy
9669a044ba comment out log msg 2025-11-17 12:25:20 +01:00
proddy
e31ebab12b grey out label if disabled (for system sensors) 2025-11-17 12:24:58 +01:00
proddy
e68a3a0d3a update 2025-11-17 12:23:30 +01:00
Proddy
4ae09c8766 Merge pull request #2746 from MichaelDvP/dev
validate board gpios in system
2025-11-17 09:35:03 +01:00
MichaelDvP
a693e96248 validate board gpios in system 2025-11-16 20:41:45 +01:00
Proddy
60b0de79b3 Merge pull request #2744 from proddy/dev
webUI gpio improvements
2025-11-15 23:01:50 +01:00
proddy
86277396f7 fix 2025-11-15 22:05:35 +01:00
proddy
0b65d55601 update test data 2025-11-15 22:05:29 +01:00
proddy
23782ec773 show gpio for system sensors 2025-11-15 20:45:33 +01:00
proddy
0b33497842 update sensor names 2025-11-15 20:45:18 +01:00
proddy
6cd4bcd41c update 2025-11-15 20:22:52 +01:00
proddy
8d8db3ba85 update test data 2025-11-15 20:22:47 +01:00
proddy
d9c2066035 update gpios https://github.com/emsesp/EMS-ESP32/pull/2744 2025-11-15 20:22:37 +01:00
proddy
af5cbf045d update 2025-11-15 16:36:55 +01:00
proddy
99d67cdd42 auto-formatting 2025-11-15 16:36:13 +01:00
proddy
a74910ddf6 remove header for AsyncWS 3.9.0 2025-11-15 16:36:02 +01:00
proddy
d9678d04dd Merge branch 'dev' of https://github.com/proddy/EMS-ESP32 into dev 2025-11-15 16:27:40 +01:00
proddy
c7acf89d84 standardizing is_valid_gpio 2025-11-15 16:27:39 +01:00
Proddy
24f1fe13cc Merge branch 'emsesp:dev' into dev 2025-11-15 16:26:53 +01:00
Proddy
11fcd8bcfe Merge pull request #2745 from MichaelDvP/dev
process_telegram in single loop, update AsyncWebServer, dev30
2025-11-15 16:26:23 +01:00
proddy
bcde5bad63 build_webUI command does it all 2025-11-15 14:21:50 +01:00
proddy
d2a8fbaf1e formatting 2025-11-15 14:21:35 +01:00
proddy
f9d2b18959 package update 2025-11-15 14:21:28 +01:00
proddy
bdba2ae6e4 add clang's .cache folder 2025-11-15 14:21:16 +01:00
proddy
f068ed97f1 determine list of valid gpios in backend code 2025-11-15 14:20:43 +01:00
MichaelDvP
7ab2e782ac process_telegram in single loop, update AsyncWebServer, dev30 2025-11-15 12:49:30 +01:00
Proddy
88a7d12306 Merge pull request #2743 from MichaelDvP/dev
fix #2726
2025-11-14 21:47:03 +01:00
MichaelDvP
dffe8b2648 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-11-14 18:46:20 +01:00
MichaelDvP
daa98b106e update pkg 2025-11-14 18:43:11 +01:00
MichaelDvP
83796341c5 fix #2726 2025-11-14 17:46:13 +01:00
Proddy
ea24cd8a0f Merge pull request #2741 from proddy/dev
factor rendering in webUI
2025-11-13 21:09:24 +01:00
proddy
0e7ff32d02 package update 2025-11-13 21:08:28 +01:00
proddy
31706bfc21 https://github.com/emsesp/EMS-ESP32/discussions/2728#discussioncomment-14957216 2025-11-13 21:08:20 +01:00
Proddy
993e2fdc22 Merge pull request #2739 from proddy/dev
update tests
2025-11-12 21:28:13 +01:00
proddy
0d05cf489b update tests 2025-11-12 21:27:44 +01:00
Proddy
0961b814d5 Merge pull request #2738 from proddy/dev
updates
2025-11-12 21:25:22 +01:00
proddy
999c407f12 update 2025-11-12 21:24:52 +01:00
proddy
7c137d71ca update 2025-11-12 21:24:48 +01:00
Proddy
ad26768d6d Merge pull request #2737 from MichaelDvP/dev
fixes and changes for #2732, #2733, #2735
2025-11-12 21:15:12 +01:00
Proddy
5ed7d60ae8 Merge branch 'dev' into dev 2025-11-12 21:14:57 +01:00
Proddy
a67379fcb2 Merge pull request #2734 from proddy/dev
minor updates
2025-11-12 21:11:34 +01:00
proddy
cccae3fbcc fixes #2728 2025-11-12 21:10:24 +01:00
proddy
10d85c6547 formatting 2025-11-12 19:07:22 +01:00
MichaelDvP
21af1adefe chore: update generated files 2025-11-12 17:30:35 +00:00
MichaelDvP
fe02258a00 dev 28, changelog 2025-11-12 18:19:11 +01:00
MichaelDvP
3d8ec8e295 wwprio to mixer, boiler 2025-11-12 16:32:46 +01:00
MichaelDvP
d5b496aa67 add pid characteristic #2735 2025-11-12 16:32:17 +01:00
MichaelDvP
8458cfc468 alanogsensor pulse,add mqtt/HA output #2732 2025-11-12 13:38:26 +01:00
MichaelDvP
f10d2ef48d allow syslog mark intervall up to 1 hour #2733 2025-11-12 13:36:24 +01:00
proddy
2ee433bb89 ui small changes 2025-11-12 09:59:50 +01:00
proddy
237cf91f5a package update 2025-11-12 09:59:38 +01:00
proddy
8db7e4a5b9 updated 2025-11-11 22:07:42 +01:00
proddy
a3703514b1 package update 2025-11-11 21:43:11 +01:00
proddy
db8ed34dc4 update dictionary 2025-11-11 21:43:05 +01:00
proddy
21b89cf84d default test data is all 2025-11-11 21:41:18 +01:00
proddy
fc0f29337b Syslog: allow longer intervals than 10 sec for "Mark interval" #2733 2025-11-11 21:41:03 +01:00
Proddy
84b9e6ae18 Merge pull request #2730 from mattreim/dev
Update German translation
2025-11-11 21:31:35 +01:00
mattreim
cbabaa7d91 Update German translation 2025-11-10 23:13:49 +01:00
Proddy
4cfe704242 Merge pull request #2729 from proddy/dev
web UI improvements and more fixes for system sensors
2025-11-10 22:38:04 +01:00
proddy
25cae61cc1 updated tests 2025-11-10 22:37:12 +01:00
proddy
d96b3e6d05 updated 2025-11-10 22:37:03 +01:00
Proddy
1f261476d5 Merge branch 'emsesp:dev' into dev 2025-11-10 22:31:07 +01:00
Proddy
3171fc7375 Merge pull request #2727 from MichaelDvP/dev
pumpmode enum for HT3 boilers #2721, add commands manual defrost, chimneysweeper
2025-11-10 22:30:52 +01:00
proddy
ba843c1589 changed HA entity_format text so its clearer 2025-11-10 22:27:11 +01:00
proddy
f7f01ea875 fix factory log message 2025-11-10 22:09:35 +01:00
proddy
8ea1dfc7d2 dev-27 2025-11-10 22:09:25 +01:00
proddy
9616a113b0 fixes to #2725 2025-11-10 21:50:47 +01:00
proddy
4aaf6e95cf update tests 2025-11-10 21:35:35 +01:00
proddy
edfdfb1016 fix standalone 2025-11-10 21:27:50 +01:00
proddy
3067149357 remove all from customizations only removes the entities, not the sensors ('as' and 'ts') 2025-11-10 21:25:20 +01:00
proddy
d5548c8bdc fix count for analog sensors 2025-11-10 21:24:41 +01:00
proddy
cf66dc99b4 tidy count_entities() 2025-11-10 21:24:03 +01:00
proddy
891619fa26 move factory log down so it gets displayed in log 2025-11-10 21:23:35 +01:00
proddy
1f6462be38 rename reset to "remove all", move top of screen and fix messages when auto-restarting 2025-11-10 21:22:24 +01:00
proddy
e74dc1fd78 new translations 2025-11-10 21:20:37 +01:00
proddy
f59768ce17 added new route for userprofile 2025-11-10 21:20:22 +01:00
proddy
22d015615d fixed jumpy buttons, moved user profile to its own component 2025-11-10 21:20:10 +01:00
proddy
0ef0ca8518 package update 2025-11-10 21:19:43 +01:00
proddy
1917c5d7cb package update 2025-11-10 21:19:31 +01:00
proddy
ff0fe593d3 show "no data" if there is no data and move help tooltip 2025-11-10 21:19:20 +01:00
proddy
12e8d64ec2 is_system fixes 2025-11-10 11:28:49 +01:00
MichaelDvP
c0c13eb687 chore: update generated files 2025-11-10 09:05:42 +00:00
MichaelDvP
91b78f9a23 pumpmode enum for HT3 boilers #2721, add commands manual defrost, chimneysweeper 2025-11-10 09:54:33 +01:00
Proddy
32474d10ce Merge pull request #2724 from proddy/dev
fixes to system sensors
2025-11-09 15:00:34 +01:00
proddy
7c3de25c20 update unit tests 2025-11-09 14:58:27 +01:00
proddy
f75b7b1a59 add is_system to analog and temperature sensors, highlight in Sensors page, remove from Dashboard, change button icon to be consistent when updating 2025-11-09 14:56:50 +01:00
Proddy
a3e01b8a3b Merge pull request #2717 from proddy/dev
fix some bugs, add some text
2025-11-09 09:39:25 +01:00
proddy
6c9a9b8632 updated for dev-26 2025-11-09 09:35:48 +01:00
proddy
3fba75868f increase size of factor textfield 2025-11-09 08:29:26 +01:00
proddy
8dee390d75 update test 2025-11-08 16:42:47 +01:00
proddy
dc838639b2 add is_system to analog sensor so internal sensors cannot be removed 2025-11-08 16:30:40 +01:00
proddy
3fd05c8eb7 fix lint error 2025-11-08 16:28:26 +01:00
proddy
5f0df140b0 factory reset show system monitor 2025-11-08 16:28:04 +01:00
proddy
b98cbd3ec5 add mock sensor data 2025-11-08 16:27:25 +01:00
proddy
18d67d088e update 2025-11-08 15:27:16 +01:00
proddy
0bf60394fe dev-26 2025-11-08 15:27:10 +01:00
proddy
cec5ffd547 package update 2025-11-08 15:27:03 +01:00
proddy
026ea4450e error is color red 2025-11-08 15:26:54 +01:00
proddy
9a1dd5bb98 update standalone and test output 2025-11-08 12:47:00 +01:00
proddy
fbc42fbb15 double press resets wifi to AP (https://github.com/emsesp/EMS-ESP32/discussions/2720) 2025-11-08 12:41:25 +01:00
proddy
5613cde00f update defaults 2025-11-08 12:27:08 +01:00
proddy
d65d6f49cd fix FS format, move AP* from Network system info to own node 2025-11-08 11:30:40 +01:00
proddy
c9bc18cf4b fix, attempt #3 2025-11-06 18:29:39 +01:00
Proddy
9179127bce Merge branch 'emsesp:dev' into dev 2025-11-06 14:48:08 +01:00
Proddy
16b6bef393 Merge pull request #2719 from misa1515/patch-26
Update locale_translations.h
2025-11-06 14:47:49 +01:00
misa1515
52159ac596 Update locale_translations.h 2025-11-06 13:46:47 +01:00
proddy
0dc3fd43e9 remove comment, rollback changes 2025-11-06 12:57:13 +01:00
proddy
b0d490036f fix bug, only find dest 2025-11-06 12:56:58 +01:00
proddy
c28b098c65 show ntp in info 2025-11-06 12:56:42 +01:00
proddy
4a6ccce09a add ntp for completeness and testing 2025-11-06 12:56:20 +01:00
proddy
5053ad08dd add comment 2025-11-06 12:56:00 +01:00
proddy
72b4809ed8 update tests 2025-11-06 12:55:49 +01:00
proddy
6799fe5189 rename Initialising to Booting 2025-11-06 12:55:40 +01:00
proddy
12635ff4a5 optimizations and show # entities and languages 2025-11-05 22:29:15 +01:00
proddy
5908fd9d9c show language count 2025-11-05 20:50:29 +01:00
proddy
5c07a2c0cc remove specific commands like ntp/enabled (ap/enabled didn't work) and replace with just service name 2025-11-05 16:54:08 +01:00
proddy
f5048abae7 formatting 2025-11-05 16:53:25 +01:00
Proddy
76acffdb2e Merge pull request #2715 from MichaelDvP/dev
add SRC climate humidity #2714
2025-11-05 15:03:01 +01:00
MichaelDvP
1ac96aa02e add SRC climate humidity #2714 2025-11-05 14:50:32 +01:00
Proddy
3386ac7f8a Merge pull request #2701 from proddy/dev
web optimizations
2025-11-05 14:06:26 +01:00
proddy
1e4c157c28 package update 2025-11-05 14:04:50 +01:00
proddy
a1c5297eef add aria-label to buttons and text fields with no label #2710 2025-11-05 14:02:00 +01:00
proddy
cda04bef26 don't print out file names in bundle 2025-11-05 09:12:36 +01:00
proddy
1edf60b617 formatting 2025-11-05 09:01:35 +01:00
proddy
32cf4dd6c9 3.7.3-dev.25 2025-11-05 09:01:29 +01:00
proddy
f0caeb089d package update 2025-11-05 08:58:04 +01:00
proddy
23f1e7569c formatting 2025-11-05 08:57:56 +01:00
proddy
5087fdb5d6 prevent flicker when refreshing 2025-11-04 18:17:35 +01:00
proddy
b654a42229 package update 2025-11-04 18:06:09 +01:00
proddy
d312c8e592 update 2025-11-04 18:06:04 +01:00
proddy
319787bae3 switch our dialog with box 2025-11-04 18:05:57 +01:00
proddy
d124b04a2c tidy up error page 2025-11-04 18:05:41 +01:00
proddy
4ef8a3a163 package update 2025-11-04 01:00:46 +01:00
proddy
41b5cdddf2 smaller window 2025-11-04 01:00:39 +01:00
proddy
e10453b2fd don't show border 2025-11-04 01:00:27 +01:00
proddy
d2f665ab70 fix name 2025-11-04 01:00:17 +01:00
proddy
4083478b65 smaller font 2025-11-04 01:00:08 +01:00
proddy
01136a19a5 make wait uint16_t to allow max 2000 2025-11-03 18:18:08 +01:00
proddy
0b2df96461 add message test 2025-11-03 18:15:29 +01:00
Proddy
f66c3ff322 Merge branch 'dev' into dev 2025-11-03 18:02:43 +01:00
proddy
5d8fe89e5a python optimizations 2025-11-03 18:01:09 +01:00
Proddy
22eb5436ab Merge pull request #2709 from MichaelDvP/dev
some smaller fixes
2025-11-03 17:59:53 +01:00
proddy
17bdd87576 optimized window size detection 2025-11-03 17:51:51 +01:00
proddy
8f7c0a1d97 all values 2025-11-03 17:51:04 +01:00
proddy
3b453b18bc add section for all values 2025-11-03 17:50:53 +01:00
proddy
a1fc5bf54b fix lint warning 2025-11-03 17:50:43 +01:00
proddy
0cb413a579 package update 2025-11-03 17:50:30 +01:00
MichaelDvP
d326d345f4 chore: update generated files 2025-11-03 10:53:17 +00:00
MichaelDvP
1de647e8a5 tcp stack 6k, move message shuntingYard to scheduler 2025-11-03 11:37:24 +01:00
MichaelDvP
c562b88b32 update pkg 2025-11-03 11:36:28 +01:00
proddy
f2e38330ea fix window positioning 2025-11-02 19:46:11 +01:00
MichaelDvP
f2dca2a90a dev24, fix syslog timestamp #2704 2025-11-02 17:45:14 +01:00
proddy
9f1cd04d45 auto-formatting 2025-11-02 13:01:03 +01:00
proddy
fe67f3a982 fix syslog, remove filter 2025-11-02 13:00:55 +01:00
proddy
2fd6e9ebf5 package update 2025-11-02 13:00:45 +01:00
Proddy
0f1195de82 Merge pull request #2705 from auenkind/devcontainer
Add devcontainer config
2025-11-02 10:29:37 +01:00
David Neu
267042f74f add devcontainer config 2025-11-02 08:25:18 +00:00
MichaelDvP
ea9783dbfc use ems/ems+ telegrams for forceheatingoff, add fanspd #2702 2025-11-01 19:23:13 +01:00
proddy
67655c4b06 package updates 2025-11-01 16:12:09 +01:00
Proddy
2970aa5ba3 Merge branch 'dev' into dev 2025-11-01 16:10:21 +01:00
proddy
99a3ffcf17 optimizations, use md5 for hash 2025-11-01 16:04:47 +01:00
MichaelDvP
9bc5bde3c2 fix maxflowtemp for convectors, coolingon as bit, nrg with decimals 2025-11-01 13:27:09 +01:00
proddy
0edb844225 remove pnpm build 2025-10-31 18:41:37 +01:00
proddy
e3feb8f11e webUI target also builds 2025-10-31 18:41:27 +01:00
proddy
6b7534b7fb optimizations 2025-10-31 18:38:38 +01:00
proddy
ca1506de8b add custom error page 2025-10-31 18:36:18 +01:00
proddy
1cb535dea3 optimized for speed 2025-10-31 18:35:01 +01:00
proddy
5d32b6d383 package update 2025-10-31 18:34:39 +01:00
Proddy
c203b8e6d2 Merge pull request #2697 from MichaelDvP/dev
solar ts8, ts16, set selflowtemp: write to ems+ and ems telegrams
2025-10-30 07:54:40 +01:00
proddy
e6dbe020c1 package update 2025-10-29 12:40:28 +01:00
proddy
63cf1603b0 modules menuitem resized 2025-10-29 12:40:21 +01:00
MichaelDvP
c184a0af10 Merge branch 'dev' of https://github.com/MichaelDvP/EMS-ESP32 into dev 2025-10-29 10:48:32 +01:00
MichaelDvP
8a4e6d5ed5 fix selflowtemp, #2641 2025-10-29 10:46:46 +01:00
proddy
aadb67fa79 speed up mock logging 2025-10-28 22:19:43 +01:00
proddy
4949471518 package update 2025-10-28 22:19:43 +01:00
proddy
9504723ef2 add back security 2025-10-28 22:19:43 +01:00
proddy
3abfb7bb9c optimizations 2025-10-28 22:19:43 +01:00
MichaelDvP
3ef6bf8681 chore: update generated files 2025-10-28 16:04:27 +00:00
MichaelDvP
1647a10b1b add solar TS16, TS8, #2690 2025-10-28 16:52:39 +01:00
Proddy
55b893362c Merge pull request #2696 from MichaelDvP/dev
remove cpu temperature for esp32
2025-10-27 19:36:06 +01:00
MichaelDvP
48f1928327 remove cpu temperature for esp32 2025-10-27 17:30:43 +01:00
Proddy
dc793f145d Merge pull request #2694 from MichaelDvP/dev
fix dashboard write #2693
2025-10-27 17:07:05 +01:00
MichaelDvP
77e0b7d89c fix dashboard write #2693 2025-10-27 11:08:04 +01:00
MichaelDvP
cec19860bc Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-10-27 11:04:28 +01:00
Proddy
898acb90d0 Merge pull request #2688 from proddy/dev
dont run if no C++ src files changed
2025-10-26 12:14:07 +01:00
proddy
a074ac732d dont run if no C++ src files changed 2025-10-26 12:12:37 +01:00
Proddy
c71526b95c Merge pull request #2687 from proddy/dev
ui design cleanup
2025-10-26 12:03:25 +01:00
proddy
f035e31dcf cosmetic improvements 2025-10-26 11:59:19 +01:00
proddy
35192b9dde optimized 2025-10-26 08:51:47 +01:00
Proddy
b5ac637231 Merge pull request #2685 from proddy/dev
small changes to make web tables prettier and consistent
2025-10-25 17:12:42 +02:00
proddy
4e0ef8b0e3 remove bold on select 2025-10-25 17:10:58 +02:00
proddy
c32ee4dfb5 consistent design between dashboard and device tables 2025-10-25 16:59:20 +02:00
proddy
accfeab6fa prettier menu items 2025-10-25 16:59:04 +02:00
proddy
d98f3cc8c5 python cleanup 2025-10-25 16:03:13 +02:00
proddy
342f238983 3.7.3-dev.23 2025-10-25 16:03:02 +02:00
proddy
73f8ea0fc5 lower case some texts 2025-10-25 16:02:50 +02:00
proddy
f2bd1ff575 added assumeChangesOnlyAffectDirectDependencies 2025-10-25 15:23:05 +02:00
proddy
b3ec23d6bd more optimizations, see if it makes a difference 2025-10-25 15:22:51 +02:00
proddy
1fc7fa4720 cache what we can 2025-10-25 15:22:29 +02:00
proddy
58ae058465 use memo and callbacks for reduced rendering vis caching 2025-10-25 15:21:59 +02:00
proddy
7ece395d1b smaller table for dialog 2025-10-25 14:49:14 +02:00
proddy
4bb876031e text change 2025-10-25 14:16:12 +02:00
proddy
e4f129db04 don't compile code when target is build_webUI 2025-10-25 14:15:03 +02:00
proddy
90038e08dc force a build for WebUI 2025-10-25 14:14:42 +02:00
proddy
4c30e930cf add building section 2025-10-25 14:14:25 +02:00
proddy
dd69e02f6b add memo cache, smaller toaster windows 2025-10-25 11:44:08 +02:00
MichaelDvP
f2ccf1953d Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-10-25 11:35:50 +02:00
proddy
0e133840c9 package update 2025-10-25 11:11:51 +02:00
proddy
e12b277472 typo 2025-10-25 11:11:38 +02:00
Proddy
dc7b1809c1 Merge pull request #2682 from emsesp/alert-autofix-40
Potential fix for code scanning alert no. 40: Workflow does not contain permissions
2025-10-25 11:01:00 +02:00
Proddy
8c2146ff55 Merge pull request #2683 from emsesp/alert-autofix-41
Potential fix for code scanning alert no. 41: Workflow does not contain permissions
2025-10-25 11:00:44 +02:00
Proddy
882d412409 Potential fix for code scanning alert no. 41: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-10-25 10:46:57 +02:00
Proddy
3f88a9469c Potential fix for code scanning alert no. 40: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-10-25 10:46:08 +02:00
Proddy
3ac7d43a81 Merge pull request #2681 from proddy/dev
CI/CD fixes
2025-10-25 10:38:43 +02:00
proddy
d12446b6d9 range fix 2025-10-25 10:36:55 +02:00
MichaelDvP
865fb3a967 typo 2025-10-25 10:31:45 +02:00
proddy
48538222b2 chore: update generated files 2025-10-25 08:30:43 +00:00
proddy
8d44f61517 auto-generated (will be overwritten) 2025-10-25 09:53:43 +02:00
proddy
0e4f6f4209 optimized scripts 2025-10-25 09:53:25 +02:00
proddy
a2823563bf rename post py file 2025-10-25 09:53:08 +02:00
proddy
353cdb324d run unit test on PR 2025-10-25 09:52:44 +02:00
proddy
216f799db1 update checkout 2025-10-25 09:52:35 +02:00
proddy
4d6f080263 modified the comments 2025-10-25 09:52:23 +02:00
MichaelDvP
b9d124618c chore: update generated files 2025-10-25 06:58:56 +00:00
MichaelDvP
ab5d9e8d36 add tags to modbus doc generate 2025-10-25 08:47:10 +02:00
Proddy
4cdeecd952 Merge pull request #2679 from MichaelDvP/dev
bosch texts to utf8, add entities #2669
2025-10-24 21:06:29 +02:00
MichaelDvP
59b3933cb6 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-10-24 18:15:35 +02:00
Proddy
179ddcb348 Merge pull request #2678 from proddy/dev
fix native/standalone
2025-10-24 18:15:03 +02:00
proddy
efa2c8fc4b rename native to standalone 2025-10-24 18:06:52 +02:00
proddy
c958c7d61a fix native 2025-10-24 18:05:12 +02:00
Proddy
35fca9c450 Merge pull request #2677 from proddy/dev
updates to version
2025-10-24 16:28:03 +02:00
proddy
61962fbc07 only build web with target -t build 2025-10-24 16:25:28 +02:00
proddy
39e724befe don't build web on each target 2025-10-24 16:25:15 +02:00
proddy
43bb77b095 optimizations using caching 2025-10-24 16:24:55 +02:00
proddy
28e1e46586 always build web first 2025-10-24 15:35:54 +02:00
proddy
2f5b879652 handle buildweb condition when its part of a pio chain 2025-10-24 15:33:50 +02:00
proddy
16930fe8ca add back for reference 2025-10-24 15:32:35 +02:00
proddy
1db1b6e524 package update 2025-10-24 15:31:57 +02:00
proddy
43eba7a010 show dialog with version information 2025-10-24 15:31:49 +02:00
MichaelDvP
49278bdea4 fix warning 2025-10-24 12:52:25 +02:00
MichaelDvP
2405e11af2 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-10-24 09:45:10 +02:00
MichaelDvP
23b6894484 dev.22 update changelog 2025-10-24 09:44:22 +02:00
proddy
a837c9398c updated 2025-10-24 09:40:41 +02:00
Proddy
ea484e15f9 Merge pull request #2676 from proddy/dev
remove
2025-10-23 23:18:34 +02:00
proddy
cce99a8b1d remove 2025-10-23 23:18:09 +02:00
Proddy
f29faafd78 Merge pull request #2675 from emsesp/alert-autofix-38
Potential fix for code scanning alert no. 38: Workflow does not contain permissions
2025-10-23 22:43:33 +02:00
Proddy
c3eafbcd85 Potential fix for code scanning alert no. 38: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-10-23 22:40:23 +02:00
Proddy
65e18ab4e2 Merge pull request #2674 from proddy/dev
use pio to update CSV files
2025-10-23 22:38:42 +02:00
proddy
8bb16ed3a7 update workflows to use new pio builds 2025-10-23 22:35:57 +02:00
proddy
e685284f72 chore: update generated files 2025-10-23 19:43:00 +00:00
proddy
86d2805642 package update (again) 2025-10-23 21:20:03 +02:00
proddy
29b98a15a4 revert test changes 2025-10-23 21:12:47 +02:00
proddy
ba9df92b12 chore: update generated files 2025-10-23 19:05:12 +00:00
proddy
0eac1c9bf9 force a test 2025-10-23 20:52:31 +02:00
proddy
515feb9f9e test auto-commit 2025-10-23 18:43:00 +02:00
proddy
0b84b79e1d Update workflow configurations and build scripts
- Modified GitHub workflow files for dev, stable, and test releases
- Updated platformio.ini and pio_local.ini_example configurations
- Enhanced build_interface.py script functionality
2025-10-23 18:37:14 +02:00
MichaelDvP
8fd129f4fe create src circuit for entity-list/modbus 2025-10-23 18:08:02 +02:00
proddy
ba334930fe replace auto-gen of XLS doc files and Modbus with python 2025-10-23 17:16:32 +02:00
proddy
982d64ddca remove tx/rx limits for standalone 2025-10-23 17:16:04 +02:00
proddy
3577300361 package update 2025-10-23 17:15:43 +02:00
proddy
0478e0ff7c auto-generated 2025-10-23 17:15:34 +02:00
proddy
c2cfd0a1b0 updated 2025-10-23 17:15:25 +02:00
MichaelDvP
637ba30df1 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-10-23 13:32:39 +02:00
MichaelDvP
fa8421b297 special char for servicecode 2025-10-23 13:31:42 +02:00
MichaelDvP
61c23a57d9 larger buffer for print handlers 2025-10-23 13:31:26 +02:00
Proddy
43f61fd2df Merge pull request #2672 from proddy/dev
rollback \n in console tests
2025-10-23 07:22:14 +02:00
proddy
85eed64fe9 rollback \n in console tests 2025-10-23 07:20:40 +02:00
Proddy
43634a4312 Merge pull request #2671 from proddy/dev
small fixes
2025-10-23 07:18:15 +02:00
proddy
9757db4438 fix, remove exit 2025-10-23 07:17:43 +02:00
proddy
17a2ba7f1a package update 2025-10-23 07:17:30 +02:00
proddy
03c7417888 auto-gen 2025-10-23 07:17:22 +02:00
Proddy
2b2c86ba5a Merge pull request #2665 from proddy/dev
optimize WebUI and finally remove lint warnings
2025-10-22 22:37:47 +02:00
proddy
2b2217e8ce updated 2025-10-22 22:24:37 +02:00
proddy
08d3e8bab6 package update 2025-10-22 22:24:31 +02:00
Proddy
ded3552873 Merge branch 'dev' into dev 2025-10-22 22:17:08 +02:00
proddy
9a7893e99f package update 2025-10-22 18:34:15 +02:00
proddy
307ef4e285 fix lint warnings 2025-10-22 18:34:00 +02:00
MichaelDvP
99b43b0379 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-10-22 17:45:40 +02:00
MichaelDvP
6fb8fbba18 convert latin1 chars to utf8 2025-10-22 17:24:20 +02:00
MichaelDvP
09c750e622 update pkg 2025-10-22 17:22:37 +02:00
proddy
f75deb3505 fix missing notification after save 2025-10-22 15:37:04 +02:00
proddy
6281f9cfe1 package update 2025-10-22 15:36:52 +02:00
MichaelDvP
b4f174f2f4 add entities from #2669 2025-10-22 12:54:38 +02:00
proddy
70810b5e71 formatting 2025-10-20 22:27:13 +02:00
proddy
82cc91cb63 fix lint warnings 2025-10-20 22:24:56 +02:00
proddy
48a3fc5656 fix broken fork URL 2025-10-20 22:24:48 +02:00
proddy
9d20eef12d fix warnings, correctly show abort text when cancelling 2025-10-20 22:20:30 +02:00
proddy
d59e183415 update eslint 2025-10-20 22:20:09 +02:00
proddy
50396a5def package update 2025-10-20 22:19:58 +02:00
proddy
ab92d07716 add REINSTALL 2025-10-20 22:19:49 +02:00
proddy
9172dd9181 embed css 2025-10-20 22:19:33 +02:00
proddy
0852502f52 show re-install firmware button 2025-10-20 22:19:19 +02:00
proddy
c3d066650c fix lint warnings 2025-10-20 22:19:05 +02:00
proddy
172e8d0028 fix msgpack 2025-10-20 22:18:55 +02:00
proddy
812c6ac475 optimized 2025-10-20 22:18:43 +02:00
Proddy
f7c1f0b0d0 Merge pull request #2666 from MichaelDvP/dev
some small fixes
2025-10-20 17:49:41 +02:00
MichaelDvP
125190a0ac formatting 2025-10-20 15:54:44 +02:00
MichaelDvP
35c7349e5c update test expected results 2025-10-20 12:07:49 +02:00
MichaelDvP
d7e916269d add missing modbus tags 2025-10-20 11:13:36 +02:00
MichaelDvP
f5f78182b6 fix display setting FW200 2025-10-20 11:12:58 +02:00
proddy
87bcd4598a 3.7.3-dev.21 2025-10-19 16:25:12 +02:00
proddy
21a814b5ec fix lint warnings 2025-10-19 16:24:52 +02:00
proddy
687d9a40c9 add lazy loading for components 2025-10-19 16:24:37 +02:00
proddy
9d01791fcb add useCallbacks for caching and speed 2025-10-19 16:24:17 +02:00
proddy
028afbe85d optimized 2025-10-19 16:23:53 +02:00
proddy
4bdea56d78 use Memo for caching 2025-10-19 16:23:34 +02:00
proddy
bf0737aab8 optimized 2025-10-19 16:23:09 +02:00
proddy
42d879a87b move catch-all path to end 2025-10-19 16:22:53 +02:00
proddy
79b5671533 remove aggressive compression 2025-10-19 16:22:21 +02:00
proddy
f48d67d9e7 optimize code for speed and size 2025-10-19 16:21:52 +02:00
proddy
16f7a454db use vector instead of dequeue for memory optimization 2025-10-19 16:10:15 +02:00
proddy
02b486ea80 updated dictionary 2025-10-19 16:09:56 +02:00
proddy
61d50e2c79 optimizations 2025-10-18 17:17:41 +02:00
proddy
a5af36e15b use 3.7.3 as latest version 2025-10-18 17:17:17 +02:00
proddy
e11ba9e657 formatting 2025-10-18 17:17:04 +02:00
proddy
878f0702b2 typo 2025-10-18 17:16:53 +02:00
proddy
fa711373f2 replace 9 with DeviceValueTAG::TAG_DHW1 2025-10-18 17:16:43 +02:00
proddy
e9a4a33942 auto-generated 2025-10-18 17:16:19 +02:00
proddy
f445f36eb1 extend CharToUpper for all languages 2025-10-18 17:16:10 +02:00
proddy
148124ef04 typo 2025-10-18 17:15:50 +02:00
proddy
27fbafbe62 add missing controller/datetime 2025-10-18 17:15:26 +02:00
proddy
a949673539 update packages 2025-10-18 17:15:07 +02:00
proddy
32193e3c62 optimizations 2025-10-18 17:14:53 +02:00
proddy
5f79f0848f auto-generated 2025-10-18 17:14:33 +02:00
proddy
4d91128aed update dictionary 2025-10-18 17:14:23 +02:00
MichaelDvP
6f1d507df9 SRC modes: off, manual auto 2025-10-18 09:08:05 +02:00
MichaelDvP
9b50306172 set ecodifftemp min to 4 degree 2025-10-18 09:07:10 +02:00
MichaelDvP
0fbc8e2420 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-10-17 11:14:30 +02:00
MichaelDvP
f0d162554b SRC plus: allow only ascii names, pkg update 2025-10-17 10:55:37 +02:00
MichaelDvP
d92361a8bb fix use after free 2025-10-17 10:41:32 +02:00
MichaelDvP
13bf2c44e7 publish connect device 2025-10-16 20:59:56 +02:00
Proddy
cd155ba680 Merge pull request #2660 from MichaelDvP/dev
add dhw modetype #2659, complete SRC plus entities
2025-10-16 16:07:47 +02:00
MichaelDvP
2a565dc677 fix standalone 2025-10-15 20:17:44 +02:00
MichaelDvP
9bf57c3e22 dev20, remove obj_id again 2025-10-15 15:09:22 +02:00
MichaelDvP
766281d8d2 add dhw modetype #2659 2025-10-15 14:32:44 +02:00
MichaelDvP
bd128072c0 fix childlock setting 2025-10-15 10:49:46 +02:00
MichaelDvP
88e4ba7ecf update pkg 2025-10-15 09:03:45 +02:00
MichaelDvP
96e5251050 typo 2025-10-15 07:58:14 +02:00
MichaelDvP
187b163ffd add testdata, use selRoomTemp for climate 2025-10-14 18:56:19 +02:00
MichaelDvP
9d04058984 add back obj_id for HA test 2025-10-14 08:30:52 +02:00
MichaelDvP
12b06aa657 fix mqtt climatefor SRC 2025-10-13 21:46:22 +02:00
MichaelDvP
47b3e4bf00 fix srcx/seltemp 2025-10-13 19:58:25 +02:00
MichaelDvP
f0f40bbcac fix src commands, icon 2025-10-13 08:46:22 +02:00
MichaelDvP
036e2917a5 SRC plus: mqtt subscribe, modbus 2025-10-12 11:35:24 +02:00
MichaelDvP
d294c418c1 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-10-11 10:12:20 +02:00
Proddy
40da7572cd Merge pull request #2656 from proddy/dev
fix NL translation - https://github.com/emsesp/EMS-ESP32/pull/2655
2025-10-11 07:44:42 +02:00
proddy
532dc66282 fix NL translation - https://github.com/emsesp/EMS-ESP32/pull/2655 2025-10-11 07:43:46 +02:00
MichaelDvP
8913f38fd0 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-10-10 19:25:18 +02:00
MichaelDvP
11782eef8b SRC #2636, add childlock, icons, fix long names 2025-10-09 13:25:09 +02:00
Proddy
b5f4eb6c62 Merge pull request #2652 from proddy/dev
fix HA obj_id/default_entity_id fix
2025-10-08 21:42:48 +02:00
proddy
ee4f58ce20 HA obj_id/default_entity_id fix - #2640 2025-10-08 21:38:56 +02:00
proddy
0fe0ee77b3 package update 2025-10-08 21:38:26 +02:00
Proddy
74e58aaa3d Merge pull request #2651 from MichaelDvP/dev
add SRC tags,no remote for Junkers_old
2025-10-08 16:49:18 +02:00
MichaelDvP
d39d6c7f1f Junkers old does not support remote thermostats 2025-10-08 12:03:21 +02:00
MichaelDvP
4043eaf271 add tag for SRC plus SingleRoomControllers 2025-10-08 12:02:55 +02:00
Proddy
73ac60a8b2 Merge pull request #2650 from proddy/dev
auto-update
2025-10-08 09:11:21 +02:00
proddy
1d6b283033 auto-gen files 2025-10-08 09:10:27 +02:00
proddy
08ca4e44e8 auto-update 2025-10-08 09:10:18 +02:00
Proddy
255c173469 Merge pull request #2647 from MichaelDvP/dev
fixes and additions, see description
2025-10-07 17:38:33 +02:00
MichaelDvP
aeee318cca skip frequ-measurement in standalone build 2025-10-07 12:38:19 +02:00
MichaelDvP
eb14e89c35 fix writing calIntTemp for remote thermostats #2646 2025-10-07 10:36:48 +02:00
MichaelDvP
8411ea6773 fix forceheatingoff ems+ 2025-10-07 09:35:53 +02:00
MichaelDvP
015110a72e changelog, dev19 2025-10-07 09:00:27 +02:00
MichaelDvP
dae345f359 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-10-07 08:15:07 +02:00
MichaelDvP
4cfd9b699c fix misuse of forceheatingoff 2025-10-07 07:23:27 +02:00
Proddy
bd6371fd9d Merge pull request #2630 from proddy/dev
API changes
2025-10-06 23:23:54 +02:00
proddy
7507596869 update tests 2025-10-06 22:17:38 +02:00
proddy
5d99bd923b remove comment 2025-10-06 22:17:32 +02:00
proddy
7402776248 fix string compare for value 2025-10-06 22:17:23 +02:00
proddy
8b5cc82df9 package update 2025-10-06 22:17:07 +02:00
MichaelDvP
7c5351f15f add Greenstar 2000 boiler #2645 2025-10-06 18:28:14 +02:00
MichaelDvP
b29f02e5dd remove scan deep 2025-10-06 18:22:12 +02:00
MichaelDvP
e9e7162bcd typos, update 2025-10-06 08:59:16 +02:00
proddy
b24aae9123 Merge branch 'dev' of https://github.com/proddy/EMS-ESP32 into dev 2025-10-05 21:18:29 +02:00
proddy
9dbd634322 reduce brightness of RGB LED (bbqkees request) 2025-10-05 21:18:28 +02:00
proddy
daffc94c7f add message api example 2025-10-05 20:09:43 +02:00
proddy
93de0e2f42 clear old sensors when testing standalone 2025-10-05 15:36:30 +02:00
proddy
145172b6e9 have system/message API parse logic via shuntingyard 2025-10-05 15:36:11 +02:00
proddy
c4a2f8bac8 don't check mqtt if not using 2025-10-05 15:35:34 +02:00
proddy
0c0c928efc init list 2025-10-05 15:35:17 +02:00
proddy
4d829b0b78 add nullptr check 2025-10-05 15:35:03 +02:00
proddy
01e7d9b027 add consts 2025-10-05 15:34:52 +02:00
proddy
439da1d1e9 add comment 2025-10-05 15:34:41 +02:00
proddy
ac45c17204 merge Michael's changes 2025-10-05 15:34:30 +02:00
proddy
cd24c7815b merge Michael's change 2025-10-05 15:33:55 +02:00
proddy
9665efbf38 add checks, add a const, clear old scheduler items when testing standalone 2025-10-05 15:33:37 +02:00
proddy
d8aafdbfd4 code cleaning 2025-10-05 15:33:01 +02:00
proddy
0c6aef5b60 clean up standalone tests 2025-10-05 15:32:38 +02:00
proddy
48a1bd0fe6 dev.18 2025-10-05 15:32:18 +02:00
proddy
44cfffe8a4 add 2 more tests 2025-10-05 15:32:09 +02:00
proddy
e75bf8871e update tests 2025-10-05 15:32:00 +02:00
proddy
22703f4100 bump asynctcp, increase asynctcp stack from 6 to 8KB 2025-10-05 15:31:39 +02:00
proddy
c066ab8400 update dictionary 2025-10-05 15:17:16 +02:00
proddy
4a0625e31c fix debug section for S3 2025-10-05 15:16:30 +02:00
proddy
9aaaba5bb7 package update 2025-10-05 15:16:16 +02:00
MichaelDvP
689a3a9a69 selflowtemp and forceheatingoff for ems+ telegrams (2E0 command) 2025-10-05 09:22:46 +02:00
MichaelDvP
391a312f0c add CR11 calinttemp 2025-10-05 07:45:24 +02:00
MichaelDvP
f782eac0cf rename HA dev_i, SRC: do not fetch inactive circuits, long names, HA climated 2025-10-02 11:49:53 +02:00
MichaelDvP
d88513d789 SRC thermostat test, update1 2025-09-30 08:48:56 +02:00
MichaelDvP
59d07e81d6 test SRC Plus implementation, #2636 2025-09-29 12:47:08 +02:00
MichaelDvP
419fe8ef5d dev 18, changelog 2025-09-26 08:47:48 +02:00
MichaelDvP
4cfcba18ee analogsensors pulse output #2624 and frequncy input #2631 2025-09-26 08:47:31 +02:00
MichaelDvP
b1d6ab3c96 ventilation bypass state from 0x55C, #1197 2025-09-26 08:46:11 +02:00
MichaelDvP
ae26754bc8 update pkg 2025-09-26 08:44:58 +02:00
MichaelDvP
61c3b47269 fix display partition name, remove double quotes in shuntingyard 2025-09-25 17:11:21 +02:00
proddy
50bedb2b39 some refactoring 2025-09-21 19:20:04 +02:00
proddy
13db83a6de support plain text POSTs to APIs 2025-09-21 19:19:25 +02:00
proddy
ec43a07866 add shuntingyard tests 2025-09-21 19:18:58 +02:00
proddy
fbc11b8ef8 update unit tests 2025-09-21 19:18:32 +02:00
proddy
f1c5a911f9 special checks for message command 2025-09-21 19:18:19 +02:00
proddy
76c0aa6be8 shuntingyard as a class library 2025-09-21 19:16:55 +02:00
proddy
61bf2332bb update words 2025-09-21 19:16:16 +02:00
proddy
39ca956e1f update libs 2025-09-21 19:16:05 +02:00
proddy
0683b77437 remove TODOs 2025-09-21 19:15:43 +02:00
proddy
5da2760dc6 fix sonar checks 2025-09-21 19:15:29 +02:00
proddy
3fabaf900f auto-update 2025-09-21 19:15:09 +02:00
MichaelDvP
b2a8738672 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-09-16 17:19:44 +02:00
MichaelDvP
c3b9c1ef98 revert commit 4b2468d61 to fix wifi issue with tasmota core 2025-09-16 14:52:30 +02:00
Proddy
aef6b6e92d Merge pull request #2620 from nename0/scheduler-nested-json
Nested JSON structured in Scheduler HTTP fetch
2025-09-11 13:14:37 +02:00
Proddy
dc46dac02a Merge pull request #2623 from MichaelDvP/dev
fix link, #2622
2025-09-09 15:56:40 +02:00
MichaelDvP
025c430611 fix link, #2622 2025-09-09 15:49:57 +02:00
nename0
995ab7233d Add "keys" for nested values in scheduler HTTP response 2025-09-07 11:50:38 +02:00
Proddy
1507989ca3 Merge pull request #2617 from MichaelDvP/dev 2025-09-02 17:13:27 +02:00
MichaelDvP
022e808b14 allow API post single value (with content-Type:application/json) 2025-09-02 12:12:26 +02:00
Proddy
9b604e9c78 Merge pull request #2615 from MichaelDvP/dev 2025-08-31 14:36:40 +02:00
MichaelDvP
cd3cc09386 fix board from fuse for S32S3 2025-08-30 09:54:07 +02:00
MichaelDvP
0df21a7843 do not mention fuse in board details 2025-08-29 10:45:48 +02:00
MichaelDvP
9225ad2ad9 workaround for platform 6.12 2025-08-29 09:06:32 +02:00
MichaelDvP
227b1ac59b revert to platform 6.11, GH action fails with 6.12 2025-08-28 10:53:19 +02:00
MichaelDvP
a9a6e32dd1 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-08-28 10:43:09 +02:00
MichaelDvP
3c4278029f BBQKees board settings/fuse, remove esp32 cpu temperature, dev17 2025-08-28 09:40:01 +02:00
MichaelDvP
3b4e09208e CR11 mode setting, FW200 display settings 2025-08-28 09:12:55 +02:00
Proddy
e9e0688737 Merge pull request #2614 from proddy/dev
lib updates
2025-08-28 07:27:43 +02:00
proddy
7bb1b7bb91 update library and re-gen files 2025-08-28 07:23:51 +02:00
proddy
4302bc9978 added dev-15 updates 2025-08-28 07:23:42 +02:00
proddy
60d884df88 auto-format 2025-08-28 07:23:26 +02:00
proddy
177c635bc1 add c6 (experimental), upgrade AsyncWebServer 2025-08-28 07:23:11 +02:00
Proddy
9a97c28bf0 Merge pull request #2613 from MichaelDvP/dev
dev16
2025-08-24 10:22:20 +02:00
MichaelDvP
deb87cf5d7 fix standalone 2025-08-23 19:25:59 +02:00
MichaelDvP
a50227638b fix boiler wwMaxPower and ww_disinfect, dev16 2025-08-18 17:34:16 +02:00
MichaelDvP
92b1515c8a update pkg 2025-08-14 07:52:12 +02:00
MichaelDvP
0c5cf0475c Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-08-05 18:45:10 +02:00
Proddy
f26e937514 Update sonar 2025-08-04 20:48:55 +02:00
Proddy
1e4ca8b57f Merge pull request #2603 from proddy/dev
small updates
2025-08-04 17:38:28 +02:00
proddy
4d88bbd28f package update 2025-08-04 17:36:35 +02:00
proddy
0ce110df9e add back factory reset after long button press - we missed in pull/1969 2025-08-04 17:36:30 +02:00
proddy
3759fc81ba asynctcp 3.4.7 2025-08-04 17:35:46 +02:00
MichaelDvP
7965ecd856 NTC parameters for E32V2.2 P2B 2025-08-04 10:30:40 +02:00
MichaelDvP
7b0169bb68 update to eModbus 1.7.4 2025-08-04 10:16:50 +02:00
MichaelDvP
f10f3d5305 esp32: some pins have no internal pullup 2025-08-04 10:15:59 +02:00
MichaelDvP
ed9e2704b0 syslog, changing level is not a fail 2025-08-04 10:15:15 +02:00
proddy
c47dd0e523 add option for Arduino Core 3.3 2025-08-03 10:57:09 +02:00
proddy
80c75bae77 package update 2025-08-03 10:56:56 +02:00
MichaelDvP
cfa973b08b fix standalone 2025-08-02 16:07:27 +02:00
MichaelDvP
83987b71e0 MM100 flow and pressure 2025-08-02 13:08:09 +02:00
MichaelDvP
a318f34988 update packages 2025-08-02 13:04:24 +02:00
MichaelDvP
5cc1660675 update AsyncTCP 3.4.7 2025-08-02 13:03:45 +02:00
MichaelDvP
8a48da38b8 revert to fetch mixer config 2025-07-31 18:56:17 +02:00
MichaelDvP
d514e67eb8 update pkg 2025-07-31 18:55:37 +02:00
MichaelDvP
69964482f8 AsyncTCP 3.4.6, check log queue for overflow 2025-07-31 18:55:23 +02:00
MichaelDvP
2aa691212c add command system/fuse/mfg, board E32V2.2, check systemvolatage >2.6V 2025-07-28 14:16:10 +02:00
MichaelDvP
c27134f185 fix gpio for core voltage detect 2025-07-23 20:39:24 +02:00
MichaelDvP
c8033692b1 update pkg 2025-07-23 20:36:22 +02:00
MichaelDvP
c537d0ab8b add gateway E32V3, autodetect by gpio39 core voltage 2025-07-23 18:47:33 +02:00
MichaelDvP
bee703eb1f test: fetch MM100 config only once 2025-07-23 11:56:27 +02:00
MichaelDvP
5d2bd6a2af set climate action cooling 2025-07-23 11:55:11 +02:00
MichaelDvP
67f0f40a8a Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-07-14 07:33:47 +02:00
Proddy
e796fbef7a Merge pull request #2594 from proddy/dev
bump to 3.7.3-dev.14
2025-07-10 21:01:13 +02:00
proddy
da7ef04741 3.7.3-dev.14 2025-07-10 21:00:14 +02:00
proddy
ddb318dfc6 package update 2025-07-10 20:59:36 +02:00
proddy
88643dc8e3 update 2025-07-10 20:59:31 +02:00
MichaelDvP
cf3854563d Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-07-10 12:12:28 +02:00
MichaelDvP
4b2468d616 some checks 2025-07-10 12:09:17 +02:00
Proddy
4b08aba9c4 Merge pull request #2593 from proddy/dev
minor updates and ESP32Async/AsyncTCP back to v3.4.2
2025-07-08 22:08:50 +02:00
proddy
0a18add447 show ems device details in MQTT HA screen 2025-07-08 22:05:45 +02:00
proddy
ca8d23ff3a package update 2025-07-08 22:05:28 +02:00
proddy
c7e833194f ESP32Async/AsyncTCP @ 3.4.2 2025-07-08 22:05:15 +02:00
Proddy
f63f658421 Merge pull request #2588 from misa1515/patch-25
Update locale_translations.h
2025-07-01 07:34:41 +02:00
misa1515
13fcf09470 Update locale_translations.h 2025-06-30 21:51:18 +02:00
Proddy
f560cbd60c Merge pull request #2587 from proddy/dev
package updates
2025-06-30 15:46:08 +02:00
proddy
38ead7e10f update arduinojson, espressif-platform and web packages 2025-06-30 15:42:38 +02:00
proddy
326bba9b42 package update 2025-06-29 13:39:36 +02:00
proddy
d9a18bf255 auto-gen 2025-06-29 13:39:31 +02:00
MichaelDvP
6c42cbfb4b make task cores configurable in platformio.ini 2025-06-28 13:00:53 +02:00
MichaelDvP
6691c81956 test for #2585 2025-06-25 17:46:38 +02:00
MichaelDvP
2f95ef305d roll back to asyncTCP 3.4.2, add CS6800 mixer 2025-06-25 13:33:44 +02:00
proddy
7afde0ce6e auto-update 2025-06-14 09:30:54 +02:00
proddy
f3cdafe7d0 ESPAsyncWebServer 3.7.8 support 2025-06-14 09:30:47 +02:00
Proddy
4bf23e1bda Merge pull request #2582 from MichaelDvP/dev
hybrid csh5800iG and fix crashes
2025-06-13 18:53:16 +02:00
MichaelDvP
aca66457f9 fixes crashs: revert to platform 6.10.0 2025-06-13 08:52:02 +02:00
MichaelDvP
121887bdce Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-06-11 11:35:29 +02:00
MichaelDvP
32d7cf4e9c fix possible crash 2025-06-11 11:35:01 +02:00
Proddy
3f8227e95e Merge pull request #2580 from proddy/dev
MQTT HA discovery refactoring
2025-06-10 21:59:25 +02:00
proddy
10d84261da add another version test for downgrading 2025-06-10 11:19:39 +02:00
proddy
51848d8347 auto translate 2025-06-10 11:19:26 +02:00
proddy
1c0669144f update docs 2025-06-10 11:19:16 +02:00
proddy
41a2ba6e5d fixes #2579 2025-06-09 16:07:26 +02:00
proddy
b6fe9e7569 package update 2025-06-09 16:07:00 +02:00
MichaelDvP
faa2c5f1aa set CS5800iG as gas boiler and HP, #2569 2025-06-07 11:57:53 +02:00
MichaelDvP
c71034ff12 analog counter save to nvs on command and update 2025-06-07 11:57:01 +02:00
proddy
71be615bbe add HP CS5800iG #2569 2025-06-06 17:24:11 +02:00
Proddy
ce53fd1d04 Merge pull request #2575 from proddy/dev
some minor fixes and updates
2025-06-05 19:31:29 +02:00
proddy
1772876f9e 3.7.3-dev.12 2025-06-05 19:31:04 +02:00
proddy
cd5dbebea9 package update 2025-06-05 19:30:47 +02:00
proddy
6c67b78a1c package update 2025-06-05 10:46:29 +02:00
proddy
9b4deb271b update async lib 2025-06-04 08:35:59 +02:00
proddy
0e9283af5c add test for hpmode over mqtt 2025-06-04 08:35:53 +02:00
proddy
58011700fe package update 2025-06-04 08:35:39 +02:00
proddy
079a08ff7b upercase mqtt 2025-06-01 21:34:09 +02:00
proddy
b64a55e460 https://github.com/emsesp/EMS-ESP32/discussions/2550 - publish sensor when interval is set to 0(auto) 2025-06-01 18:51:02 +02:00
proddy
2b7ef5b6ba AsyncTCP @ 3.4.3 2025-06-01 17:40:15 +02:00
proddy
d62eef4eca 3.7.3-dev.12 2025-06-01 12:48:56 +02:00
proddy
0f6d6e69f5 package update 2025-06-01 12:43:27 +02:00
proddy
97f689b8a7 add comment for reference 2025-06-01 12:41:52 +02:00
proddy
be9b4a070c remove duplicate no-watch 2025-06-01 12:41:27 +02:00
proddy
bc15dd4463 lib updates 2025-06-01 12:41:10 +02:00
proddy
1613caea86 MQTT Command Topic with slashes #2571 2025-06-01 12:40:53 +02:00
proddy
4b39ab76ab MQTT Command Topic with slashes #2571 2025-06-01 12:40:42 +02:00
Proddy
d04c882590 Merge pull request #2566 from proddy/dev
pnpm mods
2025-05-25 11:08:25 +02:00
proddy
a199bf21e1 pnpm mods 2025-05-25 11:07:11 +02:00
Proddy
3ae8722ece Merge branch 'emsesp:dev' into dev 2025-05-24 10:11:39 +02:00
Proddy
6a6cef57cf Merge pull request #2565 from MichaelDvP/dev
remove optimistic option #2551
2025-05-23 17:04:11 +02:00
MichaelDvP
090491aab6 remove optimistic option #2551 2025-05-23 07:42:21 +02:00
MichaelDvP
ca81a02a8c masked enums with single mask, update seltemp in advance 2025-05-23 07:41:43 +02:00
proddy
f64188bd5d update pkg 2025-05-22 22:08:45 +02:00
Proddy
d3e0f180c5 Merge pull request #2559 from emsesp/alert-autofix-36
Potential fix for code scanning alert no. 36: Workflow does not contain permissions
2025-05-18 21:26:38 +02:00
Proddy
3f4d87a1d2 Merge pull request #2560 from emsesp/alert-autofix-35
Potential fix for code scanning alert no. 35: Workflow does not contain permissions
2025-05-18 21:26:30 +02:00
Proddy
1d89e651a4 Merge pull request #2561 from emsesp/alert-autofix-34
Potential fix for code scanning alert no. 34: Workflow does not contain permissions
2025-05-18 21:26:24 +02:00
Proddy
fad67b4ef9 Potential fix for code scanning alert no. 34: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-05-18 18:25:34 +02:00
Proddy
ce1c22ee35 Potential fix for code scanning alert no. 35: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-05-18 18:25:10 +02:00
Proddy
169b5f34ea Potential fix for code scanning alert no. 36: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-05-18 18:24:36 +02:00
Proddy
131c03714f Merge pull request #2558 from proddy/dev
replace yarn with pnpm
2025-05-18 18:02:18 +02:00
proddy
024c4a0c21 replace yarn with pnpm 2025-05-18 18:00:46 +02:00
proddy
b0d111d86f test pnpm 2025-05-18 17:36:08 +02:00
proddy
faeef9c821 remove yarn 2025-05-18 17:36:01 +02:00
proddy
60a5b28a21 pnpm 2025-05-18 16:25:22 +02:00
proddy
f4b5cf04a0 update asyncweb mention 2025-05-18 16:24:02 +02:00
proddy
d69f26acac upgrade yarn to pnpm because why not 2025-05-18 15:53:38 +02:00
Proddy
2a50701107 Merge pull request #2557 from proddy/dev
mqtt tidy up and shower active fixed for HA
2025-05-18 11:48:59 +02:00
proddy
ab099c45b8 updated 2025-05-18 11:48:13 +02:00
proddy
47f21019a0 clean-up publish retain functions 2025-05-18 11:47:22 +02:00
proddy
5c473c2b3d shower active is shown in HA on EMS-ESP boot 2025-05-18 11:47:04 +02:00
proddy
9ddc587334 add comment 2025-05-18 11:46:45 +02:00
proddy
9b0a7a4872 AsyncTCP 3.4.1 2025-05-18 11:46:28 +02:00
Proddy
97528e9df6 Merge pull request #2556 from proddy/dev
minor updates
2025-05-17 11:17:47 +02:00
proddy
b797e1e2bb eslint update 2025-05-17 11:01:27 +02:00
proddy
bb52d35c99 add comments 2025-05-17 10:24:25 +02:00
proddy
4c9026e11a fix standalone osx 2025-05-16 19:34:54 +02:00
proddy
6cd4e8a5b6 run update_all 2025-05-16 09:22:58 +02:00
Proddy
dfe037a7d3 Merge pull request #2547 from vmonkey/patch-6
Small update-Czech
2025-05-16 08:03:20 +02:00
Proddy
b87622185d Merge pull request #2554 from MichaelDvP/dev
fixes and additions
2025-05-16 08:03:03 +02:00
MichaelDvP
0318f8156d fix standalone 2025-05-12 19:10:59 +02:00
MichaelDvP
0c03fa1308 mqtt publish_time sensors instead of temperature sensors 2025-05-12 16:49:33 +02:00
MichaelDvP
2d6e02171f Typo 2025-05-12 16:47:33 +02:00
MichaelDvP
2da312bf15 optimistic only for writable values 2025-05-12 16:29:36 +02:00
MichaelDvP
52f59a7b1d fix set chargeoptimization #2543 2025-05-12 08:00:14 +02:00
MichaelDvP
6c8624298c devices entity search case-independend, #2553 2025-05-11 18:47:21 +02:00
MichaelDvP
ce2d2fb867 search entities case independend #2553 2025-05-11 15:01:34 +02:00
MichaelDvP
ba2ad4e175 typo 2025-05-11 15:00:41 +02:00
MichaelDvP
b3320c3e48 ha optimistic, cs6800 changes, custom entity hide 2025-05-10 16:14:54 +02:00
MichaelDvP
dc1094b6ba show ntp connect in log 2025-05-10 13:36:40 +02:00
MichaelDvP
bb60568d83 update pkg 2025-05-10 13:36:11 +02:00
MichaelDvP
67b5c5dd26 chargeOptimization #2543, charging pump #2544 2025-05-06 19:14:31 +02:00
MichaelDvP
6866d5b7a9 update pkg 2025-05-05 18:29:06 +02:00
Marek Tyburec
b4e9af89ee Small update-Czech
Fix Czech grammar in dashboard
2025-05-04 07:12:32 +02:00
Proddy
775ed99b22 Merge pull request #2539 from proddy/dev
add back formidable to fix build without mock-api
2025-04-25 18:29:08 +02:00
proddy
2ec13273fd update lock file 2025-04-25 18:27:12 +02:00
proddy
a846b01103 auto-generate 2025-04-25 18:27:00 +02:00
proddy
6dffb08545 add back formidable 2025-04-25 18:26:52 +02:00
Proddy
16f7cc148d Merge pull request #2538 from MichaelDvP/dev
use messagetime in WebLogService::show() #2533
2025-04-25 18:18:24 +02:00
MichaelDvP
568431ada4 use messagetime in WebLogService::show() 2025-04-25 12:16:33 +02:00
Proddy
6034c1e5eb Merge pull request #2535 from MichaelDvP/dev
show console log with ISO date/time, #2533
2025-04-25 09:18:06 +02:00
MichaelDvP
e3566feefb show console log with ISO date/time, #2533 2025-04-25 08:05:15 +02:00
MichaelDvP
ea46c79278 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-04-24 10:25:16 +02:00
MichaelDvP
a02831e04e read only first error log message 2025-04-24 10:23:54 +02:00
MichaelDvP
3b8c973f2a fix debug message in console help 2025-04-24 10:23:34 +02:00
MichaelDvP
2c65936b3e update pkg 2025-04-24 10:23:11 +02:00
Proddy
bc04c34d58 Merge pull request #2532 from proddy/dev
add tests for custom commands
2025-04-23 21:43:38 +02:00
proddy
5047f1752e add tests for custom entities 2025-04-23 21:30:02 +02:00
proddy
1fa7a6c549 package update 2025-04-23 21:29:30 +02:00
MichaelDvP
f9ebe33a7d read thermostat errorlog 0xC0 on 0xBF 2025-04-23 09:36:00 +02:00
Proddy
e719dd963d Merge pull request #2530 from proddy/dev
updated libs and fix for domoticz discovery warnings
2025-04-22 16:08:16 +02:00
proddy
c6b0099581 domoticz warnings on custom entities - https://github.com/emsesp/EMS-ESP32/discussions/2408#discussioncomment-12896868 2025-04-22 16:07:22 +02:00
proddy
71726530c0 auto-generated 2025-04-22 16:06:49 +02:00
proddy
a749ecb298 ArduinoJson 7.4.1 and updated AsyncWS libs 2025-04-22 16:06:41 +02:00
proddy
7e963529c4 package update 2025-04-22 16:06:18 +02:00
Proddy
c76409cf3f Merge pull request #2529 from MichaelDvP/dev
dev.9: fix writing auxHeaterSource #2489
2025-04-22 11:05:34 +02:00
MichaelDvP
efd0872690 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-04-22 07:23:28 +02:00
MichaelDvP
57098b578f fix writing auxHeaterSource #2489 2025-04-22 06:58:23 +02:00
Proddy
6472e9e224 run at 1:30am 2025-04-21 09:06:37 +02:00
Proddy
026828efc7 Merge pull request #2528 from MichaelDvP/dev
fix GH build
2025-04-20 21:43:38 +02:00
MichaelDvP
fe6e9be4d3 fix GH build 2025-04-20 18:12:59 +02:00
Proddy
7745a6f9a1 Merge pull request #2527 from MichaelDvP/dev 2025-04-20 17:56:56 +02:00
MichaelDvP
c523a379fe add C6 telegram, fixes #1963 2025-04-20 17:07:30 +02:00
MichaelDvP
2854e9cbe9 IPM DHW module, fixes #2524 2025-04-20 17:03:03 +02:00
Proddy
4985f104c7 Merge pull request #2526 from proddy/dev
small changes
2025-04-19 12:54:28 +02:00
proddy
a0ea5f7ea1 clean-up unused packages 2025-04-19 12:52:58 +02:00
proddy
efc35d0594 update react-table-library for React 19 2025-04-19 11:46:42 +02:00
proddy
ccd6c6f8ad workarond for missing package 2025-04-19 09:08:35 +02:00
proddy
b426e0eb45 move NTP set time to Settings page 2025-04-18 16:19:07 +02:00
proddy
c53e1de569 update translations 2025-04-18 16:18:54 +02:00
proddy
8058e98748 update packages 2025-04-18 16:18:41 +02:00
proddy
ba419d09eb add Michael's https://github.com/emsesp/EMS-ESP32/pull/2522# 2025-04-18 16:18:08 +02:00
proddy
c701247652 auto-generate 2025-04-18 16:17:35 +02:00
proddy
12754d1c07 https://github.com/emsesp/EMS-ESP32/discussions/2523 2025-04-18 16:17:21 +02:00
Proddy
9a4daba31a Merge pull request #2521 from misa1515/patch-24
Update index.ts
2025-04-16 15:06:07 +02:00
misa1515
a2aa2dccdd Update index.ts 2025-04-15 21:46:19 +02:00
Proddy
25af51a8e8 Merge pull request #2517 from proddy/dev
update packages
2025-04-12 09:10:13 +02:00
proddy
ddc597ff03 update packages 2025-04-12 09:09:52 +02:00
Proddy
75310afd63 Merge pull request #2515 from MichaelDvP/dev
FB100 controls hc1, fixes #2510
2025-04-12 09:06:04 +02:00
MichaelDvP
3095323c93 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-04-10 12:57:40 +02:00
Proddy
4667718f12 Merge pull request #2513 from proddy/dev
arduinojson 7.4 and package update
2025-04-10 08:18:00 +02:00
proddy
2cb1c5d7e7 arduinojson 7.4 and package update 2025-04-10 08:16:33 +02:00
MichaelDvP
d7b9754ddb do not create hc on empty message 2025-04-09 17:38:58 +02:00
MichaelDvP
99b769626e check dv.hasValue for commands 2025-04-09 13:30:40 +02:00
MichaelDvP
70035b059c comment out HA config of shower timestamp 2025-04-08 17:59:01 +02:00
MichaelDvP
b252c2f95a FB100 controls hc1, fixes #2510 2025-04-08 17:53:06 +02:00
Proddy
baa4f2eb39 Merge pull request #2508 from proddy/dev
fixes #2507 - download based on tasmota builds
2025-04-05 10:56:03 +02:00
proddy
c7b970b5b0 auto-generated 2025-04-05 10:55:01 +02:00
proddy
3ed5b65191 fixes #2507 2025-04-05 10:54:55 +02:00
Proddy
6e01c00d46 Merge pull request #2506 from MichaelDvP/dev
remove wifi full scan
2025-04-04 10:30:23 +02:00
MichaelDvP
e72afc9065 remove wifi full scan, dev.6 2025-04-04 08:24:59 +02:00
MichaelDvP
de2f3e712d updte pkg 2025-04-04 08:20:00 +02:00
Proddy
cacb92cd47 Merge pull request #2504 from MichaelDvP/dev
some smaller fixes
2025-04-03 09:51:26 +02:00
MichaelDvP
3eb20fa700 add some HA config on mqtt reconnect 2025-04-02 17:49:22 +02:00
MichaelDvP
d35574d494 update pkg 2025-04-02 17:48:27 +02:00
MichaelDvP
3cb29220ab fetch first c0 telegram #2501 2025-04-01 18:58:59 +02:00
MichaelDvP
d91812ab8f add thermostat C0 message #2501 2025-04-01 12:41:21 +02:00
MichaelDvP
856f8efd25 update scheduler if there is pending change #2502 2025-04-01 12:34:02 +02:00
MichaelDvP
d32378ccd4 do not scan methode for arduino 3 2025-04-01 12:33:04 +02:00
MichaelDvP
f5006d1a11 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-03-31 10:50:23 +02:00
Proddy
c3468e6308 Merge pull request #2498 from proddy/dev
fixes #2497
2025-03-31 10:19:13 +02:00
proddy
9f4de56099 switch between dev and stable 2025-03-31 10:18:32 +02:00
proddy
78738de811 version update text changes 2025-03-31 10:18:21 +02:00
proddy
e64596ad61 updated comments 2025-03-31 10:17:33 +02:00
proddy
024357ae80 bump 3.7.3-dev.4 2025-03-31 10:17:19 +02:00
proddy
3f07d3b75f ignore local yarn 2025-03-31 10:17:05 +02:00
proddy
cb7c695c67 tidy up 2025-03-30 15:13:52 +02:00
proddy
912a764c2d package update 2025-03-30 15:13:40 +02:00
proddy
c9c0f55b64 remove optimizer 2025-03-30 15:13:15 +02:00
proddy
6991677cf9 improve version check, #1497 2025-03-30 14:51:59 +02:00
proddy
83330907cd added full tests for different version upgrades, both backend and webUI 2025-03-30 14:51:13 +02:00
proddy
3571998da3 rename version.h 2025-03-30 14:50:40 +02:00
MichaelDvP
77465ebe81 always show buttons for stable and dev 2025-03-30 14:11:02 +02:00
MichaelDvP
006e5493e2 reactivate wifi all channel scan 2025-03-30 14:09:02 +02:00
proddy
b29136433d 3.7.3 2025-03-30 10:18:45 +02:00
proddy
0347a4b8b0 fix possible out of scope warning 2025-03-30 10:18:38 +02:00
proddy
3330103a8d compile with IDF 5 2025-03-30 10:18:24 +02:00
proddy
0a02252fee move experimental IDF 5 to pio_local.ini 2025-03-30 10:17:44 +02:00
proddy
642f2116d2 testing Arduino Core v3.2.0 / ESP-IDF v5.4.1 2025-03-29 08:08:54 +01:00
proddy
7b8e45c2f7 package update 2025-03-29 08:05:53 +01:00
proddy
0f2244607f fixes #2497 - showFirmwareDialog() was missing argument 2025-03-28 17:23:46 +01:00
proddy
32ab9dda45 replace reset with restart 2025-03-28 17:22:36 +01:00
proddy
b6659b8586 auto-generate 2025-03-28 17:22:20 +01:00
proddy
5eb85066ef package update 2025-03-28 17:22:11 +01:00
proddy
9398fc72a0 update version check tests 2025-03-28 17:20:25 +01:00
MichaelDvP
1bcd453e3f fix version links for dev #2497 2025-03-28 16:46:49 +01:00
MichaelDvP
d405478a13 fix deviceName length (#2482), formatting 2025-03-28 09:39:38 +01:00
Proddy
c927e5f496 Merge pull request #2496 from MichaelDvP/dev
fix secure mqtt and add auxHeaterSource
2025-03-27 18:37:12 +01:00
MichaelDvP
c5dbd7452e add auxHeaterSource #2489 2025-03-27 17:23:42 +01:00
MichaelDvP
3a0b4ea587 fix switch to secure mqtt #2492 2025-03-27 13:57:59 +01:00
MichaelDvP
6f4cdb7122 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-03-27 07:50:12 +01:00
Proddy
b5d6757660 Merge pull request #2493 from proddy/dev
upgrade mui v7, fix makefile build
2025-03-26 22:09:56 +01:00
proddy
0dcde46296 upgrade mui v7, fix makefile build 2025-03-26 20:24:08 +01:00
Proddy
ac7e91beff Merge pull request #2491 from MichaelDvP/dev
fixes and additions
2025-03-26 18:42:19 +01:00
MichaelDvP
9ea1e2752d update pkg, Grid2->Grid 2025-03-26 17:30:33 +01:00
MichaelDvP
b5471aef94 fix typo in set_wwswitchtime, fixes #2490 2025-03-26 17:03:51 +01:00
MichaelDvP
f31329ceff fix dhw progMode, #2490 2025-03-26 07:16:08 +01:00
MichaelDvP
40d48f4407 add FLAG_HMC310, fix switchtimeWW 2025-03-25 18:13:43 +01:00
MichaelDvP
11b7e1f86e update pkg 2025-03-24 18:44:02 +01:00
MichaelDvP
e364a71eda Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-03-23 18:35:08 +01:00
Proddy
e006bebb86 Merge pull request #2488 from proddy/dev
rename github actions
2025-03-23 16:56:40 +01:00
proddy
fa3d42a1c7 rename github actions 2025-03-23 16:55:57 +01:00
Proddy
e435fd4391 Merge pull request #2487 from proddy/dev
clean-up
2025-03-23 15:46:17 +01:00
proddy
d42efb32ab clean-up 2025-03-23 15:45:53 +01:00
proddy
ad8f2dc823 add 2025-03-23 15:43:07 +01:00
Proddy
f2ff14f511 Merge pull request #2479 from proddy/dev
fix test data
2025-03-23 14:01:26 +01:00
proddy
e5e9d4c713 fix test data with led_type 2025-03-23 14:00:46 +01:00
proddy
4c5f93000b add led_type to comment 2025-03-23 14:00:35 +01:00
proddy
0c7301a020 TYPE has param 2025-03-23 14:00:20 +01:00
MichaelDvP
74c63bf17e set HMC310 to BC400 compatible 2025-03-23 10:07:22 +01:00
MichaelDvP
4564e0b828 fix printable chars in lastcode 2025-03-23 10:06:49 +01:00
Proddy
2ab9607989 Merge pull request #2478 from misa1515/patch-23
Update index.ts
2025-03-23 07:34:25 +01:00
misa1515
29d198b46d Update index.ts 2025-03-22 22:41:41 +01:00
MichaelDvP
8387ca0c07 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-03-22 11:59:04 +01:00
MichaelDvP
3796fb8027 add analog sensor NTC and RGB-Led, dev29 2025-03-22 11:41:37 +01:00
MichaelDvP
1da08633ec add scheduler random function (rnd(x) => random 0..x) 2025-03-22 11:41:00 +01:00
MichaelDvP
b097e372e4 update pkg and libs 2025-03-22 11:39:48 +01:00
Proddy
846776929e Merge pull request #2475 from proddy/dev
3.7.3-dev.0
2025-03-22 10:44:09 +01:00
proddy
6e1d56b8ee 3.7.3-dev.0 2025-03-22 10:43:44 +01:00
Proddy
32f7eb7299 Merge pull request #2474 from proddy/dev
update prepare for 3.7.2 stable
2025-03-22 10:09:17 +01:00
proddy
3fc9c3b56c update prepare for 3.7.2 stable 2025-03-22 10:07:58 +01:00
Proddy
e2e46543d2 Merge pull request #2472 from JokerGermany/own1-program-switchtime---german-translation
make switchtime more clear in the german translation
2025-03-22 09:51:15 +01:00
JokerGermany
a2b22198ec make switchtime more clear in the german translation
"Programmschaltzeit 1" don't make clear that "Eigen 1" is meant.
2025-03-21 10:20:57 +01:00
Proddy
642b59f729 Merge pull request #2471 from MichaelDvP/dev
add suprapur-o, fixes #2470
2025-03-20 16:46:48 +01:00
MichaelDvP
9e81de2164 add Suprapur-o, dev28 2025-03-20 11:45:04 +01:00
MichaelDvP
d44797db1d update libs 2025-03-20 11:44:37 +01:00
MichaelDvP
673ee3f79b update pkg 2025-03-20 11:44:23 +01:00
Proddy
38a8179544 Merge pull request #2469 from proddy/dev
update test
2025-03-15 13:49:19 +01:00
proddy
cfb59ac6a0 update test 2025-03-15 13:48:56 +01:00
Proddy
80c26e1adb Merge pull request #2468 from MichaelDvP/dev
shuntingYard support empty strings
2025-03-15 13:47:19 +01:00
MichaelDvP
d0de6e8d0f Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-03-15 13:38:13 +01:00
Proddy
68be7d00ff Merge pull request #2466 from proddy/dev
added new return code when processing commands
2025-03-15 13:02:38 +01:00
proddy
d3e6043911 replace with LOG_DEBUG 2025-03-15 13:01:42 +01:00
proddy
373895b36a test for NO_VALUE in prep for Michael's change 2025-03-15 13:01:29 +01:00
proddy
594e10dbe1 formatting 2025-03-15 13:01:14 +01:00
proddy
e3c5b462da formatting 2025-03-15 13:01:05 +01:00
proddy
8a1376b169 add test for NO_VALUE 2025-03-15 13:00:47 +01:00
proddy
900e26cf9f package update 2025-03-15 13:00:31 +01:00
MichaelDvP
071e81f29b shuntingYard work with empty strings 2025-03-15 12:03:42 +01:00
proddy
d1bd861ff0 default return code is OK 2025-03-13 22:46:25 +01:00
proddy
f5925dbb3b formatting 2025-03-13 22:46:15 +01:00
proddy
b1eedcb1d8 add new return code NO_VALUE 2025-03-13 22:46:04 +01:00
proddy
ed7a9f43de update tests 2025-03-13 22:45:26 +01:00
proddy
67885950ef package update 2025-03-13 22:44:45 +01:00
Proddy
74ddb771e9 Merge pull request #2464 from MichaelDvP/dev
bitmask for bool custom entities as hex value
2025-03-13 08:40:33 +01:00
MichaelDvP
584d0e0b48 shuntingYard string addition, add tohex() function 2025-03-13 07:45:37 +01:00
MichaelDvP
8d9ca33ea3 bitmask for bool custom entities as hex value 2025-03-12 09:23:00 +01:00
Proddy
f0eea1a6a3 Merge pull request #2461 from MichaelDvP/dev 2025-03-11 10:53:35 +01:00
MichaelDvP
79cc0377c0 fix sonar fail for special characters in strings (ascii>127) 2025-03-11 10:00:10 +01:00
Proddy
115cec08fa Merge pull request #2460 from MichaelDvP/dev 2025-03-11 09:23:38 +01:00
MichaelDvP
6df592c2b8 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-03-11 07:33:30 +01:00
MichaelDvP
f2b81489ba mixed case strings in scheduler, #2457 2025-03-11 07:33:23 +01:00
Proddy
0d8760219a Merge pull request #2459 from proddy/dev
package updates, fix auto-gen of csv files
2025-03-10 21:58:23 +01:00
proddy
e8e8d9c130 3.7.2-dev.27 2025-03-10 21:57:18 +01:00
proddy
8f712412f5 package update 2025-03-10 21:47:16 +01:00
proddy
f8ece46163 changed comment 2025-03-10 21:47:07 +01:00
proddy
cd8b1add54 formatting 2025-03-10 21:46:55 +01:00
proddy
1c415a9715 re-generated 2025-03-10 21:46:36 +01:00
proddy
e1e3601640 add newline to fix csv gen 2025-03-10 21:46:20 +01:00
MichaelDvP
c2f718b49a shuntingYard mixed case, only compare and commands converted to lower case 2025-03-10 19:42:16 +01:00
Proddy
cee1874689 Merge pull request #2458 from MichaelDvP/dev
fixes #2456, #2457, shuntingYard tests from #2452
2025-03-10 18:38:38 +01:00
MichaelDvP
57d172aac2 Merge branch 'support_nested_conditionals' of https://github.com/philwingfield/EMS-ESP32 into dev 2025-03-10 11:59:09 +01:00
wingphil
bb26900213 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into support_nested_conditionals 2025-03-10 10:11:21 +00:00
wingphil
9d1ee27533 Add test for nested conditionals without brackets 2025-03-10 10:09:44 +00:00
MichaelDvP
7fd735f667 rename remoteseltemp to cooltemp, fix #2456 2025-03-10 11:02:03 +01:00
MichaelDvP
2e79c3a5c6 enlarge tx queue (overflow in #2455) 2025-03-10 10:56:31 +01:00
MichaelDvP
d769999f10 shuntingYard get api-data lowerCase, fix #2457 2025-03-10 10:55:15 +01:00
MichaelDvP
bd93d26361 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-03-09 17:35:50 +01:00
MichaelDvP
72feefe709 allow brackets in conditions (idea from philwingfield) 2025-03-08 16:50:12 +01:00
Proddy
1d6c2c9664 Merge pull request #2453 from MichaelDvP/dev
fix lastcode #2438, heating/tapwater for heatpumps from activity #2450
2025-03-07 20:51:41 +01:00
MichaelDvP
85c78bc8e9 update pkg 2025-03-07 18:23:40 +01:00
MichaelDvP
18bdcfe050 fix lastcode #2438, heating/tapwater for heatpumps from activity #2450 2025-03-07 18:12:36 +01:00
wingphil
a6f77250b5 Format with clang 2025-03-07 17:08:05 +00:00
wingphil
9874ecde82 feat: Support nested conditionals in shuntingYard 2025-03-07 16:53:41 +00:00
MichaelDvP
584b8788be Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-03-07 16:42:56 +01:00
Proddy
7eb15652c7 Merge pull request #2449 from MichaelDvP/dev
fix #2446, pc0Flow for all boilers, fix #2411
2025-03-07 13:00:48 +01:00
MichaelDvP
2c28a607ba Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-03-06 16:44:45 +01:00
wingphil
45eca462e7 test: Move shuntingYard tests to new file 2025-03-06 14:07:51 +00:00
wingphil
4474868afc Add tests for inline conditionals, try to capture current behaviour 2025-03-06 13:59:20 +00:00
wingphil
6c6b5b060d test: Copy shuntingYard tests so that we can assert the output 2025-03-06 13:27:12 +00:00
Proddy
c03eb290d1 Merge pull request #2447 from philwingfield/fix_unit_tests
Fix console unit tests due to changed shell output
2025-03-05 19:38:41 +01:00
wingphil
de9bd44071 Merge branch 'fix_unit_tests' of https://github.com/philwingfield/EMS-ESP32 into fix_unit_tests 2025-03-05 16:16:13 +00:00
wingphil
b7458b0686 test: fix console unit tests due to changed shell output 2025-03-05 16:14:45 +00:00
wingphil
a660ec1afa test: fix console unit tests due to changed shell output 2025-03-05 16:13:20 +00:00
MichaelDvP
c4f6f01f7e fix #2446, pc0Flow for all boilers, fix #2411 2025-03-05 14:20:40 +01:00
Proddy
9f60560f2b Merge pull request #2445 from proddy/dev
upload translation - thanks mattreim
2025-03-04 22:11:34 +01:00
proddy
7b50f80cb8 upload translation - thanks mattreim 2025-03-04 22:09:42 +01:00
Proddy
656d275c56 Merge pull request #2444 from proddy/dev
move Version back to Status page
2025-03-04 20:58:06 +01:00
proddy
eca17f2b2c move Version back to Status page 2025-03-04 20:57:24 +01:00
Proddy
7f60279aa3 Merge pull request #2443 from proddy/dev
fix autofresh in web
2025-03-04 20:26:15 +01:00
proddy
5227fafa1b fix auto refresh (disable cache) 2025-03-04 20:24:55 +01:00
proddy
4991e2b7cd add upload to Version page 2025-03-04 20:24:27 +01:00
Proddy
34c514709a Merge pull request #2442 from MichaelDvP/dev 2025-03-04 07:55:22 +01:00
MichaelDvP
7dfedfeb10 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-03-04 07:36:53 +01:00
MichaelDvP
c8bf4cae17 typo 2025-03-04 07:36:31 +01:00
Proddy
2818e268b6 Merge pull request #2441 from proddy/dev
standalone console working
2025-03-03 21:01:25 +01:00
proddy
7a95c11f62 package update 2025-03-03 20:55:23 +01:00
proddy
d712b1cce9 command NOT_FOUND when not found 2025-03-03 15:13:04 +01:00
proddy
03fa92352b 3.7.2-dev.24 2025-03-03 15:12:42 +01:00
proddy
e121fdb47f fix shell standalone 2025-03-03 15:12:28 +01:00
proddy
c05793f64f package update 2025-03-03 15:12:19 +01:00
proddy
3836610d81 typo 2025-03-03 15:12:07 +01:00
MichaelDvP
c3f87cd321 fix CR10 #2437 2025-03-03 10:11:18 +01:00
Proddy
4d5a27f45e Merge pull request #2439 from proddy/dev
ESPAsyncWebServer @ 3.7.2
2025-03-02 21:39:54 +01:00
proddy
c37c1aaad5 size of log level box 2025-03-02 21:38:24 +01:00
proddy
110c0df6fb change test log message 2025-03-02 21:38:12 +01:00
proddy
04ac3be242 adjust cache 2025-03-02 17:44:53 +01:00
proddy
44c4ee8bc0 show device id in hex 2025-03-02 17:33:31 +01:00
proddy
57c4d550a3 ESPAsyncWebServer @ 3.7.2 2025-03-02 17:33:16 +01:00
Proddy
4bcb95eece Merge pull request #2436 from proddy/dev
show localized elapsed time in version
2025-03-02 15:21:47 +01:00
proddy
0a92d455c8 show localized elapsed time 2025-03-02 15:13:56 +01:00
proddy
edb30931ae remove days_Ago 2025-03-02 15:13:16 +01:00
proddy
d03ab7a16f formatting 2025-03-02 15:13:06 +01:00
proddy
ea9b6b3e00 removed unused file 2025-03-02 13:27:14 +01:00
proddy
bae6b600bd formatting 2025-03-02 13:27:04 +01:00
proddy
7eac920985 move build python script to scripts folder 2025-03-02 13:26:55 +01:00
Proddy
00c2b5992c Merge pull request #2435 from proddy/dev
minor changes
2025-03-02 09:46:55 +01:00
proddy
43d2fa1f00 remove duplicate log message 2025-03-02 09:23:37 +01:00
proddy
92d40d9287 reset search when closing pane 2025-03-02 09:23:15 +01:00
proddy
7a47a2090f fix message in testing devices 2025-03-02 09:22:59 +01:00
proddy
0d98491a97 suppress debug comment 2025-03-02 09:22:33 +01:00
Proddy
16cf16616e Merge pull request #2434 from proddy/dev
update libs
2025-03-01 22:37:42 +01:00
proddy
d9f56ef3ae ESP32Async/AsyncTCP @ 3.3.6 2025-03-01 22:35:14 +01:00
proddy
c8934af9bb update example 2025-03-01 22:17:18 +01:00
Proddy
cbacaa98d9 Merge pull request #2432 from proddy/dev
EMS-ESP-Modules.git @ 1.0.5
2025-03-01 10:54:30 +01:00
proddy
f1b6a0baf3 EMS-ESP-Modules.git @ 1.0.5 2025-03-01 10:54:05 +01:00
Proddy
4d15f48e2b Merge pull request #2431 from proddy/dev
prep for 3.7.2 stable
2025-03-01 10:45:28 +01:00
proddy
2ffd00e28a update dhw.mode with own_prog 2025-03-01 10:44:51 +01:00
proddy
8ef5be9a7f ArduinoJson @ 7.3.1 2025-03-01 10:44:13 +01:00
proddy
8769faeb83 package update 2025-03-01 10:44:03 +01:00
Proddy
cefbf2d4d6 Merge pull request #2430 from proddy/dev
#2427 links open in new window
2025-02-26 21:00:39 +01:00
proddy
bfd5082054 #2427 2025-02-26 20:58:21 +01:00
proddy
3d3a634d94 package update 2025-02-26 20:58:14 +01:00
Proddy
1cb078cd3c Merge pull request #2429 from misa1515/patch-22
Update locale_translations.h
2025-02-26 18:48:38 +01:00
Proddy
22683f5d12 Merge pull request #2428 from misa1515/patch-21
Update index.ts
2025-02-26 18:48:22 +01:00
misa1515
57b42aa7c2 Update locale_translations.h 2025-02-26 17:51:47 +01:00
misa1515
4a59743024 Update index.ts 2025-02-26 17:47:02 +01:00
Proddy
66cec18dee Merge pull request #2426 from proddy/dev
3.7.2-dev.23
2025-02-25 20:50:06 +01:00
proddy
ad71938fde Merge branch 'dev' of https://github.com/proddy/EMS-ESP32 into dev 2025-02-25 20:49:39 +01:00
proddy
d4155d6e9e 3.7.2-dev.23 2025-02-25 20:49:38 +01:00
Proddy
af6be4c6b1 Merge pull request #2425 from proddy/dev
new command 'set admin password'
2025-02-25 20:47:32 +01:00
proddy
cfbd0168c3 new command 'set admin password' 2025-02-25 20:46:43 +01:00
proddy
61b9bd7581 fix standalone board profile 2025-02-25 20:46:29 +01:00
proddy
4c7ad7124e package update 2025-02-25 20:46:18 +01:00
Proddy
0413314cfb Merge pull request #2424 from proddy/dev
fix weird bug where the total # entities would be incorrect
2025-02-24 22:19:46 +01:00
proddy
ab7cbe8ead show all entities, even if they are marked hidden 2025-02-24 22:18:41 +01:00
proddy
d1264828eb add comment 2025-02-24 22:18:24 +01:00
Proddy
76a317b5c0 Merge pull request #2423 from proddy/dev
add search to Devices webpage
2025-02-24 21:42:14 +01:00
proddy
ec11ae2ef7 add search 2025-02-24 21:38:14 +01:00
proddy
b857c6eb44 change color or num entities so its consistent 2025-02-24 21:37:56 +01:00
proddy
3f8add73ac adjust toast messages 2025-02-24 21:37:29 +01:00
proddy
08b0ddbb7f update packages 2025-02-24 21:37:13 +01:00
proddy
c44cb7e7fd add comments 2025-02-24 21:37:02 +01:00
Proddy
77ff61046e Merge pull request #2422 from MichaelDvP/dev
second fix #2410
2025-02-24 09:51:12 +01:00
MichaelDvP
a8eb06bef2 second fix #2410 2025-02-23 08:33:53 +01:00
Proddy
566b5c8ea5 Merge pull request #2420 from proddy/dev
collection of minor fixes
2025-02-22 13:40:40 +01:00
proddy
eeccd076a0 airbypass 2025-02-22 13:38:04 +01:00
proddy
f45ac9d0ef 3.7.2-dev.22 2025-02-22 13:37:55 +01:00
proddy
cdd9acddfa remove obsolete return_not_found() 2025-02-22 13:37:37 +01:00
proddy
e484f11d12 add test data and comments 2025-02-22 13:37:12 +01:00
proddy
19572f313a don't build web in standalone native 2025-02-22 13:36:45 +01:00
proddy
af9ad5d624 add test data for writing to analog sensor 2025-02-22 13:36:28 +01:00
proddy
8adca69140 update unit tests, add analogsensors 2025-02-22 13:36:12 +01:00
proddy
01710316ed add test for analogsensors 2025-02-22 13:36:00 +01:00
proddy
ab80c82a22 package update 2025-02-22 13:35:37 +01:00
proddy
dceafe65a7 formatting 2025-02-22 13:35:18 +01:00
proddy
4734a81fdb add airbypass 2025-02-22 13:35:08 +01:00
Proddy
a2c099e615 Merge pull request #2419 from MichaelDvP/dev
fix naming of bypass #2417
2025-02-22 11:26:16 +01:00
MichaelDvP
f9b88a1b6b fix naming of bypass #2417 2025-02-22 11:16:54 +01:00
Proddy
7f2b8cc971 Merge pull request #2416 from vmonkey/patch-5
Update CZ
2025-02-22 08:20:58 +01:00
Marek Tyburec
582fb3d72f Update CZ 2025-02-22 08:19:16 +01:00
Marek Tyburec
bf4fa74742 Update CZ 2025-02-22 08:17:07 +01:00
Proddy
c62b3b9864 Merge pull request #2415 from MichaelDvP/dev
fix dhw mode #2410
2025-02-21 21:50:16 +01:00
MichaelDvP
0ae9795d6b fix dhw mode #2410 2025-02-21 12:01:36 +01:00
Proddy
7488c31cd3 Merge pull request #2414 from proddy/dev
minor updates
2025-02-20 22:48:01 +01:00
proddy
dc0e634004 3.7.2-dev.21 2025-02-20 22:47:07 +01:00
proddy
57e7c0ae4f package update 2025-02-20 22:46:55 +01:00
proddy
7214acfa20 update ESPAsyncWebServer to 3.7.1 2025-02-20 22:46:48 +01:00
proddy
ff6d47bb9c spelling 2025-02-20 22:46:21 +01:00
proddy
81971ba53f fixes #2412 2025-02-20 22:46:10 +01:00
Proddy
a58f37e3eb Merge pull request #2407 from proddy/dev
fix showing version in dialog
2025-02-16 11:32:22 +01:00
proddy
09a746cf8e fix showing version in dialog 2025-02-16 11:31:49 +01:00
proddy
ea70119138 US spelling for favorite 2025-02-16 11:28:51 +01:00
Proddy
5a9c5b5e2d Merge pull request #2406 from MichaelDvP/dev
fix verify telegram-type
2025-02-16 11:24:09 +01:00
MichaelDvP
7fb09c5045 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-02-16 11:05:21 +01:00
MichaelDvP
705171f305 fix verify telegram-type 2025-02-16 11:04:19 +01:00
Proddy
400d1a5f1a Merge pull request #2405 from proddy/dev
re-generated files for 3.7.2-dev.20
2025-02-16 11:03:48 +01:00
proddy
c4855cc5f2 re-generated files for 3.7.2-dev.20 2025-02-16 11:02:41 +01:00
Proddy
1e4b487299 Merge pull request #2404 from MichaelDvP/dev
add vacation mode CR50 #2403
2025-02-16 10:48:13 +01:00
MichaelDvP
cbd883103e add vacation mode CR50 #2403 2025-02-16 09:05:44 +01:00
MichaelDvP
2ce12943cd update pkg 2025-02-16 08:42:23 +01:00
Proddy
4151a82b3b Merge pull request #2399 from proddy/dev
improvements to version checking
2025-02-09 20:18:00 +00:00
proddy
b871081ef1 show upgrades for both stable and dev releases 2025-02-09 20:13:52 +00:00
proddy
da51d1d7d9 comments on version tests 2025-02-09 20:13:10 +00:00
proddy
82dae30224 3.7.2-dev.19 2025-02-09 20:12:50 +00:00
proddy
1fdac2fdab package update 2025-02-09 20:12:36 +00:00
proddy
56b23e27d7 formating 2025-02-09 20:12:19 +00:00
Proddy
ba29aa62d3 Merge pull request #2398 from proddy/dev
updates
2025-02-08 22:34:35 +00:00
proddy
be2342285f update AsyncWS libs 2025-02-08 22:33:45 +00:00
proddy
5595c01221 update 2025-02-08 22:33:27 +00:00
proddy
133cddef5b exclude IDF 2025-02-08 22:33:20 +00:00
proddy
0fdba1f84d fix for OSX 2025-02-08 22:33:08 +00:00
proddy
e10ec26e79 update 2025-02-08 22:32:56 +00:00
proddy
ffbb397dba update version 2025-02-08 22:32:48 +00:00
Proddy
799076d0c4 Merge pull request #2396 from misa1515/patch-20
Update index.ts
2025-02-07 21:00:29 +01:00
misa1515
1fbd10df27 Update index.ts 2025-02-06 23:06:10 +01:00
Proddy
4a2f82f1e8 Merge pull request #2393 from mattreim/dev
Update German translation
2025-02-03 22:29:47 +01:00
mattreim
d913e4d90b Update German translation 2025-02-03 21:46:53 +01:00
Proddy
0958c29c9e Merge pull request #2392 from proddy/dev
translations in version webUI page
2025-02-03 20:47:21 +01:00
proddy
36e1c9f79d updates 2025-02-03 20:37:53 +01:00
proddy
8fedac53dd more translations 2025-02-03 20:35:17 +01:00
proddy
a1c6159fc5 package update 2025-02-03 20:35:09 +01:00
proddy
5b33acba5e auto-formatting 2025-02-03 20:34:56 +01:00
Proddy
4abaef2943 Merge pull request #2391 from MichaelDvP/dev
disable old led port when changing port, #2389
2025-02-03 12:20:04 +01:00
MichaelDvP
ad71773293 disable old led port when changing port, #2389 2025-02-03 09:18:41 +01:00
Proddy
5b07309939 Merge pull request #2390 from proddy/dev
fix system command read from crashing
2025-02-02 17:17:40 +01:00
proddy
7a044a1dcd don't use flag tautological-constant-out-of-range-compare 2025-02-02 17:17:03 +01:00
proddy
6507764157 use default icondegrees in HA 2025-02-02 17:16:47 +01:00
proddy
7dfa8fc883 command read with no args crashed EMS-ESP 2025-02-02 17:16:32 +01:00
proddy
6df7965bb2 bump version dev-18 2025-02-02 17:16:11 +01:00
Proddy
02a3dee764 Merge pull request #2388 from proddy/dev
minor changes
2025-02-02 13:34:25 +01:00
proddy
d5895f1710 add example lib_deps 2025-02-02 13:33:28 +01:00
proddy
2b90ad3f6d add example for allvalues 2025-02-02 13:29:35 +01:00
proddy
0bb61b4296 show error when action command fails 2025-02-02 13:29:18 +01:00
proddy
2378fb547c default values 2025-02-02 13:29:02 +01:00
proddy
a79ff3f417 stop flash when ems bus not yet connected 2025-02-02 13:28:55 +01:00
proddy
4bc93615c5 add space when showing error 2025-02-02 13:28:37 +01:00
proddy
685f0d93e5 add allvalues 2025-02-02 13:28:23 +01:00
proddy
1d7b6674bb remove allvalues 2025-02-02 13:28:15 +01:00
proddy
014405e451 package update 2025-02-02 13:28:02 +01:00
Proddy
aff3ca3ad3 Merge pull request #2382 from proddy/dev
remove flash from web dashboard, add tooltip component
2025-01-29 21:09:39 +01:00
Proddy
b723d09952 Merge branch 'emsesp:dev' into dev 2025-01-29 21:07:31 +01:00
Proddy
bfff842c82 Merge pull request #2381 from MichaelDvP/dev
ignore src==0 (#2378) and fix typo
2025-01-29 21:07:01 +01:00
proddy
ad7d21764d remove flash from dashboard 2025-01-29 21:04:01 +01:00
MichaelDvP
f2ae84b004 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-01-29 08:37:04 +01:00
MichaelDvP
a81956654e ignore src==0, fixes #2378 2025-01-29 08:36:03 +01:00
MichaelDvP
3cb662799f fix typo 2025-01-29 08:35:19 +01:00
Proddy
9188d03d61 Merge pull request #2380 from proddy/dev
tidy up dashboard text and alerts
2025-01-28 22:35:21 +01:00
proddy
3df2d36453 https://github.com/emsesp/EMS-ESP32/discussions/2377 2025-01-28 22:33:23 +01:00
Proddy
0ab7eb42e4 Merge pull request #2373 from proddy/dev
support entities api endpoint for multiple devices of same type
2025-01-26 14:56:31 +01:00
proddy
84d4fb37fa update 2025-01-26 14:54:38 +01:00
proddy
aa9b38da03 make makefile work for all platforms 2025-01-26 14:48:49 +01:00
proddy
8342867807 3.7.2-dev.16 2025-01-26 14:48:32 +01:00
proddy
d8cff865da tidy up flags 2025-01-26 14:45:40 +01:00
proddy
096f7e1c88 fix lint warnings 2025-01-26 14:45:33 +01:00
proddy
0608d847f5 update generated docs 2025-01-26 14:01:41 +01:00
proddy
b20360c2a5 update lock 2025-01-26 13:59:37 +01:00
proddy
59b5086cab no need for virtual functions 2025-01-26 13:57:06 +01:00
proddy
2e3024ab61 move all statics up 2025-01-26 13:56:50 +01:00
proddy
b5299719da replace emsesp_stub.h 2025-01-26 13:56:31 +01:00
proddy
2620f56e0d lint warnings 2025-01-26 13:30:53 +01:00
proddy
20b978c46c add lto flag 2025-01-26 13:30:29 +01:00
proddy
5c8a18df68 arduino 6.10.0 and lto flag 2025-01-26 13:30:20 +01:00
proddy
3464d6c324 add test for /api/thermostat/entities 2025-01-26 13:12:26 +01:00
proddy
eac0cc0521 prevent possible out of scope 2025-01-26 13:12:11 +01:00
proddy
0953d37303 support multi devices of same type 2025-01-25 13:31:05 +01:00
proddy
1d3fec2a95 changed text 2025-01-25 13:30:41 +01:00
proddy
61b374b7c0 changed comment 2025-01-25 13:30:30 +01:00
proddy
c47cc0d5f1 test multiple thermostats hc1 hc2 2025-01-25 13:30:14 +01:00
proddy
939882efbf auto-formatting 2025-01-25 13:30:03 +01:00
Proddy
f42cbf548e Merge pull request #2371 from proddy/dev
some minor changes
2025-01-25 08:43:28 +01:00
proddy
91075ace37 comment 2025-01-25 08:40:47 +01:00
proddy
de6405f8d1 neopixel to standalone to not break build 2025-01-25 08:35:35 +01:00
proddy
2ffcaf4a9e move async* libs 2025-01-25 08:35:17 +01:00
proddy
1bda62309b auto-formatting 2025-01-25 08:35:05 +01:00
proddy
83659e5da8 remove loading messages 2025-01-25 08:15:10 +01:00
proddy
a6e136561e show boot partitions 2025-01-25 08:15:02 +01:00
proddy
a75d7487fc Merge branch 'dev' of https://github.com/proddy/EMS-ESP32 into dev 2025-01-25 08:14:25 +01:00
proddy
31b0dd8d58 update packages 2025-01-25 08:12:55 +01:00
Proddy
696bd1f455 Merge branch 'emsesp:dev' into dev 2025-01-25 07:31:09 +01:00
Proddy
18355efde2 Merge pull request #2367 from misa1515/patch-18
Update locale_translations.h
2025-01-25 07:30:49 +01:00
Proddy
d5100134e4 Merge pull request #2368 from misa1515/patch-19
Update index.ts
2025-01-25 07:30:39 +01:00
Proddy
b932242e04 Merge pull request #2370 from MichaelDvP/dev
add RGB Led to board profile
2025-01-25 07:30:11 +01:00
MichaelDvP
73ccff3412 add RGB Led to board profile 2025-01-24 19:23:19 +01:00
MichaelDvP
e5f852a7ed fix C3 board settings 2025-01-24 19:22:49 +01:00
MichaelDvP
581f19462d don't show double log entries after startup 2025-01-24 19:22:20 +01:00
misa1515
eb59b37251 Update index.ts 2025-01-22 23:36:48 +01:00
misa1515
f3696f60cd Update locale_translations.h 2025-01-22 23:32:31 +01:00
proddy
6b4e21f5db remove duplicate wwCurFlow_ in HIU and HEATPUMP 2025-01-22 23:15:58 +01:00
proddy
3d4d5b7bbc show restarting before it actually restarts 2025-01-22 22:31:36 +01:00
proddy
e6f15681c0 use same ha_uom function to add uom, state and device class 2025-01-22 22:31:21 +01:00
proddy
5f52a646ff 3.7.2-dev.15 2025-01-22 22:30:38 +01:00
proddy
be4f9296a5 add board_build.app_partition_name = app0 2025-01-22 22:30:15 +01:00
proddy
c3181f589c minor change 2025-01-22 22:29:58 +01:00
proddy
872cd40f56 remove Loading... message 2025-01-22 22:29:40 +01:00
proddy
30b9de49bf revert back to default test 2025-01-22 22:29:27 +01:00
Proddy
8a91c6eb2f Merge pull request #2366 from proddy/dev
show progress bar when automatically installing firmware, fix modbus headers
2025-01-21 22:07:00 +01:00
proddy
243471e21d show progress bar when automatically installing firmware 2025-01-21 22:06:01 +01:00
proddy
b8f97ec94d 3.7.2-dev.14 2025-01-21 22:05:26 +01:00
proddy
8576a6f253 added for testing 2025-01-21 22:05:10 +01:00
proddy
b33e6ceca9 package update 2025-01-21 20:28:51 +01:00
proddy
8eaf7f32cd fix csv file generation for non modbus 2025-01-21 20:28:47 +01:00
Proddy
becdc8cef5 Merge pull request #2363 from proddy/dev
fix memory type for S3 so PSRAM is used, fix WebUI upload restarting
2025-01-20 21:05:14 +01:00
proddy
651688219c fix logic for uploading so it restarts 2025-01-20 21:03:52 +01:00
proddy
b9a4bb3511 3.7.2-dev.13 2025-01-20 21:03:29 +01:00
proddy
b318274129 fix memory type for S3 so PSRAM is used 2025-01-20 21:03:20 +01:00
Proddy
8b0e5ba8e7 Merge pull request #2362 from proddy/dev
introduce system status in WebUI for easier monitoring of tasks
2025-01-20 17:42:07 +01:00
proddy
4a9b74b311 include tag in entity_dump unless we're generating it for modbus 2025-01-20 12:57:00 +01:00
proddy
371b198eb6 update generated files 2025-01-20 12:56:23 +01:00
proddy
a6dfdb2c4c package update 2025-01-20 12:56:15 +01:00
proddy
3122c2b2a9 print tag in dump_entities.csv 2025-01-20 12:14:46 +01:00
proddy
9ac8d149fb use system status with standalone 2025-01-20 12:14:30 +01:00
proddy
91e1b0b3b8 added comment 2025-01-20 12:14:12 +01:00
proddy
01636ced88 update dictionary 2025-01-20 12:14:01 +01:00
proddy
53e587537f remove unused system status's 2025-01-20 12:13:51 +01:00
proddy
77eeacf121 remove duplicate 157 thermostat in standalone 2025-01-20 12:13:34 +01:00
proddy
a89c42d659 package update 2025-01-20 12:13:10 +01:00
proddy
ba4bc423f4 rename Restart Monitor 2025-01-20 12:13:00 +01:00
proddy
8cd341576d use await 2025-01-20 12:12:47 +01:00
proddy
006eae5862 introduce system status in WebUI for easier monitoring of tasks 2025-01-19 18:18:04 +01:00
Proddy
6e29de4463 Merge pull request #2361 from proddy/dev
include CPU temp in heartbeat MWTT topic for ESP32
2025-01-19 10:02:38 +01:00
proddy
92d816b990 include CPU temp in heartbeat MWTT topic for ESP32 2025-01-19 10:00:03 +01:00
proddy
37ad1968b5 formating 2025-01-19 09:59:39 +01:00
Proddy
01793dd4f6 Merge pull request #2360 from proddy/dev
implement CPU temp for ESP32
2025-01-18 16:13:29 +01:00
proddy
9a7f7fa1d5 updated 2025-01-18 16:12:59 +01:00
proddy
648675d002 auto-formatting 2025-01-18 16:10:44 +01:00
proddy
462d865fc9 implement CPU temp for ESP32 2025-01-18 16:08:26 +01:00
proddy
9f24851948 add comments 2025-01-18 16:08:04 +01:00
proddy
a5e5ec5098 transformNumFloat with default values 2025-01-18 16:07:57 +01:00
proddy
db90546bc3 transformNumFloat with default values 2025-01-18 16:07:41 +01:00
proddy
2d9ea3ee8d show CPU temp in C or F 2025-01-18 16:07:18 +01:00
proddy
4d3cafcf29 fix DASHBOARD_1 in DE 2025-01-18 16:07:05 +01:00
proddy
8685ffb1bf update Tasmota platform (for testing 3.x) 2025-01-18 16:06:54 +01:00
proddy
86408b3452 package update 2025-01-18 16:06:31 +01:00
Proddy
eab94f3b84 Merge pull request #2352 from proddy/dev
small collection of changes
2025-01-16 22:29:53 +01:00
proddy
9123dbcc9e 3.7.2-dev.11 2025-01-16 21:58:13 +01:00
proddy
ec6f426b06 remove comments 2025-01-16 21:57:53 +01:00
proddy
5482937332 detect browser language if non set 2025-01-16 21:55:51 +01:00
proddy
0b667703c2 update 2025-01-16 21:55:36 +01:00
proddy
c732c96fc2 re-gen files 2025-01-16 21:55:19 +01:00
proddy
e3d260429c formatting 2025-01-16 21:54:54 +01:00
proddy
77eb2c747b tidy up lang header 2025-01-16 21:54:38 +01:00
proddy
6853cd738f package update 2025-01-16 21:54:17 +01:00
proddy
d58776beab fix DASHBOARD_1 2025-01-16 21:53:57 +01:00
Proddy
94a7b1e438 Merge branch 'emsesp:dev' into dev 2025-01-16 16:32:09 +01:00
Proddy
c3f7540f74 Merge pull request #2356 from MichaelDvP/dev
prepare for modbus support AM200, #2354
2025-01-16 16:30:35 +01:00
MichaelDvP
4642a50f69 prepare for modbus support AM200 2025-01-16 09:48:11 +01:00
proddy
b23bcf3f0b message optional in MessageBox 2025-01-14 22:09:23 +01:00
proddy
570678e3d3 show message in Dashboard if no fav entities set 2025-01-14 21:44:56 +01:00
proddy
64a2f5eb11 gracefully close mqtt on restart 2025-01-14 19:03:30 +01:00
proddy
24fba8b382 add test for #2351 2025-01-14 19:03:12 +01:00
proddy
9339ef481a package update 2025-01-14 19:01:11 +01:00
proddy
075789b902 fix showing Active in NTP 2025-01-12 15:19:12 +01:00
Proddy
1dd1b47faf Merge pull request #2343 from proddy/dev
minor updates
2025-01-12 14:16:46 +01:00
proddy
525a164c69 include temp as HA sensor - #2346 2025-01-12 12:09:36 +01:00
proddy
b60f333edb use translation for is_required 2025-01-12 11:58:03 +01:00
proddy
2323fdfe56 update packages 2025-01-12 11:57:53 +01:00
proddy
9b7fed4d1f tidy up imports 2025-01-12 11:50:05 +01:00
proddy
67c59c9b4b modify settings based on board type 2025-01-12 11:49:52 +01:00
proddy
b5fea921e6 grey out modbus with explanation if no psram 2025-01-12 11:49:27 +01:00
proddy
eeb071afc6 3.7.2-dev.10 2025-01-12 08:57:53 +01:00
proddy
5669873101 don't echo wifi password after setting it 2025-01-11 21:11:03 +01:00
proddy
d371c9bc82 auto-formatting 2025-01-11 21:06:47 +01:00
proddy
153dd19fc6 don't auto-install if on Tasmota 2025-01-11 19:02:15 +01:00
proddy
ae258a75d9 simulate ESP32 and ESP32-S3 2025-01-11 19:01:53 +01:00
proddy
37c4be321f output also the flash size 2025-01-11 19:01:03 +01:00
proddy
c810d58064 changed comments, make sure S32 V2 is compiled with Tasmota 2025-01-11 19:00:47 +01:00
proddy
5a27817d11 updated example 2025-01-11 19:00:14 +01:00
proddy
4be2f9283d updated dictionary 2025-01-11 19:00:05 +01:00
proddy
a65162fbbc updated generated file 2025-01-11 18:59:49 +01:00
proddy
494cf3b6a8 package update 2025-01-11 18:59:39 +01:00
proddy
b900194402 package update 2025-01-11 18:59:30 +01:00
proddy
d6e72e72d7 auto-formatting 2025-01-11 18:59:10 +01:00
proddy
960baadeca changed text 2025-01-11 18:58:59 +01:00
proddy
ed92b37869 updated 2025-01-11 18:58:51 +01:00
proddy
1598809815 package update 2025-01-11 12:55:23 +01:00
Proddy
3131969fc1 Merge branch 'emsesp:dev' into dev 2025-01-10 18:11:40 +01:00
Proddy
fb44bc33b9 Merge pull request #2341 from MichaelDvP/dev
fix mqtt commands with base path #2339
2025-01-10 17:10:57 +01:00
MichaelDvP
59a806ac8c fix mqtt commands with base path #2339 2025-01-10 15:14:48 +01:00
proddy
6a2a27e47e mathieucarbou/ESPAsyncWebServer @ 3.6.0 2025-01-09 16:33:07 +01:00
Proddy
251d0af028 Merge branch 'emsesp:dev' into dev 2025-01-09 14:21:45 +01:00
Proddy
8fa800e2f7 Merge pull request #2338 from MichaelDvP/dev
small fixes and additions
2025-01-09 14:21:24 +01:00
MichaelDvP
df9d20ad88 disable WS queue, web log messages are already queued 2025-01-09 12:39:29 +01:00
MichaelDvP
c07754047d add solar influence #2212 2025-01-09 09:18:50 +01:00
MichaelDvP
9c00af317e Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2025-01-09 08:55:12 +01:00
MichaelDvP
d3d132ec45 unused id 2025-01-09 08:55:01 +01:00
MichaelDvP
7adba972e7 Don't show uom for empty string 2025-01-09 08:54:36 +01:00
proddy
d83399bd1f fix Make for OSX 2025-01-08 21:46:05 +01:00
proddy
4471da4aa9 update packages 2025-01-08 21:45:59 +01:00
Proddy
b3be1d9351 Merge pull request #2337 from proddy/dev
replace arduino platform 3.1.0 with previous 2.0.18
2025-01-08 20:20:01 +01:00
proddy
c6b8c2a630 3.7.2-dev.9 2025-01-08 20:17:28 +01:00
proddy
3f51c21dc7 tests for 4MB firmware upload 2025-01-08 20:17:20 +01:00
proddy
a8cdbc4fd6 tidy up directory listing 2025-01-08 20:16:59 +01:00
proddy
95e5babb13 package update 2025-01-08 20:16:48 +01:00
proddy
74cb23a8bb replace arduino platform 3.1.0 with previous 2.0.18 to see if it fixed #2333 2025-01-08 20:16:40 +01:00
Proddy
6be304f295 Merge pull request #2332 from proddy/dev
formatting upgrade button
2025-01-05 22:46:19 +01:00
proddy
e702b0b733 formatting upgrade button 2025-01-05 22:45:48 +01:00
Proddy
bfbd263c74 Merge pull request #2331 from proddy/dev
web UI small changes
2025-01-05 18:28:39 +01:00
proddy
472f922369 tidy up formatting, add a re-install option 2025-01-05 18:26:18 +01:00
proddy
b13c608ff3 formatting imports 2025-01-05 13:34:02 +01:00
proddy
5464909121 change icon size and use customizations icon 2025-01-05 13:32:54 +01:00
Proddy
d874b3f808 Merge pull request #2328 from proddy/dev
core update #2108
2025-01-04 15:07:01 +01:00
proddy
92108bc743 update comments 2025-01-04 14:59:41 +01:00
proddy
66ca1e52bb add local yarn files 2025-01-04 14:59:37 +01:00
proddy
3589094d06 update lock file 2025-01-04 14:59:13 +01:00
proddy
801ed6ef79 update dictionary 2025-01-04 14:59:03 +01:00
proddy
2547ae45a8 comment 2025-01-04 14:50:29 +01:00
proddy
93e4abe72d update packages 2025-01-04 14:13:51 +01:00
proddy
eb87651c47 merge #2108 2025-01-04 13:41:39 +01:00
Proddy
4138598db2 Merge pull request #2320 from misa1515/patch-16
Update locale_translations.h
2025-01-04 13:30:40 +01:00
Proddy
913bbd6e3b Merge pull request #2322 from misa1515/patch-17
Update index.ts
2025-01-01 21:46:39 +01:00
misa1515
d35881b05b Update index.ts 2025-01-01 21:35:02 +01:00
misa1515
33b54ccf12 Update locale_translations.h 2025-01-01 17:47:43 +01:00
Proddy
a8775b2200 Merge pull request #2317 from proddy/dev
cleanup yarn
2024-12-31 13:07:07 +01:00
proddy
6d3746222d updated 2024-12-31 13:06:16 +01:00
proddy
fe169ac80f formatting 2024-12-31 13:06:11 +01:00
proddy
83724e3d44 formatting 2024-12-31 13:05:59 +01:00
proddy
a4db3ef5c4 regenerate files 2024-12-31 13:05:49 +01:00
proddy
f8adad7865 cleanup yarn 2024-12-31 13:05:33 +01:00
proddy
12c094228e add comment 2024-12-31 13:05:07 +01:00
Proddy
902ea80807 Merge pull request #2311 from Sbried/dev
Updated unknown compressor stati "enum_hpactivity"
2024-12-31 12:44:57 +01:00
Proddy
73831d9ac6 Merge pull request #2316 from proddy/dev
fix underlines in Tab headers (webUI) and NL translations
2024-12-31 12:44:31 +01:00
proddy
6bfda79441 NL translations 2024-12-31 12:28:06 +01:00
proddy
112de78fc5 update packages 2024-12-31 12:16:27 +01:00
proddy
adbd2381e1 ignore dependencies 2024-12-31 12:16:16 +01:00
proddy
397f3f546e fix webUI tabs (underline) 2024-12-31 12:15:59 +01:00
Proddy
43d3c28e16 Merge pull request #2307 from ovenystas/fix-sv-translation-bug
fix: Sv translation bugs
2024-12-30 21:28:23 +01:00
Proddy
747a64b869 Merge pull request #2315 from MichaelDvP/dev
fix thermostat clock year, #2313
2024-12-30 21:27:04 +01:00
MichaelDvP
7c2e5560bd fix thermostat clock year, #2313 2024-12-30 19:28:46 +01:00
Sbried
9194db9f70 Updated unknown compressor stati "enum_hpactivity" 0, 5 and added status 7.
No idea what is the difference bewteen 4 (pool) and 5 (pool_heating).
2024-12-29 12:57:26 +01:00
Ove Nystås
fece00c0c6 fix: Sv translation bugs 2024-12-26 19:50:16 +01:00
Proddy
ba3ae5ea56 Merge pull request #2305 from MichaelDvP/dev
fixes #2288, #2299, #2295 (new  FLAG)
2024-12-23 15:29:04 +01:00
MichaelDvP
4c69c9e445 fix show ntp_time (as local time) 2024-12-23 13:03:59 +01:00
MichaelDvP
97925c47fd remove broken ntp_time 2024-12-23 12:12:25 +01:00
MichaelDvP
ad89fe15b1 fix seltep command for CR11 #2295 2024-12-23 09:09:36 +01:00
MichaelDvP
29035cabfe Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2024-12-22 15:59:18 +01:00
MichaelDvP
9b3d43d27f add min/max for #2288, own flag for CR11 #2295 2024-12-22 15:58:46 +01:00
Proddy
0b4f17473a Merge pull request #2303 from proddy/dev
show ntp time in status, use useInterval everywhere instead of alova'…
2024-12-21 16:31:23 +01:00
proddy
b0c29b57c7 show ntp time in status, use useInterval everywhere instead of alova's AutoRequest 2024-12-21 16:30:05 +01:00
Proddy
6d22f6aebf Merge pull request #2302 from proddy/dev
minor refresh
2024-12-20 17:49:39 +01:00
proddy
3e3e10e6a0 formatting 2024-12-20 17:48:14 +01:00
proddy
b854c777c8 update dictionary 2024-12-20 17:48:04 +01:00
proddy
b71fdd77e8 modbus update with c11 2024-12-20 17:47:56 +01:00
proddy
0f6f7cea19 vite update 2024-12-20 17:47:41 +01:00
Proddy
58beb092c2 Merge pull request #2301 from oliof/patch-1
Update CHANGELOG_LATEST.md
2024-12-20 12:15:41 +01:00
Harald Wagener
c3f200f73b Update CHANGELOG_LATEST.md
fix link to issue #2182
2024-12-20 10:41:37 +01:00
Proddy
98640c11b1 Merge pull request #2298 from MichaelDvP/dev
update for #2294 and #2295
2024-12-19 20:29:49 +01:00
MichaelDvP
d7904bdcaf set mode to manual for CR11, dont show remotetemp for non-master thermostats 2024-12-19 16:52:57 +01:00
MichaelDvP
ce05a94d58 update changelog, dev.6 2024-12-19 12:42:09 +01:00
MichaelDvP
c0ed62dc7a modbus: don't show not found errors in first minute 2024-12-19 12:24:46 +01:00
MichaelDvP
1557fa98b1 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2024-12-19 09:39:46 +01:00
MichaelDvP
81a530f153 add CR11 thermostat, #2295 2024-12-19 09:38:18 +01:00
Proddy
a4733c3e6a Merge pull request #2296 from proddy/dev
added EMS Device Ventilation module as test data
2024-12-18 21:29:29 +01:00
proddy
7851b8e94c type check 2024-12-18 21:25:22 +01:00
proddy
36838f7690 add example Ventilator to demo 2024-12-18 21:10:35 +01:00
proddy
fdd87d0757 update toastify 2024-12-18 21:10:19 +01:00
MichaelDvP
c8822aff64 fix modbus write for signed values 2024-12-18 13:44:24 +01:00
MichaelDvP
4b3205fc9c modbus publish emsesp-INT8 as modbus-int16, fix #2294 2024-12-18 12:55:53 +01:00
MichaelDvP
afc05ae9e8 update pkg, change for toastify 11 2024-12-18 12:53:55 +01:00
proddy
9c3044efa0 re-generated files 2024-12-16 21:49:37 +01:00
proddy
8caeb129c1 update 2024-12-16 21:49:28 +01:00
proddy
0427504f0e typo 2024-12-16 21:44:34 +01:00
proddy
4f11a7caa1 update dictionary 2024-12-16 21:44:27 +01:00
proddy
150695c185 formatting 2024-12-16 21:44:14 +01:00
proddy
3558591480 remove unused function 2024-12-16 21:43:56 +01:00
proddy
f7a24052c2 make makefile work for OSX 2024-12-16 21:38:06 +01:00
proddy
75c452486c update packages, add workaround for itty-router bug 2024-12-16 21:37:58 +01:00
Proddy
40cab6775c Merge pull request #2292 from ovenystas/add-sv-translations
Add, update and fix misspellings in Swedish translation
2024-12-15 11:20:02 +01:00
Ove Nystås
392829c7db Add, update and fix misspellings in Swedish translation 2024-12-15 00:41:36 +01:00
Proddy
4621c9d616 Merge pull request #2291 from MichaelDvP/dev
thermostat settings for #2290, #2288,#1957 (#2287)
2024-12-13 22:50:46 +01:00
MichaelDvP
006d664ec9 CW100 settings telegram 0x241, #2290 2024-12-13 15:58:06 +01:00
MichaelDvP
0cc9ac4dd8 add reduce threshold #2288, absent mode #1957 (#2287) 2024-12-13 10:14:44 +01:00
MichaelDvP
502096dc22 update pkg 2024-12-13 10:08:42 +01:00
Proddy
8c424c7a64 Merge pull request #2283 from misa1515/patch-15
Update locale_translations.h
2024-12-12 22:35:27 +01:00
misa1515
d7c118b88a Update locale_translations.h 2024-12-09 18:57:16 +01:00
misa1515
1fdb0b7516 Update locale_translations.h 2024-12-07 16:51:42 +01:00
Proddy
c2fc771756 Merge pull request #2280 from MichaelDvP/dev
small fixes and changes
2024-12-06 08:37:49 +01:00
MichaelDvP
6f759c5bc4 update changelog 2024-12-06 08:37:12 +01:00
MichaelDvP
facbbf1353 fix info command #2274, fix standanlone 2024-12-06 08:33:02 +01:00
MichaelDvP
a218c7a781 Add "duplicate" option to Custom Entities #2266 2024-12-05 19:27:04 +01:00
MichaelDvP
5f42709eab update asyncTCP to threadsafe 3.2.14, ems-esp v3.7.2-dev.4 2024-12-05 12:57:19 +01:00
MichaelDvP
5ec0f657a0 newer CT200 temperatures, #2277 2024-12-05 10:09:26 +01:00
MichaelDvP
812911ffbb version 2.7.2-dev.3 2024-12-04 18:28:40 +01:00
MichaelDvP
55235687ba change modbus timeout to seconds and default 300 sec, #2254 2024-12-04 18:28:13 +01:00
MichaelDvP
a970009d20 update eModbus to 1.7.2, #2254 2024-12-04 18:26:45 +01:00
MichaelDvP
4afc16e2cb modbus command path to api #2276 2024-12-04 18:25:31 +01:00
MichaelDvP
3772d72b43 pkg update 2024-12-03 18:17:42 +01:00
MichaelDvP
607f949638 fix render long numbers, #2267 2024-12-03 12:39:30 +01:00
Proddy
473cf7c8af Merge pull request #2275 from proddy/dev
minor updates
2024-12-02 22:12:29 +01:00
Proddy
e0909df06c Merge branch 'emsesp:dev' into dev 2024-12-02 22:11:40 +01:00
proddy
5fc606ef6d remove duplicate code segment, remove weblog # 2024-12-02 22:10:28 +01:00
proddy
a3032f4da7 update packages 2024-12-02 22:10:11 +01:00
proddy
7fdd65e8ca update dictionary 2024-12-02 22:10:05 +01:00
Proddy
dc6bf883f1 Merge pull request #2270 from mkurek/patch-1
Fix typo in polish ventilation translation
2024-12-02 21:45:16 +01:00
Proddy
ce5edd93b4 Merge pull request #2272 from MichaelDvP/dev
heatingtypes #2268, pretty telegram, service commands #2182
2024-12-02 21:44:23 +01:00
Mateusz Kurek
e36e6bec9c Fix typo in polish ventilation translation
prędjkość -> prędkość
2024-12-01 23:41:41 +01:00
MichaelDvP
c8fd08b6d2 changelog v3.7.2-dev.2 2024-12-01 18:06:35 +01:00
MichaelDvP
c0d693c1c8 add RC35 heatingtypes for remote room control, #2268 2024-12-01 18:06:09 +01:00
MichaelDvP
5d2a6e2898 pretty telegram with operation between src and dst 2024-12-01 17:56:23 +01:00
MichaelDvP
4547a5ceb0 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2024-12-01 17:11:47 +01:00
Proddy
76151c4395 Merge pull request #2265 from proddy/dev
fixes #2264 - tab links broken
2024-11-30 21:29:03 +01:00
proddy
481089b1b4 3.7.2-dev.1 2024-11-30 21:27:59 +01:00
proddy
463787b7f4 fixes #2264 2024-11-30 21:27:34 +01:00
proddy
e2258a1c43 package update 2024-11-30 21:27:22 +01:00
MichaelDvP
5528f29b6a Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2024-11-29 11:00:24 +01:00
MichaelDvP
e3861d54c9 remove command txMode, fix writeable camelCase names 2024-11-29 11:00:04 +01:00
Proddy
3368f2803c Merge pull request #2260 from proddy/dev
3.7.2-dev
2024-11-29 10:33:36 +01:00
proddy
6ca1d68d23 3.7.2-dev 2024-11-29 10:33:12 +01:00
MichaelDvP
cf93081252 Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev 2024-11-28 15:44:39 +01:00
MichaelDvP
30fca2a190 system commands withing command (api/mqtt/console), alternative to #2182 2024-11-28 15:40:42 +01:00
213 changed files with 49857 additions and 11260 deletions

View File

@@ -22,7 +22,7 @@ _Make sure your have performed every step and checked the applicable boxes befor
- [ ] Searched the issue in [issues](https://github.com/emsesp/EMS-ESP32/issues)
- [ ] Searched the issue in [discussions](https://github.com/emsesp/EMS-ESP32/discussions)
- [ ] Searched the issue in the [docs](https://emsesp.org/Troubleshooting/)
- [ ] Searched the issue in the [chat](https://discord.gg/3J3GgnzpyT)
- [ ] Searched the issue in the [chat](https://discord.gg/GP9DPSgeJq)
- [ ] Provide the System information in the area below, taken from `http://<IP>/api/system`
```json

View File

@@ -7,5 +7,5 @@ contact_links:
url: https://github.com/emsesp/EMS-ESP32/discussions
about: EMS-ESP usage Questions, Feature Requests and Projects.
- name: EMS-ESP Users Chat
url: https://discord.gg/3J3GgnzpyT
url: https://discord.gg/GP9DPSgeJq
about: Chat for feedback, questions and troubleshooting.

View File

@@ -5,7 +5,36 @@ 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/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [3.8.0]
## [3.8.1] 11 January 2026
## Added
- update time saved in nvs
- heatpump entities [#2883](https://github.com/emsesp/EMS-ESP32/issues/2883)
- HA input number format (mode) selectable box/slider (slider for max range 100) [#2900](https://github.com/emsesp/EMS-ESP32/discussions/2900)
## Fixed
- fix EMS bus disconnected errors on some systems [#2881](https://github.com/emsesp/EMS-ESP32/issues/2881)
- selflowtemp fix [#2876](https://github.com/emsesp/EMS-ESP32/issues/2876)
- updated valid GPIOs for ESP32S2, ESP32S3 and ESP32 that caused custom systems to block gpios [#2887](https://github.com/emsesp/EMS-ESP32/issues/2887)
- Junkers wwcharge offset [#2860](https://github.com/emsesp/EMS-ESP32/issues/2860)
- fixed minflowtemp [#2890](https://github.com/emsesp/EMS-ESP32/issues/2890)
- don't add HA uom/classes for bool values [#2885](https://github.com/emsesp/EMS-ESP32/issues/2885)
- fixed missing progress bar on web firmware uploads
## Changed
- snapshot gpios stored in temporary ram
- GPIOs stored along with the name and reported in log if conflicting
- free GPIOs depend on board profile [#2901](https://github.com/emsesp/EMS-ESP32/issues/2901)
- prefer PSram for mqtt queue [#2889](https://github.com/emsesp/EMS-ESP32/issues/2889)
- day schedule defult to all days, no day selected is not allowed
- board profile `CUSTOM` can only be selected in developer mode
- mqtt sends round values without decimals (`28` instead of `28.0`)
## [3.8.0] 31 December 2025
## Added
@@ -26,8 +55,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- FW200 display options [#2610](https://github.com/emsesp/EMS-ESP32/discussions/2610)
- CR11 mode settings OFF/MANUAL depends on selTemp [#2437](https://github.com/emsesp/EMS-ESP32/issues/2437)
- implemented eFuse settings for BBQKees boards to store model type and ESP chipset
- Analogsensors for pulse output [#2624](https://github.com/emsesp/EMS-ESP32/discussions/2624)
- Analogsensors frequency input [#2631](https://github.com/emsesp/EMS-ESP32/discussions/2631)
- analogsensors for pulse output [#2624](https://github.com/emsesp/EMS-ESP32/discussions/2624)
- analogsensors frequency input [#2631](https://github.com/emsesp/EMS-ESP32/discussions/2631)
- SRC plus thermostats [#2636](https://github.com/emsesp/EMS-ESP32/issues/2636)
- Greenstar 2000 [#2645](https://github.com/emsesp/EMS-ESP32/issues/2645)
- RC3xx `dhw modetype` [#2659](https://github.com/emsesp/EMS-ESP32/discussions/2659)
@@ -90,7 +119,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- added Home Assistant device details to MQTT Discovery for all devices
- device_class and state_class changes for HA MQTT Discovery [#2825](https://github.com/emsesp/EMS-ESP32/issues/2825)
## [3.7.2] 22 March 2025
## Added

View File

@@ -1,3 +1,23 @@
# Changelog
For more details go to [emsesp.org](https://emsesp.org/).
## [3.8.2]
## Added
- comfortpoint for BC400 [#2935](https://github.com/emsesp/EMS-ESP32/issues/2935)
- customize device brand [#2784](https://github.com/emsesp/EMS-ESP32/issues/2784)
- set model for ems-esp devices temperature, analog, etc. [#2958](https://github.com/emsesp/EMS-ESP32/discussions/2958)
## Fixed
- SRC climate creation [#2936](https://github.com/emsesp/EMS-ESP32/issues/2936) and [#2960](https://github.com/emsesp/EMS-ESP32/issues/2960)
## Changed
- weblogbuffer up to 1000 messages with PSRAM, mentioned in [#2933](https://github.com/emsesp/EMS-ESP32/issues/2933)
- validate custom entity writes, [#2931](https://github.com/emsesp/EMS-ESP32/issues/2931)
- remove wrong burnMinPower [#2918](https://github.com/emsesp/EMS-ESP32/issues/2918)
- store scheduler active state to nvs [#2946](https://github.com/emsesp/EMS-ESP32/discussions/2946)
- translated modes `heat` and `eco` for HA-climate mode-str-tpl

View File

@@ -63,11 +63,12 @@ CXX_STANDARD := -std=gnu++17
#----------------------------------------------------------------------
# Defined Symbols
#----------------------------------------------------------------------
DEFINES += -DARDUINOJSON_ENABLE -DARDUINOJSON_ENABLE_ARDUINO_STRING -DARDUINOJSON_USE_DOUBLE=0
DEFINES += -DARDUINOJSON_ENABLE -DARDUINOJSON_ENABLE_ARDUINO_STRING -DARDUINOJSON_USE_DOUBLE=0
DEFINES += -DEMSESP_STANDALONE -DEMSESP_TEST -DEMSESP_DEBUG -DEMC_RX_BUFFER_SIZE=1500
DEFINES += -DNO_TLS_SUPPORT
DEFINES += $(ARGS)
DEFAULTS = -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_TX_MODE=8 -DEMSESP_DEFAULT_VERSION=\"3.8.0-dev.0\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32S3\"
DEFAULTS = -DEMSESP_DEFAULT_LOCALE=\"en\" -DEMSESP_DEFAULT_BOARD_PROFILE=\"S32S3\"
#----------------------------------------------------------------------
# Sources & Files
@@ -79,6 +80,10 @@ SYMBOLS := $(CURDIR)/$(BUILD)/$(TARGET).out
CSOURCES := $(shell find $(SOURCES) -name "*.c" 2>/dev/null)
CXXSOURCES := $(shell find $(SOURCES) -name "*.cpp" 2>/dev/null)
# Exclude files not needed for standalone build, if they exist
CSOURCES := $(filter-out src/core/ModuleLibrary.c,$(CSOURCES))
CXXSOURCES := $(filter-out src/core/ModuleLibrary.cpp,$(CXXSOURCES))
OBJS := $(patsubst %,$(BUILD)/%.o,$(basename $(CSOURCES)) $(basename $(CXXSOURCES)))
DEPS := $(patsubst %,$(BUILD)/%.d,$(basename $(CSOURCES)) $(basename $(CXXSOURCES)))

View File

@@ -18,7 +18,7 @@
<a href="https://emsesp.org">
<img src="https://img.shields.io/badge/Documentation-0077b5?style=for-the-badge&logo=googledocs&logoColor=white" alt="Guides" />
</a>
<a href="https://discord.gg/3J3GgnzpyT">
<a href="https://discord.gg/GP9DPSgeJq">
<img src="https://img.shields.io/badge/Discord-7289da?style=for-the-badge&logo=discord&logoColor=white" alt="Discord" />
</a>
<a href="https://github.com/emsesp/EMS-ESP32/blob/main/CHANGELOG.md">
@@ -32,7 +32,8 @@
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=emsesp_EMS-ESP32&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=emsesp_EMS-ESP32)
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/9441142f49424ef891e8f5251866ee6b)](https://app.codacy.com/gh/emsesp/EMS-ESP32/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
[![downloads](https://img.shields.io/github/downloads/emsesp/EMS-ESP32/total.svg)](https://github.com/emsesp/EMS-ESP32/releases)
[![chat](https://img.shields.io/discord/816637840644505620.svg?style=flat-square&color=blueviolet)](https://discord.gg/3J3GgnzpyT)
[![chat](https://img.shields.io/discord/816637840644505620.svg?style=flat-square&color=blueviolet)](https://discord.gg/GP9DPSgeJq)
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/emsesp/EMS-ESP32)
[![GitHub stars](https://img.shields.io/github/stars/emsesp/EMS-ESP32.svg?style=social&label=Star)](https://github.com/emsesp/EMS-ESP32/stargazers)
[![GitHub forks](https://img.shields.io/github/forks/emsesp/EMS-ESP32.svg?style=social&label=Fork)](https://github.com/emsesp/EMS-ESP32/network)
@@ -40,7 +41,8 @@
**EMS-ESP** is an open-source firmware for the Espressif ESP32 microcontroller to communicate with **EMS** (Energy Management System) compatible equipment from manufacturers such as Bosch, Buderus, Nefit, Junkers, Worcester, Sieger, elm.leblanc and iVT.
It requires a small circuit to interface with the EMS bus which can be purchased from <https://bbqkees-electronics.nl> or custom built.
It requires a small circuit to interface with the EMS bus which can be purchased from <https://bbqkees-electronics.nl>. These gateways are tested thoroughly and certified to work with EMS-ESP.
## 📦&nbsp; **Key Features**
@@ -64,29 +66,27 @@ Head over to the [Installation Guide](https://emsesp.org/Installing) section of
## 📋&nbsp; **Documentation**
Visit [emsesp.org](https://emsesp.org) for more details on how to install and configure EMS-ESP. There is also a collection of Frequently Asked Questions and Troubleshooting tips with example customizations from the community.
Visit [emsesp.org](https://emsesp.org) for more details on how to setup and configure EMS-ESP. You'll also find more a collection of example configuarations, Frequently Asked Questions and Troubleshooting tips.
## 💬&nbsp; **Getting Support**
To chat with the community reach out on our [Discord Server](https://discord.gg/3J3GgnzpyT).
To chat with the community reach out on our [Discord Server](https://discord.gg/GP9DPSgeJq).
If you find an issue or have a request, see [how to request support](https://emsesp.org/Support/) on how to submit a bug report or feature request.
If you find an issue or have a request, see the [Getting Support](https://emsesp.org/Support/) section of the documentation. Note if you are using a non-BBQKees EMS gateway, you may need to contact the manufacturer for support.
## 🎥&nbsp; **Live Demo**
For a live demo go to [demo.emsesp.org](https://demo.emsesp.org). Pick a language from the sign on page and log in with any username or password. Note not all features are operational as it's based on static data.
To see a live demo go to [demo.emsesp.org](https://demo.emsesp.org). Pick a language and use any username and password to log in. Note whast you're seeing is static example data so not all features are operational.
## 💖&nbsp; **Contributors**
EMS-ESP is a project created by [proddy](https://github.com/proddy) and owned and maintained by both [proddy](https://github.com/proddy) and [MichaelDvP](https://github.com/MichaelDvP) with support from [BBQKees Electronics](https://bbqkees-electronics.nl).
EMS-ESP is a project originally created by [proddy](https://github.com/proddy) and maintained by the ems-esp community.
If you like **EMS-ESP**, please give it a ✨ on GitHub, or even better fork it and contribute. You can also offer a small donation. This is an open-source project maintained by volunteers, and your support is greatly appreciated.
## 📦&nbsp; **Building**
To build the web interface only, run `platformio run -e build_webUI`. This will install the necessary dependencies and build the web interface and also create the embedded code used need to build the firmware. You can run the web interface locally by going to the `interface` directory and running `pnpm standalone`.
To build the firmware, run `platformio run`. This will build the firmware for all ESP32 modules and place the binaries in the `build/firmware` folder. If you want to configure the build for a single platform create a local `pio_local.ni` file in the root directory (see example in `pio_local.ini_example`).
See the [Building the firmware](https://emsesp.org/Building) guide in the documentation for instructions on how to build EMS-ESP from this source code.
## 📢&nbsp; **Libraries used**

5
SECURITY.md Normal file
View File

@@ -0,0 +1,5 @@
# Security Policy
## Reporting a Vulnerability
Please report any security vulnerabilities using the [Contact Form](https://emsesp.org/About/#-contact).

View File

@@ -5,7 +5,7 @@
},
"core": "esp32",
"extra_flags": [
"-DTASMOTA_SDK",
"-DNO_TLS_SUPPORT",
"-DARDUINO_LOLIN_C3_MINI",
"-DARDUINO_USB_MODE=1",
"-DARDUINO_USB_CDC_ON_BOOT=1"

View File

@@ -6,7 +6,7 @@
"core": "esp32",
"extra_flags": [
"-DBOARD_HAS_PSRAM",
"-DTASMOTA_SDK",
"-DNO_TLS_SUPPORT",
"-DARDUINO_USB_CDC_ON_BOOT=1",
"-DARDUINO_USB_MODE=0"
],
@@ -37,8 +37,8 @@
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"use_1200bps_touch": true,
"wait_for_upload_port": true,
"use_1200bps_touch": false,
"wait_for_upload_port": false,
"require_upload_port": true,
"speed": 921600
},

View File

@@ -21,7 +21,7 @@
"arduino",
"espidf"
],
"name": "Espressif ESP32-S3 32M Flash OPI PSRAM, 4608KB Code/OTA, 2MB FS",
"name": "Tasmota ESP32-S3 32M Flash OPI PSRAM, 4608KB Code/OTA, 2MB FS",
"upload": {
"flash_size": "32MB",
"maximum_ram_size": 327680,

View File

@@ -1,7 +1,7 @@
{
"build": {
"core": "esp32",
"extra_flags": "-DTASMOTA_SDK",
"extra_flags": "-DNO_TLS_SUPPORT",
"f_cpu": "240000000L",
"f_flash": "40000000L",
"flash_mode": "dio",
@@ -19,7 +19,7 @@
"arduino",
"espidf"
],
"name": "Espressif ESP32 16M Flash, 4608KB Code/OTA, 2MB FS",
"name": "Tasmota ESP32 16M Flash, 4608KB Code/OTA, 2MB FS",
"upload": {
"flash_size": "16MB",
"maximum_ram_size": 327680,

View File

@@ -19,7 +19,7 @@
"arduino",
"espidf"
],
"name": "Espressif ESP32 16M Flash DIO PSRAM, 4608KB Code/OTA, 2MB FS",
"name": "Tasmota ESP32 16M Flash DIO PSRAM, 4608KB Code/OTA, 2MB FS",
"upload": {
"flash_size": "16MB",
"maximum_ram_size": 327680,

View File

@@ -1,7 +1,7 @@
{
"build": {
"core": "esp32",
"extra_flags": "-DTASMOTA_SDK",
"extra_flags": "-DNO_TLS_SUPPORT",
"f_cpu": "240000000L",
"f_flash": "40000000L",
"flash_mode": "dio",

View File

@@ -9,6 +9,7 @@
}
],
"dictionaries": ["project-words"],
"caseSensitive": false,
"ignorePaths": [
"node_modules",
"compile_commands.json",
@@ -35,6 +36,9 @@
"managed_components/**",
"pnpm-*.yaml",
"vite.config.ts",
"lib/esp32-psram/**"
"lib/esp32-psram/**",
"test/test_api/test_api.h",
"lib_standalone/**",
"lib/mbedtls_ssl/**"
]
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -111,10 +111,10 @@ telegram_type_id,name,is_fetched
0x02A0,RC300Curves,
0x02A1,RC300Curves,
0x02A2,RC300Curves,
0x02A5,RC300Monitor,fetched
0x02A5,RC300Monitor,
0x02A6,RC300Monitor,
0x02A7,RC300Monitor,
0x02A8,RC300Monitor,
0x02A8,CRFMonitor,
0x02A9,RC300Monitor,
0x02AA,RC300Monitor,
0x02AB,RC300Monitor,
1 telegram_type_id name is_fetched
111 0x02A0 RC300Curves
112 0x02A1 RC300Curves
113 0x02A2 RC300Curves
114 0x02A5 RC300Monitor fetched
115 0x02A6 RC300Monitor
116 0x02A7 RC300Monitor
117 0x02A8 RC300Monitor CRFMonitor
118 0x02A9 RC300Monitor
119 0x02AA RC300Monitor
120 0x02AB RC300Monitor

View File

@@ -1,5 +1,5 @@
{
"adapter": "react",
"baseLocale": "pl",
"$schema": "https://unpkg.com/typesafe-i18n@5.26.2/schema/typesafe-i18n.json"
"$schema": "https://unpkg.com/typesafe-i18n@5.27.1/schema/typesafe-i18n.json"
}

View File

@@ -12,7 +12,7 @@
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"build-hosted": "typesafe-i18n && vite build --mode hosted",
"build-hosted": "typesafe-i18n --no-watch && vite build --mode hosted",
"mock-rest": "bun --watch ../mock-api/restServer.ts",
"preview-standalone": "typesafe-i18n --no-watch && vite build && concurrently -c \"auto\" \"pnpm:mock-rest\" \"vite preview\"",
"standalone": "concurrently -c \"auto\" \"typesafe-i18n\" \"pnpm:mock-rest\" \"vite dev\"",
@@ -26,46 +26,46 @@
"@alova/adapter-xhr": "2.3.1",
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
"@mui/icons-material": "^7.3.6",
"@mui/material": "^7.3.6",
"@mui/icons-material": "^7.3.8",
"@mui/material": "^7.3.8",
"@preact/compat": "^18.3.1",
"@table-library/react-table-library": "4.1.15",
"alova": "3.4.1",
"alova": "3.5.0",
"async-validator": "^4.2.5",
"etag": "^1.8.1",
"formidable": "^3.5.4",
"jwt-decode": "^4.0.0",
"magic-string": "^0.30.21",
"mime-types": "^3.0.2",
"preact": "^10.28.1",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"preact": "^10.28.3",
"react": "^19.2.4",
"react-dom": "^19.2.4",
"react-icons": "^5.5.0",
"react-router": "^7.11.0",
"react-router": "^7.13.0",
"react-toastify": "^11.0.5",
"typesafe-i18n": "^5.26.2",
"typesafe-i18n": "^5.27.1",
"typescript": "^5.9.3"
},
"devDependencies": {
"@babel/core": "^7.28.5",
"@eslint/js": "^9.39.2",
"@babel/core": "^7.29.0",
"@eslint/js": "^10.0.1",
"@preact/compat": "^18.3.1",
"@preact/preset-vite": "^2.10.2",
"@trivago/prettier-plugin-sort-imports": "^6.0.0",
"@types/node": "^25.0.3",
"@types/react": "^19.2.7",
"@preact/preset-vite": "^2.10.3",
"@trivago/prettier-plugin-sort-imports": "^6.0.2",
"@types/node": "^25.2.3",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"axe-core": "^4.11.0",
"axe-core": "^4.11.1",
"concurrently": "^9.2.1",
"eslint": "^9.39.2",
"eslint": "^10.0.0",
"eslint-config-prettier": "^10.1.8",
"prettier": "^3.7.4",
"prettier": "^3.8.1",
"rollup-plugin-visualizer": "^6.0.5",
"terser": "^5.44.1",
"typescript-eslint": "^8.51.0",
"vite": "^7.3.0",
"terser": "^5.46.0",
"typescript-eslint": "^8.55.0",
"vite": "^7.3.1",
"vite-plugin-imagemin": "^0.6.1",
"vite-tsconfig-paths": "^6.0.3"
"vite-tsconfig-paths": "^6.1.1"
},
"packageManager": "pnpm@10.27.0+sha512.72d699da16b1179c14ba9e64dc71c9a40988cbdc65c264cb0e489db7de917f20dcf4d64d8723625f2969ba52d4b7e2a1170682d9ac2a5dcaeaab732b7e16f04a"
"packageManager": "pnpm@10.29.3+sha512.498e1fb4cca5aa06c1dcf2611e6fafc50972ffe7189998c409e90de74566444298ffe43e6cd2acdc775ba1aa7cc5e092a8b7054c811ba8c5770f84693d33d2dc"
}

6122
interface/pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -310,13 +310,15 @@ const CustomEntities = () => {
/>
)}
</Cell>
<Cell>{ei.ram > 0 ? '' : showHex(ei.device_id as number, 2)}</Cell>
<Cell>{ei.ram > 0 ? '' : showHex(ei.type_id as number, 3)}</Cell>
<Cell>{ei.ram > 0 ? '' : ei.offset}</Cell>
<Cell>
{ei.ram === 1 ? '' : showHex(ei.device_id as number, 2)}
</Cell>
<Cell>{ei.ram === 1 ? '' : showHex(ei.type_id as number, 3)}</Cell>
<Cell>{ei.ram === 1 ? '' : ei.offset}</Cell>
<Cell>
{ei.ram === 1 ? 'RAM' : DeviceValueTypeNames[ei.value_type]}
{ei.ram === 1
? 'RAM'
: ei.ram === 2
? 'NVS'
: DeviceValueTypeNames[ei.value_type]}
</Cell>
<Cell>{formatValue(ei.value, ei.uom)}</Cell>
</Row>

View File

@@ -205,9 +205,10 @@ const CustomEntitiesDialog = ({
>
<MenuItem value={0}>EMS-{LL.VALUE(1)}</MenuItem>
<MenuItem value={1}>RAM-{LL.VALUE(1)}</MenuItem>
<MenuItem value={2}>NVS-{LL.VALUE(1)}</MenuItem>
</TextField>
</Grid>
{editItem.ram === 1 && (
{editItem.ram > 0 && (
<>
<Grid>
<TextField

View File

@@ -111,13 +111,14 @@ const Customizations = () => {
const [selectedDeviceTypeNameURL, setSelectedDeviceTypeNameURL] =
useState<string>(''); // needed for API URL
const [selectedDeviceName, setSelectedDeviceName] = useState<string>('');
const [selectedDeviceBrand, setSelectedDeviceBrand] = useState<string>('');
const { send: sendResetCustomizations } = useRequest(resetCustomizations(), {
immediate: false
});
const { send: sendDeviceName } = useRequest(
(data: { id: number; name: string }) => writeDeviceName(data),
(data: { id: number; name: string; brand: string }) => writeDeviceName(data),
{
immediate: false
}
@@ -267,6 +268,7 @@ const Customizations = () => {
if (device) {
setSelectedDeviceTypeNameURL(device.url || '');
setSelectedDeviceName(device.n);
setSelectedDeviceBrand(device.b);
}
setNumChanges(0);
setRestartNeeded(false);
@@ -442,7 +444,11 @@ const Customizations = () => {
}, [devices, deviceEntities, selectedDevice, sendCustomizationEntities, LL]);
const renameDevice = useCallback(async () => {
await sendDeviceName({ id: selectedDevice, name: selectedDeviceName })
await sendDeviceName({
id: selectedDevice,
name: selectedDeviceName,
brand: selectedDeviceBrand
})
.then(() => {
toast.success(LL.UPDATED_OF(LL.NAME(1)));
})
@@ -453,7 +459,14 @@ const Customizations = () => {
setRename(false);
await fetchCoreData();
});
}, [selectedDevice, selectedDeviceName, sendDeviceName, LL, fetchCoreData]);
}, [
selectedDevice,
selectedDeviceName,
selectedDeviceBrand,
sendDeviceName,
LL,
fetchCoreData
]);
const renderDeviceList = () => (
<>
@@ -462,15 +475,26 @@ const Customizations = () => {
</Box>
<Box display="flex" flexWrap="wrap" alignItems="center" gap={2}>
{rename ? (
<TextField
name="device"
label={LL.EMS_DEVICE()}
fullWidth
variant="outlined"
value={selectedDeviceName}
onChange={(e) => setSelectedDeviceName(e.target.value)}
margin="normal"
/>
<>
<TextField
name="device"
label={LL.EMS_DEVICE()}
style={{ minWidth: '48%' }}
variant="outlined"
value={selectedDeviceName}
onChange={(e) => setSelectedDeviceName(e.target.value)}
margin="normal"
/>
<TextField
name="brand"
label={LL.BRAND()}
style={{ minWidth: '48%' }}
variant="outlined"
value={selectedDeviceBrand}
onChange={(e) => setSelectedDeviceBrand(e.target.value)}
margin="normal"
/>
</>
) : (
<TextField
name="device"
@@ -788,10 +812,12 @@ const Customizations = () => {
</>
);
return (
return restarting ? (
<SystemMonitor />
) : (
<SectionContent>
{blocker ? <BlockNavigation blocker={blocker} /> : null}
{restarting ? <SystemMonitor /> : renderContent()}
{renderContent()}
{selectedDeviceEntity && (
<SettingsCustomizationsDialog
open={dialogOpen}

View File

@@ -120,7 +120,7 @@ const HelpComponent = () => {
label: () => LL.HELP_INFORMATION_1()
},
{
href: 'https://discord.gg/3J3GgnzpyT',
href: 'https://discord.gg/GP9DPSgeJq',
icon: <CommentIcon />,
label: () => LL.HELP_INFORMATION_2()
},

View File

@@ -41,6 +41,7 @@ const MIN_ID = -100;
const MAX_ID = 100;
const ICON_SIZE = 16;
const SCHEDULE_FLAG_THRESHOLD = 127;
const FLAG_ALL_DAYS = 127;
const REFERENCE_YEAR = 2017;
const REFERENCE_MONTH = '01';
const LOG_2 = Math.log(2);
@@ -51,7 +52,7 @@ const WEEK_DAYS = [1, 2, 3, 4, 5, 6, 7] as const;
const DEFAULT_SCHEDULE_ITEM: Omit<ScheduleItem, 'id' | 'o_id'> = {
active: false,
deleted: false,
flags: ScheduleFlag.SCHEDULE_DAY,
flags: FLAG_ALL_DAYS,
time: '',
cmd: '',
value: '',

View File

@@ -33,7 +33,8 @@ import type { ScheduleItem } from './types';
// Constants
const FLAG_MASK_127 = 127;
const SCHEDULE_TYPE_THRESHOLD = 128;
const SCHEDULE_TYPE_THRESHOLD = 127;
const FLAG_ALL_DAYS = 127;
const DEFAULT_TIME = '00:00';
const TYPOGRAPHY_FONT_SIZE = 10;
@@ -104,7 +105,7 @@ const SchedulerDialog = ({
// 130 is on condition
// 132 is immediate
setScheduleType(
selectedItem.flags < SCHEDULE_TYPE_THRESHOLD
selectedItem.flags <= SCHEDULE_TYPE_THRESHOLD
? ScheduleFlag.SCHEDULE_DAY
: selectedItem.flags
);
@@ -181,7 +182,7 @@ const SchedulerDialog = ({
setScheduleType(flag);
// wipe the time field when changing the schedule type
// set the flags based on type
const newFlags = flag === ScheduleFlag.SCHEDULE_DAY ? 0 : flag;
const newFlags = flag === ScheduleFlag.SCHEDULE_DAY ? FLAG_ALL_DAYS : flag;
setEditItem((prev) => ({ ...prev, time: '', flags: newFlags }));
}
},
@@ -190,7 +191,8 @@ const SchedulerDialog = ({
const handleDOWChange = useCallback(
(_event: React.SyntheticEvent<HTMLElement>, flags: string[]) => {
const newFlags = getFlagDOWnumber(flags);
const newFlags =
getFlagDOWnumber(flags) === 0 ? FLAG_ALL_DAYS : getFlagDOWnumber(flags);
setEditItem((prev) => ({ ...prev, flags: newFlags }));
},
[getFlagDOWnumber]

View File

@@ -196,7 +196,7 @@ export enum DeviceValueUOM {
MBAR,
LH,
CTKWH,
HZ
HERTZ
}
export const DeviceValueUOM_s = [

View File

@@ -489,17 +489,25 @@ const ApplicationSettings = () => {
name="board_profile"
label={LL.BOARD_PROFILE()}
value={data.board_profile}
disabled={processingBoard || hardwareData.model.startsWith('BBQKees')}
disabled={processingBoard}
variant="outlined"
onChange={changeBoardProfile}
margin="normal"
select
>
{boardProfileItems}
<Divider />
<MenuItem key={'CUSTOM'} value={'CUSTOM'}>
{LL.CUSTOM()}&hellip;
</MenuItem>
{hardwareData.model.startsWith('BBQKees') ? (
<MenuItem key={hardwareData.board} value={hardwareData.board}>
{BOARD_PROFILES[hardwareData.board as BoardProfileKey]}
</MenuItem>
) : (
boardProfileItems
)}
{(data.board_profile === 'CUSTOM' || data.developer_mode) && <Divider />}
{(data.board_profile === 'CUSTOM' || data.developer_mode) && (
<MenuItem key={'CUSTOM'} value={'CUSTOM'}>
{LL.CUSTOM()}&hellip;
</MenuItem>
)}
</TextField>
{data.board_profile === 'CUSTOM' && (
<>
@@ -896,10 +904,12 @@ const ApplicationSettings = () => {
);
};
return (
return restarting ? (
<SystemMonitor />
) : (
<SectionContent>
{blocker ? <BlockNavigation blocker={blocker} /> : null}
{restarting ? <SystemMonitor /> : content()}
{content()}
</SectionContent>
);
};

View File

@@ -345,75 +345,91 @@ const MqttSettings = () => {
</Grid>
)}
</Grid>
<Grid container spacing={2} rowSpacing={0}>
<Grid>
<BlockFormControlLabel
control={
<Checkbox
name="ha_enabled"
checked={data.ha_enabled}
onChange={updateFormValue}
disabled={data.publish_single}
/>
}
label={LL.MQTT_PUBLISH_TEXT_3()}
/>
</Grid>
{data.ha_enabled && (
<Grid container spacing={2} rowSpacing={0}>
<Grid>
<TextField
name="discovery_type"
label={LL.MQTT_PUBLISH_TEXT_5()}
value={data.discovery_type}
variant="outlined"
onChange={updateFormValue}
margin="normal"
select
>
<MenuItem value={0}>Home Assistant</MenuItem>
<MenuItem value={1}>Domoticz</MenuItem>
<MenuItem value={2}>Domoticz (latest)</MenuItem>
</TextField>
</Grid>
<Grid>
<TextField
name="discovery_prefix"
label={LL.MQTT_PUBLISH_TEXT_4()}
variant="outlined"
value={data.discovery_prefix}
onChange={updateFormValue}
margin="normal"
/>
</Grid>
<Grid>
<TextField
name="entity_format"
label={LL.MQTT_ENTITY_FORMAT()}
value={data.entity_format}
variant="outlined"
onChange={updateFormValue}
margin="normal"
select
>
<MenuItem value={0}>{LL.MQTT_ENTITY_FORMAT_0()}</MenuItem>
<MenuItem value={3}>
{LL.MQTT_ENTITY_FORMAT_1()}&nbsp;(v3.5)
</MenuItem>
<MenuItem value={4}>
{LL.MQTT_ENTITY_FORMAT_2()}&nbsp;(v3.5)
</MenuItem>
<MenuItem value={1}>
{LL.MQTT_ENTITY_FORMAT_1()}&nbsp;(latest)
</MenuItem>
<MenuItem value={2}>
{LL.MQTT_ENTITY_FORMAT_2()}&nbsp;(latest)
</MenuItem>
</TextField>
</Grid>
</Grid>
)}
{/* <Grid container spacing={2} rowSpacing={0}> */}
<Grid>
<BlockFormControlLabel
control={
<Checkbox
name="ha_enabled"
checked={data.ha_enabled}
onChange={updateFormValue}
disabled={data.publish_single}
/>
}
label={LL.MQTT_PUBLISH_TEXT_3()}
/>
</Grid>
{data.ha_enabled && (
<Grid container spacing={2} rowSpacing={0}>
<Grid>
<TextField
name="discovery_type"
label={LL.MQTT_PUBLISH_TEXT_5()}
value={data.discovery_type}
variant="outlined"
onChange={updateFormValue}
margin="normal"
select
>
<MenuItem value={0}>Home Assistant</MenuItem>
<MenuItem value={1}>Domoticz</MenuItem>
<MenuItem value={2}>Domoticz (latest)</MenuItem>
</TextField>
</Grid>
<Grid>
<TextField
name="discovery_prefix"
label={LL.MQTT_PUBLISH_TEXT_4()}
variant="outlined"
value={data.discovery_prefix}
onChange={updateFormValue}
margin="normal"
/>
</Grid>
<Grid>
<TextField
name="entity_format"
label={LL.MQTT_ENTITY_FORMAT()}
value={data.entity_format}
variant="outlined"
onChange={updateFormValue}
margin="normal"
select
>
<MenuItem value={0}>{LL.MQTT_ENTITY_FORMAT_0()}</MenuItem>
<MenuItem value={3}>
{LL.MQTT_ENTITY_FORMAT_1()}&nbsp;(v3.5)
</MenuItem>
<MenuItem value={4}>
{LL.MQTT_ENTITY_FORMAT_2()}&nbsp;(v3.5)
</MenuItem>
<MenuItem value={1}>
{LL.MQTT_ENTITY_FORMAT_1()}&nbsp;(latest)
</MenuItem>
<MenuItem value={2}>
{LL.MQTT_ENTITY_FORMAT_2()}&nbsp;(latest)
</MenuItem>
</TextField>
</Grid>
<Grid>
{data.discovery_type === 0 && (
<TextField
name="ha_number_mode"
label={LL.MQTT_INPUT_NUMBER_FORMAT()}
value={data.ha_number_mode}
variant="outlined"
onChange={updateFormValue}
sx={{ width: '20ch' }}
margin="normal"
select
>
<MenuItem value={0}>Box</MenuItem>
<MenuItem value={1}>Slider</MenuItem>
</TextField>
)}
</Grid>
</Grid>
)}
<Typography sx={{ pt: 2 }} variant="h6" color="primary">
{LL.MQTT_PUBLISH_INTERVALS()}&nbsp;(0=auto)
</Typography>

View File

@@ -182,7 +182,7 @@ const Settings = () => {
restarting
]);
return <SectionContent>{restarting ? <SystemMonitor /> : content}</SectionContent>;
return restarting ? <SystemMonitor /> : <SectionContent>{content}</SectionContent>;
};
export default Settings;

View File

@@ -397,10 +397,12 @@ const NetworkSettings = () => {
);
};
return (
return restarting ? (
<SystemMonitor />
) : (
<SectionContent>
{blocker ? <BlockNavigation blocker={blocker} /> : null}
{restarting ? <SystemMonitor /> : content()}
{content()}
</SectionContent>
);
};

View File

@@ -443,7 +443,7 @@ const SystemStatus = () => {
renderRestartDialog
]);
return <SectionContent>{restarting ? <SystemMonitor /> : content}</SectionContent>;
return restarting ? <SystemMonitor /> : <SectionContent>{content}</SectionContent>;
};
export default SystemStatus;

View File

@@ -38,8 +38,6 @@ import type { LogEntry, LogSettings } from 'types';
import { LogLevel } from 'types';
import { updateValueDirty, useRest } from 'utils';
const MAX_LOG_ENTRIES = 1000; // Limit log entries to prevent memory issues
const TextColors: Record<LogLevel, string> = {
[LogLevel.ERROR]: '#ff0000', // red
[LogLevel.WARNING]: '#ff0000', // red
@@ -200,10 +198,6 @@ const SystemLog = () => {
}
}
const newLog = [...log, logentry];
// Limit log entries to prevent memory issues - only slice when necessary
if (newLog.length > MAX_LOG_ENTRIES) {
return newLog.slice(-MAX_LOG_ENTRIES);
}
return newLog;
});
}, []);
@@ -308,6 +302,8 @@ const SystemLog = () => {
<MenuItem value={50}>50</MenuItem>
<MenuItem value={75}>75</MenuItem>
<MenuItem value={100}>100</MenuItem>
<MenuItem value={500}>500</MenuItem>
<MenuItem value={1000}>1000</MenuItem>
</TextField>
</Grid>
)}

View File

@@ -60,18 +60,16 @@ const SystemMonitor = () => {
const { statusMessage, isUploading, progressValue } = useMemo(() => {
const status = data?.status;
let message = '';
if (status && status >= SystemStatusCodes.SYSTEM_STATUS_UPLOADING) {
message = LL.WAIT_FIRMWARE();
} else if (status === SystemStatusCodes.SYSTEM_STATUS_PENDING_RESTART) {
message = LL.APPLICATION_RESTARTING();
} else if (status === SystemStatusCodes.SYSTEM_STATUS_NORMAL) {
message = LL.RESTARTING_PRE();
} else if (status === SystemStatusCodes.SYSTEM_STATUS_ERROR_UPLOAD) {
message = 'Upload Failed';
} else {
message = LL.RESTARTING_POST();
}
const message =
status && status >= SystemStatusCodes.SYSTEM_STATUS_UPLOADING
? LL.WAIT_FIRMWARE()
: status === SystemStatusCodes.SYSTEM_STATUS_PENDING_RESTART
? LL.APPLICATION_RESTARTING()
: status === SystemStatusCodes.SYSTEM_STATUS_NORMAL
? LL.RESTARTING_PRE()
: status === SystemStatusCodes.SYSTEM_STATUS_ERROR_UPLOAD
? 'Upload Failed'
: LL.RESTARTING_POST();
const uploading =
status !== undefined && status >= SystemStatusCodes.SYSTEM_STATUS_UPLOADING;
@@ -103,8 +101,8 @@ const SystemMonitor = () => {
height: '100vh',
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
backdropFilter: 'blur(8px)'
justifyContent: 'center'
// backdropFilter: 'blur(8px)'
}}
>
<Box

View File

@@ -868,7 +868,7 @@ const Version = () => {
installPartitionFirmware
]);
return <SectionContent>{restarting ? <SystemMonitor /> : content}</SectionContent>;
return restarting ? <SystemMonitor /> : <SectionContent>{content}</SectionContent>;
};
export default memo(Version);

View File

@@ -1,9 +1,9 @@
import { memo } from 'react';
import { type FC, type PropsWithChildren, memo } from 'react';
import { Box } from '@mui/material';
import type { BoxProps } from '@mui/material';
const ButtonRow = memo<BoxProps>(({ children, ...rest }) => (
const ButtonRow: FC<PropsWithChildren<BoxProps>> = memo(({ children, ...rest }) => (
<Box
sx={{
'& button, & a, & .MuiCard-root': {

View File

@@ -1,4 +1,4 @@
import { type FC, memo, useMemo } from 'react';
import { type FC, type PropsWithChildren, memo, useMemo } from 'react';
import CheckCircleOutlineOutlinedIcon from '@mui/icons-material/CheckCircleOutlineOutlined';
import ErrorIcon from '@mui/icons-material/Error';
@@ -12,6 +12,7 @@ type MessageBoxLevel = 'warning' | 'success' | 'info' | 'error';
export interface MessageBoxProps extends BoxProps {
level: MessageBoxLevel;
message?: string;
children?: React.ReactNode;
}
const LEVEL_ICONS: Record<MessageBoxLevel, React.ComponentType<SvgIconProps>> = {
@@ -28,7 +29,7 @@ const LEVEL_PALETTE_PATHS: Record<MessageBoxLevel, string> = {
error: 'error.dark'
};
const MessageBox: FC<MessageBoxProps> = ({
const MessageBox: FC<PropsWithChildren<MessageBoxProps>> = ({
level,
message,
sx,

View File

@@ -39,9 +39,8 @@ const LayoutMenuItemComponent = ({
left: 0,
top: 0,
bottom: 0,
width: selected ? '4px' : '0px',
width: selected ? '3px' : '0px',
backgroundColor: '#90caf9',
borderRadius: '0 2px 2px 0',
transition: 'width 0.05s cubic-bezier(0.55, 0.085, 0.68, 0.53)'
}
}),

View File

@@ -219,6 +219,7 @@ const cz: Translation = {
MQTT_PUBLISH_TEXT_3: 'Povolit MQTT Discovery',
MQTT_PUBLISH_TEXT_4: 'Prefix pro Discovery témata',
MQTT_PUBLISH_TEXT_5: 'Typ Discovery',
MQTT_INPUT_NUMBER_FORMAT: 'Formát čísla',
MQTT_PUBLISH_INTERVALS: 'Intervaly publikování',
MQTT_INT_BOILER: 'Kotle a tepelná čerpadla',
MQTT_INT_THERMOSTATS: 'Termostaty',

View File

@@ -219,6 +219,7 @@ const de: Translation = {
MQTT_PUBLISH_TEXT_3: 'Aktiviere `MQTT Discovery`',
MQTT_PUBLISH_TEXT_4: 'Prefix für die `Discovery`-Topics',
MQTT_PUBLISH_TEXT_5: 'Discovery Typ',
MQTT_INPUT_NUMBER_FORMAT: 'Zahlenformat',
MQTT_PUBLISH_INTERVALS: 'Veröffentlichungs-Intervalle',
MQTT_INT_BOILER: 'Boiler und Wärmepumpen',
MQTT_INT_THERMOSTATS: 'Thermostate',

View File

@@ -219,6 +219,7 @@ const en: Translation = {
MQTT_PUBLISH_TEXT_3: 'Enable MQTT Discovery',
MQTT_PUBLISH_TEXT_4: 'Prefix for the Discovery topics',
MQTT_PUBLISH_TEXT_5: 'Discovery type',
MQTT_INPUT_NUMBER_FORMAT: 'Input Number Fomat',
MQTT_PUBLISH_INTERVALS: 'Publish Intervals',
MQTT_INT_BOILER: 'Boilers and Heat Pumps',
MQTT_INT_THERMOSTATS: 'Thermostats',

View File

@@ -219,6 +219,7 @@ const fr: Translation = {
MQTT_PUBLISH_TEXT_3: 'Activer la découverte MQTT',
MQTT_PUBLISH_TEXT_4: 'Préfixe pour les topics découverte',
MQTT_PUBLISH_TEXT_5: 'Type de découverte',
MQTT_INPUT_NUMBER_FORMAT: 'Format des nombres',
MQTT_PUBLISH_INTERVALS: 'Intervalles de publication',
MQTT_INT_BOILER: 'Chaudières et pompes à chaleur',
MQTT_INT_THERMOSTATS: 'Thermostats',

View File

@@ -219,6 +219,7 @@ const it: Translation = {
MQTT_PUBLISH_TEXT_3: 'Abilita rilevamento MQTT (Home Assistant, Domoticz)',
MQTT_PUBLISH_TEXT_4: 'Prefisso per gli argomenti di scoperta',
MQTT_PUBLISH_TEXT_5: 'Discovery type',
MQTT_INPUT_NUMBER_FORMAT: 'Formato numero di input',
MQTT_PUBLISH_INTERVALS: 'Pubblica intervalli',
MQTT_INT_BOILER: 'Caldaie e Pompe di Calore',
MQTT_INT_THERMOSTATS: 'Termostati',

View File

@@ -27,7 +27,7 @@ const nl: Translation = {
REFRESH: 'Ververs',
EXPORT: 'Export',
FAVORITES: "Favorieten",
DEVICE_DETAILS: 'Device Gegevens',
DEVICE_DETAILS: 'Apparaat Gegevens',
ID_OF: '{0} ID',
DEVICE: 'Apparaat',
PRODUCT: 'Product',
@@ -65,7 +65,7 @@ const nl: Translation = {
TEMP_SENSOR: 'Temperatuur sensor',
TEMP_SENSORS: 'Temperatuur Sensoren',
WRITE_CMD_SENT: 'Schrijf commando gestuurd',
EMS_BUS_WARNING: 'EMS bus niet gevonden. Als deze waarschuwing blijft staan na een paar seconden dan loop de instellingen na en in het bijzonder het apparaat type profiel na.',
EMS_BUS_WARNING: 'EMS bus niet gevonden. Als deze waarschuwing blijft staan na een paar seconden loop dan de instellingen na en in het bijzonder het apparaat type profiel.',
EMS_BUS_SCANNING: 'Scannen naar EMS apparaten...',
CONNECTED: 'Verbonden',
TX_ISSUES: 'Tx bus probleem. Probeer een andere Tx verzendmodus',
@@ -75,7 +75,7 @@ const nl: Translation = {
EMS_DEVICE: 'EMS Apparaat',
SUCCESS: 'SUCCESS',
FAIL: 'MISLUKT',
QUALITY: 'QUALITEIT',
QUALITY: 'KWALITEIT',
SCAN: 'Scan',
STATUS_NAMES: [
'EMS Telegrammen ontvangen (Rx)',
@@ -120,7 +120,7 @@ const nl: Translation = {
ENABLE_SHOWER_TIMER: 'Activeer Douche Timer (tijdmeting)',
ENABLE_SHOWER_ALERT: 'Activeer Douchemelding',
TRIGGER_TIME: 'Trigger tijd',
COLD_SHOT_DURATION: 'Tijd Shot koud water',
COLD_SHOT_DURATION: 'Lengte koud water puls',
FORMATTING_OPTIONS: 'Formatteringsopties',
BOOLEAN_FORMAT_DASHBOARD: 'Boolean formaat web',
BOOLEAN_FORMAT_API: 'Boolean formaat API/MQTT',
@@ -143,7 +143,7 @@ const nl: Translation = {
CUSTOMIZATIONS_FULL: 'Te veel entiteiten geselecteerd. Sla op in delen aub',
CUSTOMIZATIONS_SAVED: 'Custom aanpassingen opgeslagen',
CUSTOMIZATIONS_HELP_1: 'Selecteer een apparaat en pas de entiteiten aan door middel van de opties',
CUSTOMIZATIONS_HELP_2: 'Markeer as favoriet',
CUSTOMIZATIONS_HELP_2: 'Markeer als favoriet',
CUSTOMIZATIONS_HELP_3: 'Zet schrijfacties uit',
CUSTOMIZATIONS_HELP_4: 'Uitsluiten van MQTT en API',
CUSTOMIZATIONS_HELP_5: 'verbergen voor apparaten',
@@ -191,7 +191,7 @@ const nl: Translation = {
UPLOAD_DROP_TEXT: 'Sleep en firmware .bin bestand hierheen of klik hier',
ERROR: 'Onverwachte fout, probeer opnieuw',
TIME_SET: 'Tijd ingesteld',
MANAGE_USERS: 'Beheer Gebruikers',
MANAGE_USERS: 'Gebruikersbeheer',
IS_ADMIN: 'is Admin',
USER_WARNING: 'U dient tenminste 1 admin gebruiker te configureren',
ADD: 'Toevoegen',
@@ -200,7 +200,7 @@ const nl: Translation = {
GENERATING_TOKEN: 'Token aan het genereren',
USER: 'Gebruiker',
MODIFY: 'Aanpassen',
SU_TEXT: 'Het su (super user) wachtwoord wordt gebruikt om authorisatie tokens te signeren en ook om admin privileges te activeren in de console.',
SU_TEXT: 'Het su (super user) wachtwoord wordt gebruikt om authorisatie tokens te ondertekenen en ook om admin privileges te activeren in de console.',
NOT_ENABLED: 'Niet geactiveerd',
ERRORS_OF: '{0} Foutmeldingen',
DISCONNECT_REASON: 'Verbinding verbroken vanwege',
@@ -219,6 +219,7 @@ const nl: Translation = {
MQTT_PUBLISH_TEXT_3: 'Activeer MQTT Discovery',
MQTT_PUBLISH_TEXT_4: 'Prefix voor de Discovery topics',
MQTT_PUBLISH_TEXT_5: 'Discovery type',
MQTT_INPUT_NUMBER_FORMAT: 'Getalformaat',
MQTT_PUBLISH_INTERVALS: 'Publicatie intervallen',
MQTT_INT_BOILER: 'CV ketels en warmtepompen',
MQTT_INT_THERMOSTATS: 'Thermostaten',
@@ -359,4 +360,4 @@ const nl: Translation = {
STORED_VERSIONS: 'Opgeslagen versies'
};
export default nl;
export default nl;

View File

@@ -219,6 +219,7 @@ const no: Translation = {
MQTT_PUBLISH_TEXT_3: 'Aktiver MQTT Discovery',
MQTT_PUBLISH_TEXT_4: 'Prefiks for Discovery topics',
MQTT_PUBLISH_TEXT_5: 'Discovery type',
MQTT_INPUT_NUMBER_FORMAT: 'Nummerformat',
MQTT_PUBLISH_INTERVALS: 'Publiseringsintervall',
MQTT_INT_BOILER: 'Fyr/Varmepumpe',
MQTT_INT_THERMOSTATS: 'Termostat',

View File

@@ -219,6 +219,7 @@ const pl: BaseTranslation = {
MQTT_PUBLISH_TEXT_3: 'Włącz opcję "MQTT discovery"',
MQTT_PUBLISH_TEXT_4: 'Prefiks dla "MQTT discovery"',
MQTT_PUBLISH_TEXT_5: 'Typ "MQTT discovery"',
MQTT_INPUT_NUMBER_FORMAT: 'Format liczby',
MQTT_PUBLISH_INTERVALS: 'Interwały publikowania',
MQTT_INT_BOILER: 'Kotły i pompy ciepła',
MQTT_INT_THERMOSTATS: 'Termostaty',

View File

@@ -219,6 +219,7 @@ const sk: Translation = {
MQTT_PUBLISH_TEXT_3: 'Povolenie zisťovania MQTT',
MQTT_PUBLISH_TEXT_4: 'Predpona tém Discovery',
MQTT_PUBLISH_TEXT_5: 'Typ zistenia',
MQTT_INPUT_NUMBER_FORMAT: 'Formát čísla',
MQTT_PUBLISH_INTERVALS: 'Intervaly zverejňovania',
MQTT_INT_BOILER: 'Kotly a tepelné čerpadlá',
MQTT_INT_THERMOSTATS: 'Termostaty',

View File

@@ -219,6 +219,7 @@ const sv: Translation = {
MQTT_PUBLISH_TEXT_3: 'Aktivera MQTT Discovery',
MQTT_PUBLISH_TEXT_4: 'Prefix för Discovery topics',
MQTT_PUBLISH_TEXT_5: 'Discoverytyp',
MQTT_INPUT_NUMBER_FORMAT: 'Nummerformat',
MQTT_PUBLISH_INTERVALS: 'Publiceringsintervall',
MQTT_INT_BOILER: 'Värmepump/panna',
MQTT_INT_THERMOSTATS: 'Termostater',

View File

@@ -219,6 +219,7 @@ const tr: Translation = {
MQTT_PUBLISH_TEXT_3: 'MQTT keşfi etkinleştir (Home Assistant, Domoticz)',
MQTT_PUBLISH_TEXT_4: 'Keşif konuları için ön ek',
MQTT_PUBLISH_TEXT_5: 'Domoticz Format',
MQTT_INPUT_NUMBER_FORMAT: 'Sayı Biçimi',
MQTT_PUBLISH_INTERVALS: 'Yayınlama aralıkları',
MQTT_INT_BOILER: 'Kazanlar ve Isı Pompaları',
MQTT_INT_THERMOSTATS: 'Termostatlar',

View File

@@ -49,4 +49,5 @@ export interface MqttSettingsType {
publish_single2cmd: boolean;
discovery_prefix: string;
discovery_type: number;
ha_number_mode: number;
}

View File

@@ -50,6 +50,7 @@ export interface SystemStatus {
free_psram?: number;
free_caps: number;
model: string;
board: string;
has_loader: boolean;
has_partition: boolean;
partitions: {

View File

@@ -23,6 +23,6 @@ export const saveFile = (
}, 100);
} catch (error) {
console.error('Failed to save file:', error);
throw new Error(`Unable to save file: ${filename}${extension}`);
throw new Error(`Unable to save file: ${filename}${extension}`, { cause: error });
}
};

View File

@@ -136,9 +136,16 @@ const createManualChunks = (detailed = false) => {
return 'vendor';
}
if (detailed) {
if (id.includes('components/')) return 'components';
if (id.includes('app/')) return 'app';
if (id.includes('utils/')) return 'utils';
// Group circularly dependent modules together to avoid circular chunk warnings
// components, app, and utils are tightly coupled, so combine them
if (
id.includes('components/') ||
id.includes('app/') ||
id.includes('utils/')
) {
return 'app';
}
// Keep api separate as it's typically more independent
if (id.includes('api/')) return 'api';
}
return undefined;

View File

@@ -148,9 +148,7 @@
#elif defined(ARDUINO_ARCH_ESP32)
#include <driver/rtc_io.h>
#include <soc/gpio_struct.h>
#if ESP_IDF_VERSION_MAJOR >= 5
#include "soc/gpio_periph.h"
#endif // ESP_IDF_VERSION_MAJOR >= 5
#define PIN_TO_BASEREG(pin) (0)
#define PIN_TO_BITMASK(pin) (pin)
#define IO_REG_TYPE uint32_t

View File

@@ -52,7 +52,7 @@ ModbusClientTCPasync::~ModbusClientTCPasync() {
}
}
// force close client
MTA_client.close(true);
MTA_client.close();
}
// optionally manually connect to modbus server. Otherwise connection will be made upon first request
@@ -79,7 +79,7 @@ void ModbusClientTCPasync::connect(IPAddress host, uint16_t port) {
// manually disconnect from modbus server. Connection will also auto close after idle time
void ModbusClientTCPasync::disconnect(bool force) {
LOG_D("disconnecting\n");
MTA_client.close(force);
MTA_client.close();
}
// Set timeout value

View File

@@ -253,7 +253,7 @@ void ModbusServerTCPasync::onClientConnect(AsyncClient* client) {
LOG_D("nr clients: %u\n", clients.size());
} else {
LOG_D("max number of clients reached, closing new\n");
client->close(true);
client->close();
delete client;
}
}

View File

@@ -12,7 +12,9 @@
// Include all library components
#include "esp32-psram/AllocatorPSRAM.h" // PSRAM-backed vector
#include "esp32-psram/VectorPSRAM.h" // PSRAM-backed vector
#include "esp32-psram/VectorHIMEM.h" // HIMEM-backed vector
#if CONFIG_IDF_TARGET_ESP32
#include "esp32-psram/VectorHIMEM.h" // HIMEM-backed vector (ESP32 only)
#endif
// #include "esp32-psram/InMemoryFile.h" // File interface using vectors
// #include "esp32-psram/PSRAM.h" // PSRAM file system
// #include "esp32-psram/HIMEM.h" // HIMEM file system

View File

@@ -1,5 +1,8 @@
#pragma once
// HIMEM is only available on original ESP32
#if CONFIG_IDF_TARGET_ESP32
#include <algorithm>
#include <limits>
#include <memory>
@@ -360,3 +363,5 @@ class HimemBlock {
};
} // namespace esp32_psram
#endif // CONFIG_IDF_TARGET_ESP32

View File

@@ -238,7 +238,9 @@ using RingBufferStreamPSRAM = RingBufferStream<VectorPSRAM<uint8_t>>;
/**
* @brief Type alias for a RingBufferStream that uses HIMEM-backed vector storage
*/
#if CONFIG_IDF_TARGET_ESP32
using RingBufferStreamHIMEM = RingBufferStream<VectorHIMEM<uint8_t>>;
#endif
/**
* @brief Type alias for a RingBufferStream that uses std::vector storage

View File

@@ -209,8 +209,10 @@ using TypedRingBufferRAM = TypedRingBuffer<T, std::vector<T>>;
/**
* @brief Type alias for a typed ring buffer that uses HIMEM-backed vector storage
*/
#if CONFIG_IDF_TARGET_ESP32
template<typename T>
using TypedRingBufferHIMEM = TypedRingBuffer<T, VectorHIMEM<T>>;
#endif
/**
* @brief Type alias for a typed ring buffer that uses PSRAM-backed vector storage

View File

@@ -1,5 +1,8 @@
#pragma once
// HIMEM is only available on original ESP32
#if CONFIG_IDF_TARGET_ESP32
#include "HimemBlock.h"
namespace esp32_psram {
@@ -526,4 +529,6 @@ void swap(VectorHIMEM<T>& lhs, VectorHIMEM<T>& rhs) noexcept {
lhs.swap(rhs);
}
} // namespace esp32_psram
} // namespace esp32_psram
#endif // CONFIG_IDF_TARGET_ESP32

View File

@@ -66,14 +66,10 @@ the LICENSE file.
#endif
#if EMC_USE_MEMPOOL
#ifndef EMC_NUM_POOL_ELEMENTS
#define EMC_NUM_POOL_ELEMENTS 32
#endif
#ifndef EMC_SIZE_POOL_ELEMENTS
#define EMC_SIZE_POOL_ELEMENTS 128
#endif
#ifndef EMC_NUM_POOL_ELEMENTS
#define EMC_NUM_POOL_ELEMENTS 32
#endif
#ifndef EMC_SIZE_POOL_ELEMENTS
#define EMC_SIZE_POOL_ELEMENTS 128
#endif
#ifndef TASMOTA_SDK
#define EMC_CLIENT_SECURE
#endif

View File

@@ -321,7 +321,14 @@ bool Packet::_allocate(size_t remainingLength, bool check) {
#if EMC_USE_MEMPOOL
_data = reinterpret_cast<uint8_t*>(_memPool.malloc(_size));
#else
_data = reinterpret_cast<uint8_t*>(malloc(_size));
#ifdef EMSESP_STANDALONE
_data = reinterpret_cast<uint8_t*>(malloc(_size));
#else
_data = reinterpret_cast<uint8_t*>(ps_malloc(_size));
if (!_data) {
_data = reinterpret_cast<uint8_t*>(malloc(_size));
}
#endif
#endif
if (!_data) {
_size = 0;

View File

@@ -42,7 +42,7 @@ int ClientAsync::read(uint8_t* buf, size_t size) {
}
void ClientAsync::stop() {
client.close(false);
client.close();
}
bool ClientAsync::connected() {

View File

@@ -6,66 +6,157 @@ For a copy, see <https://opensource.org/licenses/MIT> or
the LICENSE file.
*/
#if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
#ifndef NO_TLS_SUPPORT
#include "ClientSecureSync.h"
#include <lwip/sockets.h> // socket options
#include "mbedtls_ssl.h" // triggers compilation of mbedtls SSL module (stripped from Tasmota libmbedtls.a)
#include <cstring>
#include <lwip/sockets.h>
#include <fcntl.h>
namespace espMqttClientInternals {
ClientSecureSync::ClientSecureSync()
: client() {
// empty
: _tls(nullptr)
, _cfg{}
, _connected(false) {
}
ClientSecureSync::~ClientSecureSync() {
stop();
}
bool ClientSecureSync::connect(IPAddress ip, uint16_t port) {
bool ret = client.connect(ip, port); // implicit conversion of return code int --> bool
if (ret) {
#if defined(ARDUINO_ARCH_ESP8266)
client.setNoDelay(true);
#elif defined(ARDUINO_ARCH_ESP32)
// Set TCP option directly to bypass lack of working setNoDelay for WiFiClientSecure
int val = true;
client.setSocketOption(IPPROTO_TCP, TCP_NODELAY, &val, sizeof(int));
#endif
}
return ret;
char host[16];
sprintf(host, "%u.%u.%u.%u", ip[0], ip[1], ip[2], ip[3]);
return connect(host, port);
}
bool ClientSecureSync::connect(const char* host, uint16_t port) {
bool ret = client.connect(host, port); // implicit conversion of return code int --> bool
if (ret) {
#if defined(ARDUINO_ARCH_ESP8266)
client.setNoDelay(true);
#elif defined(ARDUINO_ARCH_ESP32)
// Set TCP option directly to bypass lack of working setNoDelay for WiFiClientSecure
int val = true;
client.setSocketOption(IPPROTO_TCP, TCP_NODELAY, &val, sizeof(int));
#endif
}
return ret;
bool ClientSecureSync::connect(const char * host, uint16_t port) {
stop(); // clean up any previous connection
_tls = esp_tls_init();
if (!_tls) {
return false;
}
if (esp_tls_conn_new_sync(host, strlen(host), port, &_cfg, _tls) <= 0) {
esp_tls_conn_destroy(_tls);
_tls = nullptr;
return false;
}
_connected = true;
// Set TCP_NODELAY and non-blocking mode on the underlying socket
int fd = -1;
if (esp_tls_get_conn_sockfd(_tls, &fd) == ESP_OK && fd >= 0) {
int val = 1;
setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val));
// Make socket non-blocking so reads don't stall the MQTT event loop
int flags = fcntl(fd, F_GETFL, 0);
if (flags >= 0) {
fcntl(fd, F_SETFL, flags | O_NONBLOCK);
}
}
return true;
}
size_t ClientSecureSync::write(const uint8_t* buf, size_t size) {
return client.write(buf, size);
size_t ClientSecureSync::write(const uint8_t * buf, size_t size) {
if (!_tls || !_connected) {
return 0;
}
// Write all data, retrying on WANT_WRITE (non-blocking socket)
size_t written = 0;
while (written < size) {
int ret = esp_tls_conn_write(_tls, buf + written, size - written);
if (ret > 0) {
written += ret;
} else if (ret == ESP_TLS_ERR_SSL_WANT_WRITE || ret == ESP_TLS_ERR_SSL_WANT_READ) {
continue; // retry
} else {
_connected = false;
break;
}
}
return written;
}
int ClientSecureSync::read(uint8_t* buf, size_t size) {
return client.read(buf, size);
int ClientSecureSync::read(uint8_t * buf, size_t size) {
if (!_tls || !_connected) {
return -1;
}
int ret = esp_tls_conn_read(_tls, buf, size);
if (ret > 0) {
return ret;
}
if (ret == ESP_TLS_ERR_SSL_WANT_READ || ret == ESP_TLS_ERR_SSL_WANT_WRITE) {
return -1; // no data available yet, still connected
}
// Connection closed or error
_connected = false;
return -1;
}
void ClientSecureSync::stop() {
client.stop();
if (_tls) {
esp_tls_conn_destroy(_tls);
_tls = nullptr;
}
_connected = false;
}
bool ClientSecureSync::connected() {
return client.connected();
return _connected && _tls != nullptr;
}
bool ClientSecureSync::disconnected() {
return !client.connected();
return !connected();
}
} // namespace espMqttClientInternals
void ClientSecureSync::setCACert(const char * rootCA) {
_cfg.cacert_pem_buf = reinterpret_cast<const unsigned char *>(rootCA);
_cfg.cacert_pem_bytes = strlen(rootCA) + 1;
}
void ClientSecureSync::setCertificate(const char * clientCert) {
_cfg.clientcert_pem_buf = reinterpret_cast<const unsigned char *>(clientCert);
_cfg.clientcert_pem_bytes = strlen(clientCert) + 1;
}
void ClientSecureSync::setPrivateKey(const char * privateKey) {
_cfg.clientkey_pem_buf = reinterpret_cast<const unsigned char *>(privateKey);
_cfg.clientkey_pem_bytes = strlen(privateKey) + 1;
}
void ClientSecureSync::setPreSharedKey(const char * pskIdent, const char * psKey) {
#if defined(CONFIG_ESP_TLS_PSK_VERIFICATION)
_psk.hint = pskIdent;
size_t key_len = strlen(psKey) / 2;
if (key_len > sizeof(_psk_key)) {
key_len = sizeof(_psk_key);
}
for (size_t i = 0; i < key_len; i++) {
sscanf(psKey + 2 * i, "%2hhx", &_psk_key[i]);
}
_psk.key = _psk_key;
_psk.key_size = key_len;
_cfg.psk_hint_key = &_psk;
#endif
}
void ClientSecureSync::setInsecure() {
_cfg.cacert_pem_buf = nullptr;
_cfg.cacert_pem_bytes = 0;
_cfg.crt_bundle_attach = nullptr;
_cfg.use_global_ca_store = false;
_cfg.skip_common_name = true;
}
} // namespace espMqttClientInternals
#endif

View File

@@ -8,15 +8,9 @@ the LICENSE file.
#pragma once
#if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
#ifndef NO_TLS_SUPPORT
// Added for EMS-ESP
#include "../Config.h"
#if defined(EMC_CLIENT_SECURE)
#include <WiFiClientSecure.h> // includes IPAddress
#else
#include <WiFiClient.h>
#endif
#include "esp_tls.h"
#include "Transport.h"
namespace espMqttClientInternals {
@@ -24,6 +18,7 @@ namespace espMqttClientInternals {
class ClientSecureSync : public Transport {
public:
ClientSecureSync();
~ClientSecureSync();
bool connect(IPAddress ip, uint16_t port) override;
bool connect(const char * host, uint16_t port) override;
size_t write(const uint8_t * buf, size_t size) override;
@@ -31,14 +26,24 @@ class ClientSecureSync : public Transport {
void stop() override;
bool connected() override;
bool disconnected() override;
// added for EMS-ESP
#if defined(EMC_CLIENT_SECURE)
WiFiClientSecure client;
#else
WiFiClient client;
// TLS configuration (call before connect)
void setCACert(const char * rootCA);
void setCertificate(const char * clientCert);
void setPrivateKey(const char * privateKey);
void setPreSharedKey(const char * pskIdent, const char * psKey);
void setInsecure();
private:
esp_tls_t * _tls;
esp_tls_cfg_t _cfg;
bool _connected;
#if defined(CONFIG_ESP_TLS_PSK_VERIFICATION)
psk_hint_key_t _psk;
unsigned char _psk_key[64];
#endif
};
} // namespace espMqttClientInternals
#endif
#endif

View File

@@ -78,36 +78,36 @@ espMqttClientSecure::espMqttClientSecure(uint8_t priority, uint8_t core)
}
espMqttClientSecure & espMqttClientSecure::setInsecure() {
#if defined(EMC_CLIENT_SECURE)
_client.client.setInsecure();
#ifndef NO_TLS_SUPPORT
_client.setInsecure();
#endif
return *this;
}
espMqttClientSecure & espMqttClientSecure::setCACert(const char * rootCA) {
#if defined(EMC_CLIENT_SECURE)
_client.client.setCACert(rootCA);
#ifndef NO_TLS_SUPPORT
_client.setCACert(rootCA);
#endif
return *this;
}
espMqttClientSecure & espMqttClientSecure::setCertificate(const char * clientCa) {
#if defined(EMC_CLIENT_SECURE)
_client.client.setCertificate(clientCa);
#ifndef NO_TLS_SUPPORT
_client.setCertificate(clientCa);
#endif
return *this;
}
espMqttClientSecure & espMqttClientSecure::setPrivateKey(const char * privateKey) {
#if defined(EMC_CLIENT_SECURE)
_client.client.setPrivateKey(privateKey);
#ifndef NO_TLS_SUPPORT
_client.setPrivateKey(privateKey);
#endif
return *this;
}
espMqttClientSecure & espMqttClientSecure::setPreSharedKey(const char * pskIdent, const char * psKey) {
#if defined(EMC_CLIENT_SECURE)
_client.client.setPreSharedKey(pskIdent, psKey);
#ifndef NO_TLS_SUPPORT
_client.setPreSharedKey(pskIdent, psKey);
#endif
return *this;
}

View File

@@ -0,0 +1,40 @@
Import("env")
import os
# The Tasmota platform builds with CONFIG_MBEDTLS_TLS_DISABLED=y, stripping the
# SSL/TLS module from libmbedtls.a. We compile it from source and re-enable the
# necessary config macros for a minimal TLS 1.2 client.
try:
platform = env.PioPlatform()
framework_dir = platform.get_package_dir("framework-arduinoespressif32")
mcu = env.BoardConfig().get("build.mcu", "esp32")
base = os.path.join(framework_dir, "tools", "esp32-arduino-libs", mcu, "include", "mbedtls")
paths = [
os.path.join(base, "mbedtls", "library"),
os.path.join(base, "mbedtls", "include"),
os.path.join(base, "port", "include"),
]
for p in paths:
if os.path.isdir(p):
env.Append(CPPPATH=[p])
# Re-enable mbedtls TLS 1.2 client support (disabled by Tasmota sdkconfig)
env.Append(CPPDEFINES=[
# Core TLS
"CONFIG_MBEDTLS_TLS_ENABLED",
"CONFIG_MBEDTLS_TLS_CLIENT",
"CONFIG_MBEDTLS_SSL_PROTO_TLS1_2",
("CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN", "16384"),
# Key exchange methods (at least one required)
"CONFIG_MBEDTLS_KEY_EXCHANGE_RSA",
"CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA",
"CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA",
"CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA",
"CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA",
# Optional but useful
"CONFIG_MBEDTLS_SSL_RENEGOTIATION",
"CONFIG_MBEDTLS_SSL_ALPN",
])
except Exception:
pass

View File

@@ -0,0 +1,10 @@
{
"name": "mbedtls_ssl",
"version": "3.6.5",
"description": "mbedtls SSL/TLS module compiled from source (Tasmota platform strips this from libmbedtls.a)",
"platforms": ["espressif32"],
"build": {
"extraScript": "configure.py",
"libArchive": false
}
}

View File

@@ -0,0 +1,684 @@
/**
* \file alignment.h
*
* \brief Utility code for dealing with unaligned memory accesses
*/
/*
* Copyright The Mbed TLS Contributors
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
*/
#ifndef MBEDTLS_LIBRARY_ALIGNMENT_H
#define MBEDTLS_LIBRARY_ALIGNMENT_H
#include <stdint.h>
#include <string.h>
#include <stdlib.h>
/*
* Define MBEDTLS_EFFICIENT_UNALIGNED_ACCESS for architectures where unaligned memory
* accesses are known to be efficient.
*
* All functions defined here will behave correctly regardless, but might be less
* efficient when this is not defined.
*/
#if defined(__ARM_FEATURE_UNALIGNED) \
|| defined(MBEDTLS_ARCH_IS_X86) || defined(MBEDTLS_ARCH_IS_X64) \
|| defined(MBEDTLS_PLATFORM_IS_WINDOWS_ON_ARM64)
/*
* __ARM_FEATURE_UNALIGNED is defined where appropriate by armcc, gcc 7, clang 9
* (and later versions) for Arm v7 and later; all x86 platforms should have
* efficient unaligned access.
*
* https://learn.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions?view=msvc-170#alignment
* specifies that on Windows-on-Arm64, unaligned access is safe (except for uncached
* device memory).
*/
#define MBEDTLS_EFFICIENT_UNALIGNED_ACCESS
#endif
#if defined(__IAR_SYSTEMS_ICC__) && \
(defined(MBEDTLS_ARCH_IS_ARM64) || defined(MBEDTLS_ARCH_IS_ARM32) \
|| defined(__ICCRX__) || defined(__ICCRL78__) || defined(__ICCRISCV__))
#pragma language=save
#pragma language=extended
#define MBEDTLS_POP_IAR_LANGUAGE_PRAGMA
/* IAR recommend this technique for accessing unaligned data in
* https://www.iar.com/knowledge/support/technical-notes/compiler/accessing-unaligned-data
* This results in a single load / store instruction (if unaligned access is supported).
* According to that document, this is only supported on certain architectures.
*/
#define UINT_UNALIGNED
typedef uint16_t __packed mbedtls_uint16_unaligned_t;
typedef uint32_t __packed mbedtls_uint32_unaligned_t;
typedef uint64_t __packed mbedtls_uint64_unaligned_t;
#elif defined(MBEDTLS_COMPILER_IS_GCC) && (MBEDTLS_GCC_VERSION >= 40504) && \
((MBEDTLS_GCC_VERSION < 60300) || (!defined(MBEDTLS_EFFICIENT_UNALIGNED_ACCESS)))
/*
* gcc may generate a branch to memcpy for calls like `memcpy(dest, src, 4)` rather than
* generating some LDR or LDRB instructions (similar for stores).
*
* This is architecture dependent: x86-64 seems fine even with old gcc; 32-bit Arm
* is affected. To keep it simple, we enable for all architectures.
*
* For versions of gcc < 5.4.0 this issue always happens.
* For gcc < 6.3.0, this issue happens at -O0
* For all versions, this issue happens iff unaligned access is not supported.
*
* For gcc 4.x, this implementation will generate byte-by-byte loads even if unaligned access is
* supported, which is correct but not optimal.
*
* For performance (and code size, in some cases), we want to avoid the branch and just generate
* some inline load/store instructions since the access is small and constant-size.
*
* The manual states:
* "The packed attribute specifies that a variable or structure field should have the smallest
* possible alignment—one byte for a variable"
* https://gcc.gnu.org/onlinedocs/gcc-4.5.4/gcc/Variable-Attributes.html
*
* Previous implementations used __attribute__((__aligned__(1)), but had issues with a gcc bug:
* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94662
*
* Tested with several versions of GCC from 4.5.0 up to 13.2.0
* We don't enable for older than 4.5.0 as this has not been tested.
*/
#define UINT_UNALIGNED_STRUCT
typedef struct {
uint16_t x;
} __attribute__((packed)) mbedtls_uint16_unaligned_t;
typedef struct {
uint32_t x;
} __attribute__((packed)) mbedtls_uint32_unaligned_t;
typedef struct {
uint64_t x;
} __attribute__((packed)) mbedtls_uint64_unaligned_t;
#endif
/*
* We try to force mbedtls_(get|put)_unaligned_uintXX to be always inline, because this results
* in code that is both smaller and faster. IAR and gcc both benefit from this when optimising
* for size.
*/
/**
* Read the unsigned 16 bits integer from the given address, which need not
* be aligned.
*
* \param p pointer to 2 bytes of data
* \return Data at the given address
*/
#if defined(__IAR_SYSTEMS_ICC__)
#pragma inline = forced
#elif defined(__GNUC__)
__attribute__((always_inline))
#endif
static inline uint16_t mbedtls_get_unaligned_uint16(const void *p)
{
uint16_t r;
#if defined(UINT_UNALIGNED)
mbedtls_uint16_unaligned_t *p16 = (mbedtls_uint16_unaligned_t *) p;
r = *p16;
#elif defined(UINT_UNALIGNED_STRUCT)
mbedtls_uint16_unaligned_t *p16 = (mbedtls_uint16_unaligned_t *) p;
r = p16->x;
#else
memcpy(&r, p, sizeof(r));
#endif
return r;
}
/**
* Write the unsigned 16 bits integer to the given address, which need not
* be aligned.
*
* \param p pointer to 2 bytes of data
* \param x data to write
*/
#if defined(__IAR_SYSTEMS_ICC__)
#pragma inline = forced
#elif defined(__GNUC__)
__attribute__((always_inline))
#endif
static inline void mbedtls_put_unaligned_uint16(void *p, uint16_t x)
{
#if defined(UINT_UNALIGNED)
mbedtls_uint16_unaligned_t *p16 = (mbedtls_uint16_unaligned_t *) p;
*p16 = x;
#elif defined(UINT_UNALIGNED_STRUCT)
mbedtls_uint16_unaligned_t *p16 = (mbedtls_uint16_unaligned_t *) p;
p16->x = x;
#else
memcpy(p, &x, sizeof(x));
#endif
}
/**
* Read the unsigned 32 bits integer from the given address, which need not
* be aligned.
*
* \param p pointer to 4 bytes of data
* \return Data at the given address
*/
#if defined(__IAR_SYSTEMS_ICC__)
#pragma inline = forced
#elif defined(__GNUC__)
__attribute__((always_inline))
#endif
static inline uint32_t mbedtls_get_unaligned_uint32(const void *p)
{
uint32_t r;
#if defined(UINT_UNALIGNED)
mbedtls_uint32_unaligned_t *p32 = (mbedtls_uint32_unaligned_t *) p;
r = *p32;
#elif defined(UINT_UNALIGNED_STRUCT)
mbedtls_uint32_unaligned_t *p32 = (mbedtls_uint32_unaligned_t *) p;
r = p32->x;
#else
memcpy(&r, p, sizeof(r));
#endif
return r;
}
/**
* Write the unsigned 32 bits integer to the given address, which need not
* be aligned.
*
* \param p pointer to 4 bytes of data
* \param x data to write
*/
#if defined(__IAR_SYSTEMS_ICC__)
#pragma inline = forced
#elif defined(__GNUC__)
__attribute__((always_inline))
#endif
static inline void mbedtls_put_unaligned_uint32(void *p, uint32_t x)
{
#if defined(UINT_UNALIGNED)
mbedtls_uint32_unaligned_t *p32 = (mbedtls_uint32_unaligned_t *) p;
*p32 = x;
#elif defined(UINT_UNALIGNED_STRUCT)
mbedtls_uint32_unaligned_t *p32 = (mbedtls_uint32_unaligned_t *) p;
p32->x = x;
#else
memcpy(p, &x, sizeof(x));
#endif
}
/**
* Read the unsigned 64 bits integer from the given address, which need not
* be aligned.
*
* \param p pointer to 8 bytes of data
* \return Data at the given address
*/
#if defined(__IAR_SYSTEMS_ICC__)
#pragma inline = forced
#elif defined(__GNUC__)
__attribute__((always_inline))
#endif
static inline uint64_t mbedtls_get_unaligned_uint64(const void *p)
{
uint64_t r;
#if defined(UINT_UNALIGNED)
mbedtls_uint64_unaligned_t *p64 = (mbedtls_uint64_unaligned_t *) p;
r = *p64;
#elif defined(UINT_UNALIGNED_STRUCT)
mbedtls_uint64_unaligned_t *p64 = (mbedtls_uint64_unaligned_t *) p;
r = p64->x;
#else
memcpy(&r, p, sizeof(r));
#endif
return r;
}
/**
* Write the unsigned 64 bits integer to the given address, which need not
* be aligned.
*
* \param p pointer to 8 bytes of data
* \param x data to write
*/
#if defined(__IAR_SYSTEMS_ICC__)
#pragma inline = forced
#elif defined(__GNUC__)
__attribute__((always_inline))
#endif
static inline void mbedtls_put_unaligned_uint64(void *p, uint64_t x)
{
#if defined(UINT_UNALIGNED)
mbedtls_uint64_unaligned_t *p64 = (mbedtls_uint64_unaligned_t *) p;
*p64 = x;
#elif defined(UINT_UNALIGNED_STRUCT)
mbedtls_uint64_unaligned_t *p64 = (mbedtls_uint64_unaligned_t *) p;
p64->x = x;
#else
memcpy(p, &x, sizeof(x));
#endif
}
#if defined(MBEDTLS_POP_IAR_LANGUAGE_PRAGMA)
#pragma language=restore
#endif
/** Byte Reading Macros
*
* Given a multi-byte integer \p x, MBEDTLS_BYTE_n retrieves the n-th
* byte from x, where byte 0 is the least significant byte.
*/
#define MBEDTLS_BYTE_0(x) ((uint8_t) ((x) & 0xff))
#define MBEDTLS_BYTE_1(x) ((uint8_t) (((x) >> 8) & 0xff))
#define MBEDTLS_BYTE_2(x) ((uint8_t) (((x) >> 16) & 0xff))
#define MBEDTLS_BYTE_3(x) ((uint8_t) (((x) >> 24) & 0xff))
#define MBEDTLS_BYTE_4(x) ((uint8_t) (((x) >> 32) & 0xff))
#define MBEDTLS_BYTE_5(x) ((uint8_t) (((x) >> 40) & 0xff))
#define MBEDTLS_BYTE_6(x) ((uint8_t) (((x) >> 48) & 0xff))
#define MBEDTLS_BYTE_7(x) ((uint8_t) (((x) >> 56) & 0xff))
/*
* Detect GCC built-in byteswap routines
*/
#if defined(__GNUC__) && defined(__GNUC_PREREQ)
#if __GNUC_PREREQ(4, 8)
#define MBEDTLS_BSWAP16 __builtin_bswap16
#endif /* __GNUC_PREREQ(4,8) */
#if __GNUC_PREREQ(4, 3)
#define MBEDTLS_BSWAP32 __builtin_bswap32
#define MBEDTLS_BSWAP64 __builtin_bswap64
#endif /* __GNUC_PREREQ(4,3) */
#endif /* defined(__GNUC__) && defined(__GNUC_PREREQ) */
/*
* Detect Clang built-in byteswap routines
*/
#if defined(__clang__) && defined(__has_builtin)
#if __has_builtin(__builtin_bswap16) && !defined(MBEDTLS_BSWAP16)
#define MBEDTLS_BSWAP16 __builtin_bswap16
#endif /* __has_builtin(__builtin_bswap16) */
#if __has_builtin(__builtin_bswap32) && !defined(MBEDTLS_BSWAP32)
#define MBEDTLS_BSWAP32 __builtin_bswap32
#endif /* __has_builtin(__builtin_bswap32) */
#if __has_builtin(__builtin_bswap64) && !defined(MBEDTLS_BSWAP64)
#define MBEDTLS_BSWAP64 __builtin_bswap64
#endif /* __has_builtin(__builtin_bswap64) */
#endif /* defined(__clang__) && defined(__has_builtin) */
/*
* Detect MSVC built-in byteswap routines
*/
#if defined(_MSC_VER)
#if !defined(MBEDTLS_BSWAP16)
#define MBEDTLS_BSWAP16 _byteswap_ushort
#endif
#if !defined(MBEDTLS_BSWAP32)
#define MBEDTLS_BSWAP32 _byteswap_ulong
#endif
#if !defined(MBEDTLS_BSWAP64)
#define MBEDTLS_BSWAP64 _byteswap_uint64
#endif
#endif /* defined(_MSC_VER) */
/* Detect armcc built-in byteswap routine */
#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 410000) && !defined(MBEDTLS_BSWAP32)
#if defined(__ARM_ACLE) /* ARM Compiler 6 - earlier versions don't need a header */
#include <arm_acle.h>
#endif
#define MBEDTLS_BSWAP32 __rev
#endif
/* Detect IAR built-in byteswap routine */
#if defined(__IAR_SYSTEMS_ICC__)
#if defined(__ARM_ACLE)
#include <arm_acle.h>
#define MBEDTLS_BSWAP16(x) ((uint16_t) __rev16((uint32_t) (x)))
#define MBEDTLS_BSWAP32 __rev
#define MBEDTLS_BSWAP64 __revll
#endif
#endif
/*
* Where compiler built-ins are not present, fall back to C code that the
* compiler may be able to detect and transform into the relevant bswap or
* similar instruction.
*/
#if !defined(MBEDTLS_BSWAP16)
static inline uint16_t mbedtls_bswap16(uint16_t x)
{
return
(x & 0x00ff) << 8 |
(x & 0xff00) >> 8;
}
#define MBEDTLS_BSWAP16 mbedtls_bswap16
#endif /* !defined(MBEDTLS_BSWAP16) */
#if !defined(MBEDTLS_BSWAP32)
static inline uint32_t mbedtls_bswap32(uint32_t x)
{
return
(x & 0x000000ff) << 24 |
(x & 0x0000ff00) << 8 |
(x & 0x00ff0000) >> 8 |
(x & 0xff000000) >> 24;
}
#define MBEDTLS_BSWAP32 mbedtls_bswap32
#endif /* !defined(MBEDTLS_BSWAP32) */
#if !defined(MBEDTLS_BSWAP64)
static inline uint64_t mbedtls_bswap64(uint64_t x)
{
return
(x & 0x00000000000000ffULL) << 56 |
(x & 0x000000000000ff00ULL) << 40 |
(x & 0x0000000000ff0000ULL) << 24 |
(x & 0x00000000ff000000ULL) << 8 |
(x & 0x000000ff00000000ULL) >> 8 |
(x & 0x0000ff0000000000ULL) >> 24 |
(x & 0x00ff000000000000ULL) >> 40 |
(x & 0xff00000000000000ULL) >> 56;
}
#define MBEDTLS_BSWAP64 mbedtls_bswap64
#endif /* !defined(MBEDTLS_BSWAP64) */
#if !defined(__BYTE_ORDER__)
#if defined(__LITTLE_ENDIAN__)
/* IAR defines __xxx_ENDIAN__, but not __BYTE_ORDER__ */
#define MBEDTLS_IS_BIG_ENDIAN 0
#elif defined(__BIG_ENDIAN__)
#define MBEDTLS_IS_BIG_ENDIAN 1
#else
static const uint16_t mbedtls_byte_order_detector = { 0x100 };
#define MBEDTLS_IS_BIG_ENDIAN (*((unsigned char *) (&mbedtls_byte_order_detector)) == 0x01)
#endif
#else
#if (__BYTE_ORDER__) == (__ORDER_BIG_ENDIAN__)
#define MBEDTLS_IS_BIG_ENDIAN 1
#else
#define MBEDTLS_IS_BIG_ENDIAN 0
#endif
#endif /* !defined(__BYTE_ORDER__) */
/**
* Get the unsigned 32 bits integer corresponding to four bytes in
* big-endian order (MSB first).
*
* \param data Base address of the memory to get the four bytes from.
* \param offset Offset from \p data of the first and most significant
* byte of the four bytes to build the 32 bits unsigned
* integer from.
*/
#define MBEDTLS_GET_UINT32_BE(data, offset) \
((MBEDTLS_IS_BIG_ENDIAN) \
? mbedtls_get_unaligned_uint32((data) + (offset)) \
: MBEDTLS_BSWAP32(mbedtls_get_unaligned_uint32((data) + (offset))) \
)
/**
* Put in memory a 32 bits unsigned integer in big-endian order.
*
* \param n 32 bits unsigned integer to put in memory.
* \param data Base address of the memory where to put the 32
* bits unsigned integer in.
* \param offset Offset from \p data where to put the most significant
* byte of the 32 bits unsigned integer \p n.
*/
#define MBEDTLS_PUT_UINT32_BE(n, data, offset) \
{ \
if (MBEDTLS_IS_BIG_ENDIAN) \
{ \
mbedtls_put_unaligned_uint32((data) + (offset), (uint32_t) (n)); \
} \
else \
{ \
mbedtls_put_unaligned_uint32((data) + (offset), MBEDTLS_BSWAP32((uint32_t) (n))); \
} \
}
/**
* Get the unsigned 32 bits integer corresponding to four bytes in
* little-endian order (LSB first).
*
* \param data Base address of the memory to get the four bytes from.
* \param offset Offset from \p data of the first and least significant
* byte of the four bytes to build the 32 bits unsigned
* integer from.
*/
#define MBEDTLS_GET_UINT32_LE(data, offset) \
((MBEDTLS_IS_BIG_ENDIAN) \
? MBEDTLS_BSWAP32(mbedtls_get_unaligned_uint32((data) + (offset))) \
: mbedtls_get_unaligned_uint32((data) + (offset)) \
)
/**
* Put in memory a 32 bits unsigned integer in little-endian order.
*
* \param n 32 bits unsigned integer to put in memory.
* \param data Base address of the memory where to put the 32
* bits unsigned integer in.
* \param offset Offset from \p data where to put the least significant
* byte of the 32 bits unsigned integer \p n.
*/
#define MBEDTLS_PUT_UINT32_LE(n, data, offset) \
{ \
if (MBEDTLS_IS_BIG_ENDIAN) \
{ \
mbedtls_put_unaligned_uint32((data) + (offset), MBEDTLS_BSWAP32((uint32_t) (n))); \
} \
else \
{ \
mbedtls_put_unaligned_uint32((data) + (offset), ((uint32_t) (n))); \
} \
}
/**
* Get the unsigned 16 bits integer corresponding to two bytes in
* little-endian order (LSB first).
*
* \param data Base address of the memory to get the two bytes from.
* \param offset Offset from \p data of the first and least significant
* byte of the two bytes to build the 16 bits unsigned
* integer from.
*/
#define MBEDTLS_GET_UINT16_LE(data, offset) \
((MBEDTLS_IS_BIG_ENDIAN) \
? MBEDTLS_BSWAP16(mbedtls_get_unaligned_uint16((data) + (offset))) \
: mbedtls_get_unaligned_uint16((data) + (offset)) \
)
/**
* Put in memory a 16 bits unsigned integer in little-endian order.
*
* \param n 16 bits unsigned integer to put in memory.
* \param data Base address of the memory where to put the 16
* bits unsigned integer in.
* \param offset Offset from \p data where to put the least significant
* byte of the 16 bits unsigned integer \p n.
*/
#define MBEDTLS_PUT_UINT16_LE(n, data, offset) \
{ \
if (MBEDTLS_IS_BIG_ENDIAN) \
{ \
mbedtls_put_unaligned_uint16((data) + (offset), MBEDTLS_BSWAP16((uint16_t) (n))); \
} \
else \
{ \
mbedtls_put_unaligned_uint16((data) + (offset), (uint16_t) (n)); \
} \
}
/**
* Get the unsigned 16 bits integer corresponding to two bytes in
* big-endian order (MSB first).
*
* \param data Base address of the memory to get the two bytes from.
* \param offset Offset from \p data of the first and most significant
* byte of the two bytes to build the 16 bits unsigned
* integer from.
*/
#define MBEDTLS_GET_UINT16_BE(data, offset) \
((MBEDTLS_IS_BIG_ENDIAN) \
? mbedtls_get_unaligned_uint16((data) + (offset)) \
: MBEDTLS_BSWAP16(mbedtls_get_unaligned_uint16((data) + (offset))) \
)
/**
* Put in memory a 16 bits unsigned integer in big-endian order.
*
* \param n 16 bits unsigned integer to put in memory.
* \param data Base address of the memory where to put the 16
* bits unsigned integer in.
* \param offset Offset from \p data where to put the most significant
* byte of the 16 bits unsigned integer \p n.
*/
#define MBEDTLS_PUT_UINT16_BE(n, data, offset) \
{ \
if (MBEDTLS_IS_BIG_ENDIAN) \
{ \
mbedtls_put_unaligned_uint16((data) + (offset), (uint16_t) (n)); \
} \
else \
{ \
mbedtls_put_unaligned_uint16((data) + (offset), MBEDTLS_BSWAP16((uint16_t) (n))); \
} \
}
/**
* Get the unsigned 24 bits integer corresponding to three bytes in
* big-endian order (MSB first).
*
* \param data Base address of the memory to get the three bytes from.
* \param offset Offset from \p data of the first and most significant
* byte of the three bytes to build the 24 bits unsigned
* integer from.
*/
#define MBEDTLS_GET_UINT24_BE(data, offset) \
( \
((uint32_t) (data)[(offset)] << 16) \
| ((uint32_t) (data)[(offset) + 1] << 8) \
| ((uint32_t) (data)[(offset) + 2]) \
)
/**
* Put in memory a 24 bits unsigned integer in big-endian order.
*
* \param n 24 bits unsigned integer to put in memory.
* \param data Base address of the memory where to put the 24
* bits unsigned integer in.
* \param offset Offset from \p data where to put the most significant
* byte of the 24 bits unsigned integer \p n.
*/
#define MBEDTLS_PUT_UINT24_BE(n, data, offset) \
{ \
(data)[(offset)] = MBEDTLS_BYTE_2(n); \
(data)[(offset) + 1] = MBEDTLS_BYTE_1(n); \
(data)[(offset) + 2] = MBEDTLS_BYTE_0(n); \
}
/**
* Get the unsigned 24 bits integer corresponding to three bytes in
* little-endian order (LSB first).
*
* \param data Base address of the memory to get the three bytes from.
* \param offset Offset from \p data of the first and least significant
* byte of the three bytes to build the 24 bits unsigned
* integer from.
*/
#define MBEDTLS_GET_UINT24_LE(data, offset) \
( \
((uint32_t) (data)[(offset)]) \
| ((uint32_t) (data)[(offset) + 1] << 8) \
| ((uint32_t) (data)[(offset) + 2] << 16) \
)
/**
* Put in memory a 24 bits unsigned integer in little-endian order.
*
* \param n 24 bits unsigned integer to put in memory.
* \param data Base address of the memory where to put the 24
* bits unsigned integer in.
* \param offset Offset from \p data where to put the least significant
* byte of the 24 bits unsigned integer \p n.
*/
#define MBEDTLS_PUT_UINT24_LE(n, data, offset) \
{ \
(data)[(offset)] = MBEDTLS_BYTE_0(n); \
(data)[(offset) + 1] = MBEDTLS_BYTE_1(n); \
(data)[(offset) + 2] = MBEDTLS_BYTE_2(n); \
}
/**
* Get the unsigned 64 bits integer corresponding to eight bytes in
* big-endian order (MSB first).
*
* \param data Base address of the memory to get the eight bytes from.
* \param offset Offset from \p data of the first and most significant
* byte of the eight bytes to build the 64 bits unsigned
* integer from.
*/
#define MBEDTLS_GET_UINT64_BE(data, offset) \
((MBEDTLS_IS_BIG_ENDIAN) \
? mbedtls_get_unaligned_uint64((data) + (offset)) \
: MBEDTLS_BSWAP64(mbedtls_get_unaligned_uint64((data) + (offset))) \
)
/**
* Put in memory a 64 bits unsigned integer in big-endian order.
*
* \param n 64 bits unsigned integer to put in memory.
* \param data Base address of the memory where to put the 64
* bits unsigned integer in.
* \param offset Offset from \p data where to put the most significant
* byte of the 64 bits unsigned integer \p n.
*/
#define MBEDTLS_PUT_UINT64_BE(n, data, offset) \
{ \
if (MBEDTLS_IS_BIG_ENDIAN) \
{ \
mbedtls_put_unaligned_uint64((data) + (offset), (uint64_t) (n)); \
} \
else \
{ \
mbedtls_put_unaligned_uint64((data) + (offset), MBEDTLS_BSWAP64((uint64_t) (n))); \
} \
}
/**
* Get the unsigned 64 bits integer corresponding to eight bytes in
* little-endian order (LSB first).
*
* \param data Base address of the memory to get the eight bytes from.
* \param offset Offset from \p data of the first and least significant
* byte of the eight bytes to build the 64 bits unsigned
* integer from.
*/
#define MBEDTLS_GET_UINT64_LE(data, offset) \
((MBEDTLS_IS_BIG_ENDIAN) \
? MBEDTLS_BSWAP64(mbedtls_get_unaligned_uint64((data) + (offset))) \
: mbedtls_get_unaligned_uint64((data) + (offset)) \
)
/**
* Put in memory a 64 bits unsigned integer in little-endian order.
*
* \param n 64 bits unsigned integer to put in memory.
* \param data Base address of the memory where to put the 64
* bits unsigned integer in.
* \param offset Offset from \p data where to put the least significant
* byte of the 64 bits unsigned integer \p n.
*/
#define MBEDTLS_PUT_UINT64_LE(n, data, offset) \
{ \
if (MBEDTLS_IS_BIG_ENDIAN) \
{ \
mbedtls_put_unaligned_uint64((data) + (offset), MBEDTLS_BSWAP64((uint64_t) (n))); \
} \
else \
{ \
mbedtls_put_unaligned_uint64((data) + (offset), (uint64_t) (n)); \
} \
}
#endif /* MBEDTLS_LIBRARY_ALIGNMENT_H */

View File

@@ -0,0 +1,453 @@
/**
* \file common.h
*
* \brief Utility macros for internal use in the library
*/
/*
* Copyright The Mbed TLS Contributors
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
*/
#ifndef MBEDTLS_LIBRARY_COMMON_H
#define MBEDTLS_LIBRARY_COMMON_H
#include "mbedtls/build_info.h"
#include "alignment.h"
#include <assert.h>
#include <stddef.h>
#include <stdint.h>
#include <stddef.h>
#if defined(__ARM_NEON)
#include <arm_neon.h>
#define MBEDTLS_HAVE_NEON_INTRINSICS
#elif defined(MBEDTLS_PLATFORM_IS_WINDOWS_ON_ARM64)
#include <arm64_neon.h>
#define MBEDTLS_HAVE_NEON_INTRINSICS
#endif
/** Helper to define a function as static except when building invasive tests.
*
* If a function is only used inside its own source file and should be
* declared `static` to allow the compiler to optimize for code size,
* but that function has unit tests, define it with
* ```
* MBEDTLS_STATIC_TESTABLE int mbedtls_foo(...) { ... }
* ```
* and declare it in a header in the `library/` directory with
* ```
* #if defined(MBEDTLS_TEST_HOOKS)
* int mbedtls_foo(...);
* #endif
* ```
*/
#if defined(MBEDTLS_TEST_HOOKS)
#define MBEDTLS_STATIC_TESTABLE
#else
#define MBEDTLS_STATIC_TESTABLE static
#endif
#if defined(MBEDTLS_TEST_HOOKS)
extern void (*mbedtls_test_hook_test_fail)(const char *test, int line, const char *file);
#define MBEDTLS_TEST_HOOK_TEST_ASSERT(TEST) \
do { \
if ((!(TEST)) && ((*mbedtls_test_hook_test_fail) != NULL)) \
{ \
(*mbedtls_test_hook_test_fail)( #TEST, __LINE__, __FILE__); \
} \
} while (0)
#else
#define MBEDTLS_TEST_HOOK_TEST_ASSERT(TEST)
#endif /* defined(MBEDTLS_TEST_HOOKS) */
/** \def ARRAY_LENGTH
* Return the number of elements of a static or stack array.
*
* \param array A value of array (not pointer) type.
*
* \return The number of elements of the array.
*/
/* A correct implementation of ARRAY_LENGTH, but which silently gives
* a nonsensical result if called with a pointer rather than an array. */
#define ARRAY_LENGTH_UNSAFE(array) \
(sizeof(array) / sizeof(*(array)))
#if defined(__GNUC__)
/* Test if arg and &(arg)[0] have the same type. This is true if arg is
* an array but not if it's a pointer. */
#define IS_ARRAY_NOT_POINTER(arg) \
(!__builtin_types_compatible_p(__typeof__(arg), \
__typeof__(&(arg)[0])))
/* A compile-time constant with the value 0. If `const_expr` is not a
* compile-time constant with a nonzero value, cause a compile-time error. */
#define STATIC_ASSERT_EXPR(const_expr) \
(0 && sizeof(struct { unsigned int STATIC_ASSERT : 1 - 2 * !(const_expr); }))
/* Return the scalar value `value` (possibly promoted). This is a compile-time
* constant if `value` is. `condition` must be a compile-time constant.
* If `condition` is false, arrange to cause a compile-time error. */
#define STATIC_ASSERT_THEN_RETURN(condition, value) \
(STATIC_ASSERT_EXPR(condition) ? 0 : (value))
#define ARRAY_LENGTH(array) \
(STATIC_ASSERT_THEN_RETURN(IS_ARRAY_NOT_POINTER(array), \
ARRAY_LENGTH_UNSAFE(array)))
#else
/* If we aren't sure the compiler supports our non-standard tricks,
* fall back to the unsafe implementation. */
#define ARRAY_LENGTH(array) ARRAY_LENGTH_UNSAFE(array)
#endif
/** Allow library to access its structs' private members.
*
* Although structs defined in header files are publicly available,
* their members are private and should not be accessed by the user.
*/
#define MBEDTLS_ALLOW_PRIVATE_ACCESS
/**
* \brief Securely zeroize a buffer then free it.
*
* Similar to making consecutive calls to
* \c mbedtls_platform_zeroize() and \c mbedtls_free(), but has
* code size savings, and potential for optimisation in the future.
*
* Guaranteed to be a no-op if \p buf is \c NULL and \p len is 0.
*
* \param buf Buffer to be zeroized then freed.
* \param len Length of the buffer in bytes
*/
void mbedtls_zeroize_and_free(void *buf, size_t len);
/** Return an offset into a buffer.
*
* This is just the addition of an offset to a pointer, except that this
* function also accepts an offset of 0 into a buffer whose pointer is null.
* (`p + n` has undefined behavior when `p` is null, even when `n == 0`.
* A null pointer is a valid buffer pointer when the size is 0, for example
* as the result of `malloc(0)` on some platforms.)
*
* \param p Pointer to a buffer of at least n bytes.
* This may be \p NULL if \p n is zero.
* \param n An offset in bytes.
* \return Pointer to offset \p n in the buffer \p p.
* Note that this is only a valid pointer if the size of the
* buffer is at least \p n + 1.
*/
static inline unsigned char *mbedtls_buffer_offset(
unsigned char *p, size_t n)
{
return p == NULL ? NULL : p + n;
}
/** Return an offset into a read-only buffer.
*
* Similar to mbedtls_buffer_offset(), but for const pointers.
*
* \param p Pointer to a buffer of at least n bytes.
* This may be \p NULL if \p n is zero.
* \param n An offset in bytes.
* \return Pointer to offset \p n in the buffer \p p.
* Note that this is only a valid pointer if the size of the
* buffer is at least \p n + 1.
*/
static inline const unsigned char *mbedtls_buffer_offset_const(
const unsigned char *p, size_t n)
{
return p == NULL ? NULL : p + n;
}
/* Always inline mbedtls_xor() for similar reasons as mbedtls_xor_no_simd(). */
#if defined(__IAR_SYSTEMS_ICC__)
#pragma inline = forced
#elif defined(__GNUC__)
__attribute__((always_inline))
#endif
/**
* Perform a fast block XOR operation, such that
* r[i] = a[i] ^ b[i] where 0 <= i < n
*
* \param r Pointer to result (buffer of at least \p n bytes). \p r
* may be equal to either \p a or \p b, but behaviour when
* it overlaps in other ways is undefined.
* \param a Pointer to input (buffer of at least \p n bytes)
* \param b Pointer to input (buffer of at least \p n bytes)
* \param n Number of bytes to process.
*
* \note Depending on the situation, it may be faster to use either mbedtls_xor() or
* mbedtls_xor_no_simd() (these are functionally equivalent).
* If the result is used immediately after the xor operation in non-SIMD code (e.g, in
* AES-CBC), there may be additional latency to transfer the data from SIMD to scalar
* registers, and in this case, mbedtls_xor_no_simd() may be faster. In other cases where
* the result is not used immediately (e.g., in AES-CTR), mbedtls_xor() may be faster.
* For targets without SIMD support, they will behave the same.
*/
static inline void mbedtls_xor(unsigned char *r,
const unsigned char *a,
const unsigned char *b,
size_t n)
{
size_t i = 0;
#if defined(MBEDTLS_EFFICIENT_UNALIGNED_ACCESS)
#if defined(MBEDTLS_HAVE_NEON_INTRINSICS) && \
(!(defined(MBEDTLS_COMPILER_IS_GCC) && MBEDTLS_GCC_VERSION < 70300))
/* Old GCC versions generate a warning here, so disable the NEON path for these compilers */
for (; (i + 16) <= n; i += 16) {
uint8x16_t v1 = vld1q_u8(a + i);
uint8x16_t v2 = vld1q_u8(b + i);
uint8x16_t x = veorq_u8(v1, v2);
vst1q_u8(r + i, x);
}
#if defined(__IAR_SYSTEMS_ICC__)
/* This if statement helps some compilers (e.g., IAR) optimise out the byte-by-byte tail case
* where n is a constant multiple of 16.
* For other compilers (e.g. recent gcc and clang) it makes no difference if n is a compile-time
* constant, and is a very small perf regression if n is not a compile-time constant. */
if (n % 16 == 0) {
return;
}
#endif
#elif defined(MBEDTLS_ARCH_IS_X64) || defined(MBEDTLS_ARCH_IS_ARM64)
/* This codepath probably only makes sense on architectures with 64-bit registers */
for (; (i + 8) <= n; i += 8) {
uint64_t x = mbedtls_get_unaligned_uint64(a + i) ^ mbedtls_get_unaligned_uint64(b + i);
mbedtls_put_unaligned_uint64(r + i, x);
}
#if defined(__IAR_SYSTEMS_ICC__)
if (n % 8 == 0) {
return;
}
#endif
#else
for (; (i + 4) <= n; i += 4) {
uint32_t x = mbedtls_get_unaligned_uint32(a + i) ^ mbedtls_get_unaligned_uint32(b + i);
mbedtls_put_unaligned_uint32(r + i, x);
}
#if defined(__IAR_SYSTEMS_ICC__)
if (n % 4 == 0) {
return;
}
#endif
#endif
#endif
for (; i < n; i++) {
r[i] = a[i] ^ b[i];
}
}
/* Always inline mbedtls_xor_no_simd() as we see significant perf regressions when it does not get
* inlined (e.g., observed about 3x perf difference in gcm_mult_largetable with gcc 7 - 12) */
#if defined(__IAR_SYSTEMS_ICC__)
#pragma inline = forced
#elif defined(__GNUC__)
__attribute__((always_inline))
#endif
/**
* Perform a fast block XOR operation, such that
* r[i] = a[i] ^ b[i] where 0 <= i < n
*
* In some situations, this can perform better than mbedtls_xor() (e.g., it's about 5%
* better in AES-CBC).
*
* \param r Pointer to result (buffer of at least \p n bytes). \p r
* may be equal to either \p a or \p b, but behaviour when
* it overlaps in other ways is undefined.
* \param a Pointer to input (buffer of at least \p n bytes)
* \param b Pointer to input (buffer of at least \p n bytes)
* \param n Number of bytes to process.
*
* \note Depending on the situation, it may be faster to use either mbedtls_xor() or
* mbedtls_xor_no_simd() (these are functionally equivalent).
* If the result is used immediately after the xor operation in non-SIMD code (e.g, in
* AES-CBC), there may be additional latency to transfer the data from SIMD to scalar
* registers, and in this case, mbedtls_xor_no_simd() may be faster. In other cases where
* the result is not used immediately (e.g., in AES-CTR), mbedtls_xor() may be faster.
* For targets without SIMD support, they will behave the same.
*/
static inline void mbedtls_xor_no_simd(unsigned char *r,
const unsigned char *a,
const unsigned char *b,
size_t n)
{
size_t i = 0;
#if defined(MBEDTLS_EFFICIENT_UNALIGNED_ACCESS)
#if defined(MBEDTLS_ARCH_IS_X64) || defined(MBEDTLS_ARCH_IS_ARM64)
/* This codepath probably only makes sense on architectures with 64-bit registers */
for (; (i + 8) <= n; i += 8) {
uint64_t x = mbedtls_get_unaligned_uint64(a + i) ^ mbedtls_get_unaligned_uint64(b + i);
mbedtls_put_unaligned_uint64(r + i, x);
}
#if defined(__IAR_SYSTEMS_ICC__)
/* This if statement helps some compilers (e.g., IAR) optimise out the byte-by-byte tail case
* where n is a constant multiple of 8.
* For other compilers (e.g. recent gcc and clang) it makes no difference if n is a compile-time
* constant, and is a very small perf regression if n is not a compile-time constant. */
if (n % 8 == 0) {
return;
}
#endif
#else
for (; (i + 4) <= n; i += 4) {
uint32_t x = mbedtls_get_unaligned_uint32(a + i) ^ mbedtls_get_unaligned_uint32(b + i);
mbedtls_put_unaligned_uint32(r + i, x);
}
#if defined(__IAR_SYSTEMS_ICC__)
if (n % 4 == 0) {
return;
}
#endif
#endif
#endif
for (; i < n; i++) {
r[i] = a[i] ^ b[i];
}
}
/* Fix MSVC C99 compatible issue
* MSVC support __func__ from visual studio 2015( 1900 )
* Use MSVC predefine macro to avoid name check fail.
*/
#if (defined(_MSC_VER) && (_MSC_VER <= 1900))
#define /*no-check-names*/ __func__ __FUNCTION__
#endif
/* Define `asm` for compilers which don't define it. */
/* *INDENT-OFF* */
#ifndef asm
#if defined(__IAR_SYSTEMS_ICC__)
#define asm __asm
#else
#define asm __asm__
#endif
#endif
/* *INDENT-ON* */
/*
* Define the constraint used for read-only pointer operands to aarch64 asm.
*
* This is normally the usual "r", but for aarch64_32 (aka ILP32,
* as found in watchos), "p" is required to avoid warnings from clang.
*
* Note that clang does not recognise '+p' or '=p', and armclang
* does not recognise 'p' at all. Therefore, to update a pointer from
* aarch64 assembly, it is necessary to use something like:
*
* uintptr_t uptr = (uintptr_t) ptr;
* asm( "ldr x4, [%x0], #8" ... : "+r" (uptr) : : )
* ptr = (void*) uptr;
*
* Note that the "x" in "%x0" is neccessary; writing "%0" will cause warnings.
*/
#if defined(__aarch64__) && defined(MBEDTLS_HAVE_ASM)
#if UINTPTR_MAX == 0xfffffffful
/* ILP32: Specify the pointer operand slightly differently, as per #7787. */
#define MBEDTLS_ASM_AARCH64_PTR_CONSTRAINT "p"
#elif UINTPTR_MAX == 0xfffffffffffffffful
/* Normal case (64-bit pointers): use "r" as the constraint for pointer operands to asm */
#define MBEDTLS_ASM_AARCH64_PTR_CONSTRAINT "r"
#else
#error "Unrecognised pointer size for aarch64"
#endif
#endif
/* Always provide a static assert macro, so it can be used unconditionally.
* It does nothing on systems where we don't know how to define a static assert.
*/
/* Can't use the C11-style `defined(static_assert)` on FreeBSD, since it
* defines static_assert even with -std=c99, but then complains about it.
*/
#if defined(static_assert) && !defined(__FreeBSD__)
#define MBEDTLS_STATIC_ASSERT(expr, msg) static_assert(expr, msg)
#else
/* Make sure `MBEDTLS_STATIC_ASSERT(expr, msg);` is valid both inside and
* outside a function. We choose a struct declaration, which can be repeated
* any number of times and does not need a matching definition. */
#define MBEDTLS_STATIC_ASSERT(expr, msg) \
struct ISO_C_does_not_allow_extra_semicolon_outside_of_a_function
#endif
#if defined(__has_builtin)
#define MBEDTLS_HAS_BUILTIN(x) __has_builtin(x)
#else
#define MBEDTLS_HAS_BUILTIN(x) 0
#endif
/* Define compiler branch hints */
#if MBEDTLS_HAS_BUILTIN(__builtin_expect)
#define MBEDTLS_LIKELY(x) __builtin_expect(!!(x), 1)
#define MBEDTLS_UNLIKELY(x) __builtin_expect(!!(x), 0)
#else
#define MBEDTLS_LIKELY(x) x
#define MBEDTLS_UNLIKELY(x) x
#endif
/* MBEDTLS_ASSUME may be used to provide additional information to the compiler
* which can result in smaller code-size. */
#if MBEDTLS_HAS_BUILTIN(__builtin_assume)
/* clang provides __builtin_assume */
#define MBEDTLS_ASSUME(x) __builtin_assume(x)
#elif MBEDTLS_HAS_BUILTIN(__builtin_unreachable)
/* gcc and IAR can use __builtin_unreachable */
#define MBEDTLS_ASSUME(x) do { if (!(x)) __builtin_unreachable(); } while (0)
#elif defined(_MSC_VER)
/* Supported by MSVC since VS 2005 */
#define MBEDTLS_ASSUME(x) __assume(x)
#else
#define MBEDTLS_ASSUME(x) do { } while (0)
#endif
/* For gcc -Os, override with -O2 for a given function.
*
* This will not affect behaviour for other optimisation settings, e.g. -O0.
*/
#if defined(MBEDTLS_COMPILER_IS_GCC) && defined(__OPTIMIZE_SIZE__)
#define MBEDTLS_OPTIMIZE_FOR_PERFORMANCE __attribute__((optimize("-O2")))
#else
#define MBEDTLS_OPTIMIZE_FOR_PERFORMANCE
#endif
/* Suppress compiler warnings for unused functions and variables. */
#if !defined(MBEDTLS_MAYBE_UNUSED) && defined(__has_attribute)
# if __has_attribute(unused)
# define MBEDTLS_MAYBE_UNUSED __attribute__((unused))
# endif
#endif
#if !defined(MBEDTLS_MAYBE_UNUSED) && defined(__GNUC__)
# define MBEDTLS_MAYBE_UNUSED __attribute__((unused))
#endif
#if !defined(MBEDTLS_MAYBE_UNUSED) && defined(__IAR_SYSTEMS_ICC__) && defined(__VER__)
/* IAR does support __attribute__((unused)), but only if the -e flag (extended language support)
* is given; the pragma always works.
* Unfortunately the pragma affects the rest of the file where it is used, but this is harmless.
* Check for version 5.2 or later - this pragma may be supported by earlier versions, but I wasn't
* able to find documentation).
*/
# if (__VER__ >= 5020000)
# define MBEDTLS_MAYBE_UNUSED _Pragma("diag_suppress=Pe177")
# endif
#endif
#if !defined(MBEDTLS_MAYBE_UNUSED) && defined(_MSC_VER)
# define MBEDTLS_MAYBE_UNUSED __pragma(warning(suppress:4189))
#endif
#if !defined(MBEDTLS_MAYBE_UNUSED)
# define MBEDTLS_MAYBE_UNUSED
#endif
/* GCC >= 15 has a warning 'unterminated-string-initialization' which complains if you initialize
* a string into an array without space for a terminating NULL character. In some places in the
* codebase this behaviour is intended, so we add the macro MBEDTLS_ATTRIBUTE_UNTERMINATED_STRING
* to suppress the warning in these places.
*/
#if defined(__has_attribute)
#if __has_attribute(nonstring)
#define MBEDTLS_HAS_ATTRIBUTE_NONSTRING
#endif /* __has_attribute(nonstring) */
#endif /* __has_attribute */
#if defined(MBEDTLS_HAS_ATTRIBUTE_NONSTRING)
#define MBEDTLS_ATTRIBUTE_UNTERMINATED_STRING __attribute__((nonstring))
#else
#define MBEDTLS_ATTRIBUTE_UNTERMINATED_STRING
#endif /* MBEDTLS_HAS_ATTRIBUTE_NONSTRING */
#endif /* MBEDTLS_LIBRARY_COMMON_H */

View File

@@ -0,0 +1,579 @@
/**
* Constant-time functions
*
* Copyright The Mbed TLS Contributors
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
*/
#ifndef MBEDTLS_CONSTANT_TIME_INTERNAL_H
#define MBEDTLS_CONSTANT_TIME_INTERNAL_H
#include <stdint.h>
#include <stddef.h>
#include "common.h"
#if defined(MBEDTLS_BIGNUM_C)
#include "mbedtls/bignum.h"
#endif
/* The constant-time interface provides various operations that are likely
* to result in constant-time code that does not branch or use conditional
* instructions for secret data (for secret pointers, this also applies to
* the data pointed to).
*
* It has three main parts:
*
* - boolean operations
* These are all named mbedtls_ct_<type>_<operation>.
* They operate over <type> and return mbedtls_ct_condition_t.
* All arguments are considered secret.
* example: bool x = y | z => x = mbedtls_ct_bool_or(y, z)
* example: bool x = y == z => x = mbedtls_ct_uint_eq(y, z)
*
* - conditional data selection
* These are all named mbedtls_ct_<type>_if and mbedtls_ct_<type>_if_else_0
* All arguments are considered secret.
* example: size_t a = x ? b : c => a = mbedtls_ct_size_if(x, b, c)
* example: unsigned a = x ? b : 0 => a = mbedtls_ct_uint_if_else_0(x, b)
*
* - block memory operations
* Only some arguments are considered secret, as documented for each
* function.
* example: if (x) memcpy(...) => mbedtls_ct_memcpy_if(x, ...)
*
* mbedtls_ct_condition_t must be treated as opaque and only created and
* manipulated via the functions in this header. The compiler should never
* be able to prove anything about its value at compile-time.
*
* mbedtls_ct_uint_t is an unsigned integer type over which constant time
* operations may be performed via the functions in this header. It is as big
* as the larger of size_t and mbedtls_mpi_uint, i.e. it is safe to cast
* to/from "unsigned int", "size_t", and "mbedtls_mpi_uint" (and any other
* not-larger integer types).
*
* For Arm (32-bit, 64-bit and Thumb), x86 and x86-64, assembly implementations
* are used to ensure that the generated code is constant time. For other
* architectures, it uses a plain C fallback designed to yield constant-time code
* (this has been observed to be constant-time on latest gcc, clang and MSVC
* as of May 2023).
*
* For readability, the static inline definitions are separated out into
* constant_time_impl.h.
*/
#if (SIZE_MAX > 0xffffffffffffffffULL)
/* Pointer size > 64-bit */
typedef size_t mbedtls_ct_condition_t;
typedef size_t mbedtls_ct_uint_t;
typedef ptrdiff_t mbedtls_ct_int_t;
#define MBEDTLS_CT_TRUE ((mbedtls_ct_condition_t) mbedtls_ct_compiler_opaque(SIZE_MAX))
#elif (SIZE_MAX > 0xffffffff) || defined(MBEDTLS_HAVE_INT64)
/* 32-bit < pointer size <= 64-bit, or 64-bit MPI */
typedef uint64_t mbedtls_ct_condition_t;
typedef uint64_t mbedtls_ct_uint_t;
typedef int64_t mbedtls_ct_int_t;
#define MBEDTLS_CT_SIZE_64
#define MBEDTLS_CT_TRUE ((mbedtls_ct_condition_t) mbedtls_ct_compiler_opaque(UINT64_MAX))
#else
/* Pointer size <= 32-bit, and no 64-bit MPIs */
typedef uint32_t mbedtls_ct_condition_t;
typedef uint32_t mbedtls_ct_uint_t;
typedef int32_t mbedtls_ct_int_t;
#define MBEDTLS_CT_SIZE_32
#define MBEDTLS_CT_TRUE ((mbedtls_ct_condition_t) mbedtls_ct_compiler_opaque(UINT32_MAX))
#endif
#define MBEDTLS_CT_FALSE ((mbedtls_ct_condition_t) mbedtls_ct_compiler_opaque(0))
/* ============================================================================
* Boolean operations
*/
/** Convert a number into a mbedtls_ct_condition_t.
*
* \param x Number to convert.
*
* \return MBEDTLS_CT_TRUE if \p x != 0, or MBEDTLS_CT_FALSE if \p x == 0
*
*/
static inline mbedtls_ct_condition_t mbedtls_ct_bool(mbedtls_ct_uint_t x);
/** Boolean "not equal" operation.
*
* Functionally equivalent to:
*
* \p x != \p y
*
* \param x The first value to analyze.
* \param y The second value to analyze.
*
* \return MBEDTLS_CT_TRUE if \p x != \p y, otherwise MBEDTLS_CT_FALSE.
*/
static inline mbedtls_ct_condition_t mbedtls_ct_uint_ne(mbedtls_ct_uint_t x, mbedtls_ct_uint_t y);
/** Boolean "equals" operation.
*
* Functionally equivalent to:
*
* \p x == \p y
*
* \param x The first value to analyze.
* \param y The second value to analyze.
*
* \return MBEDTLS_CT_TRUE if \p x == \p y, otherwise MBEDTLS_CT_FALSE.
*/
static inline mbedtls_ct_condition_t mbedtls_ct_uint_eq(mbedtls_ct_uint_t x,
mbedtls_ct_uint_t y);
/** Boolean "less than" operation.
*
* Functionally equivalent to:
*
* \p x < \p y
*
* \param x The first value to analyze.
* \param y The second value to analyze.
*
* \return MBEDTLS_CT_TRUE if \p x < \p y, otherwise MBEDTLS_CT_FALSE.
*/
static inline mbedtls_ct_condition_t mbedtls_ct_uint_lt(mbedtls_ct_uint_t x, mbedtls_ct_uint_t y);
/** Boolean "greater than" operation.
*
* Functionally equivalent to:
*
* \p x > \p y
*
* \param x The first value to analyze.
* \param y The second value to analyze.
*
* \return MBEDTLS_CT_TRUE if \p x > \p y, otherwise MBEDTLS_CT_FALSE.
*/
static inline mbedtls_ct_condition_t mbedtls_ct_uint_gt(mbedtls_ct_uint_t x,
mbedtls_ct_uint_t y);
/** Boolean "greater or equal" operation.
*
* Functionally equivalent to:
*
* \p x >= \p y
*
* \param x The first value to analyze.
* \param y The second value to analyze.
*
* \return MBEDTLS_CT_TRUE if \p x >= \p y,
* otherwise MBEDTLS_CT_FALSE.
*/
static inline mbedtls_ct_condition_t mbedtls_ct_uint_ge(mbedtls_ct_uint_t x,
mbedtls_ct_uint_t y);
/** Boolean "less than or equal" operation.
*
* Functionally equivalent to:
*
* \p x <= \p y
*
* \param x The first value to analyze.
* \param y The second value to analyze.
*
* \return MBEDTLS_CT_TRUE if \p x <= \p y,
* otherwise MBEDTLS_CT_FALSE.
*/
static inline mbedtls_ct_condition_t mbedtls_ct_uint_le(mbedtls_ct_uint_t x,
mbedtls_ct_uint_t y);
/** Boolean not-equals operation.
*
* Functionally equivalent to:
*
* \p x != \p y
*
* \param x The first value to analyze.
* \param y The second value to analyze.
*
* \note This is more efficient than mbedtls_ct_uint_ne if both arguments are
* mbedtls_ct_condition_t.
*
* \return MBEDTLS_CT_TRUE if \p x != \p y,
* otherwise MBEDTLS_CT_FALSE.
*/
static inline mbedtls_ct_condition_t mbedtls_ct_bool_ne(mbedtls_ct_condition_t x,
mbedtls_ct_condition_t y);
/** Boolean "and" operation.
*
* Functionally equivalent to:
*
* \p x && \p y
*
* \param x The first value to analyze.
* \param y The second value to analyze.
*
* \return MBEDTLS_CT_TRUE if \p x && \p y,
* otherwise MBEDTLS_CT_FALSE.
*/
static inline mbedtls_ct_condition_t mbedtls_ct_bool_and(mbedtls_ct_condition_t x,
mbedtls_ct_condition_t y);
/** Boolean "or" operation.
*
* Functionally equivalent to:
*
* \p x || \p y
*
* \param x The first value to analyze.
* \param y The second value to analyze.
*
* \return MBEDTLS_CT_TRUE if \p x || \p y,
* otherwise MBEDTLS_CT_FALSE.
*/
static inline mbedtls_ct_condition_t mbedtls_ct_bool_or(mbedtls_ct_condition_t x,
mbedtls_ct_condition_t y);
/** Boolean "not" operation.
*
* Functionally equivalent to:
*
* ! \p x
*
* \param x The value to invert
*
* \return MBEDTLS_CT_FALSE if \p x, otherwise MBEDTLS_CT_TRUE.
*/
static inline mbedtls_ct_condition_t mbedtls_ct_bool_not(mbedtls_ct_condition_t x);
/* ============================================================================
* Data selection operations
*/
/** Choose between two size_t values.
*
* Functionally equivalent to:
*
* condition ? if1 : if0.
*
* \param condition Condition to test.
* \param if1 Value to use if \p condition == MBEDTLS_CT_TRUE.
* \param if0 Value to use if \p condition == MBEDTLS_CT_FALSE.
*
* \return \c if1 if \p condition == MBEDTLS_CT_TRUE, otherwise \c if0.
*/
static inline size_t mbedtls_ct_size_if(mbedtls_ct_condition_t condition,
size_t if1,
size_t if0);
/** Choose between two unsigned values.
*
* Functionally equivalent to:
*
* condition ? if1 : if0.
*
* \param condition Condition to test.
* \param if1 Value to use if \p condition == MBEDTLS_CT_TRUE.
* \param if0 Value to use if \p condition == MBEDTLS_CT_FALSE.
*
* \return \c if1 if \p condition == MBEDTLS_CT_TRUE, otherwise \c if0.
*/
static inline unsigned mbedtls_ct_uint_if(mbedtls_ct_condition_t condition,
unsigned if1,
unsigned if0);
/** Choose between two mbedtls_ct_condition_t values.
*
* Functionally equivalent to:
*
* condition ? if1 : if0.
*
* \param condition Condition to test.
* \param if1 Value to use if \p condition == MBEDTLS_CT_TRUE.
* \param if0 Value to use if \p condition == MBEDTLS_CT_FALSE.
*
* \return \c if1 if \p condition == MBEDTLS_CT_TRUE, otherwise \c if0.
*/
static inline mbedtls_ct_condition_t mbedtls_ct_bool_if(mbedtls_ct_condition_t condition,
mbedtls_ct_condition_t if1,
mbedtls_ct_condition_t if0);
#if defined(MBEDTLS_BIGNUM_C)
/** Choose between two mbedtls_mpi_uint values.
*
* Functionally equivalent to:
*
* condition ? if1 : if0.
*
* \param condition Condition to test.
* \param if1 Value to use if \p condition == MBEDTLS_CT_TRUE.
* \param if0 Value to use if \p condition == MBEDTLS_CT_FALSE.
*
* \return \c if1 if \p condition == MBEDTLS_CT_TRUE, otherwise \c if0.
*/
static inline mbedtls_mpi_uint mbedtls_ct_mpi_uint_if(mbedtls_ct_condition_t condition, \
mbedtls_mpi_uint if1, \
mbedtls_mpi_uint if0);
#endif
/** Choose between an unsigned value and 0.
*
* Functionally equivalent to:
*
* condition ? if1 : 0.
*
* Functionally equivalent to mbedtls_ct_uint_if(condition, if1, 0) but
* results in smaller code size.
*
* \param condition Condition to test.
* \param if1 Value to use if \p condition == MBEDTLS_CT_TRUE.
*
* \return \c if1 if \p condition == MBEDTLS_CT_TRUE, otherwise 0.
*/
static inline unsigned mbedtls_ct_uint_if_else_0(mbedtls_ct_condition_t condition, unsigned if1);
/** Choose between an mbedtls_ct_condition_t and 0.
*
* Functionally equivalent to:
*
* condition ? if1 : 0.
*
* Functionally equivalent to mbedtls_ct_bool_if(condition, if1, 0) but
* results in smaller code size.
*
* \param condition Condition to test.
* \param if1 Value to use if \p condition == MBEDTLS_CT_TRUE.
*
* \return \c if1 if \p condition == MBEDTLS_CT_TRUE, otherwise 0.
*/
static inline mbedtls_ct_condition_t mbedtls_ct_bool_if_else_0(mbedtls_ct_condition_t condition,
mbedtls_ct_condition_t if1);
/** Choose between a size_t value and 0.
*
* Functionally equivalent to:
*
* condition ? if1 : 0.
*
* Functionally equivalent to mbedtls_ct_size_if(condition, if1, 0) but
* results in smaller code size.
*
* \param condition Condition to test.
* \param if1 Value to use if \p condition == MBEDTLS_CT_TRUE.
*
* \return \c if1 if \p condition == MBEDTLS_CT_TRUE, otherwise 0.
*/
static inline size_t mbedtls_ct_size_if_else_0(mbedtls_ct_condition_t condition, size_t if1);
#if defined(MBEDTLS_BIGNUM_C)
/** Choose between an mbedtls_mpi_uint value and 0.
*
* Functionally equivalent to:
*
* condition ? if1 : 0.
*
* Functionally equivalent to mbedtls_ct_mpi_uint_if(condition, if1, 0) but
* results in smaller code size.
*
* \param condition Condition to test.
* \param if1 Value to use if \p condition == MBEDTLS_CT_TRUE.
*
* \return \c if1 if \p condition == MBEDTLS_CT_TRUE, otherwise 0.
*/
static inline mbedtls_mpi_uint mbedtls_ct_mpi_uint_if_else_0(mbedtls_ct_condition_t condition,
mbedtls_mpi_uint if1);
#endif
/** Constant-flow char selection
*
* \param low Secret. Bottom of range
* \param high Secret. Top of range
* \param c Secret. Value to compare to range
* \param t Secret. Value to return, if in range
*
* \return \p t if \p low <= \p c <= \p high, 0 otherwise.
*/
static inline unsigned char mbedtls_ct_uchar_in_range_if(unsigned char low,
unsigned char high,
unsigned char c,
unsigned char t);
/** Choose between two error values. The values must be in the range [-32767..0].
*
* Functionally equivalent to:
*
* condition ? if1 : if0.
*
* \param condition Condition to test.
* \param if1 Value to use if \p condition == MBEDTLS_CT_TRUE.
* \param if0 Value to use if \p condition == MBEDTLS_CT_FALSE.
*
* \return \c if1 if \p condition == MBEDTLS_CT_TRUE, otherwise \c if0.
*/
static inline int mbedtls_ct_error_if(mbedtls_ct_condition_t condition, int if1, int if0);
/** Choose between an error value and 0. The error value must be in the range [-32767..0].
*
* Functionally equivalent to:
*
* condition ? if1 : 0.
*
* Functionally equivalent to mbedtls_ct_error_if(condition, if1, 0) but
* results in smaller code size.
*
* \param condition Condition to test.
* \param if1 Value to use if \p condition == MBEDTLS_CT_TRUE.
*
* \return \c if1 if \p condition == MBEDTLS_CT_TRUE, otherwise 0.
*/
static inline int mbedtls_ct_error_if_else_0(mbedtls_ct_condition_t condition, int if1);
/* ============================================================================
* Block memory operations
*/
#if defined(MBEDTLS_PKCS1_V15) && defined(MBEDTLS_RSA_C) && !defined(MBEDTLS_RSA_ALT)
/** Conditionally set a block of memory to zero.
*
* Regardless of the condition, every byte will be read once and written to
* once.
*
* \param condition Secret. Condition to test.
* \param buf Secret. Pointer to the start of the buffer.
* \param len Number of bytes to set to zero.
*
* \warning Unlike mbedtls_platform_zeroize, this does not have the same guarantees
* about not being optimised away if the memory is never read again.
*/
void mbedtls_ct_zeroize_if(mbedtls_ct_condition_t condition, void *buf, size_t len);
/** Shift some data towards the left inside a buffer.
*
* Functionally equivalent to:
*
* memmove(start, start + offset, total - offset);
* memset(start + (total - offset), 0, offset);
*
* Timing independence comes at the expense of performance.
*
* \param start Secret. Pointer to the start of the buffer.
* \param total Total size of the buffer.
* \param offset Secret. Offset from which to copy \p total - \p offset bytes.
*/
void mbedtls_ct_memmove_left(void *start,
size_t total,
size_t offset);
#endif /* defined(MBEDTLS_PKCS1_V15) && defined(MBEDTLS_RSA_C) && !defined(MBEDTLS_RSA_ALT) */
/** Conditional memcpy.
*
* Functionally equivalent to:
*
* if (condition) {
* memcpy(dest, src1, len);
* } else {
* if (src2 != NULL)
* memcpy(dest, src2, len);
* }
*
* It will always read len bytes from src1.
* If src2 != NULL, it will always read len bytes from src2.
* If src2 == NULL, it will instead read len bytes from dest (as if src2 == dest).
*
* \param condition The condition
* \param dest Secret. Destination pointer.
* \param src1 Secret. Pointer to copy from (if \p condition == MBEDTLS_CT_TRUE).
* This may be equal to \p dest, but may not overlap in other ways.
* \param src2 Secret (contents only - may branch to determine if this parameter is NULL).
* Pointer to copy from (if \p condition == MBEDTLS_CT_FALSE and \p src2 is not NULL). May be NULL.
* This may be equal to \p dest, but may not overlap it in other ways. It may overlap with \p src1.
* \param len Number of bytes to copy.
*/
void mbedtls_ct_memcpy_if(mbedtls_ct_condition_t condition,
unsigned char *dest,
const unsigned char *src1,
const unsigned char *src2,
size_t len
);
/** Copy data from a secret position.
*
* Functionally equivalent to:
*
* memcpy(dst, src + offset, len)
*
* This function copies \p len bytes from \p src + \p offset to
* \p dst, with a code flow and memory access pattern that does not depend on
* \p offset, but only on \p offset_min, \p offset_max and \p len.
*
* \note This function reads from \p dest, but the value that
* is read does not influence the result and this
* function's behavior is well-defined regardless of the
* contents of the buffers. This may result in false
* positives from static or dynamic analyzers, especially
* if \p dest is not initialized.
*
* \param dest Secret. The destination buffer. This must point to a writable
* buffer of at least \p len bytes.
* \param src Secret. The base of the source buffer. This must point to a
* readable buffer of at least \p offset_max + \p len
* bytes. Shouldn't overlap with \p dest
* \param offset Secret. The offset in the source buffer from which to copy.
* This must be no less than \p offset_min and no greater
* than \p offset_max.
* \param offset_min The minimal value of \p offset.
* \param offset_max The maximal value of \p offset.
* \param len The number of bytes to copy.
*/
void mbedtls_ct_memcpy_offset(unsigned char *dest,
const unsigned char *src,
size_t offset,
size_t offset_min,
size_t offset_max,
size_t len);
/* Documented in include/mbedtls/constant_time.h. a and b are secret.
int mbedtls_ct_memcmp(const void *a,
const void *b,
size_t n);
*/
#if defined(MBEDTLS_NIST_KW_C)
/** Constant-time buffer comparison without branches.
*
* Similar to mbedtls_ct_memcmp, except that the result only depends on part of
* the input data - differences in the head or tail are ignored. Functionally equivalent to:
*
* memcmp(a + skip_head, b + skip_head, size - skip_head - skip_tail)
*
* Time taken depends on \p n, but not on \p skip_head or \p skip_tail .
*
* Behaviour is undefined if ( \p skip_head + \p skip_tail) > \p n.
*
* \param a Secret. Pointer to the first buffer, containing at least \p n bytes. May not be NULL.
* \param b Secret. Pointer to the second buffer, containing at least \p n bytes. May not be NULL.
* \param n The number of bytes to examine (total size of the buffers).
* \param skip_head Secret. The number of bytes to treat as non-significant at the start of the buffer.
* These bytes will still be read.
* \param skip_tail Secret. The number of bytes to treat as non-significant at the end of the buffer.
* These bytes will still be read.
*
* \return Zero if the contents of the two buffers are the same, otherwise non-zero.
*/
int mbedtls_ct_memcmp_partial(const void *a,
const void *b,
size_t n,
size_t skip_head,
size_t skip_tail);
#endif
/* Include the implementation of static inline functions above. */
#include "constant_time_impl.h"
#endif /* MBEDTLS_CONSTANT_TIME_INTERNAL_H */

View File

@@ -0,0 +1,172 @@
/**
* \file debug_internal.h
*
* \brief Internal part of the public "debug.h".
*/
/*
* Copyright The Mbed TLS Contributors
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
*/
#ifndef MBEDTLS_DEBUG_INTERNAL_H
#define MBEDTLS_DEBUG_INTERNAL_H
#include "mbedtls/debug.h"
/**
* \brief Print a message to the debug output. This function is always used
* through the MBEDTLS_SSL_DEBUG_MSG() macro, which supplies the ssl
* context, file and line number parameters.
*
* \param ssl SSL context
* \param level error level of the debug message
* \param file file the message has occurred in
* \param line line number the message has occurred at
* \param format format specifier, in printf format
* \param ... variables used by the format specifier
*
* \attention This function is intended for INTERNAL usage within the
* library only.
*/
void mbedtls_debug_print_msg(const mbedtls_ssl_context *ssl, int level,
const char *file, int line,
const char *format, ...) MBEDTLS_PRINTF_ATTRIBUTE(5, 6);
/**
* \brief Print the return value of a function to the debug output. This
* function is always used through the MBEDTLS_SSL_DEBUG_RET() macro,
* which supplies the ssl context, file and line number parameters.
*
* \param ssl SSL context
* \param level error level of the debug message
* \param file file the error has occurred in
* \param line line number the error has occurred in
* \param text the name of the function that returned the error
* \param ret the return code value
*
* \attention This function is intended for INTERNAL usage within the
* library only.
*/
void mbedtls_debug_print_ret(const mbedtls_ssl_context *ssl, int level,
const char *file, int line,
const char *text, int ret);
/**
* \brief Output a buffer of size len bytes to the debug output. This function
* is always used through the MBEDTLS_SSL_DEBUG_BUF() macro,
* which supplies the ssl context, file and line number parameters.
*
* \param ssl SSL context
* \param level error level of the debug message
* \param file file the error has occurred in
* \param line line number the error has occurred in
* \param text a name or label for the buffer being dumped. Normally the
* variable or buffer name
* \param buf the buffer to be outputted
* \param len length of the buffer
*
* \attention This function is intended for INTERNAL usage within the
* library only.
*/
void mbedtls_debug_print_buf(const mbedtls_ssl_context *ssl, int level,
const char *file, int line, const char *text,
const unsigned char *buf, size_t len);
#if defined(MBEDTLS_BIGNUM_C)
/**
* \brief Print a MPI variable to the debug output. This function is always
* used through the MBEDTLS_SSL_DEBUG_MPI() macro, which supplies the
* ssl context, file and line number parameters.
*
* \param ssl SSL context
* \param level error level of the debug message
* \param file file the error has occurred in
* \param line line number the error has occurred in
* \param text a name or label for the MPI being output. Normally the
* variable name
* \param X the MPI variable
*
* \attention This function is intended for INTERNAL usage within the
* library only.
*/
void mbedtls_debug_print_mpi(const mbedtls_ssl_context *ssl, int level,
const char *file, int line,
const char *text, const mbedtls_mpi *X);
#endif
#if defined(MBEDTLS_ECP_LIGHT)
/**
* \brief Print an ECP point to the debug output. This function is always
* used through the MBEDTLS_SSL_DEBUG_ECP() macro, which supplies the
* ssl context, file and line number parameters.
*
* \param ssl SSL context
* \param level error level of the debug message
* \param file file the error has occurred in
* \param line line number the error has occurred in
* \param text a name or label for the ECP point being output. Normally the
* variable name
* \param X the ECP point
*
* \attention This function is intended for INTERNAL usage within the
* library only.
*/
void mbedtls_debug_print_ecp(const mbedtls_ssl_context *ssl, int level,
const char *file, int line,
const char *text, const mbedtls_ecp_point *X);
#endif
#if defined(MBEDTLS_X509_CRT_PARSE_C) && !defined(MBEDTLS_X509_REMOVE_INFO)
/**
* \brief Print a X.509 certificate structure to the debug output. This
* function is always used through the MBEDTLS_SSL_DEBUG_CRT() macro,
* which supplies the ssl context, file and line number parameters.
*
* \param ssl SSL context
* \param level error level of the debug message
* \param file file the error has occurred in
* \param line line number the error has occurred in
* \param text a name or label for the certificate being output
* \param crt X.509 certificate structure
*
* \attention This function is intended for INTERNAL usage within the
* library only.
*/
void mbedtls_debug_print_crt(const mbedtls_ssl_context *ssl, int level,
const char *file, int line,
const char *text, const mbedtls_x509_crt *crt);
#endif
/* Note: the MBEDTLS_ECDH_C guard here is mandatory because this debug function
only works for the built-in implementation. */
#if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_OR_ECDHE_ANY_ENABLED) && \
defined(MBEDTLS_ECDH_C)
typedef enum {
MBEDTLS_DEBUG_ECDH_Q,
MBEDTLS_DEBUG_ECDH_QP,
MBEDTLS_DEBUG_ECDH_Z,
} mbedtls_debug_ecdh_attr;
/**
* \brief Print a field of the ECDH structure in the SSL context to the debug
* output. This function is always used through the
* MBEDTLS_SSL_DEBUG_ECDH() macro, which supplies the ssl context, file
* and line number parameters.
*
* \param ssl SSL context
* \param level error level of the debug message
* \param file file the error has occurred in
* \param line line number the error has occurred in
* \param ecdh the ECDH context
* \param attr the identifier of the attribute being output
*
* \attention This function is intended for INTERNAL usage within the
* library only.
*/
void mbedtls_debug_printf_ecdh(const mbedtls_ssl_context *ssl, int level,
const char *file, int line,
const mbedtls_ecdh_context *ecdh,
mbedtls_debug_ecdh_attr attr);
#endif /* MBEDTLS_KEY_EXCHANGE_SOME_ECDH_OR_ECDHE_ANY_ENABLED &&
MBEDTLS_ECDH_C */
#endif /* MBEDTLS_DEBUG_INTERNAL_H */

View File

@@ -0,0 +1,9 @@
/*
* Stub header to trigger PlatformIO Library Dependency Finder.
*
* The Tasmota Arduino platform ships a stripped libmbedtls.a that is missing
* the core SSL/TLS implementation (mbedtls_ssl_read, mbedtls_ssl_write, etc.).
* This library compiles the official mbedtls 3.6.5 SSL source files so that
* esp_tls and other components that depend on mbedtls SSL can link.
*/
#pragma once

View File

@@ -0,0 +1,26 @@
/**
* Translation between MD and PSA identifiers (algorithms, errors).
*
* Note: this internal module will go away when everything becomes based on
* PSA Crypto; it is a helper for the transition period.
*
* Copyright The Mbed TLS Contributors
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
*/
#ifndef MBEDTLS_MD_PSA_H
#define MBEDTLS_MD_PSA_H
#include "common.h"
#include "mbedtls/md.h"
#include "psa/crypto.h"
/** Convert PSA status to MD error code.
*
* \param status PSA status.
*
* \return The corresponding MD error code,
*/
int mbedtls_md_error_from_psa(psa_status_t status);
#endif /* MBEDTLS_MD_PSA_H */

View File

@@ -0,0 +1,100 @@
/**
* \file psa_util_internal.h
*
* \brief Internal utility functions for use of PSA Crypto.
*/
/*
* Copyright The Mbed TLS Contributors
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
*/
#ifndef MBEDTLS_PSA_UTIL_INTERNAL_H
#define MBEDTLS_PSA_UTIL_INTERNAL_H
/* Include the public header so that users only need one include. */
#include "mbedtls/psa_util.h"
#include "psa/crypto.h"
#if defined(MBEDTLS_PSA_CRYPTO_CLIENT)
/*************************************************************************
* FFDH
************************************************************************/
#define MBEDTLS_PSA_MAX_FFDH_PUBKEY_LENGTH \
PSA_KEY_EXPORT_FFDH_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_FFDH_MAX_KEY_BITS)
/*************************************************************************
* ECC
************************************************************************/
#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH \
PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS)
#define MBEDTLS_PSA_MAX_EC_KEY_PAIR_LENGTH \
PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS)
/*************************************************************************
* Error translation
************************************************************************/
typedef struct {
/* Error codes used by PSA crypto are in -255..-128, fitting in 16 bits. */
int16_t psa_status;
/* Error codes used by Mbed TLS are in one of the ranges
* -127..-1 (low-level) or -32767..-4096 (high-level with a low-level
* code optionally added), fitting in 16 bits. */
int16_t mbedtls_error;
} mbedtls_error_pair_t;
#if defined(MBEDTLS_MD_LIGHT)
extern const mbedtls_error_pair_t psa_to_md_errors[4];
#endif
#if defined(MBEDTLS_BLOCK_CIPHER_SOME_PSA)
extern const mbedtls_error_pair_t psa_to_cipher_errors[4];
#endif
#if defined(MBEDTLS_LMS_C)
extern const mbedtls_error_pair_t psa_to_lms_errors[3];
#endif
#if defined(MBEDTLS_USE_PSA_CRYPTO) || defined(MBEDTLS_SSL_PROTO_TLS1_3)
extern const mbedtls_error_pair_t psa_to_ssl_errors[7];
#endif
#if defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY) || \
defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC)
extern const mbedtls_error_pair_t psa_to_pk_rsa_errors[8];
#endif
#if defined(MBEDTLS_USE_PSA_CRYPTO) && \
defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY)
extern const mbedtls_error_pair_t psa_to_pk_ecdsa_errors[7];
#endif
/* Generic fallback function for error translation,
* when the received state was not module-specific. */
int psa_generic_status_to_mbedtls(psa_status_t status);
/* This function iterates over provided local error translations,
* and if no match was found - calls the fallback error translation function. */
int psa_status_to_mbedtls(psa_status_t status,
const mbedtls_error_pair_t *local_translations,
size_t local_errors_num,
int (*fallback_f)(psa_status_t));
/* The second out of three-stage error handling functions of the pk module,
* acts as a fallback after RSA / ECDSA error translation, and if no match
* is found, it itself calls psa_generic_status_to_mbedtls. */
int psa_pk_status_to_mbedtls(psa_status_t status);
/* Utility macro to shorten the defines of error translator in modules. */
#define PSA_TO_MBEDTLS_ERR_LIST(status, error_list, fallback_f) \
psa_status_to_mbedtls(status, error_list, \
sizeof(error_list)/sizeof(error_list[0]), \
fallback_f)
#endif /* MBEDTLS_PSA_CRYPTO_CLIENT */
#endif /* MBEDTLS_PSA_UTIL_INTERNAL_H */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,22 @@
/**
* TLS 1.2 and 1.3 client-side functions
*
* Copyright The Mbed TLS Contributors
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
*/
#ifndef MBEDTLS_SSL_CLIENT_H
#define MBEDTLS_SSL_CLIENT_H
#include "common.h"
#if defined(MBEDTLS_SSL_TLS_C)
#include "ssl_misc.h"
#endif
#include <stddef.h>
MBEDTLS_CHECK_RETURN_CRITICAL
int mbedtls_ssl_write_client_hello(mbedtls_ssl_context *ssl);
#endif /* MBEDTLS_SSL_CLIENT_H */

View File

@@ -0,0 +1,83 @@
/**
* \file ssl_debug_helpers.h
*
* \brief Automatically generated helper functions for debugging
*/
/*
* Copyright The Mbed TLS Contributors
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
*/
#ifndef MBEDTLS_SSL_DEBUG_HELPERS_H
#define MBEDTLS_SSL_DEBUG_HELPERS_H
#include "common.h"
#if defined(MBEDTLS_DEBUG_C)
#include "mbedtls/ssl.h"
#include "ssl_misc.h"
const char *mbedtls_ssl_states_str(mbedtls_ssl_states in);
#if defined(MBEDTLS_SSL_EARLY_DATA) && defined(MBEDTLS_SSL_CLI_C)
const char *mbedtls_ssl_early_data_status_str(mbedtls_ssl_early_data_status in);
const char *mbedtls_ssl_early_data_state_str(mbedtls_ssl_early_data_state in);
#endif
const char *mbedtls_ssl_protocol_version_str(mbedtls_ssl_protocol_version in);
const char *mbedtls_tls_prf_types_str(mbedtls_tls_prf_types in);
const char *mbedtls_ssl_key_export_type_str(mbedtls_ssl_key_export_type in);
const char *mbedtls_ssl_sig_alg_to_str(uint16_t in);
const char *mbedtls_ssl_named_group_to_str(uint16_t in);
const char *mbedtls_ssl_get_extension_name(unsigned int extension_type);
void mbedtls_ssl_print_extensions(const mbedtls_ssl_context *ssl,
int level, const char *file, int line,
int hs_msg_type, uint32_t extensions_mask,
const char *extra);
void mbedtls_ssl_print_extension(const mbedtls_ssl_context *ssl,
int level, const char *file, int line,
int hs_msg_type, unsigned int extension_type,
const char *extra_msg0, const char *extra_msg1);
#if defined(MBEDTLS_SSL_PROTO_TLS1_3) && defined(MBEDTLS_SSL_SESSION_TICKETS)
void mbedtls_ssl_print_ticket_flags(const mbedtls_ssl_context *ssl,
int level, const char *file, int line,
unsigned int flags);
#endif /* MBEDTLS_SSL_PROTO_TLS1_3 && MBEDTLS_SSL_SESSION_TICKETS */
#define MBEDTLS_SSL_PRINT_EXTS(level, hs_msg_type, extensions_mask) \
mbedtls_ssl_print_extensions(ssl, level, __FILE__, __LINE__, \
hs_msg_type, extensions_mask, NULL)
#define MBEDTLS_SSL_PRINT_EXT(level, hs_msg_type, extension_type, extra) \
mbedtls_ssl_print_extension(ssl, level, __FILE__, __LINE__, \
hs_msg_type, extension_type, \
extra, NULL)
#if defined(MBEDTLS_SSL_PROTO_TLS1_3) && defined(MBEDTLS_SSL_SESSION_TICKETS)
#define MBEDTLS_SSL_PRINT_TICKET_FLAGS(level, flags) \
mbedtls_ssl_print_ticket_flags(ssl, level, __FILE__, __LINE__, flags)
#endif
#else
#define MBEDTLS_SSL_PRINT_EXTS(level, hs_msg_type, extension_mask)
#define MBEDTLS_SSL_PRINT_EXT(level, hs_msg_type, extension_type, extra)
#if defined(MBEDTLS_SSL_PROTO_TLS1_3) && defined(MBEDTLS_SSL_SESSION_TICKETS)
#define MBEDTLS_SSL_PRINT_TICKET_FLAGS(level, flags)
#endif
#endif /* MBEDTLS_DEBUG_C */
#endif /* MBEDTLS_SSL_DEBUG_HELPERS_H */

View File

@@ -0,0 +1,251 @@
/* Automatically generated by generate_ssl_debug_helpers.py. DO NOT EDIT. */
/**
* \file ssl_debug_helpers_generated.c
*
* \brief Automatically generated helper functions for debugging
*/
/*
* Copyright The Mbed TLS Contributors
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
*
*/
#include "ssl_misc.h"
#if defined(MBEDTLS_DEBUG_C)
#include "ssl_debug_helpers.h"
const char *mbedtls_ssl_named_group_to_str( uint16_t in )
{
switch( in )
{
case MBEDTLS_SSL_IANA_TLS_GROUP_SECP192K1:
return "secp192k1";
case MBEDTLS_SSL_IANA_TLS_GROUP_SECP192R1:
return "secp192r1";
case MBEDTLS_SSL_IANA_TLS_GROUP_SECP224K1:
return "secp224k1";
case MBEDTLS_SSL_IANA_TLS_GROUP_SECP224R1:
return "secp224r1";
case MBEDTLS_SSL_IANA_TLS_GROUP_SECP256K1:
return "secp256k1";
case MBEDTLS_SSL_IANA_TLS_GROUP_SECP256R1:
return "secp256r1";
case MBEDTLS_SSL_IANA_TLS_GROUP_SECP384R1:
return "secp384r1";
case MBEDTLS_SSL_IANA_TLS_GROUP_SECP521R1:
return "secp521r1";
case MBEDTLS_SSL_IANA_TLS_GROUP_BP256R1:
return "bp256r1";
case MBEDTLS_SSL_IANA_TLS_GROUP_BP384R1:
return "bp384r1";
case MBEDTLS_SSL_IANA_TLS_GROUP_BP512R1:
return "bp512r1";
case MBEDTLS_SSL_IANA_TLS_GROUP_X25519:
return "x25519";
case MBEDTLS_SSL_IANA_TLS_GROUP_X448:
return "x448";
case MBEDTLS_SSL_IANA_TLS_GROUP_FFDHE2048:
return "ffdhe2048";
case MBEDTLS_SSL_IANA_TLS_GROUP_FFDHE3072:
return "ffdhe3072";
case MBEDTLS_SSL_IANA_TLS_GROUP_FFDHE4096:
return "ffdhe4096";
case MBEDTLS_SSL_IANA_TLS_GROUP_FFDHE6144:
return "ffdhe6144";
case MBEDTLS_SSL_IANA_TLS_GROUP_FFDHE8192:
return "ffdhe8192";
};
return "UNKNOWN";
}
const char *mbedtls_ssl_sig_alg_to_str( uint16_t in )
{
switch( in )
{
case MBEDTLS_TLS1_3_SIG_RSA_PKCS1_SHA256:
return "rsa_pkcs1_sha256";
case MBEDTLS_TLS1_3_SIG_RSA_PKCS1_SHA384:
return "rsa_pkcs1_sha384";
case MBEDTLS_TLS1_3_SIG_RSA_PKCS1_SHA512:
return "rsa_pkcs1_sha512";
case MBEDTLS_TLS1_3_SIG_ECDSA_SECP256R1_SHA256:
return "ecdsa_secp256r1_sha256";
case MBEDTLS_TLS1_3_SIG_ECDSA_SECP384R1_SHA384:
return "ecdsa_secp384r1_sha384";
case MBEDTLS_TLS1_3_SIG_ECDSA_SECP521R1_SHA512:
return "ecdsa_secp521r1_sha512";
case MBEDTLS_TLS1_3_SIG_RSA_PSS_RSAE_SHA256:
return "rsa_pss_rsae_sha256";
case MBEDTLS_TLS1_3_SIG_RSA_PSS_RSAE_SHA384:
return "rsa_pss_rsae_sha384";
case MBEDTLS_TLS1_3_SIG_RSA_PSS_RSAE_SHA512:
return "rsa_pss_rsae_sha512";
case MBEDTLS_TLS1_3_SIG_ED25519:
return "ed25519";
case MBEDTLS_TLS1_3_SIG_ED448:
return "ed448";
case MBEDTLS_TLS1_3_SIG_RSA_PSS_PSS_SHA256:
return "rsa_pss_pss_sha256";
case MBEDTLS_TLS1_3_SIG_RSA_PSS_PSS_SHA384:
return "rsa_pss_pss_sha384";
case MBEDTLS_TLS1_3_SIG_RSA_PSS_PSS_SHA512:
return "rsa_pss_pss_sha512";
case MBEDTLS_TLS1_3_SIG_RSA_PKCS1_SHA1:
return "rsa_pkcs1_sha1";
case MBEDTLS_TLS1_3_SIG_ECDSA_SHA1:
return "ecdsa_sha1";
case MBEDTLS_TLS1_3_SIG_NONE:
return "none";
};
return "UNKNOWN";
}
const char *mbedtls_ssl_states_str( mbedtls_ssl_states in )
{
switch (in) {
case MBEDTLS_SSL_HELLO_REQUEST:
return "MBEDTLS_SSL_HELLO_REQUEST";
case MBEDTLS_SSL_CLIENT_HELLO:
return "MBEDTLS_SSL_CLIENT_HELLO";
case MBEDTLS_SSL_SERVER_HELLO:
return "MBEDTLS_SSL_SERVER_HELLO";
case MBEDTLS_SSL_SERVER_CERTIFICATE:
return "MBEDTLS_SSL_SERVER_CERTIFICATE";
case MBEDTLS_SSL_SERVER_KEY_EXCHANGE:
return "MBEDTLS_SSL_SERVER_KEY_EXCHANGE";
case MBEDTLS_SSL_CERTIFICATE_REQUEST:
return "MBEDTLS_SSL_CERTIFICATE_REQUEST";
case MBEDTLS_SSL_SERVER_HELLO_DONE:
return "MBEDTLS_SSL_SERVER_HELLO_DONE";
case MBEDTLS_SSL_CLIENT_CERTIFICATE:
return "MBEDTLS_SSL_CLIENT_CERTIFICATE";
case MBEDTLS_SSL_CLIENT_KEY_EXCHANGE:
return "MBEDTLS_SSL_CLIENT_KEY_EXCHANGE";
case MBEDTLS_SSL_CERTIFICATE_VERIFY:
return "MBEDTLS_SSL_CERTIFICATE_VERIFY";
case MBEDTLS_SSL_CLIENT_CHANGE_CIPHER_SPEC:
return "MBEDTLS_SSL_CLIENT_CHANGE_CIPHER_SPEC";
case MBEDTLS_SSL_CLIENT_FINISHED:
return "MBEDTLS_SSL_CLIENT_FINISHED";
case MBEDTLS_SSL_SERVER_CHANGE_CIPHER_SPEC:
return "MBEDTLS_SSL_SERVER_CHANGE_CIPHER_SPEC";
case MBEDTLS_SSL_SERVER_FINISHED:
return "MBEDTLS_SSL_SERVER_FINISHED";
case MBEDTLS_SSL_FLUSH_BUFFERS:
return "MBEDTLS_SSL_FLUSH_BUFFERS";
case MBEDTLS_SSL_HANDSHAKE_WRAPUP:
return "MBEDTLS_SSL_HANDSHAKE_WRAPUP";
case MBEDTLS_SSL_NEW_SESSION_TICKET:
return "MBEDTLS_SSL_NEW_SESSION_TICKET";
case MBEDTLS_SSL_SERVER_HELLO_VERIFY_REQUEST_SENT:
return "MBEDTLS_SSL_SERVER_HELLO_VERIFY_REQUEST_SENT";
case MBEDTLS_SSL_HELLO_RETRY_REQUEST:
return "MBEDTLS_SSL_HELLO_RETRY_REQUEST";
case MBEDTLS_SSL_ENCRYPTED_EXTENSIONS:
return "MBEDTLS_SSL_ENCRYPTED_EXTENSIONS";
case MBEDTLS_SSL_END_OF_EARLY_DATA:
return "MBEDTLS_SSL_END_OF_EARLY_DATA";
case MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY:
return "MBEDTLS_SSL_CLIENT_CERTIFICATE_VERIFY";
case MBEDTLS_SSL_CLIENT_CCS_AFTER_SERVER_FINISHED:
return "MBEDTLS_SSL_CLIENT_CCS_AFTER_SERVER_FINISHED";
case MBEDTLS_SSL_CLIENT_CCS_BEFORE_2ND_CLIENT_HELLO:
return "MBEDTLS_SSL_CLIENT_CCS_BEFORE_2ND_CLIENT_HELLO";
case MBEDTLS_SSL_SERVER_CCS_AFTER_SERVER_HELLO:
return "MBEDTLS_SSL_SERVER_CCS_AFTER_SERVER_HELLO";
case MBEDTLS_SSL_CLIENT_CCS_AFTER_CLIENT_HELLO:
return "MBEDTLS_SSL_CLIENT_CCS_AFTER_CLIENT_HELLO";
case MBEDTLS_SSL_SERVER_CCS_AFTER_HELLO_RETRY_REQUEST:
return "MBEDTLS_SSL_SERVER_CCS_AFTER_HELLO_RETRY_REQUEST";
case MBEDTLS_SSL_HANDSHAKE_OVER:
return "MBEDTLS_SSL_HANDSHAKE_OVER";
case MBEDTLS_SSL_TLS1_3_NEW_SESSION_TICKET:
return "MBEDTLS_SSL_TLS1_3_NEW_SESSION_TICKET";
case MBEDTLS_SSL_TLS1_3_NEW_SESSION_TICKET_FLUSH:
return "MBEDTLS_SSL_TLS1_3_NEW_SESSION_TICKET_FLUSH";
default:
return "UNKNOWN_VALUE";
}
}
#if defined(MBEDTLS_SSL_EARLY_DATA) && defined(MBEDTLS_SSL_CLI_C)
const char *mbedtls_ssl_early_data_status_str( mbedtls_ssl_early_data_status in )
{
switch (in) {
case MBEDTLS_SSL_EARLY_DATA_STATUS_NOT_INDICATED:
return "MBEDTLS_SSL_EARLY_DATA_STATUS_NOT_INDICATED";
case MBEDTLS_SSL_EARLY_DATA_STATUS_ACCEPTED:
return "MBEDTLS_SSL_EARLY_DATA_STATUS_ACCEPTED";
case MBEDTLS_SSL_EARLY_DATA_STATUS_REJECTED:
return "MBEDTLS_SSL_EARLY_DATA_STATUS_REJECTED";
default:
return "UNKNOWN_VALUE";
}
}
#endif /* defined(MBEDTLS_SSL_EARLY_DATA) && defined(MBEDTLS_SSL_CLI_C) */
const char *mbedtls_ssl_protocol_version_str( mbedtls_ssl_protocol_version in )
{
switch (in) {
case MBEDTLS_SSL_VERSION_UNKNOWN:
return "MBEDTLS_SSL_VERSION_UNKNOWN";
case MBEDTLS_SSL_VERSION_TLS1_2:
return "MBEDTLS_SSL_VERSION_TLS1_2";
case MBEDTLS_SSL_VERSION_TLS1_3:
return "MBEDTLS_SSL_VERSION_TLS1_3";
default:
return "UNKNOWN_VALUE";
}
}
const char *mbedtls_tls_prf_types_str( mbedtls_tls_prf_types in )
{
switch (in) {
case MBEDTLS_SSL_TLS_PRF_NONE:
return "MBEDTLS_SSL_TLS_PRF_NONE";
case MBEDTLS_SSL_TLS_PRF_SHA384:
return "MBEDTLS_SSL_TLS_PRF_SHA384";
case MBEDTLS_SSL_TLS_PRF_SHA256:
return "MBEDTLS_SSL_TLS_PRF_SHA256";
case MBEDTLS_SSL_HKDF_EXPAND_SHA384:
return "MBEDTLS_SSL_HKDF_EXPAND_SHA384";
case MBEDTLS_SSL_HKDF_EXPAND_SHA256:
return "MBEDTLS_SSL_HKDF_EXPAND_SHA256";
default:
return "UNKNOWN_VALUE";
}
}
const char *mbedtls_ssl_key_export_type_str( mbedtls_ssl_key_export_type in )
{
switch (in) {
case MBEDTLS_SSL_KEY_EXPORT_TLS12_MASTER_SECRET:
return "MBEDTLS_SSL_KEY_EXPORT_TLS12_MASTER_SECRET";
#if defined(MBEDTLS_SSL_PROTO_TLS1_3)
case MBEDTLS_SSL_KEY_EXPORT_TLS1_3_CLIENT_EARLY_SECRET:
return "MBEDTLS_SSL_KEY_EXPORT_TLS1_3_CLIENT_EARLY_SECRET";
case MBEDTLS_SSL_KEY_EXPORT_TLS1_3_EARLY_EXPORTER_SECRET:
return "MBEDTLS_SSL_KEY_EXPORT_TLS1_3_EARLY_EXPORTER_SECRET";
case MBEDTLS_SSL_KEY_EXPORT_TLS1_3_CLIENT_HANDSHAKE_TRAFFIC_SECRET:
return "MBEDTLS_SSL_KEY_EXPORT_TLS1_3_CLIENT_HANDSHAKE_TRAFFIC_SECRET";
case MBEDTLS_SSL_KEY_EXPORT_TLS1_3_SERVER_HANDSHAKE_TRAFFIC_SECRET:
return "MBEDTLS_SSL_KEY_EXPORT_TLS1_3_SERVER_HANDSHAKE_TRAFFIC_SECRET";
case MBEDTLS_SSL_KEY_EXPORT_TLS1_3_CLIENT_APPLICATION_TRAFFIC_SECRET:
return "MBEDTLS_SSL_KEY_EXPORT_TLS1_3_CLIENT_APPLICATION_TRAFFIC_SECRET";
case MBEDTLS_SSL_KEY_EXPORT_TLS1_3_SERVER_APPLICATION_TRAFFIC_SECRET:
return "MBEDTLS_SSL_KEY_EXPORT_TLS1_3_SERVER_APPLICATION_TRAFFIC_SECRET";
#endif
default:
return "UNKNOWN_VALUE";
}
}
#endif /* MBEDTLS_DEBUG_C */
/* End of automatically generated file. */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

10187
lib/mbedtls_ssl/src/ssl_tls.c Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,668 @@
/*
* TLS 1.3 key schedule
*
* Copyright The Mbed TLS Contributors
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
*/
#if !defined(MBEDTLS_SSL_TLS1_3_KEYS_H)
#define MBEDTLS_SSL_TLS1_3_KEYS_H
/* This requires MBEDTLS_SSL_TLS1_3_LABEL( idx, name, string ) to be defined at
* the point of use. See e.g. the definition of mbedtls_ssl_tls13_labels_union
* below. */
#define MBEDTLS_SSL_TLS1_3_LABEL_LIST \
MBEDTLS_SSL_TLS1_3_LABEL(finished, "finished") \
MBEDTLS_SSL_TLS1_3_LABEL(resumption, "resumption") \
MBEDTLS_SSL_TLS1_3_LABEL(traffic_upd, "traffic upd") \
MBEDTLS_SSL_TLS1_3_LABEL(exporter, "exporter") \
MBEDTLS_SSL_TLS1_3_LABEL(key, "key") \
MBEDTLS_SSL_TLS1_3_LABEL(iv, "iv") \
MBEDTLS_SSL_TLS1_3_LABEL(c_hs_traffic, "c hs traffic") \
MBEDTLS_SSL_TLS1_3_LABEL(c_ap_traffic, "c ap traffic") \
MBEDTLS_SSL_TLS1_3_LABEL(c_e_traffic, "c e traffic") \
MBEDTLS_SSL_TLS1_3_LABEL(s_hs_traffic, "s hs traffic") \
MBEDTLS_SSL_TLS1_3_LABEL(s_ap_traffic, "s ap traffic") \
MBEDTLS_SSL_TLS1_3_LABEL(s_e_traffic, "s e traffic") \
MBEDTLS_SSL_TLS1_3_LABEL(e_exp_master, "e exp master") \
MBEDTLS_SSL_TLS1_3_LABEL(res_master, "res master") \
MBEDTLS_SSL_TLS1_3_LABEL(exp_master, "exp master") \
MBEDTLS_SSL_TLS1_3_LABEL(ext_binder, "ext binder") \
MBEDTLS_SSL_TLS1_3_LABEL(res_binder, "res binder") \
MBEDTLS_SSL_TLS1_3_LABEL(derived, "derived") \
MBEDTLS_SSL_TLS1_3_LABEL(client_cv, "TLS 1.3, client CertificateVerify") \
MBEDTLS_SSL_TLS1_3_LABEL(server_cv, "TLS 1.3, server CertificateVerify")
#define MBEDTLS_SSL_TLS1_3_CONTEXT_UNHASHED 0
#define MBEDTLS_SSL_TLS1_3_CONTEXT_HASHED 1
#define MBEDTLS_SSL_TLS1_3_PSK_EXTERNAL 0
#define MBEDTLS_SSL_TLS1_3_PSK_RESUMPTION 1
#if defined(MBEDTLS_SSL_PROTO_TLS1_3)
/* We need to tell the compiler that we meant to leave out the null character. */
#define MBEDTLS_SSL_TLS1_3_LABEL(name, string) \
const unsigned char name [sizeof(string) - 1] MBEDTLS_ATTRIBUTE_UNTERMINATED_STRING;
union mbedtls_ssl_tls13_labels_union {
MBEDTLS_SSL_TLS1_3_LABEL_LIST
};
struct mbedtls_ssl_tls13_labels_struct {
MBEDTLS_SSL_TLS1_3_LABEL_LIST
};
#undef MBEDTLS_SSL_TLS1_3_LABEL
extern const struct mbedtls_ssl_tls13_labels_struct mbedtls_ssl_tls13_labels;
#define MBEDTLS_SSL_TLS1_3_LBL_LEN(LABEL) \
sizeof(mbedtls_ssl_tls13_labels.LABEL)
#define MBEDTLS_SSL_TLS1_3_LBL_WITH_LEN(LABEL) \
mbedtls_ssl_tls13_labels.LABEL, \
MBEDTLS_SSL_TLS1_3_LBL_LEN(LABEL)
/* Maximum length of the label field in the HkdfLabel struct defined in
* RFC 8446, Section 7.1, excluding the "tls13 " prefix. */
#define MBEDTLS_SSL_TLS1_3_HKDF_LABEL_MAX_LABEL_LEN 249
/* The maximum length of HKDF contexts used in the TLS 1.3 standard.
* Since contexts are always hashes of message transcripts, this can
* be approximated from above by the maximum hash size. */
#define MBEDTLS_SSL_TLS1_3_KEY_SCHEDULE_MAX_CONTEXT_LEN \
PSA_HASH_MAX_SIZE
/* Maximum desired length for expanded key material generated
* by HKDF-Expand-Label. This algorithm can output up to 255 * hash_size
* bytes of key material where hash_size is the output size of the
* underlying hash function. */
#define MBEDTLS_SSL_TLS1_3_KEY_SCHEDULE_MAX_EXPANSION_LEN \
(255 * MBEDTLS_TLS1_3_MD_MAX_SIZE)
/**
* \brief The \c HKDF-Expand-Label function from
* the TLS 1.3 standard RFC 8446.
*
* <tt>
* HKDF-Expand-Label( Secret, Label, Context, Length ) =
* HKDF-Expand( Secret, HkdfLabel, Length )
* </tt>
*
* \param hash_alg The identifier for the hash algorithm to use.
* \param secret The \c Secret argument to \c HKDF-Expand-Label.
* This must be a readable buffer of length
* \p secret_len Bytes.
* \param secret_len The length of \p secret in Bytes.
* \param label The \c Label argument to \c HKDF-Expand-Label.
* This must be a readable buffer of length
* \p label_len Bytes.
* \param label_len The length of \p label in Bytes.
* \param ctx The \c Context argument to \c HKDF-Expand-Label.
* This must be a readable buffer of length \p ctx_len Bytes.
* \param ctx_len The length of \p context in Bytes.
* \param buf The destination buffer to hold the expanded secret.
* This must be a writable buffer of length \p buf_len Bytes.
* \param buf_len The desired size of the expanded secret in Bytes.
*
* \returns \c 0 on success.
* \return A negative error code on failure.
*/
MBEDTLS_CHECK_RETURN_CRITICAL
int mbedtls_ssl_tls13_hkdf_expand_label(
psa_algorithm_t hash_alg,
const unsigned char *secret, size_t secret_len,
const unsigned char *label, size_t label_len,
const unsigned char *ctx, size_t ctx_len,
unsigned char *buf, size_t buf_len);
/**
* \brief This function is part of the TLS 1.3 key schedule.
* It extracts key and IV for the actual client/server traffic
* from the client/server traffic secrets.
*
* From RFC 8446:
*
* <tt>
* [sender]_write_key = HKDF-Expand-Label(Secret, "key", "", key_length)
* [sender]_write_iv = HKDF-Expand-Label(Secret, "iv", "", iv_length)*
* </tt>
*
* \param hash_alg The identifier for the hash algorithm to be used
* for the HKDF-based expansion of the secret.
* \param client_secret The client traffic secret.
* This must be a readable buffer of size
* \p secret_len Bytes
* \param server_secret The server traffic secret.
* This must be a readable buffer of size
* \p secret_len Bytes
* \param secret_len Length of the secrets \p client_secret and
* \p server_secret in Bytes.
* \param key_len The desired length of the key to be extracted in Bytes.
* \param iv_len The desired length of the IV to be extracted in Bytes.
* \param keys The address of the structure holding the generated
* keys and IVs.
*
* \returns \c 0 on success.
* \returns A negative error code on failure.
*/
MBEDTLS_CHECK_RETURN_CRITICAL
int mbedtls_ssl_tls13_make_traffic_keys(
psa_algorithm_t hash_alg,
const unsigned char *client_secret,
const unsigned char *server_secret, size_t secret_len,
size_t key_len, size_t iv_len,
mbedtls_ssl_key_set *keys);
/**
* \brief The \c Derive-Secret function from the TLS 1.3 standard RFC 8446.
*
* <tt>
* Derive-Secret( Secret, Label, Messages ) =
* HKDF-Expand-Label( Secret, Label,
* Hash( Messages ),
* Hash.Length ) )
* </tt>
*
* \param hash_alg The identifier for the hash function used for the
* applications of HKDF.
* \param secret The \c Secret argument to the \c Derive-Secret function.
* This must be a readable buffer of length
* \p secret_len Bytes.
* \param secret_len The length of \p secret in Bytes.
* \param label The \c Label argument to the \c Derive-Secret function.
* This must be a readable buffer of length
* \p label_len Bytes.
* \param label_len The length of \p label in Bytes.
* \param ctx The hash of the \c Messages argument to the
* \c Derive-Secret function, or the \c Messages argument
* itself, depending on \p ctx_hashed.
* \param ctx_len The length of \p ctx in Bytes.
* \param ctx_hashed This indicates whether the \p ctx contains the hash of
* the \c Messages argument in the application of the
* \c Derive-Secret function
* (value MBEDTLS_SSL_TLS1_3_CONTEXT_HASHED), or whether
* it is the content of \c Messages itself, in which case
* the function takes care of the hashing
* (value MBEDTLS_SSL_TLS1_3_CONTEXT_UNHASHED).
* \param dstbuf The target buffer to write the output of
* \c Derive-Secret to. This must be a writable buffer of
* size \p dtsbuf_len Bytes.
* \param dstbuf_len The length of \p dstbuf in Bytes.
*
* \returns \c 0 on success.
* \returns A negative error code on failure.
*/
MBEDTLS_CHECK_RETURN_CRITICAL
int mbedtls_ssl_tls13_derive_secret(
psa_algorithm_t hash_alg,
const unsigned char *secret, size_t secret_len,
const unsigned char *label, size_t label_len,
const unsigned char *ctx, size_t ctx_len,
int ctx_hashed,
unsigned char *dstbuf, size_t dstbuf_len);
/**
* \brief Derive TLS 1.3 early data key material from early secret.
*
* This is a small wrapper invoking mbedtls_ssl_tls13_derive_secret()
* with the appropriate labels.
*
* <tt>
* Early Secret
* |
* +-----> Derive-Secret(., "c e traffic", ClientHello)
* | = client_early_traffic_secret
* |
* +-----> Derive-Secret(., "e exp master", ClientHello)
* . = early_exporter_master_secret
* .
* .
* </tt>
*
* \note To obtain the actual key and IV for the early data traffic,
* the client secret derived by this function need to be
* further processed by mbedtls_ssl_tls13_make_traffic_keys().
*
* \note The binder key, which is also generated from the early secret,
* is omitted here. Its calculation is part of the separate routine
* mbedtls_ssl_tls13_create_psk_binder().
*
* \param hash_alg The hash algorithm associated with the PSK for which
* early data key material is being derived.
* \param early_secret The early secret from which the early data key material
* should be derived. This must be a readable buffer whose
* length is the digest size of the hash algorithm
* represented by \p md_size.
* \param transcript The transcript of the handshake so far, calculated with
* respect to \p hash_alg. This must be a readable buffer
* whose length is the digest size of the hash algorithm
* represented by \p md_size.
* \param derived The address of the structure in which to store
* the early data key material.
*
* \returns \c 0 on success.
* \returns A negative error code on failure.
*/
MBEDTLS_CHECK_RETURN_CRITICAL
int mbedtls_ssl_tls13_derive_early_secrets(
psa_algorithm_t hash_alg,
unsigned char const *early_secret,
unsigned char const *transcript, size_t transcript_len,
mbedtls_ssl_tls13_early_secrets *derived);
/**
* \brief Derive TLS 1.3 handshake key material from the handshake secret.
*
* This is a small wrapper invoking mbedtls_ssl_tls13_derive_secret()
* with the appropriate labels from the standard.
*
* <tt>
* Handshake Secret
* |
* +-----> Derive-Secret( ., "c hs traffic",
* | ClientHello...ServerHello )
* | = client_handshake_traffic_secret
* |
* +-----> Derive-Secret( ., "s hs traffic",
* . ClientHello...ServerHello )
* . = server_handshake_traffic_secret
* .
* </tt>
*
* \note To obtain the actual key and IV for the encrypted handshake traffic,
* the client and server secret derived by this function need to be
* further processed by mbedtls_ssl_tls13_make_traffic_keys().
*
* \param hash_alg The hash algorithm associated with the ciphersuite
* that's being used for the connection.
* \param handshake_secret The handshake secret from which the handshake key
* material should be derived. This must be a readable
* buffer whose length is the digest size of the hash
* algorithm represented by \p md_size.
* \param transcript The transcript of the handshake so far, calculated
* with respect to \p hash_alg. This must be a readable
* buffer whose length is the digest size of the hash
* algorithm represented by \p md_size.
* \param derived The address of the structure in which to
* store the handshake key material.
*
* \returns \c 0 on success.
* \returns A negative error code on failure.
*/
MBEDTLS_CHECK_RETURN_CRITICAL
int mbedtls_ssl_tls13_derive_handshake_secrets(
psa_algorithm_t hash_alg,
unsigned char const *handshake_secret,
unsigned char const *transcript, size_t transcript_len,
mbedtls_ssl_tls13_handshake_secrets *derived);
/**
* \brief Derive TLS 1.3 application key material from the master secret.
*
* This is a small wrapper invoking mbedtls_ssl_tls13_derive_secret()
* with the appropriate labels from the standard.
*
* <tt>
* Master Secret
* |
* +-----> Derive-Secret( ., "c ap traffic",
* | ClientHello...server Finished )
* | = client_application_traffic_secret_0
* |
* +-----> Derive-Secret( ., "s ap traffic",
* | ClientHello...Server Finished )
* | = server_application_traffic_secret_0
* |
* +-----> Derive-Secret( ., "exp master",
* . ClientHello...server Finished)
* . = exporter_master_secret
* .
* </tt>
*
* \note To obtain the actual key and IV for the (0-th) application traffic,
* the client and server secret derived by this function need to be
* further processed by mbedtls_ssl_tls13_make_traffic_keys().
*
* \param hash_alg The hash algorithm associated with the ciphersuite
* that's being used for the connection.
* \param master_secret The master secret from which the application key
* material should be derived. This must be a readable
* buffer whose length is the digest size of the hash
* algorithm represented by \p md_size.
* \param transcript The transcript of the handshake up to and including
* the ServerFinished message, calculated with respect
* to \p hash_alg. This must be a readable buffer whose
* length is the digest size of the hash algorithm
* represented by \p hash_alg.
* \param derived The address of the structure in which to
* store the application key material.
*
* \returns \c 0 on success.
* \returns A negative error code on failure.
*/
MBEDTLS_CHECK_RETURN_CRITICAL
int mbedtls_ssl_tls13_derive_application_secrets(
psa_algorithm_t hash_alg,
unsigned char const *master_secret,
unsigned char const *transcript, size_t transcript_len,
mbedtls_ssl_tls13_application_secrets *derived);
/**
* \brief Derive TLS 1.3 resumption master secret from the master secret.
*
* This is a small wrapper invoking mbedtls_ssl_tls13_derive_secret()
* with the appropriate labels from the standard.
*
* \param hash_alg The hash algorithm used in the application for which
* key material is being derived.
* \param application_secret The application secret from which the resumption master
* secret should be derived. This must be a readable
* buffer whose length is the digest size of the hash
* algorithm represented by \p md_size.
* \param transcript The transcript of the handshake up to and including
* the ClientFinished message, calculated with respect
* to \p hash_alg. This must be a readable buffer whose
* length is the digest size of the hash algorithm
* represented by \p hash_alg.
* \param transcript_len The length of \p transcript in Bytes.
* \param derived The address of the structure in which to
* store the resumption master secret.
*
* \returns \c 0 on success.
* \returns A negative error code on failure.
*/
MBEDTLS_CHECK_RETURN_CRITICAL
int mbedtls_ssl_tls13_derive_resumption_master_secret(
psa_algorithm_t hash_alg,
unsigned char const *application_secret,
unsigned char const *transcript, size_t transcript_len,
mbedtls_ssl_tls13_application_secrets *derived);
/**
* \brief Compute the next secret in the TLS 1.3 key schedule
*
* The TLS 1.3 key schedule proceeds as follows to compute
* the three main secrets during the handshake: The early
* secret for early data, the handshake secret for all
* other encrypted handshake messages, and the master
* secret for all application traffic.
*
* <tt>
* 0
* |
* v
* PSK -> HKDF-Extract = Early Secret
* |
* v
* Derive-Secret( ., "derived", "" )
* |
* v
* (EC)DHE -> HKDF-Extract = Handshake Secret
* |
* v
* Derive-Secret( ., "derived", "" )
* |
* v
* 0 -> HKDF-Extract = Master Secret
* </tt>
*
* Each of the three secrets in turn is the basis for further
* key derivations, such as the derivation of traffic keys and IVs;
* see e.g. mbedtls_ssl_tls13_make_traffic_keys().
*
* This function implements one step in this evolution of secrets:
*
* <tt>
* old_secret
* |
* v
* Derive-Secret( ., "derived", "" )
* |
* v
* input -> HKDF-Extract = new_secret
* </tt>
*
* \param hash_alg The identifier for the hash function used for the
* applications of HKDF.
* \param secret_old The address of the buffer holding the old secret
* on function entry. If not \c NULL, this must be a
* readable buffer whose size matches the output size
* of the hash function represented by \p hash_alg.
* If \c NULL, an all \c 0 array will be used instead.
* \param input The address of the buffer holding the additional
* input for the key derivation (e.g., the PSK or the
* ephemeral (EC)DH secret). If not \c NULL, this must be
* a readable buffer whose size \p input_len Bytes.
* If \c NULL, an all \c 0 array will be used instead.
* \param input_len The length of \p input in Bytes.
* \param secret_new The address of the buffer holding the new secret
* on function exit. This must be a writable buffer
* whose size matches the output size of the hash
* function represented by \p hash_alg.
* This may be the same as \p secret_old.
*
* \returns \c 0 on success.
* \returns A negative error code on failure.
*/
MBEDTLS_CHECK_RETURN_CRITICAL
int mbedtls_ssl_tls13_evolve_secret(
psa_algorithm_t hash_alg,
const unsigned char *secret_old,
const unsigned char *input, size_t input_len,
unsigned char *secret_new);
/**
* \brief Calculate a TLS 1.3 PSK binder.
*
* \param ssl The SSL context. This is used for debugging only and may
* be \c NULL if MBEDTLS_DEBUG_C is disabled.
* \param hash_alg The hash algorithm associated to the PSK \p psk.
* \param psk The buffer holding the PSK for which to create a binder.
* \param psk_len The size of \p psk in bytes.
* \param psk_type This indicates whether the PSK \p psk is externally
* provisioned (#MBEDTLS_SSL_TLS1_3_PSK_EXTERNAL) or a
* resumption PSK (#MBEDTLS_SSL_TLS1_3_PSK_RESUMPTION).
* \param transcript The handshake transcript up to the point where the
* PSK binder calculation happens. This must be readable,
* and its size must be equal to the digest size of
* the hash algorithm represented by \p hash_alg.
* \param result The address at which to store the PSK binder on success.
* This must be writable, and its size must be equal to the
* digest size of the hash algorithm represented by
* \p hash_alg.
*
* \returns \c 0 on success.
* \returns A negative error code on failure.
*/
MBEDTLS_CHECK_RETURN_CRITICAL
int mbedtls_ssl_tls13_create_psk_binder(mbedtls_ssl_context *ssl,
const psa_algorithm_t hash_alg,
unsigned char const *psk, size_t psk_len,
int psk_type,
unsigned char const *transcript,
unsigned char *result);
/**
* \bref Setup an SSL transform structure representing the
* record protection mechanism used by TLS 1.3
*
* \param transform The SSL transform structure to be created. This must have
* been initialized through mbedtls_ssl_transform_init() and
* not used in any other way prior to calling this function.
* In particular, this function does not clean up the
* transform structure prior to installing the new keys.
* \param endpoint Indicates whether the transform is for the client
* (value #MBEDTLS_SSL_IS_CLIENT) or the server
* (value #MBEDTLS_SSL_IS_SERVER).
* \param ciphersuite The numerical identifier for the ciphersuite to use.
* This must be one of the identifiers listed in
* ssl_ciphersuites.h.
* \param traffic_keys The key material to use. No reference is stored in
* the SSL transform being generated, and the caller
* should destroy the key material afterwards.
* \param ssl (Debug-only) The SSL context to use for debug output
* in case of failure. This parameter is only needed if
* #MBEDTLS_DEBUG_C is set, and is ignored otherwise.
*
* \return \c 0 on success. In this case, \p transform is ready to
* be used with mbedtls_ssl_transform_decrypt() and
* mbedtls_ssl_transform_encrypt().
* \return A negative error code on failure.
*/
MBEDTLS_CHECK_RETURN_CRITICAL
int mbedtls_ssl_tls13_populate_transform(mbedtls_ssl_transform *transform,
int endpoint,
int ciphersuite,
mbedtls_ssl_key_set const *traffic_keys,
mbedtls_ssl_context *ssl);
/*
* TLS 1.3 key schedule evolutions
*
* Early -> Handshake -> Application
*
* Small wrappers around mbedtls_ssl_tls13_evolve_secret().
*/
/**
* \brief Begin TLS 1.3 key schedule by calculating early secret.
*
* The TLS 1.3 key schedule can be viewed as a simple state machine
* with states Initial -> Early -> Handshake -> Application, and
* this function represents the Initial -> Early transition.
*
* \param ssl The SSL context to operate on.
*
* \returns \c 0 on success.
* \returns A negative error code on failure.
*/
MBEDTLS_CHECK_RETURN_CRITICAL
int mbedtls_ssl_tls13_key_schedule_stage_early(mbedtls_ssl_context *ssl);
/**
* \brief Compute TLS 1.3 resumption master secret.
*
* \param ssl The SSL context to operate on. This must be in
* key schedule stage \c Application, see
* mbedtls_ssl_tls13_key_schedule_stage_application().
*
* \returns \c 0 on success.
* \returns A negative error code on failure.
*/
MBEDTLS_CHECK_RETURN_CRITICAL
int mbedtls_ssl_tls13_compute_resumption_master_secret(mbedtls_ssl_context *ssl);
/**
* \brief Calculate the verify_data value for the client or server TLS 1.3
* Finished message.
*
* \param ssl The SSL context to operate on. This must be in
* key schedule stage \c Handshake, see
* mbedtls_ssl_tls13_key_schedule_stage_application().
* \param dst The address at which to write the verify_data value.
* \param dst_len The size of \p dst in bytes.
* \param actual_len The address at which to store the amount of data
* actually written to \p dst upon success.
* \param which The message to calculate the `verify_data` for:
* - #MBEDTLS_SSL_IS_CLIENT for the Client's Finished message
* - #MBEDTLS_SSL_IS_SERVER for the Server's Finished message
*
* \note Both client and server call this function twice, once to
* generate their own Finished message, and once to verify the
* peer's Finished message.
* \returns \c 0 on success.
* \returns A negative error code on failure.
*/
MBEDTLS_CHECK_RETURN_CRITICAL
int mbedtls_ssl_tls13_calculate_verify_data(mbedtls_ssl_context *ssl,
unsigned char *dst,
size_t dst_len,
size_t *actual_len,
int which);
#if defined(MBEDTLS_SSL_EARLY_DATA)
/**
* \brief Compute TLS 1.3 early transform
*
* \param ssl The SSL context to operate on.
*
* \returns \c 0 on success.
* \returns A negative error code on failure.
*
* \warning The function does not compute the early master secret. Call
* mbedtls_ssl_tls13_key_schedule_stage_early() before to
* call this function to generate the early master secret.
* \note For a client/server endpoint, the function computes only the
* encryption/decryption part of the transform as the decryption/
* encryption part is not defined by the specification (no early
* traffic from the server to the client).
*/
MBEDTLS_CHECK_RETURN_CRITICAL
int mbedtls_ssl_tls13_compute_early_transform(mbedtls_ssl_context *ssl);
#endif /* MBEDTLS_SSL_EARLY_DATA */
/**
* \brief Compute TLS 1.3 handshake transform
*
* \param ssl The SSL context to operate on. The early secret must have been
* computed.
*
* \returns \c 0 on success.
* \returns A negative error code on failure.
*/
MBEDTLS_CHECK_RETURN_CRITICAL
int mbedtls_ssl_tls13_compute_handshake_transform(mbedtls_ssl_context *ssl);
/**
* \brief Compute TLS 1.3 application transform
*
* \param ssl The SSL context to operate on. The early secret must have been
* computed.
*
* \returns \c 0 on success.
* \returns A negative error code on failure.
*/
MBEDTLS_CHECK_RETURN_CRITICAL
int mbedtls_ssl_tls13_compute_application_transform(mbedtls_ssl_context *ssl);
#if defined(MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_SOME_PSK_ENABLED)
/**
* \brief Export TLS 1.3 PSK from handshake context
*
* \param[in] ssl The SSL context to operate on.
* \param[out] psk PSK output pointer.
* \param[out] psk_len Length of PSK.
*
* \returns \c 0 if there is a configured PSK and it was exported
* successfully.
* \returns A negative error code on failure.
*/
MBEDTLS_CHECK_RETURN_CRITICAL
int mbedtls_ssl_tls13_export_handshake_psk(mbedtls_ssl_context *ssl,
unsigned char **psk,
size_t *psk_len);
#endif
/**
* \brief Calculate TLS-Exporter function as defined in RFC 8446, Section 7.5.
*
* \param[in] hash_alg The hash algorithm.
* \param[in] secret The secret to use. (Should be the exporter master secret.)
* \param[in] secret_len Length of secret.
* \param[in] label The label of the exported key.
* \param[in] label_len The length of label.
* \param[out] out The output buffer for the exported key. Must have room for at least out_len bytes.
* \param[in] out_len Length of the key to generate.
*/
int mbedtls_ssl_tls13_exporter(const psa_algorithm_t hash_alg,
const unsigned char *secret, const size_t secret_len,
const unsigned char *label, const size_t label_len,
const unsigned char *context_value, const size_t context_len,
uint8_t *out, const size_t out_len);
#endif /* MBEDTLS_SSL_PROTO_TLS1_3 */
#endif /* MBEDTLS_SSL_TLS1_3_KEYS_H */

View File

@@ -34,6 +34,7 @@
#include <string>
#include <vector>
#include <esp32-psram.h>
#include <uuid/common.h>
#include <uuid/log.h>
@@ -1645,22 +1646,22 @@ class Shell : public std::enable_shared_from_this<Shell>, public uuid::log::Hand
uint8_t cursor_ = 0; /*!< cursor position from end of line */
uint8_t esc_ = 0; /*!< esc sequence running */
Stream & stream_; /*!< Stream used for the input/output of this shell. @since 3.0.0 */
std::shared_ptr<Commands> commands_; /*!< Commands available for execution in this shell. @since 0.1.0 */
std::deque<unsigned int> context_; /*!< Context stack for this shell. Affects which commands are available. Should never be empty. @since 0.1.0 */
unsigned int flags_ = 0; /*!< Current flags for this shell. Affects which commands are available. @since 0.1.0 */
Stream & stream_; /*!< Stream used for the input/output of this shell. @since 3.0.0 */
std::shared_ptr<Commands> commands_; /*!< Commands available for execution in this shell. @since 0.1.0 */
std::deque<unsigned int, AllocatorPSRAM<unsigned int>> context_; /*!< Context stack for this shell. Affects which commands are available. Should never be empty. @since 0.1.0 */
unsigned int flags_ = 0; /*!< Current flags for this shell. Affects which commands are available. @since 0.1.0 */
#if UUID_CONSOLE_THREAD_SAFE
mutable std::mutex mutex_; /*!< Mutex for queued log messages. @since 1.0.0 */
#endif
unsigned long log_message_id_ = 0; /*!< The next identifier to use for queued log messages. @since 0.1.0 */
std::list<QueuedLogMessage> log_messages_; /*!< Queued log messages, in the order they were received. @since 0.1.0 */
size_t maximum_log_messages_ = MAX_LOG_MESSAGES; /*!< Maximum command line length in bytes. @since 0.6.0 */
std::string line_buffer_; /*!< Command line buffer. Limited to maximum_command_line_length() bytes. @since 0.1.0 */
size_t maximum_command_line_length_ = MAX_COMMAND_LINE_LENGTH; /*!< Maximum command line length in bytes. @since 0.6.0 */
unsigned char previous_ = 0; /*!< Previous character that was entered on the command line. Used to detect CRLF line endings. @since 0.1.0 */
Mode mode_ = Mode::NORMAL; /*!< Current execution mode. @since 0.1.0 */
std::unique_ptr<ModeData> mode_data_ = nullptr; /*!< Data associated with the current execution mode. @since 0.1.0 */
bool stopped_ = false; /*!< Indicates that the shell has been stopped. @since 0.1.0 */
unsigned long log_message_id_ = 0; /*!< The next identifier to use for queued log messages. @since 0.1.0 */
std::list<QueuedLogMessage, AllocatorPSRAM<QueuedLogMessage>> log_messages_; /*!< Queued log messages, in the order they were received. @since 0.1.0 */
size_t maximum_log_messages_ = MAX_LOG_MESSAGES; /*!< Maximum command line length in bytes. @since 0.6.0 */
std::string line_buffer_; /*!< Command line buffer. Limited to maximum_command_line_length() bytes. @since 0.1.0 */
size_t maximum_command_line_length_ = MAX_COMMAND_LINE_LENGTH; /*!< Maximum command line length in bytes. @since 0.6.0 */
unsigned char previous_ = 0; /*!< Previous character that was entered on the command line. Used to detect CRLF line endings. @since 0.1.0 */
Mode mode_ = Mode::NORMAL; /*!< Current execution mode. @since 0.1.0 */
std::unique_ptr<ModeData> mode_data_ = nullptr; /*!< Data associated with the current execution mode. @since 0.1.0 */
bool stopped_ = false; /*!< Indicates that the shell has been stopped. @since 0.1.0 */
bool prompt_displayed_ = false; /*!< Indicates that a command prompt has been displayed, so that the output of invoke_command() is correct. @since 0.1.0 */
uint64_t idle_time_ = 0; /*!< Time the shell became idle. @since 0.7.0 */
uint64_t idle_timeout_ = 0; /*!< Idle timeout (in milliseconds). @since 0.7.0 */
@@ -1786,7 +1787,7 @@ class CommandLine {
* @return A reference to the parameters.
* @since 0.6.0
*/
inline std::vector<std::string> & operator*() {
inline std::vector<std::string, AllocatorPSRAM<std::string>> & operator*() {
return parameters_;
}
/**
@@ -1795,7 +1796,7 @@ class CommandLine {
* @return A reference to the parameters.
* @since 0.6.0
*/
inline const std::vector<std::string> & operator*() const {
inline const std::vector<std::string, AllocatorPSRAM<std::string>> & operator*() const {
return parameters_;
}
/**
@@ -1804,7 +1805,7 @@ class CommandLine {
* @return A pointer to the parameters.
* @since 0.4.0
*/
inline std::vector<std::string> * operator->() {
inline std::vector<std::string, AllocatorPSRAM<std::string>> * operator->() {
return &parameters_;
}
/**
@@ -1813,7 +1814,7 @@ class CommandLine {
* @return A pointer to the parameters.
* @since 0.4.0
*/
inline const std::vector<std::string> * operator->() const {
inline const std::vector<std::string, AllocatorPSRAM<std::string>> * operator->() const {
return &parameters_;
}
@@ -1843,8 +1844,8 @@ class CommandLine {
bool trailing_space = false; /*!< Command line has a trailing space. @since 0.4.0 */
private:
std::vector<std::string> parameters_; /*!< Separate command line parameters. @since 0.4.0 */
size_t escape_parameters_ = std::numeric_limits<size_t>::max(); /*!< Number of initial arguments to escape in output. @since 0.5.0 */
std::vector<std::string, AllocatorPSRAM<std::string>> parameters_; /*!< Separate command line parameters. @since 0.4.0 */
size_t escape_parameters_ = std::numeric_limits<size_t>::max(); /*!< Number of initial arguments to escape in output. @since 0.5.0 */
};
/**

View File

@@ -232,7 +232,7 @@ void Logger::vlog(Level level, const char * format, va_list ap) const {
}
void Logger::vlog(Level level, Facility facility, const char * format, va_list ap) const {
std::vector<char> text(MAX_LOG_LENGTH + 1);
std::vector<char, AllocatorPSRAM<char>> text(MAX_LOG_LENGTH + 1);
if (vsnprintf(text.data(), text.size(), format, ap) <= 0) {
return;
@@ -241,7 +241,7 @@ void Logger::vlog(Level level, Facility facility, const char * format, va_list a
dispatch(level, facility, text);
}
void Logger::dispatch(Level level, Facility facility, std::vector<char> & text) const {
void Logger::dispatch(Level level, Facility facility, std::vector<char, AllocatorPSRAM<char>> & text) const {
std::shared_ptr<Message> message = std::make_shared<Message>(get_uptime_ms(), level, facility, name_, text.data());
text.resize(0);

View File

@@ -31,6 +31,7 @@
#include <string>
#include <vector>
#include <esp32-psram.h>
#include <uuid/common.h>
#ifndef UUID_COMMON_THREAD_SAFE
@@ -645,7 +646,7 @@ class Logger {
* @param[in] text Log message text.
* @since 1.0.0
*/
void dispatch(Level level, Facility facility, std::vector<char> & text) const;
void dispatch(Level level, Facility facility, std::vector<char, AllocatorPSRAM<char>> & text) const;
static std::atomic<Level> global_level_; /*!< Minimum global log level across all handlers. @since 3.0.0 */
#if UUID_LOG_THREAD_SAFE
@@ -723,7 +724,7 @@ class PrintHandler : public uuid::log::Handler {
mutable std::mutex mutex_; /*!< Mutex for configuration, state and queued log messages. @since 2.3.0 */
#endif
size_t maximum_log_messages_ = MAX_LOG_MESSAGES; /*!< Maximum number of log messages to buffer before they are output. @since 2.2.0 */
std::list<std::shared_ptr<Message>> log_messages_; /*!< Queued log messages, in the order they were received. @since 2.2.0 */
std::list<std::shared_ptr<Message>, AllocatorPSRAM<std::shared_ptr<Message>>> log_messages_; /*!< Queued log messages, in the order they were received. @since 2.2.0 */
};
} // namespace log

View File

@@ -28,6 +28,7 @@
#include <memory>
#include <string>
#include <esp32-psram.h>
#include <uuid/log.h>
#ifndef UUID_LOG_THREAD_SAFE
@@ -321,7 +322,7 @@ class SyslogService : public uuid::log::Handler {
#endif
size_t maximum_log_messages_ = MAX_LOG_MESSAGES; /*!< Maximum number of log messages to buffer before they are output. @since 1.0.0 */
unsigned long log_message_id_ = 0; /*!< The next identifier to use for queued log messages. @since 1.0.0 */
std::list<QueuedLogMessage> log_messages_; /*!< Queued log messages, in the order they were received. @since 1.0.0 */
std::list<QueuedLogMessage, AllocatorPSRAM<QueuedLogMessage>> log_messages_; /*!< Queued log messages, in the order they were received. @since 1.0.0 */
uint64_t mark_interval_ = 0; /*!< Mark interval in milliseconds. @since 2.0.0 */
uint64_t last_message_ = 0; /*!< Last message/mark time. @since 2.0.0 */

View File

@@ -249,7 +249,7 @@ size_t TelnetStream::write(uint8_t data) {
}
size_t TelnetStream::write(const uint8_t * buffer, size_t size) {
std::vector<unsigned char> data;
std::vector<unsigned char, AllocatorPSRAM<unsigned char>> data;
data.reserve(size);
while (size-- > 0) {
@@ -310,7 +310,7 @@ size_t TelnetStream::raw_write(unsigned char data) {
return 1;
}
size_t TelnetStream::raw_write(const std::vector<unsigned char> & data) {
size_t TelnetStream::raw_write(const std::vector<unsigned char, AllocatorPSRAM<unsigned char>> & data) {
return raw_write(reinterpret_cast<const unsigned char *>(data.data()), data.size());
}

View File

@@ -33,6 +33,7 @@
#include <string>
#include <vector>
#include <esp32-psram.h>
#include <uuid/console.h>
namespace uuid {
@@ -203,7 +204,7 @@ class TelnetStream : public ::Stream {
* @return The number of bytes that were output.
* @since 0.1.0
*/
size_t raw_write(const std::vector<unsigned char> & data);
size_t raw_write(const std::vector<unsigned char, AllocatorPSRAM<unsigned char>> & data);
/**
* Write an array of bytes directly to the output stream.
*
@@ -222,7 +223,7 @@ class TelnetStream : public ::Stream {
unsigned char previous_in_ = 0; /*!< Previous character that was received. Used to detect CR NUL. @since 0.1.0 */
unsigned char previous_out_ = 0; /*!< Previous character that was sent. Used to insert NUL after CR without LF. @since 0.1.0 */
int peek_ = -1; /*!< Previously read data cached by peek(). @since 0.1.0 */
std::vector<char> output_buffer_; /*!< Buffer data to be output until a read function is called. @since 0.1.0 */
std::vector<char, AllocatorPSRAM<char>> output_buffer_; /*!< Buffer data to be output until a read function is called. @since 0.1.0 */
};
/**
@@ -425,7 +426,7 @@ class TelnetService {
WiFiServer server_; /*!< TCP server. @since 0.1.0 */
size_t maximum_connections_ = MAX_CONNECTIONS; /*!< Maximum number of concurrent open connections. @since 0.1.0 */
std::list<Connection> connections_; /*!< Open connections. @since 0.1.0 */
std::list<Connection, AllocatorPSRAM<Connection>> connections_; /*!< Open connections. @since 0.1.0 */
shell_factory_function shell_factory_; /*!< Function to create a shell. @since 0.1.0 */
unsigned long initial_idle_timeout_ = DEFAULT_IDLE_TIMEOUT; /*!< Initial idle timeout (in seconds). @since 0.1.0 */
unsigned long write_timeout_ = DEFAULT_WRITE_TIMEOUT; /*!< Write timeout (in milliseconds). @since 0.1.0 */

View File

@@ -145,6 +145,7 @@ double ledcSetup(uint8_t chan, double freq, uint8_t bit_num) {
return 0;
};
void ledcAttachPin(uint8_t pin, uint8_t chan) {};
void ledcAttach(uint8_t pin, uint8_t chan, uint8_t bit_num) {};
void ledcWrite(uint8_t chan, uint32_t duty) {};
void neopixelWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue_val) {};
void rgbLedWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue_val) {};

View File

@@ -72,10 +72,15 @@ void analogSetAttenuation(adc_attenuation_t attenuation);
void dacWrite(uint8_t pin, uint8_t value);
double ledcSetup(uint8_t chan, double freq, uint8_t bit_num);
void ledcAttachPin(uint8_t pin, uint8_t chan);
void ledcAttach(uint8_t pin, uint8_t chan, uint8_t bit_num);
void ledcWrite(uint8_t chan, uint32_t duty);
void neopixelWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue_val);
void rgbLedWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue_val);
inline int rtc_get_reset_reason(int cpu_no) {
return 0;
}
#define PROGMEM
#define PGM_P const char *

View File

@@ -19,12 +19,164 @@ class AsyncClient {
class AsyncServer {
public:
AsyncServer(uint16_t port)
: _port(port){};
~AsyncServer(){};
: _port(port) {};
~AsyncServer() {};
protected:
uint16_t _port;
};
namespace asyncsrv {
static constexpr const char empty[] = "";
static constexpr const char T__opaque[] = "\", opaque=\"";
static constexpr const char T_100_CONTINUE[] = "100-continue";
static constexpr const char T_13[] = "13";
static constexpr const char T_ACCEPT[] = "Accept";
static constexpr const char T_Accept_Ranges[] = "Accept-Ranges";
static constexpr const char T_attachment[] = "attachment; filename=\"";
static constexpr const char T_AUTH[] = "Authorization";
static constexpr const char T_auth_nonce[] = "\", qop=\"auth\", nonce=\"";
static constexpr const char T_BASIC[] = "Basic";
static constexpr const char T_BASIC_REALM[] = "Basic realm=\"";
static constexpr const char T_BEARER[] = "Bearer";
static constexpr const char T_BODY[] = "body";
static constexpr const char T_Cache_Control[] = "Cache-Control";
static constexpr const char T_chunked[] = "chunked";
static constexpr const char T_close[] = "close";
static constexpr const char T_cnonce[] = "cnonce";
static constexpr const char T_Connection[] = "Connection";
static constexpr const char T_Content_Disposition[] = "Content-Disposition";
static constexpr const char T_Content_Encoding[] = "Content-Encoding";
static constexpr const char T_Content_Length[] = "Content-Length";
static constexpr const char T_Content_Type[] = "Content-Type";
static constexpr const char T_Content_Location[] = "Content-Location";
static constexpr const char T_Cookie[] = "Cookie";
static constexpr const char T_CORS_ACAC[] = "Access-Control-Allow-Credentials";
static constexpr const char T_CORS_ACAH[] = "Access-Control-Allow-Headers";
static constexpr const char T_CORS_ACAM[] = "Access-Control-Allow-Methods";
static constexpr const char T_CORS_ACAO[] = "Access-Control-Allow-Origin";
static constexpr const char T_CORS_ACMA[] = "Access-Control-Max-Age";
static constexpr const char T_CORS_O[] = "Origin";
static constexpr const char T_data_[] = "data: ";
static constexpr const char T_Date[] = "Date";
static constexpr const char T_DIGEST[] = "Digest";
static constexpr const char T_DIGEST_[] = "Digest ";
static constexpr const char T_ETag[] = "ETag";
static constexpr const char T_event_[] = "event: ";
static constexpr const char T_EXPECT[] = "Expect";
static constexpr const char T_FALSE[] = "false";
static constexpr const char T_filename[] = "filename";
static constexpr const char T_gzip[] = "gzip";
static constexpr const char T_Host[] = "host";
static constexpr const char T_HTTP_1_0[] = "HTTP/1.0";
static constexpr const char T_HTTP_100_CONT[] = "HTTP/1.1 100 Continue\r\n\r\n";
static constexpr const char T_id__[] = "id: ";
static constexpr const char T_IMS[] = "If-Modified-Since";
static constexpr const char T_INM[] = "If-None-Match";
static constexpr const char T_inline[] = "inline";
static constexpr const char T_keep_alive[] = "keep-alive";
static constexpr const char T_Last_Event_ID[] = "Last-Event-ID";
static constexpr const char T_Last_Modified[] = "Last-Modified";
static constexpr const char T_LOCATION[] = "Location";
static constexpr const char T_LOGIN_REQ[] = "Login Required";
static constexpr const char T_MULTIPART_[] = "multipart/";
static constexpr const char T_name[] = "name";
static constexpr const char T_nc[] = "nc";
static constexpr const char T_no_cache[] = "no-cache";
static constexpr const char T_nonce[] = "nonce";
static constexpr const char T_none[] = "none";
static constexpr const char T_opaque[] = "opaque";
static constexpr const char T_qop[] = "qop";
static constexpr const char T_realm[] = "realm";
static constexpr const char T_realm__[] = "realm=\"";
static constexpr const char T_response[] = "response";
static constexpr const char T_retry_[] = "retry: ";
static constexpr const char T_retry_after[] = "Retry-After";
static constexpr const char T_nn[] = "\n\n";
static constexpr const char T_rn[] = "\r\n";
static constexpr const char T_rnrn[] = "\r\n\r\n";
static constexpr const char T_Server[] = "Server";
static constexpr const char T_Transfer_Encoding[] = "Transfer-Encoding";
static constexpr const char T_TRUE[] = "true";
static constexpr const char T_UPGRADE[] = "Upgrade";
static constexpr const char T_uri[] = "uri";
static constexpr const char T_username[] = "username";
static constexpr const char T_WS[] = "websocket";
static constexpr const char T_WWW_AUTH[] = "WWW-Authenticate";
// HTTP Methods
static constexpr const char T_ANY[] = "ANY";
static constexpr const char T_GET[] = "GET";
static constexpr const char T_POST[] = "POST";
static constexpr const char T_PUT[] = "PUT";
static constexpr const char T_DELETE[] = "DELETE";
static constexpr const char T_PATCH[] = "PATCH";
static constexpr const char T_HEAD[] = "HEAD";
static constexpr const char T_OPTIONS[] = "OPTIONS";
static constexpr const char T_UNKNOWN[] = "UNKNOWN";
// Req content types
static constexpr const char T_RCT_NOT_USED[] = "RCT_NOT_USED";
static constexpr const char T_RCT_DEFAULT[] = "RCT_DEFAULT";
static constexpr const char T_RCT_HTTP[] = "RCT_HTTP";
static constexpr const char T_RCT_WS[] = "RCT_WS";
static constexpr const char T_RCT_EVENT[] = "RCT_EVENT";
static constexpr const char T_ERROR[] = "ERROR";
// extensions & MIME-Types
static constexpr const char T__avif[] = ".avif"; // AVIF: Highly compressed images. Compatible with all modern browsers.
static constexpr const char T__csv[] = ".csv"; // CSV: Data logging and configuration
static constexpr const char T__css[] = ".css"; // CSS: Styling for web interfaces
static constexpr const char T__gif[] = ".gif"; // GIF: Simple animations. Legacy support
static constexpr const char T__gz[] = ".gz"; // GZ: compressed files
static constexpr const char T__htm[] = ".htm"; // HTM: Web interface files
static constexpr const char T__html[] = ".html"; // HTML: Web interface files
static constexpr const char T__ico[] = ".ico"; // ICO: Favicons, system icons. Legacy support
static constexpr const char T__jpg[] = ".jpg"; // JPEG/JPG: Photos. Legacy support
static constexpr const char T__js[] = ".js"; // JavaScript: Interactive functionality
static constexpr const char T__json[] = ".json"; // JSON: Data exchange format
static constexpr const char T__mp4[] = ".mp4"; // MP4: Proprietary format. Worse compression than WEBM.
static constexpr const char T__mjs[] = ".mjs"; // MJS: JavaScript module format
static constexpr const char T__opus[] = ".opus"; // OPUS: High compression audio format
static constexpr const char T__pdf[] = ".pdf"; // PDF: Universal document format
static constexpr const char T__png[] = ".png"; // PNG: Icons, logos, transparency. Legacy support
static constexpr const char T__svg[] = ".svg"; // SVG: Vector graphics, icons (scalable, tiny file sizes)
static constexpr const char T__ttf[] = ".ttf"; // TTF: Font file. Legacy support
static constexpr const char T__txt[] = ".txt"; // TXT: Plain text files
static constexpr const char T__webm[] = ".webm"; // WebM: Video. Open source, optimized for web. Compatible with all modern browsers.
static constexpr const char T__webp[] = ".webp"; // WebP: Highly compressed images. Compatible with all modern browsers.
static constexpr const char T__woff[] = ".woff"; // WOFF: Font file. Legacy support
static constexpr const char T__woff2[] = ".woff2"; // WOFF2: Better compression. Compatible with all modern browsers.
static constexpr const char T__xml[] = ".xml"; // XML: Configuration and data files
static constexpr const char T_application_javascript[] = "application/javascript"; // Obsolete type for JavaScript
static constexpr const char T_application_json[] = "application/json";
static constexpr const char T_application_msgpack[] = "application/msgpack";
static constexpr const char T_application_octet_stream[] = "application/octet-stream";
static constexpr const char T_application_pdf[] = "application/pdf";
static constexpr const char T_app_xform_urlencoded[] = "application/x-www-form-urlencoded";
static constexpr const char T_audio_opus[] = "audio/opus";
static constexpr const char T_font_ttf[] = "font/ttf";
static constexpr const char T_font_woff[] = "font/woff";
static constexpr const char T_font_woff2[] = "font/woff2";
static constexpr const char T_image_avif[] = "image/avif";
static constexpr const char T_image_gif[] = "image/gif";
static constexpr const char T_image_jpeg[] = "image/jpeg";
static constexpr const char T_image_png[] = "image/png";
static constexpr const char T_image_svg_xml[] = "image/svg+xml";
static constexpr const char T_image_webp[] = "image/webp";
static constexpr const char T_image_x_icon[] = "image/x-icon";
static constexpr const char T_text_css[] = "text/css";
static constexpr const char T_text_csv[] = "text/csv";
static constexpr const char T_text_event_stream[] = "text/event-stream";
static constexpr const char T_text_html[] = "text/html";
static constexpr const char T_text_javascript[] = "text/javascript";
static constexpr const char T_text_plain[] = "text/plain";
static constexpr const char T_text_xml[] = "text/xml";
static constexpr const char T_video_mp4[] = "video/mp4";
static constexpr const char T_video_webm[] = "video/webm";
} // namespace asyncsrv
#endif

View File

@@ -36,6 +36,7 @@ class DummySettings {
uint8_t nested_format = 1; // 1=nested 2=single
String discovery_prefix = "homeassistant";
uint8_t discovery_type = 0; // HA
uint8_t ha_number_mode = 0; // box
bool ha_enabled = true;
String base = "ems-esp";
bool publish_single = false;

View File

@@ -1,6 +1,6 @@
/*
* EMS-ESP - https://github.com/emsesp/EMS-ESP
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
* Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
/*
* EMS-ESP - https://github.com/emsesp/EMS-ESP
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
* Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by

View File

@@ -67,6 +67,9 @@ class Preferences {
size_t putString(const char * key, String value) {
return 0;
}
bool isKey(const char * key) {
return true;
}
// unused....
@@ -84,7 +87,6 @@ class Preferences {
// size_t putBool(const char * key, bool value);
// size_t putBytes(const char * key, const void * value, size_t len);
// bool isKey(const char * key);
// PreferenceType getType(const char * key);
// int8_t getChar(const char * key, int8_t defaultValue = 0);
// int16_t getShort(const char * key, int16_t defaultValue = 0);

View File

@@ -1,6 +1,6 @@
/*
* EMS-ESP - https://github.com/emsesp/EMS-ESP
* Copyright 2020-2025 emsesp.org - proddy, MichaelDvP
* Copyright 2020-2025 emsesp.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by

Some files were not shown because too many files have changed in this diff Show More