Commit Graph
11156 Commits
Author SHA1 Message Date
proddy 95da61cc6e update 2026-09-18 15:18:15 +02:00
Proddy e33b91f5a2 Merge pull request #3241 from HeatMind/fix/weblog-buffer-zero
Guard against a stored weblog_buffer of 0 (pop_front on an empty deque)
2026-09-18 15:08:39 +02:00
Proddy eed008707c Merge pull request #3242 from Jaano/fix/maxheat-enum-12-15kw
fix: add 12 kW and 15 kW steps to enum_maxHeat
2026-09-18 15:08:11 +02:00
Proddy c7f696a9dd Merge branch 'dev' into fix/maxheat-enum-12-15kw 2026-09-18 15:08:00 +02:00
Proddy a4c8263bb7 Merge pull request #3243 from proddy/dev
auto release notes on dev changes
2026-09-18 15:06:16 +02:00
Proddy c5cdd94bd7 Merge branch 'emsesp:dev' into dev 2026-09-18 15:05:41 +02:00
proddy 755dc17b0d show diffs in dev releases 2026-09-18 14:43:51 +02:00
proddy 8bc2aaa9c1 package update 2026-09-18 14:43:38 +02:00
Proddy ecb423620f Merge pull request #3240 from proddy/dev
more memory debug, optimized http, better Eth error handling
2026-09-18 08:35:29 +02:00
Jaano RosinandClaude Opus 5 5cc45b97bc fix: add 12 kW and 15 kW steps to enum_maxHeat
The heat limit registers on heat pumps using EMS_DEVICE_FLAG_HEATPUMP
(product 172/173) are bytes 2/3/4 of telegram 0x0492, read as a direct
index into enum_maxHeat. That table has only six entries, so any unit
whose auxiliary electric heater goes above 9 kW reports an index the
table cannot resolve.

Nothing bounds-checks the raw byte on the way in, and every render path
guards on `value < options_size`, so an out-of-range index is dropped
silently: no value is published to MQTT, the API omits the field, Home
Assistant shows `unknown`, and nothing appears in the log. Helpers::
value2enum stops at the same boundary, so the value cannot be written
back from EMS-ESP either, leaving the entity permanently stuck.

Measured on a Bosch Compress 7000i AW (CS7000iAW 13 OR-T, product 172)
with a 15 kW auxiliary heater, by setting each limit from the unit's own
display and reading telegram 0x0492 back:

    display 12 / 9 / 6 kW  ->  0x0492 data: 03 00 06 05 04

    raw  kW   note
      0   0   agrees with the existing table
      1   2   not offered by this heater
      2   3   not offered by this heater
      3   4   not offered by this heater
      4   6   agrees with the existing table
      5   9   agrees with the existing table
      6  12   new
      7  15   new

Indices 0, 4 and 5 match what EMS-ESP already decodes, which confirms the
existing entries and their ordering; the table was correct, just short.
The 2 kW and 4 kW entries belong to the 4-stufig (2/4/6/9 kW) heater
variant described in the HPC 410 service manual section 4.2.2, so a
3 kW-stepped heater simply skips them and walks 0, 3, 6, 9, 12, 15 kW,
i.e. raw 0, 2, 4, 5, 6, 7. The same sparse pattern is already encoded for
CS6800 devices in Boiler::process_HpHeaterConfig, which maps raw
{0, 2, 4, 5} onto {0, 3, 6, 9} kW.

Only devices carrying EMS_DEVICE_FLAG_HEATPUMP are affected; CS6800
devices use enum_maxHeat1/enum_maxHeat2 and are unchanged. Verified with
the standalone build: `test entity_dump` differs from the committed
docs/dump_entities.csv in exactly the six maxheat rows of products 172
and 173, and nowhere else.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 13:17:37 +03:00
proddy 1abaac07c4 formatting 2026-09-15 22:02:19 +02:00
proddy f240c1bb91 update 2026-09-15 21:57:39 +02:00
proddy 4247737896 fix auto version fetch, make it non-blocking 2026-09-15 21:57:25 +02:00
proddy c6e3cceead fetch version info and give up after 5 tries 2026-09-15 21:56:53 +02:00
proddy b1b8ab7dcc formatting text 2026-09-15 21:56:25 +02:00
proddy 453a0ec19c formatting 2026-09-15 21:56:11 +02:00
proddy 342fc52daa update test data 2026-09-15 21:56:01 +02:00
proddy c8f5577a33 remove 'drag' 2026-09-15 21:26:52 +02:00
HeatMind b2b98ef660 fix(weblog): guard against a weblog_buffer of 0 (pop_front on empty deque)
WebLogService::operator<< trims with `log_messages_.size() >= limit_log_messages_`.
size() is unsigned, so with limit_log_messages_ == 0 the condition holds even for an
empty deque and pop_front() runs on it - undefined behaviour, in practice heap
corruption. On a PSRAM board the stored value survives a reboot, so the device crashes
again as soon as the first log message is written.

