Commit Graph
5921 Commits
Author SHA1 Message Date
proddy 100edcefe2 optimize LED and fix some edge cases 2026-09-24 17:21:41 +02:00
proddy eddc443d72 replacement for rgbLedWrite() to support new v6 of the WS2812B driver 2026-09-24 11:29:14 +02:00
proddy 40c4fdd2d1 move hardcoded consts to header files 2026-09-24 11:28:14 +02:00
proddy ecc93d42c8 force version fetch when action endpoint called 2026-09-23 23:05:57 +02:00
proddy 4969078fda 3.9.0-dev.13 2026-09-23 23:05:25 +02:00
proddy 1cce60096e debug message text changes 2026-09-23 23:05:14 +02:00
Proddy 4eae732801 Merge pull request #3248 from proddy/littlefs-migrate
Littlefs migrate
2026-09-20 22:38:39 +02:00
proddy 7a338f465d add gateway ipv6 (#3246) 2026-09-20 12:28:25 +02:00
proddyandCursor 15ece2030e auto-convert older 3.8.x filesystem to the 3.9.0 format
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 11:20:37 +02:00
proddy 307ae9247f fixes #3246 2026-09-19 15:24:23 +02:00
proddy c92f928143 bump version 2026-09-18 15:18:40 +02:00
proddy 4b430bc7fd auto-formatting 2026-09-18 15:18:20 +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 c7f696a9dd Merge branch 'dev' into fix/maxheat-enum-12-15kw 2026-09-18 15:08:00 +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 4247737896 fix auto version fetch, make it non-blocking 2026-09-15 21:57:25 +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 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 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
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 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 0bfbfcaecb formatting 2026-09-11 11:28:33 +02:00
MichaelDvP 604b1344ec Merge remote-tracking branch 'emsesp/dev' into dev 2026-09-09 07:41:40 +02:00
proddy e3d9f03097 don't use Eth if not on ESP32 2026-09-08 22:08:22 +02:00
Proddy e489c0f77d Merge branch 'dev' into dev 2026-09-08 21:14:49 +02:00
proddy 99dd04cbf5 remove writing efuse 2026-09-08 21:08:58 +02:00
proddy 4dac338e2c remove comments 2026-09-08 21:08:44 +02:00
MichaelDvP 3ef63dff73 add pc0 flow for #3224 2026-09-08 11:48:31 +02:00
MichaelDvP c75ebb94a4 Merge remote-tracking branch 'proddy/dev' into dev 2026-09-06 20:35:18 +02:00
MichaelDvP 21923db81d fix standalone 2026-09-05 12:09:09 +02:00
proddy dbf54f09f5 auto-formatting 2026-09-05 11:02:33 +02:00
MichaelDvP a22cab95fa Merge remote-tracking branch 'emsesp/dev' into dev 2026-09-05 10:22:39 +02:00
Proddy 5d75583dba Merge branch 'emsesp:dev' into dev 2026-09-05 10:00:05 +02:00
Proddy 2ec8450b78 Merge pull request #3220 from pepe82sh/fix/olimexpoe-wrover-psram-eth-clock
Add OLIMEXPOEW board profile; guard against PSRAM/Ethernet clock GPIO conflict
2026-09-05 09:59:53 +02:00
MichaelDvP f911950aee solar enable #3223 2026-09-05 09:56:44 +02:00
MichaelDvP d1b97daff0 formatting 2026-09-05 09:54:34 +02:00
MichaelDvP 7caa5a1ba0 check for nvs1 partition 2026-09-05 09:53:51 +02:00
MichaelDvP 3ba7099987 show mqtt stop 2026-09-05 09:53:31 +02:00
proddy 1b345f788d added heatblock temp translations 2026-09-04 13:48:25 +02:00