Changelog
Breaking Changes ๐จ
- a3b14bb Deye 3p hybrid: add feed-in curtailment (BC) (#32206)
- c8b2765 Home Assistant: configurable charge status values (BC) (#32136)
- 1f0aaf1 Huawei SUN2000: treat two battery units as single battery (BC) (#32034)
- 02a6625 Modbus: unify delay and timeout settings (BC) (#31996)
New Features ๐ซ
- c727537 Add FoxESS EV charger (Modbus TCP) (#31412)
- 0a98d57 Add SMA Sunny Home Manager 2.0 ModbusTCP with curtailment (#32091)
- 1a058fd Add Shelly EM1 (#31992)
- cd9812e Add Sigenergy EVDC charger (#32023)
- f8cd71f Add SolvisControl 2/3 heatpump (#31976)
- 106d446 Add THB (Thai Baht) to currency list (#32231)
- d92f125 Afore hybrid: add grid and pv usage (#32027)
- 4c26af7 HEMS: add custom implementation (#32187)
- ce75e49 History: normalize tooltip units, add total row (#32262)
- 838773b Home Assistant: add features config (heating/integrateddevice) (#32288)
- af8ecb2 Huawei SUN2000: add curtailment description (#32188)
- e613468 PowerOpti: add grid energy (#32281)
- 435ed72 Revert "Add Shelly EM1 (#31992)"
- 835d3c9 Shelly 3EM (Gen.1): add http cache, default 1s (#32216)
- 177ca55 Site: add experimental battery grid discharge setting (#32086)
- caf366b Solaredge: add curtailment (#31982)
- 1b16f23 Trydan: remove Locked, pause DPC, add currents/voltages (firmware >=2.5.0) (#32013)
- e3a48e4 Vehicle (VW/EU Data Act): add Skoda Enyaq soc key (#32060)
- c9c3b3b emsesp: add cacheing (#32291)
Other Changes โ๏ธ
- 542a01f API: generate /api/state documentation from UI types (#31530)
- 20ce660 Battery: move grid discharge setting to battery page (#32256)
- 3622755 Chore: remove unused @claude mention workflow (#32024)
- 608aa36 Curtailment: report curtailed percent instead of bool (#32010)
- b66d653 E3DC: address session data request per wallbox index (#32172)
- 6187b96 EEBus OHPCF: keep enabled state when enable fails (#32263)
- 408f9a0 EEBus: accept an inactive ยง14a limit without a value (#32155)
- f85b3b9 EEBus: treat data not valid as unavailable (#32204)
- e871263 EEBus: update eebus-go/ship-go, drop eebus-go replace (#31980)
- bacca99 FNN Hems: align power config wording with EEBus (productionNominalMax) (#31948)
- 300892d HEMS: use Wp unit for installed generator power (#32173)
- abfce92 Huawei SUN2000: optimize timings (#32235)
- f9dca65 Huawei SUN2000: read all ESS registers at once (#32234)
- 1f3196b Loadpoint: ignore implausible charge rater readings (#32174)
- f8584eb Mercedes: remove broken odo, maxSoc and status (#32293)
- 1656a76 Mqtt: wait for retained message after subscribe before first read (#32031)
- 496c834 OCPP: tolerate empty chargePointVendor in BootNotification (#32184)
- 1c26a6f Optimizer: blend measured values into forecast inputs (#31975)
- 43517ee Optimizer: don't show outdated battery forecast (#32119)
- de4c63d Optimizer: evaluate suggestion actionable flag on publish (#32045)
- 36a789b Optimizer: hide battery forecast when already full or empty (#32121)
- 9db7be1 Optimizer: notify on advisory suggestion changes (#31905)
- 19c4e06 Optimizer: publish result before status check (#32055)
- 771fc20 Optimizer: split grid peak shaping into demand, feed-in and combined strategies (#32108)
- a1b6a06 Optimizer: surface battery-to-grid discharge as suggestion (#32087)
- 05676e7 Remove deprecated Smart EQ (#32294)
- 9c88523 Revert "API: generate /api/state documentation from UI types" (#32109)
- 9300e15 Session: fixed overflowing of cards on small screens (#32261)
- 13aab7c Site: only re-evaluate HEMS dim and curtail state on change (#32011)
- c8517b0 Tariff (Combined): sort rates before partitioning by start time (#32094)
- aa7c685 Tariff (solar): center sub-slot interpolation on the source slot (#32116)
- be81052 Tariff: base cache validity on update interval instead of rate coverage (#32168)
- 60f313c Tariff: keep fixed tariff rates ordered when chargesZones markers are combined (#32165)
- 03a8c74 UI: suppress API error toasts during restart (#32265)
- 1db0d50 UI: use consistent vehicle wording in messaging events (#31938) (#32048)
- 6ead46d Vaillant: solve ALTCHA challenge on login (#32070)
- 2b7aaea WARP1: don't report zero phase currents on power-only meters (#32090)
- 4e1b0a8 Wattsonic: remove wrong grid currents (inverter registers) (#32049)
- 8bbbc24 api: match permanent sentinel errors after backoff unwrapping (#32197)
- 608575f core: apply dim/curtail to devices that cannot report their state (#32198)
- 9a2a730 docs(openapi): remove stale result envelope from response schemas (#31989)
- 19ed27f vw/eudataact: fall back to battery care mode field for target SoC (#32242)
- 2b69cb3 vw/eudataact: restore welcomecharge (#32276)
Bug Fixes ๐
- 614c910 Cardata: fix mqtt channel stealing (#32244)
- f7af0bb Daheimladen: fix hardware check (#32079)
- 5215bb9 EEBus: fix OHPCF re-boost after the heat pump withdrew its flexibility (#32150)
- 209b72b Fix startup deadlock with existing metrics database (#32043)
- ea6cc99 Planner: fix continuous plan selecting the current slot (#32041)
- 834c062 Revert "Daheimladen: fix misleading sponsorship error on station id read (#31956)"
- f937ebe Shelly: fix PM1 Gen3 energy readings (#31957)
- e867ef6 Tariff: fix chargesZones boundaries not taking effect between price zones (#32143)
- b178fb5 UI: fix loadpoint value alignment on narrow screens (#32275)
- 75eebf1 UI: fix missing general config tiles with battery configured (#32140)
- f1b4416 Update and fix translations (#32224)