Nothing clamps the value on the way in: start() copies settings.weblog_buffer with no
lower bound, the PSRAM branch of operator<< passes it straight into
limit_log_messages_, and ArduinoJson's | in WebSettings::update() only substitutes the
default for a missing or type-incompatible key - a stored 0 is a valid uint16_t.

- operator<<: skip the trim loop on an empty deque
- start(): keep the existing default when the stored value is 0
- getSetValues(): a missing or zero max_messages keeps the current size instead of
  storing 0
- WebSettings::update(): repair a stored 0, and derive the psram/no-psram default once
  instead of twice

Refs #3237
2026-09-15 09:13:24 +02:00
proddy 9a731d7731 update tests 2026-09-14 21:55:52 +02:00
proddy 167f194bdf add auto check for firmware updates 2026-09-14 19:33:20 +02:00
proddy 7ae9d87a72 possible fix for #3201 2026-09-14 15:48:29 +02:00
Proddy 39e1555a9e Merge branch 'emsesp:dev' into dev 2026-09-14 15:20:06 +02:00
Proddy 40079d764a Merge pull request #3233 from MichaelDvP/dev
pc0flow #3224, summermode #3230, remove HA-config for excluded
2026-09-14 15:19:44 +02:00
proddy ec73a134b5 check Eth, and show warnings 2026-09-14 12:43:34 +02:00
proddy 13a29ecc00 add internal sensors on fresh install 2026-09-13 15:14:40 +02:00
proddy 53e916ed96 use system_name function 2026-09-13 15:14:26 +02:00
proddy 3b4e0966e7 text changes 2026-09-13 15:14:11 +02:00
proddy 19cf29bfd3 update 2026-09-13 15:14:03 +02:00
proddy 33a44bc3a6 scripts to manually build fw 2026-09-13 15:13:54 +02:00
proddy b6860c32ef clean-up example 2026-09-13 15:13:41 +02:00
proddy a27360d9b2 ESP32Async/ESPAsyncWebServer @ 3.12.1 2026-09-13 15:13:35 +02:00
proddy c076af7515 package update 2026-09-13 15:13:19 +02:00
MichaelDvP 540a8654f7 chore: update generated files for v3.9.0-dev.9 2026-09-13 06:23:51 +00:00
MichaelDvP 65aca1b9c1 remove HA config for excluded entity, dev.9 2026-09-13 08:06:16 +02:00
MichaelDvP c31bc9054a Summermode for UI800, fix #3230 2026-09-11 17:05:13 +02:00
proddy 213e5ef80d add back internal sensors on a fresh install 2026-09-11 16:28:50 +02:00
proddy 8f37296c89 show NVS values on show command 2026-09-11 16:28:35 +02:00
proddy a1a880b8c3 text changes and comments 2026-09-11 16:27:53 +02:00
proddy 274b5635b0 change test url 2026-09-11 16:27:21 +02:00
proddy 28fa4aa63f added clear() 2026-09-11 16:27:10 +02:00
proddy a66b70c3f3 package update 2026-09-11 16:26:57 +02:00
proddy 906168f777 cleanup 2026-09-11 16:26:44 +02:00
proddy d96048a416 update node 2026-09-11 11:29:30 +02:00
proddy 84357ba84a adjust comments 2026-09-11 11:29:17 +02:00
proddy 4f3f858fc7 3.9.0-dev.9 2026-09-11 11:29:03 +02:00
proddy a060e5efbf reduce >1 blank lines 2026-09-11 11:28:53 +02:00
proddy 0bfbfcaecb formatting 2026-09-11 11:28:33 +02:00
proddy 94267ba6e4 lint warning 2026-09-11 11:27:30 +02:00
proddy 158d5c9d4e lint warning 2026-09-11 11:27:21 +02:00