github evcc-io/evcc 0.319.0

2 hours ago

Changelog

Breaking Changes 🚨

  • 15d06c8 Huawei SmartLogger: remove battery (BC) (#35658)
  • 18da91b Huawei: move curtailment to separate devices (BC) (#32451)
  • 6f05b23 Optimizer: leave home battery its planned charge when vehicle follows pv surplus (BC) (#35841)
  • 8467e10 Volvo Connected: OAuth2 migration (BC) (#35845)

New Features 💫

Other Changes ☀️

  • 7b0f3b7 ABL eMH: warn if charging release by group master is required (#35860)
  • 96a578c AGENTS.md: template docs are generated by CI (#35882)
  • d19524b Battery: warn if only one power limit is configured (#35675)
  • 91fa61d CI PR labeler: restrict to existing labels (#35623)
  • e1a5891 Cardata: keep newer stream data and age the REST refresh by message time (#35219)
  • bb7be58 Cardata: read stream from local MQTT broker (optional) (#35211)
  • ed48310 Cardata: use shared mqtt preset and stream source (#35233)
  • 2294b9d Charging plan: lock strategy to cheapest while optimizer controls loadpoint (#35557)
  • e56c5dc Circuit: reserve offered current for loadpoint during phase switch (#34847)
  • 1c125cd CodeQL: align init and analyze action versions (#35674)
  • 38ae402 Config UI: assign charging points and heaters to circuits inline (#35127)
  • 0880587 Config/Energyflow: sort consumers alphabetically (#35433)
  • 3aeb327 Config: require admin password for all script plugin sources (#35423)
  • 12bdb04 DaheimLaden: accept raw-ASCII station id from replacement comm modules (#35440)
  • 5498ea2 EEBus: support single-phase chargers and dynamic phase limits (#35133)
  • b3f2bf5 EEBus: update spine-go and ship-go to current upstream dev (#35831)
  • bcea759 EM2Go: integrate charge power for session energy (#35759)
  • 8a4edf5 EU Data Act: prefer current battery_state_report.soc key for soc (#35293)
  • 8e77086 EU Data Act: prefer current mileage.value key for odometer (#35294)
  • e2656e3 EU Data Act: surface persistent update errors (#35186)
  • 5b1b033 EU Data Act: template-defined soc key preference, Cupra prefers battery_level_HV (#35686)
  • 4b61f45 EU Data Act: wait for Retry-After cooldown on rate limit (#35582)
  • 77b3a5f Easee: reset stale session energy on plug-in (#35826)
  • 223c48c EcoFlow Stream: detect leader among multiple serials (#35334)
  • e7cb5ff Energy: keep hidden small flows in Sankey node totals (#35787)
  • 23c4aae Energy: visual improvements, axis alignment (#35282)
  • 8789a0e FoxESS H3-Pro/Smart: don't overwrite Off-Grid (EPS) min SoC (#35628)
  • 2f371eb FoxESS H3: drop charge mode (#35937)
  • 2b5cafe FoxESS H3: hold via max discharge current instead of remote active power (#35639)
  • f8d768f Genesis EU: sign OneApp/CCI auth calls with X-Fingerprint (#35652)
  • 927ed3c Heating: demand predictor selector in loadpoint settings (#34342)
  • 9027d8a Hoymiles OpenDTU: support basic auth (#35739)
  • 2f30291 Huawei EMMA: always use modbus id 0 (#35930)
  • 7ef3f3a Huawei SUN2000 Inverter: reduce default timeout (#35687)
  • 811d77b Huawei SmartLogger: always use modbus id 0 (#35939)
  • 8d3b434 Issue agent: cc device contributors on device issues (#35849)
  • 1dbf07a Kia/Hyundai EU: send current Android Chrome User-Agent on OneApp login (#35324)
  • 9890c9f Kostal Piko MP Plus: cache measurements request (#35404)
  • 2e68d8a LG ESS: don't report feed-in energy as grid import (#35926)
  • 20bb178 Link docs in the UI language for all translated locales (#35596)
  • b51e0fc Loadpoint: adopt charger phases while disabled (#35383)
  • aa8fc88 Loadpoint: drop solar share grid allowance while battery discharges below prioritySoc (#35064)
  • 75493e6 Loadpoint: estimate remaining charge for plan goal while plan slot is active (#35266)
  • f49c757 Loadpoint: keep min current on a full circuit when measuring below the offer (#35245)
  • 6e5fac6 Loadpoint: keep welcome charge when switching phases on connect (#35222)
  • e6092b3 Loadpoint: refresh session energy on shutdown (#35591)
  • 3939abf Loadpoint: reset SoC estimator for new sessions (#35764)
  • a7200ca Loadpoint: switch phases of a disabled charger only when enabling (#35189)
  • 70ff31c Loadpoint: switch phases with unknown phase state in circuit fast charging (#35361)
  • 7e99742 Loadpoint: update immediately on charger status change (#35697)
  • 84a06ff MQTT: bound startup cleanup duration (#35310)
  • 5141256 MQTT: fail listen on refused subscription (#35235)
  • f08d11e Meter (FoxESS H3): leave off-grid min SoC untouched (#35823)
  • d741395 Meter (Huawei EMMA): document Modbus TCP requirements and battery control (#34182)
  • 15792e6 Modbus: release shared connection for every registration (#35581)
  • 519404a OCPP forwarder: read meterInterval under its mutex (#35555)
  • 42f3125 OCPP forwarder: stop re-dial loop and back off on instant upstream drop (#34772)
  • 6229dc7 OCPP forwarder: track idTag and transaction of relayed transactions (#35244)
  • d63afec OCPP: fall back to key-based GetConfiguration on failure (#35207)
  • e2f0762 OCPP: ignore zero energy register after non-zero total (#35853)
  • 98ac23b OCPP: skip BootNotification wait when trigger is rejected (#35401)
  • a0e76ee Onboarding: block tariff checklist items for legacy tariff configuration (#35265)
  • 071e072 Onboarding: don't open wizard on partial state after restart (#35380)
  • 5c0653b Onboarding: move skip to site step, password is mandatory (#35275)
  • 682dc2b Optimizer: apply battery suggestion while a vehicle modelled as fixed demand charges (#35306)
  • e224050 Optimizer: combine SoC projections into one chart (#35444)
  • d003442 Optimizer: consider all vehicle plan goals within horizon (#35552)
  • 2a17616 Optimizer: continue 100% soc plan while vehicle connected (#35854)
  • 47a3d38 Optimizer: don't floor vehicle end of horizon value at export price (#35827)
  • 8991e7c Optimizer: don't toggle phases inside 1p/3p gap (#35825)
  • dfb4849 Optimizer: don't treat planner slot as deadline critical (#35648)
  • 2997876 Optimizer: don't treat pv battery charging as grid charging (#35428)
  • d217b8b Optimizer: estimate vehicle state from charged energy without soc (#35366)
  • f43c1d4 Optimizer: group runtime state on site (#35928)
  • 78ab829 Optimizer: hide explain for self-hosted optimizer (#35220)
  • a09e85c Optimizer: hold battery for later higher-priced discharge (#35174)
  • 8b51eca Optimizer: include HEMS consumption limit in grid import limit (#35323)
  • 2dbdab0 Optimizer: include circuit max current in grid import limit (#35321)
  • fbe38cb Optimizer: model planner schedule as fixed demand in battery-only mode (#35924)
  • 2d74ae9 Optimizer: re-run on triggers during a running update (#35644)
  • ebc7c50 Optimizer: relay external battery mode (#35234)
  • d28954c Optimizer: send sponsor token to hosted optimizer only (#35238)
  • 766668e Optimizer: skip run when solar forecast is unavailable (#35726)
  • 6938363 Optimizer: split site_optimizer.go by responsibility (#35932)
  • c4d4571 Optimizer: suggest the battery mode control applies (#35402)
  • 010f4c1 Plugin (SunSpec): support integer points in float setter (#35646)
  • 186e3a1 RCT: restore internal soc strategy when none saved (#35851)
  • 151b39d Revert "Cardata: use shared mqtt preset and stream source" (#35279)
  • 406c077 Revert "Templates: use evcc MQTT broker if mqtt host is empty" (#35280)
  • e05d5bf Shelly Top AC: handle charger_insert work state (#35345)
  • 03010d6 Site: keep last battery soc when one of several reads fails (#35302)
  • e23a776 Site: on startup update charging loadpoints first (#35530)
  • 6f1611f Site: remove duplicated BatteryGridDischargeActive publish (#35554)
  • c1a0711 SlimmeLezer Luxembourg/V2: read import as energy and export as returnenergy (#35493)
  • 83939b5 Solax: drop grid energy (not phase-balanced) (#35707)
  • 6099281 Sponsor: renew hardware token in-process (#33816)
  • 9bd918a Streamlined weather-model selection in Open-Meteo integrations (#35701)
  • 755af53 SunSpec: retry device detection (#35649)
  • eb8c8a7 Sungrow-hybrid: remove grid values not accessible via dongle (#35277)
  • 18ad321 Tariff (Energinet): include current quarter-hour (#35396)
  • 12a658a Tariff (Home Assistant): support sub-hourly solar forecast slots (#35342)
  • a544c41 Tariff (Home Assistant): zero-fill missing solar forecast slots (#35571)
  • 54456bf Tariff (fixed): don't overlap rates for zone boundaries in skipped DST hour (#35329)
  • b273246 Tariff (fixed): keep zones on wall clock time on DST change days (#35319)
  • d16de19 Tariff: update Energy Price Forecast API key links (#35565)
  • 7a01471 Tariff: wait for retry interval after failed creation (#35320)
  • 92bc6cd Tariffs: retry on HTTP 429 (#35898)
  • 42e7b74 Templates: clarify battery max (dis)charge power help (#35548)
  • 105da0e Templates: drop stale case-duplicate keys matching a param's spelling (#35873)
  • 746ac28 Templates: render list param examples in unit tests (#35848)
  • 1b3288c Templates: use evcc MQTT broker if mqtt host is empty (#35231)
  • d419a5c Tesla BLE: treat sleeping vehicle as asleep, not as error (#35740)
  • e692956 Tesla: fall back to vehicle_data without location when scope is missing (#35225)
  • 572515a Tesla: treat proxy-wrapped complete/is_charging as charge enable success (#35470)
  • 58d2f79 Tests: limit log lines in issue test to stay below URL limit (#35704)
  • e1d1570 Tests: set sponsor subject under lock (#35925)
  • d983b91 UI: ignore safe-area insets when embedded in an iframe (#35448)
  • 04403e2 UI: improve startup and offline behavior (#35657)
  • 4b02df4 UI: render markdown with marked instead of snarkdown (#35295)
  • 65ef944 UI: revert intra-word underscore handling in markdown renderer (#35272)
  • c395609 UI: use vehicle limits for charging phase indicators (#35692)
  • d125891 Use grid helpers for current/power conversion (#35328)
  • eab93a6 VW EU Data Act: bound each poll to 10s while catching up (#35594)
  • e9e9187 Vaillant: unescape HTML entities in login form action (#35110)
  • dfca71a Vehicle (EU Data Act): template-defined target soc keys (#35829)
  • a72bb3c Vehicle: retry creating unavailable vehicle (#35534)
  • 1755dc8 Victron VRM: convert hourly solar energy to power at the timestamp (#35240)
  • 7a4bf99 Victron VRM: fetch solar forecast for up to 7 days (#35710)
  • d1b62c2 Volvo Connected: support legacy dc- client ids until 2027-01-31 (#35865)
  • c795038 Weishaupt: don't refresh power setpoint while disabled (#35703)
  • 5077155 White-label: custom app icon and brand name in PWA manifest (#35551)
  • de0f669 shortrfc3339: emit a quoted UTC timestamp from MarshalJSON (#35722)
  • da4bb9e sonnenBatterie: hold via backup buffer to keep pv charging (#35880)
  • 12169b7 sonnenBatterie: repeat charge setpoint while charging (#35391)

Bug Fixes 🐞

  • 3fed3e2 OCPP: fix fractional currents for go-e/Fronius/Kathrein chargers (#35156)
  • 3a456cb Config: fix legacy circuits modal docs link (#35422)
  • 6575f7a RCT: fix grid charging when battery below min soc (#35312)
  • bcd5f76 SMA Hybrid: fix battery power and energy (#35508)
  • 182740e Sigenergy: fix grid energy registers (#35878)
  • a76e819 Solax G2: fix 32-bit word order (#35590)
  • 15f843d Tariff (Octopus DE): fix time-of-use slots shifting after DST change (#35353)
  • 0a0a92b Telemetry: fix stuck charge upload on sites with many loadpoints (#35536)
  • ddc18d0 Vehicle: fix getmaxcurrent example in user-defined template (#35347)
  • 8fa585e Weidmüller: fix factory settings (#35123)
  • c69db00 fix(eudataact): support Auth0 Universal Login Page for CUPRA/VW (#35385)

Don't miss a new evcc release

NewReleases is sending notifications on new releases.