Commit Graph
11135 Commits
Author SHA1 Message Date
proddy 8c496d8f77 chore: update generated files for v3.9.0-dev.15 2026-09-25 14:42:39 +00:00
proddy e5456293aa #3196 - heatingpumpflow fix 2026-09-25 16:24:48 +02:00
proddy a2f8f35285 remove void last bit 2026-09-25 16:24:25 +02:00
proddy fb8edfb6a7 change year 2025 to 2026 2026-09-25 08:44:57 +02:00
proddy b7a174ddea #3196 2026-09-25 08:44:42 +02:00
proddy 446738f0d9 remove condition, now handled in erase_command 2026-09-24 22:20:26 +02:00
proddy 8b1de52f55 fix possible lost pointers, could cause a crash 2026-09-24 22:12:19 +02:00
Proddy 491bb01088 Merge pull request #3253 from proddy/dev
replacement for rgbLedWrite() to support new v6 of the WS2812B driver
2026-09-24 18:44:32 +02:00
Proddy 37d571b6e9 Merge branch 'emsesp:dev' into dev 2026-09-24 18:43:33 +02:00
proddy f05105861e update doc 2026-09-24 18:43:02 +02:00
proddy 09e8ef5403 pkg update 2026-09-24 17:29:06 +02:00
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 09c9e5d53b fix makefile for osx 2026-09-24 08:39:44 +02:00
Proddy 046816785b Merge pull request #3251 from proddy/dev
auto filesystem upgrade from 3.8.x to 3.9.x
2026-09-23 23:26:09 +02:00
proddy cddc1394ac package update 2026-09-23 23:06:31 +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 421060f69d Merge pull request #3247 from proddy/dev
fixes #3246 - Inconsistent display of IPv4/IPv6 addresses in web UI
2026-09-20 22:36:26 +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 323fdc8e4c package update 2026-09-19 15:17:23 +02:00
Proddy b333b2871c Merge pull request #3244 from proddy/dev
bump version for testing
2026-09-18 15:19:15 +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 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