evcc
Home AutomationAn extensible open‑source EV charge controller and home energy management system that operates locally without cloud services.
Features
- Extensive support for many EV chargers, smart switches, heat pumps, and electric heaters
- Broad compatibility with solar inverters, battery systems, and general energy meters
- Vehicle integrations covering state‑of‑charge, remote charging, and preconditioning status
Recent releases
View all 38 releases →
0.312.0
Breaking risk
Breaking changes
- Removed Epexprijzen‑nl atoom alliance (BC)
- Made SunSpec model 123/704 curtail optional (BC)
Notable features
- Added Ambibox ambiCHARGE Home integration
- Added Anker SOLIX Solarbank Max AC support
- Added Mennekes PnC variants
Full changelog
Changelog
Breaking Changes 🚨
- d4430248a9f34af3607211087598ecad8e053407 Epexprijzen-nl: remove atoom alliantie (BC) (#31700)
- 7c7a74b390e1a48dae4df4d3449ecfd06d18e6ca SunSpec: make curtail (model 123/704) optional (BC) (#31607)
New Features 💫
- b2068fb764c518c37dfb3a4906f15999fa21d06c Add Ambibox ambiCHARGE Home (#31464)
- 3158ff16efb266581ab282ac7466a54b623723a6 Add Anker SOLIX Solarbank Max AC (#31696)
- db77790145655722ff6f2ca20bc773c5aa5a10ba Add Mennekes PnC variants (#31806)
- 5216c88cb8128a09ee73472815fb4d8016b12b94 Add Solplanet AI-Dongle LAN (local HTTP API) (#31732)
- 92c89adf6b547908b2eb5fa77b9dc4ce59061ff0 Add Voltcast tariff (#31848)
- 62ed1c4710a82bab8fb90e0d743c5585f33b51d7 Add pvnode Solar Forecast API V2 (#31178)
- 20a1c0886e40baafecb4728acdbbeecec9b0aea9 Atmoce: add curtail and dimming, add holdcharge and rework normal/hold/charge (#31632)
- 58bda986421266a8b3395ff9c36630ea771641b7 Config (Remote): add title to app deep-link QR code (#31746)
- 36c422f7a8c791301e2f9ccba2867bdd15283637 EEBus: add MGCP, MPC, LPC and LPP conformance tests (#31384)
- 0d76c1277e7232d9b67d762036df14af9e51cc18 Indevolt: add battery control (#31741)
- 3bb943cbe53524427e37e9cea1221a099b3becd4 Loadpoint: add min temperature for heating devices (#31749)
- 49b93c6f4d424617dedada5a01556d540642fb69 Marstek Venus: add holdcharge battery mode (#31831)
- 3a3d7ad36bf2a0c0f68eb19c86d294c74e941869 Phoenix EV-ETH: add millicurrentsupported option (#31860)
- d68e5e58093613d3d2813572e96ee657bbf0ad8b Tariffs: add outdoor temperature type and OpenMeteo (#27780)
- 023a48dd2483b9dd161689f7a47c8f21e4e87664 Templates: add capabilities on product level (#31588)
- d495d3e44232424be27290a912fa2731dfde9b49 Tinkerforge WARP: add WARP4 support with vehicle SoC via ISO 15118 (#31446)
- cc5ba51c3158128a15d7e2ed99daca12d60d8a70 Vehicle: add charge mode in arrival tab (#31330)
- cc0b5acafbf139e3e5b428c998d755fb1efeb0ac askoheat: add aux meter template (#31683)
- 3ce6600143c1dd028bff4c66a3af18247d0b7a7f feat: add xlsx export wherever csv export exists (#31690)
Other Changes ☀️
- 6d2ed7d2aceffc45577b903245dc8d4c4724e488 Battery UI: history chart polish, axis consistency (#31661)
- b1f35fbaa7c3979ce217230163f248e10d09bc76 Battery UI: show fully visible day as history window title (#31663)
- 5120c8d94310a056b9b22ed92849db03ee335d39 Battery: optimizer suggestion state icons (#31748)
- 69f817d78cf8042527725bbc817ee0987b213c34 Bender: extract Spelsberg Smart Pro (#30493)
- 83a2b7de2363ec2fff1e07106857979518957a90 Circuit: apply HEMS consumption limit even without configured maxPower (#31751)
- b900237a8b047ccb1fc427fe9de7f015b6e51359 Config UI: streamline loadpoint creation and unify wording (#31658)
- 857a93f83ea1c610bf72fe390f712f311d58d244 Config: persist settings immediately on device delete (#31755)
- 43627f66492d691be9aa00f2a874e3235416d1c6 Config: persist settings immediately on site update (#31754)
- eed3aece143221c714bcd31c6bb0500939cdfca4 Config: show vehicle asleep state instead of value errors (#31859)
- fc565af2b4310c7bfcb9ad0ff883f11d7fde8112 Daheimladen: check stationid
- 7e3da98630b336b8cea8652f733ad9f66e0721cd Daheimladen: restore safe current limit after charger reset (#31729)
- 469d659fe99f2cdf51983bcbe7d5cc5c814ddccf Drivesomethinggreater: update description (#31723)
- df5dc0e74f1db4cb9ed5fa9cb66b73d17935941b EEBus: ignore IEC61851 default current limits, honor loadpoint minCurrent (#31737)
- 333bdcb93181318f2cbe126bd50432ff4a36fad0 EEBus: skip flaky TestShipPairing in CI
- 20c8c3b0d799ed0d068d4cebbd7b698a5dd4d2b7 EM24: drop kWh(-) export register, not available on all devices (#31736)
- 276629732920a4cf17129c36475a6070a83a534e Energyflow: remove battery SoC forecast (#31611)
- 668c163663ce210c89ae62771d3c6419d6ecdaff Epexprijzen-nl: added 'essent' and 'samenom' (#31699)
- a95a5595aeead647b89e6d42b93f781f5d736007 Forecast: make solar adjustment a server-side setting (#31862)
- ecb9cb05e243e740e546b9a29c16feb58b378350 IDM: remove thermal energy register (#31701)
- 9ad5120c988d5c5745d6cde05862aef7ada612af Loadpoint: release priority PV reservation when car reached charge goal (#31759)
- ba279718d2ffc1be60587139f383b703fe3931d9 Meter (Home Assistant): support return energy entity (#31857)
- e7a49bc9388d3927cc565b53d98f98db8f64910b Metrics: fixed grid entity title, merge series of swapped grid meters (#31739)
- c52b4a79ea11d6614885e14912819f7f93ee16fa OCPP: clear failed charge point registration on init error (#31652)
- ab3220c47543d387a3c01d63e206da1be4c8693f Optimizer: derive per-device action suggestions from result (#30834)
- 60af1de1e8176065661b2ffb05ae1f309976756d Planner: log the rate window and fallback triggers used for planning (#31621)
- ac08a53e0e4cf81026744d07874e8ea60e90b657 Remote Access: user agent and status display fixes (#31667)
- 9ab2be9b10dd93692dda7ad72986a86b42d863a7 Revert "Energy Flow UI: Chrome (Skia Graphite) rendering bug workaround" (#31623)
- 4f71e9675cf096ca0ce45f6b7a8ce0849aa3e6ec Site: base solar forecast scale on produced energy (#31612)
- 142c93a47b128c537b37cda5289e71c636a78ec8 Solarmax MAX.STORAGE: remove grid charging (#31589)
- 8b243c2a2519c144ec81ee667b65366424bc13e7 Sponsor: remove Creem license key activation (#31824)
- 09b0d9cb25b146934cd7e3ce5120d17f2422c2d0 Sponsor: trim pasted token in UI (#31841)
- 7e564b058c7c6ac2c10318daf3216cf6e257ace2 SunSpec: curtailed false when limit is 100% (#31610)
- 661af417a1005ca7120ead37e571651e1f5b7ab2 Tariffs: persist tariff values in 15min intervals (#31845)
- 56bd94e7713774293089662e27348040e11f3b13 Tinkerforge WARP: correct capabilities per generation and variant (#31590)
- 50e81a0726f1e2fd63f2f617f98b5006a9bb853d UI: darker dark mode, card layout, battery card polish (2) (#31593)
- 9325ed4f9e95e7258abe5abe1202546a01379032 UI: update docs links to new notifications and external limit pages (#31628)
- 75cb289a618fb9987e97c7a4e5906604131942c8 Zaptec: detect cable swap between vehicles via session identifier
- 88b7621d90a9033b557f37816fafaaddb38fb07d Zaptec: propagate Enable errors other than 528 (#31803)
- 00d6d9bc1dcc9e9b9ed3c7f44e550db60521609e fixes #31671 esphome dlms/slimmelezer-luxembourg: address sensors by name on firmware 2026.1+ (#31676)
- 5b77c109c1779dda571a50c253d3bbf9eadc8bb8 octopus-it: drop unused ItAgreement.ID (GraphQL ID scalar is a string)
- 8a42b0d74a294a6adb6a5479fb259804d2d6d99c open-meteo: use icon_seamless model (#31570)
- fd88c8069b215edc228f3197f88d5931a003a1ee optimizer: flag suggestions actionable only when they change the current mode (#31693)
- 04d4f4b0913b242c716c4858bebb4b891af68cd5 optimizer: only suggest actions for controllable batteries (#31715)
- df437d536f52bb144c9f62d9a70f5dc452499490 plugin: cache http responses from devices that omit the Date header (#31675)
- 623427e72841a80b892d47690a1c425029b4d898 plugin: watchdog must assume a reset write may have just happened after restart using defer (#31635)
- c3f2b054ef3e9d6e3cdd34a5da03ee7240a505ba pv: reserve surplus for higher-priority loadpoints starting up (#31194) (#31684)
- ad4324bb66db411fa697918d1f0008b28f79a9c9 sqlite: serialize access on a single connection (#30902)
- 44bc075cd20c95e07ec550994476d97de95448c3 tariff: deprecate solarprognose tariff (service shut down) (#31770)
Bug Fixes 🐞
- 68db0b7727901d8b89530b1c3c7f9a62b5d92762 Anker-solix-x1: fix energy scale (0.01 kWh/LSB) and revert PV changes (#31787)
- 78e2ec9514b4921afb93b1e68444abfa4da8073a Config: fix loadpoint modal reusing previous charger on repeated add (#31614)
- 226622893fa19801953db393170c1899f07f3892 EEBus: fix test cleanup regression breaking TestShipPairing (#31617)
- 526d17ff4a74a02376a7c4c792bbd03ffa316ca6 Fix DoJSON error on empty-body 2xx response (#31801)
- 0e62646cd8978dc316c3e3e9ecaa8f36d70b4341 Fix instantiating meters referenced only by circuits (#31788)
- 4dc9775ea383a6cb61d6174b0003b95b3e4ae038 Fix vehicle mode reset on RFID re-identification of already-active vehicle (#31654)
- 1074db922d5748c0b6b7510e047979938371ca2b Huawei SUN2000: fix curtailed false-positive at 100% feed-in limit (#31695)
- 884956f3cf9e021f09258e3a0425a3ed7541c030 IBC HomeOne: fix battery SoC scale and grid meter word order (#31591)
- 999bed78c5de5da79917d2b98fc1b357a82481a4 Loadpoint: fix coarse power-limited chargers never enable on fractional current (#31685)
- bf4e6e8974116eb80a755e143ed8e70ce74c09a5 Loadpoint: fix minSoc config error on restart (#31819)
- 8fe199dc268ebdec33f23377650a03bc0199e9f6 fix: prevent infeasible optimizer result from battery soc outside configured limits (#31821)
- 5246b84f942a7916e7635442e51adf5a42afdbde meter/anker-solix-x1: fix wrong Total PV Generation register address (#31771)
- 017d77d0be8511a5baab38d14902991a87b44e36 octopus-it: fix account query for Italy's Kraken schema (#31656)
- 3a2711cc4f817ace3414e4455daea0f34e199388 optimizer: fix pause suggestion for idle-but-enabled loadpoints (#31792)
- 48606017b41ecd0fb3e3126ecbe8afe614d6ebbf server: fix TestSessionHandlerTimezoneFilter on UTC CI runners (#31688)
0.311.1
Breaking risk
Breaking changes
- Consumer meter config key 'meter' changed from plural to singular
Notable features
- Add Octopus Energy Italy tariff support
- Kostal Plenticore: add feed‑in curtailment (SunSpec model 123)
- V2C Trydan: add 1p/3p charge mode switching
Full changelog
Changelog
Breaking Changes 🚨
- 73841bad325e179ffb497fdfbb07bb4987261337 Site: consumer meter config key singular (BC) (#31573)
New Features 💫
- de976b7aa2932a1a4e249e0f6612e9d13156fb61 Add Octopus Energy Italy tariff (#31505)
- fe272afbff5e1bab5a2c37f2be8d31481c0eaa07 Kostal Plenticore: add feed-in curtailment (SunSpec model 123) (#31487)
- 4fc0a131d9f0566d6eb99000d3828e8507f6d121 V2C Trydan: add 1p/3p charge mode switching (#31526)
Other Changes ☀️
- 8e98389395949b0bdef5b61b5d99a8111b4ec590 EEBus OHPCF: react to consumption state events instead of polling (#31553)
- feff7d8ae6162f42eeb0aa532e2cd877ecf3bea5 EEBus: update eebus-go/ship-go, drop ship-go fork (#31550)
- 744b649b946b58008afaf5b1fd24601271e20185 Energy Flow UI: Chrome (Skia Graphite) rendering bug workaround (#31571)
- 8a771d5fb3ca47cba35c851dcc22639d095cfca6 Solis Hybrid S: clear Allow Grid Charge bit in normal mode (#31554)
- 5c7732ad31b8dc673c2320d5232415076d6c0fad Sunspec: let curtail fall back to model 123 (#31539)
- 84bd0717ad9df3a27a7102d5fe1c794e07937b10 Tariff (energy-charts): document EUR-only pricing for non-EUR bidding zones (#31544)
- 5e25ed4b0218d1577a9c68464bb4061a892223af UI: darker dark mode, card layout, battery card polish (#31515)
Bug Fixes 🐞
- 7dc1aa34c167180fa0a11f0215b07b23609e6fae Config UI: fix product name mixup for multi-product templates (#31548)
- 82a3f643a633824c7a364d4dd24a9d47584cb5a4 EEBus: fix GridGuard entity type removed from LPC/LPP (#31568)
- 3e5183754c9067ac88599101f2fb7b1a37e841d0 EEBus: fix paired device not routed to consumer (flaky TestShipPairing) (#31560)
- ab31938daaa474b62c4137c1cf5600886692d825 RCT: fix batteryhold grid-charging and BatteryNormal nil pointer panic (#31294)
- 02c081d9a7c8aed85a825f16e71ef6d5fcbb90ce Solarmax MAX.STORAGE: fix max power default
- 1a1a67971e1fff031bb5dc7eb7405338cf65bd8c deye-hybrid-3p: fix energy scaling for LV with firmware1098 (#31543)
Review required
0.311.0
Breaking risk
Breaking upgrade
Auth
RBAC
EEBus breaking + new features + bugfixes
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.