Commit Graph
5943 Commits
Author SHA1 Message Date
Proddy 597939c896 Merge branch 'emsesp:dev' into dev 2026-10-04 10:18:48 +02:00
proddy 3ea25eba43 EMSESP_TX_PRE_DELAY 2026-10-04 09:56:34 +02:00
proddy 61eaee2ffa enable internal pull-up on the UART Rx 2026-10-04 09:22:40 +02:00
Raphael Hehl 3666f21d41 fix: German names of heat pump sensors TC0, TC1, TC3 and TA4
The English names of TC0, TC1 and TA4 are correct, the German
translations were not. Use the terms from the Bosch manuals.
2026-10-03 00:18:51 +02:00
proddy e4f9d4a96d #3257 summermode back and a test for #3094 2026-10-01 17:52:52 +02:00
proddy 52b24d5641 #3257 2026-09-30 18:04:34 +02:00
Proddy 115f5281f4 Merge branch 'emsesp:dev' into dev 2026-09-27 15:17:42 +02:00
proddy 8a48eb75d2 formatting 2026-09-27 10:34:55 +02:00
proddy 74ff39b22e chore: update generated files for v3.9.0-dev.15 2026-09-27 08:05:03 +00:00
Proddy 4ffe8c04e9 Merge branch 'dev' into dev 2026-09-27 09:45:34 +02:00
Proddy 1e49bd54a0 Merge branch 'dev' into pool-signals 2026-09-27 09:39:20 +02:00
proddy 7fe65b7f7b quicker restart 2026-09-27 09:28:49 +02:00
proddy 7c6101e819 prevent reboot on filesystem upload 2026-09-26 21:03:17 +02:00
Bingo2023 f550503fe9 Update locale_translations.h
shorten
2026-09-25 18:50:26 +02:00
Bingo2023andClaude Opus 5.5 8cdd9f5d79 rename pool translations to MP100 block, shorter names
- block comment `// mixer pool` -> `// MP100 pool module`, hydrTemp moved to `// water`
- `poolpump` -> `poolrequest` (pool request, MP100 input contacts)
- shorter en/de texts: pool setpoint / Pool Soll, valve status / Ventil Status,
  valve actual / Ventil Ist, valve setpoint / Ventil Soll
- existing short names (poolsettemp, pooltemp, poolshuntstatus, poolshunt) unchanged

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013YrkDbvxEv3ZMS7SPSKCGd
2026-09-25 18:42:45 +02: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
Bingo2023andClaude Opus 5.5 1d2b916935 add heatpump pool on/off, pool active, MP100 shunt setpoint and pool pump
Tested with a heatpump (0x08) and MP100 pool module (0x11), custom entities
compared against RC300 operation and a power meter on the circulation pump.

- boiler `poolon` (0x48A offset 0), writable, RC300 writes 01/00
- boiler `hppoolon` (0x488 offset 0 bit 6), pool heating actually active
- pool `poolshuntset` (0x5C4 offset 0, heatpump -> MP100), shunt setpoint;
  `poolshunt` follows within ~2 min
- pool `poolpump` (0x5BA offset 4), 0 = running, 2 = off. This byte is only
  in MP100 -> heatpump telegrams, so the pool module now also handles
  telegrams it sends to other devices
- simulator: `test pool`

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013YrkDbvxEv3ZMS7SPSKCGd
2026-09-24 17:24:47 +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 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