Changelog
Breaking Changes 🚨
- 8661c66 Curtailment devices: new device class for feed-in limitation (BC) (#32416)
- 0812904 Mqtt: always render preset timeout (BC) (#33084)
New Features 💫
- 7c0ddf1 Add 1SINQ OneKey heat pump (sgready via MQTT) (#33069)
- 7dd4007 Add BYN, UAH, RUB and KZT to currency list (#33259)
- dfad373 Add CHINT ECH10K-TH-EU inverter (#32858)
- 36614fe Add SENEC.Connect cloud API (#33029)
- bc38df1 Add Solplanet hybrid inverter (Modbus TCP) (#32888)
- 9a87bd1 Add StecaCharger (#32990)
- c745672 Afore hybrid: add RS485 (#32961)
- 469ccb8 EEBus OHPCF: add disablepowerlimiter option (#33071)
- 62cca5e Energy Price Forecast CO2: add regions (#33080)
- f216a44 Energy Price Forecast: add api key (#33081)
- 8cf5a44 Marstek: add discharge and optimise batterymode (#32571)
- e7ab19d SMA EV Charger: add setup instructions (#32862)
- 7549bea Services: add sunspec/read for reading a point value from a device (#33230)
- ea8e2a7 Site: add returnEnergy to aggregated battery state (#33241)
- 887ec9e Solax X1/X3-HAC: add CurrentLimiter (#33181)
- 8edf92a Sonoff: add switch socket charger (#33058)
- 45f49aa Sungrow: add curtailment (#32976)
- 56eccb0 Sungrow: add grid and battery returnenergy (#33129)
- 28bb5ba Tariff: add Energy Price Forecast regions and currencies (#33051)
- fb35c09 Templates: add ErrNotAvailable default to battery mode switches (#33023)
- 0ae8529 Templates: add http service for parameter choices (#32951)
- 63c8265 Templates: add integration provider link (#32008)
- a8c4dfd UI Customize: add custom-theme flag for default theme (#33042)
- 37d8aec UI: Add date format preference in user interface settings (#29321)
- a66fa2f Youless: add return energy (#33155)
- be4f4b8 Zendure SolarFlow 800 Pro: add battery control (#33272)
- f693454 openWB Pro: add return energy (#33216)
- fb12025 Škoda: add MyŠkoda public api vehicle (#33234)
Experimental Features 🧪
Other Changes ☀️
- 769a6a1 API: bound jq evaluation on /api/state against unauthenticated DoS (#33028)
- 8905c27 About modal: powered by footer for branded installations, update status badge (#33233)
- e7b694e Afore: remove Modbus TCP option (#32964)
- 13db309 Battery boost: resume from hold when limit is lowered (#32999)
- 859c905 Battery control: apply battery mode per battery and only on change (#32967)
- 0d08159 Charging plan: show strategy settings without dynamic tariff (#33168)
- 9f70a18 Charts: prevent long-press text selection (#33012)
- 7f33bb9 Config UI: hide disabled vehicles from loadpoint default-vehicle dropdown (#33125)
- 1a0a05c DaheimLaden: improve error handling (#33010)
- 063088c Demo tariffs: increase forecast to 5 days (#33174)
- c28f2ff Digest auth: reuse challenges across requests (#32842)
- 490f209 EEBus: apply the configured failsafe limits consistently (#33288)
- d379b78 EEBus: clamp the curtailment percent to the documented maximum (#33300)
- 829f11f EEBus: don't deny pairing while devices are still being configured (#32966)
- eeb2f59 EEBus: keep pairing requests pending while devices are being configured (#33046)
- 27bbdce Energyflow: clip collapsed details to remove phantom scroll area (#33229)
- e4e5c2d Enovates: verify EMS mode and use actually offered current (#33163)
- 9beca9b Go plugin: keep float parameters typed (#33162)
- eec0a8f GoodWe: list ESA series under hybrid template (#32884)
- 2b87fe2 Grünstromindex: fall back to co2_g_oekostrom when co2_g_standard is null (#33164)
- e24ec1a History: keep charge and discharge apart in entity legend sums (#33299)
- a565f2d History: show both directions for all entities of a bidirectional section (#33335)
- 6715711 Home Assistant: auto-detect Supervisor instance and token (#33000)
- f193eb1 Home Assistant: link charge status docs (#33260)
- dbe100b HomeWizard: support 1p kWh meters (#33293)
- f6e6db9 Issue: remove obsolete number input spinner styles (#33006)
- c314e8e Keep permanent sentinel errors distinguishable (#33194)
- ebe064a Loadpoint: disable PV mode when idle integrated device lacks surplus (#33073)
- c106711 Loadpoint: don't reserve surplus when paused by feed-in priority (#33072)
- 3159126 Loadpoint: ignore charge interruption during phase switch (#33109)
- bf57d39 Loadpoint: project continuous device min power shortfall into PV disable gate (#33075)
- 72b7e27 Loadpoint: sync charger phases on vehicle connect (#32962)
- e2c59fc Meter (SunSpec): read max AC power from nameplate (#32732)
- c1960b3 Metrics: fall back to power integration when a meter loses its energy register (#33103)
- 24498ad Modbus templates: share block reads (#32887)
- b305af0 Nissan: switch to MyNISSAN OneID authentication (#33316)
- af4d14f OCPP: keep websocket alive between heartbeats (#33099)
- 6b94ac6 OneKey: make mqtt timeout configurable, default 90s (#33120)
- 8abae0f OpenDTU: tolerate missing radio_stats in energy filter (#33279)
- ba8596b Optimizer chart: day boundaries with weekday at 00:00 (#32894)
- 4cc75b1 Optimizer: extend horizon to 48h plus end of day (#32893)
- 5960e9f Optimizer: limit precondition demand to required charging duration (#33137)
- bb6854b Optimizer: respect session energy limit when vehicle soc is unknown (#32895)
- 8d425d3 Phases: allow 1p scale-down when the loadpoint never disables (#33214)
- 748d36d Phases: disable instead of scaling down to 1p without sufficient surplus (#32991)
- 4adbf14 Provider auth: require authenticated session for OAuth login/logout (#33115)
- d22b67f Reapply "Optimizer: respect session energy limit when vehicle soc is unknown (#32895)"
- fa6f757 Revert "Optimizer: respect session energy limit when vehicle soc is unknown (#32895)"
- 6d27652 Revert "PV: reserve only min power for higher-priority loadpoints starting up" (#32947)
- f7b3f39 Shelly: no return energy register on gen1 relay and plug meters (#33111)
- 47fd73b Site: feed the optimizer a trailing percentile solar scale (#32849)
- a578893 Site: separate measurement from power calculation in update cycle (#32770)
- b15f81a Soc: extrapolate from charged energy when vehicle api is unavailable (#33122)
- 41319df SolarMax MAX.STORAGE: drop the whole-kWh energy register (#32986)
- f4b289f Sponsor: include device serial in hardware check metadata (#32927)
- 5120f26 Sungrow: remove coarse energy reading from inverter template (#33321)
- 1b909ed Sunspec: serialize access to a shared device tree (#33014)
- de0bac2 Sunspec: share block reads across values on the same connection (#33011)
- defe940 Tariff (solar): resample sub-slots along the source curve (#33105)
- 9600fc5 Tariff: make Energy Price Forecast cacheable (#33049)
- de3f899 Templates: support class-local include files (#32871)
- 8ccd72e UI: show inactive phases as dots in phase indicator (#33173)
- cba812d Vehicle settings: compact rows layout (#33169)
- adfbd05 Vehicle: don't instantiate disabled vehicles (#32919)
- fbbe12a Voltie: only offer phase switching where the power board supports it (#33070)
- d10ea19 Zaptec Go 2: disable phase switching with APM active (#33255)
- 80a6231 [BUGFIX] Update url / backup example curl command (#32984)
- 0be2e0d api: let Identify return multiple identities (#32949)
- 1ea9c3d fox-ess-h3-smart: remove limitsoc so batterymode is applied (#33325)
- 7d9fe8c my-PV meters: skip TLS verification for local data.jsn requests (#33003)
- f43499e pvnode: resample against the preceding interval, not the following one (#33102)
- 1416134 pvnode: revert to end-labelled interval resampling (#33133)
- fd09512 warp-ws: use wss when charger URI is https (#33184)
Bug Fixes 🐞
- e8b5477 Cardata: fix retrying failed container setup (#33243)
- 7df861f DaheimLaden: fix firmware init (#33032)
- 022171f Deye 3p hybrid: fix curtailed script for whole-number limits (#33161)
- 48c125e Deye 3p hybrid: fix energy scaling for HV pre-1098 firmware (#33074)
- cc92f39 Fix site.pvPower estimation for battery without pv (#32930)
- b3db9e9 Fix tariff API route not matching co2 (#33166)
- 64d48e5 Loadpoint: fix config error for disabled loadpoints (#32880)
- b590719 SunEnergyXT 500: fix battery control (#32866)
- 9034f45 Tesla Powerwall Fleet: fix template not selectable in ui (#32934)
- 10c646e UI: fix blurred energy flow bar labels in Safari (#33144)
- 1defa5f UI: fix docs links after docs site restructuring (#33160)
- 99d9adb Zaptec: fix nil pointer panic when Capabilities observation is missing (#33304)
- 20058f6 Zaptec: optional fix for auto-charging (#32996)