diff --git a/AGENTS.md b/AGENTS.md index 94314a041..a66420648 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -235,13 +235,8 @@ Everything else is hand-written: - **Create explicit anchors** on headings instead of relying on auto-generated ones - Auto-generated anchors change with heading text and differ between languages - In `.md` files use the compact form: `### Vehicle Detection {#vehicle}` - - In `.mdx` files use a raw HTML anchor element on the line above (MDX parses `{...}` as a JSX expression, so the compact form breaks the build): - - ```mdx - - - ### Vehicle Detection - ``` + - In `.mdx` files escape the braces, because MDX parses `{...}` as a JSX expression: `### Vehicle Detection \{#vehicle\}` + - Don't put a `` element between a heading and its first paragraph: Starlight's spacing rule skips paragraphs that follow an `a` element, so the gap below the heading disappears. Use a raw anchor element only for targets that aren't headings, on its own line before the target. ### Page Descriptions diff --git a/src/content/docs/de/blog/2026/09/25/always-charge.webp b/src/content/docs/de/blog/2026/09/25/always-charge.webp new file mode 100644 index 000000000..0fbc45c6a Binary files /dev/null and b/src/content/docs/de/blog/2026/09/25/always-charge.webp differ diff --git a/src/content/docs/de/blog/2026/09/25/battery-page.webp b/src/content/docs/de/blog/2026/09/25/battery-page.webp new file mode 100644 index 000000000..774bbf80f Binary files /dev/null and b/src/content/docs/de/blog/2026/09/25/battery-page.webp differ diff --git a/src/content/docs/de/blog/2026/09/25/highlights-smart-battery-solar-share.mdx b/src/content/docs/de/blog/2026/09/25/highlights-smart-battery-solar-share.mdx new file mode 100644 index 000000000..0c78188d7 --- /dev/null +++ b/src/content/docs/de/blog/2026/09/25/highlights-smart-battery-solar-share.mdx @@ -0,0 +1,150 @@ +--- +date: 2026-09-25 +title: "Highlights: Smart-Modus, Batterieseite, Sonnenanteil" +description: "Release-Highlights zu evcc 0.315 und 0.316 vom September 2026 mit dem neuen Smart-Modus und Dauerhaft laden, der überarbeiteten Hausbatterie-Seite, dem Sonnenanteil-Regler und Fortschritten beim Optimizer." +authors: [naltatis] +tags: [release, highlights] +prev: false +next: false +cover: + alt: "Highlights Banner" + image: "./highlights-smart-battery-solar-share.webp" +--- + +Seit dem [letzten Highlights-Post](/de/blog/2026/08/19/highlights-release-process-optimizer-customize) sind zwei Feature-Releases erschienen: [0.315](https://github.com/evcc-io/evcc/releases/tag/0.315.0) und [0.316](https://github.com/evcc-io/evcc/releases/tag/0.316.0). +Dieser Beitrag fasst beide zusammen. +Die großen Themen: Die Lademodi haben mit **Smart** und **Dauerhaft laden** eine neue Struktur bekommen, die Hausbatterie-Seite wurde überarbeitet, der neue Regler **Sonnenanteil** ersetzt die verwirrenden Watt-Schwellen, und der Optimizer macht einen weiteren Schritt in Richtung automatischer Steuerung. + +{/* excerpt */} + +## Neue Modi: Smart und Dauerhaft laden + +Die Modi **PV** und **Min+PV** stammen aus der Zeit, als es bei evcc nur um PV-Überschussladen ging. +Mit der Zeit kamen Funktionen dazu, die mit PV wenig zu tun haben: dynamische Tarife, Ladepläne, Wärmepumpen und schaltbare Geräte. +Viele nutzen evcc inzwischen ganz ohne PV-Anlage, und die Namen haben bei neuen Nutzern für Verwirrung gesorgt. + +Mit [0.316](https://github.com/evcc-io/evcc/pull/32490) heißen die Modi nach dem, was sie tun, und nicht nach der Stromquelle. +Aus **PV** wird **Smart**. +Er deckt PV-Überschuss, dynamische Tarife und Ladepläne ab und ist der Modus, in dem der kommende Optimizer arbeiten wird. + +Der Modus **Min+PV** entfällt. +Sein Verhalten, wie der **PV**-Modus, nur ohne Pausen und immer mindestens mit Mindestleistung, ist wichtig für Fahrzeuge, die ständiges Starten und Stoppen nicht mögen, und für Anlagen mit wenig Überschuss. +Das ergibt aber nur beim Laden von Fahrzeugen Sinn, nicht bei Schaltern, Heizstäben oder Wärmepumpen. +Deshalb gibt es diese Funktion jetzt als Option **Dauerhaft laden** im Dropdown des **Smart**-Buttons an Fahrzeug-Ladepunkten und nicht mehr als eigenen Modus. +Du kannst sie dauerhaft einschalten oder mit dem **1x**-Button nur für den aktuellen Ladevorgang. +In den Fahrzeugeinstellungen kannst du pro Fahrzeug einen Standard festlegen. + +![Option Dauerhaft laden im Dropdown des Smart-Modus-Buttons](./always-charge.webp) + +Die Beschriftung der Modi passt sich dem Gerät an: Eine Wallbox zeigt **Aus / Smart / Schnell**, ein schaltbares Gerät **Aus / Smart / Ein**, eine Wärmepumpe **Normal / Smart / Boost**. +Die Details erklärt die [Seite zum PV-Überschussladen](/de/features/solar-charging#always-charge). + +Für Integrationen ist das ein Breaking Change. +API, MQTT und Websocket melden jetzt `smart` statt `pv`, und `minpv` wird gar nicht mehr ausgegeben. +Setzen kannst du die alten Werte weiterhin: `pv` schaltet auf **Smart**, `minpv` auf **Smart** mit eingeschaltetem **Dauerhaft laden**, bestehende Automationen verhalten sich also wie bisher. +Wenn deine Automation auf `pv` oder `minpv` prüft, solltest du sie anpassen. +Die großen Integrationen waren schon vor dem Release bereit. +Danke an alle Maintainer, die ihre Projekte angepasst haben 🙌 + +## Hausbatterie-Seite \{#battery\} + +Die **Batterie**-Seite war bisher eine reine Einstellungsseite. +Jetzt zeigt sie zuerst den Status: eine Kachel mit Ladestand, gespeicherter Energie und aktueller Leistung. +Bei mehreren Batterien gibt es eine Kachel pro Batterie und eine für alle zusammen, und das Diagramm darunter zeigt den Ladestand jeder Batterie über die letzten Tage. +Ist der [Optimizer](#optimizer) aktiviert, zeigt die Seite außerdem seine Vorschläge: was er gerade mit der Batterie tun würde, z. B. Entladen verhindern oder aus dem Netz laden, und wie sich der Ladestand entwickeln würde. +Dazu weiter unten mehr. +Die Einstellungen zu Priorität, Ladepuffer und automatischem Start gibt es weiterhin, jetzt als leicht verständliche Sätze statt als Formular. + +![Batterieseite mit Statuskacheln, Ladestandsverlauf und Nutzungseinstellungen](./battery-page.webp) + +Wer experimentelle Funktionen aktiviert hatte, kennt diese Seite schon. +Mit [0.316](https://github.com/evcc-io/evcc/pull/33434) ist sie der Standard für alle. + +**Steuerungsmodi der Batterie:** Die Batteriesteuerung ist jetzt feiner abgestuft. +Jede Batterie meldet, welche der Modi sie unterstützt: normaler Betrieb, Entladen verhindern, aus dem Netz laden, Laden verhindern und Einspeisung ins Netz. +evcc bietet nur an, was ein Gerät auch kann. +Was die einzelnen Modi bedeuten, steht in der [Modus-Tabelle](/de/user-defined-devices#battery-modes) der Dokumentation, und externe Systeme können einen Modus über die [REST-API](/integrations/rest-api/operations/setexternalbatterymode) setzen. +Auch die Liste der steuerbaren Batterien ist gewachsen: Huawei SUN2000, Kostal Plenticore, Sungrow, Zendure Solarflow, Anker Solarbank, Atmoce, EcoFlow Stream, Marstek und Home-Assistant-Batterien haben zusätzliche Modi bekommen. +Welche Batteriesysteme aktive Steuerung unterstützen, zeigt die [Geräteliste](/de/meters?f=battery-control), und was du damit machen kannst, erklärt die [Hausbatterie-Seite](/de/features/battery). + +## Sonnenanteil \{#solar-share\} + +Dieser Wunsch ist schon etwas älter. +Standardmäßig startet das Laden im **Smart**-Modus erst, wenn der Überschuss die komplette minimale Ladeleistung des Fahrzeugs abdeckt. +Bei einer kleinen PV-Anlage oder tief stehender Wintersonne kommt dieser Moment vielleicht nie. +Bisher konntest du die Hürde mit Watt-Schwellen in der Ladepunkt-Konfiguration senken (Neustart erforderlich). +Diese Schwellen haben über die Jahre viele Neulinge verwirrt, und ehrlich gesagt auch so manchen alten Hasen 😅. + +Der neue Regler [**Sonnenanteil**](https://github.com/evcc-io/evcc/pull/32104) in den Ladepunkt-Einstellungen ist einfacher: Du stellst ein, wie viel der minimalen Ladeleistung aus Solarstrom kommen muss. +Bei 100% wartet das Laden auf vollen Überschuss. +Bei 50% darf die Hälfte aus dem Netz kommen. +Bei 0% startet das Laden, sobald überhaupt Überschuss da ist. +Kein Neustart, keine Watt, nur ein Regler. +Für spezielle Setups funktionieren die alten Schwellen weiterhin. +Solange sie gesetzt sind, ist der Regler deaktiviert und zeigt einen entsprechenden Hinweis. + +![Sonnenanteil-Regler in den Ladepunkt-Einstellungen, auf 50% gestellt](./solar-share.webp) + +Mehr Details findest du auf der [Seite zum PV-Überschussladen](/de/features/solar-charging#not-enough-surplus). + +## Fortschritte beim Optimizer \{#optimizer\} + +Der [Optimizer](/de/features/optimizer) berechnet einen Plan für dein ganzes Zuhause über die nächsten Tage: Batterie, Ladepunkte und Heizung, auf Basis von Prognosen und Preisen. +Er ist noch experimentell und macht bisher nur Vorschläge: Er zeigt, was er tun würde, greift aber nicht ein. +In den letzten beiden Releases ist viel passiert: + +- Der Planungszeitraum umfasst jetzt [48 Stunden plus den Rest des Tages](https://github.com/evcc-io/evcc/pull/32893), und im Diagramm sind die Tagesgrenzen mit Wochentag markiert. +- Der Haushaltsverbrauch wird [in einzelne Profile aufgeschlüsselt](https://github.com/evcc-io/evcc/pull/33749): Grundlast, Heizung und Ladepunkte ohne bekannte Fahrzeugkapazität werden getrennt dargestellt. +- Die Vorhersage des Haushaltsverbrauchs ist besser geworden, z. B. für [Heizungs-Ladepunkte](https://github.com/evcc-io/evcc/pull/28232) und für Haushalte, in denen ein paar stromhungrige Nachmittage bisher die [Grundlast verzerrt](https://github.com/evcc-io/evcc/pull/33700) haben. +- Die Optimizer-Seite ist [auch ohne erstes Ergebnis nutzbar, hat einen Menüeintrag, sobald der Optimizer aktiviert ist, und einen Feedback-Link](https://github.com/evcc-io/evcc/pull/33750) zum Melden unplausibler Pläne. +- Pläne werden [sofort neu berechnet](https://github.com/evcc-io/evcc/pull/33467), wenn sich ein Ladeplan fahrzeugseitig ändert, und das Ladeziel des Plans [landet im richtigen Zeitfenster](https://github.com/evcc-io/evcc/pull/33832). +- Netzladen und Netzentladen werden nur für Batterien geplant, die [den Modus tatsächlich unterstützen](https://github.com/evcc-io/evcc/pull/33860). + +Falls du ihn noch nicht ausprobiert hast: Aktiviere experimentelle Funktionen unter **Konfiguration → Experimentell**, schalte den Optimizer ein und prüfe, ob der Plan für dein Zuhause plausibel aussieht. +Wir freuen uns über jedes Feedback. + +Der nächste große Schritt ist der **Automatikmodus**: Der Optimizer schlägt nicht mehr nur vor, sondern entscheidet, wann die Batterie lädt oder hält und wann Ladepunkte im **Smart**-Modus starten und stoppen. +Der [Pull Request](https://github.com/evcc-io/evcc/pull/32881) ist in Vorbereitung, und wir haben schon viel Feedback bekommen. +Wenn du experimentierfreudig bist: In den Kommentaren des Pull Requests gibt es Test-Builds. +Probier sie aus und erzähl uns, wie es läuft. +Es gibt noch einiges zu tun, aber wir freuen uns darauf, ihn ins Nightly zu bringen. + +## Kleinere Verbesserungen + +- **Remote Access:** [Nicht mehr experimentell](/de/features/remote-access). Die Kachel ist jetzt für alle unter **Konfiguration** sichtbar, und über eine neue Option kannst du Konfiguration und Zugangsdaten zurücksetzen. Vorgestellt haben wir Remote Access in den [Juli-Highlights](/de/blog/2026/07/18/highlights-remote-access-widgets-optimizer). +- **Einspeisebegrenzer:** Wenn der Netzbetreiber weniger Einspeisung verlangt (§ 9 EEG), drosselt evcc normalerweise jeden PV-Wechselrichter direkt. In manchen Anlagen muss der Befehl stattdessen an eine zentrale Steuerung gehen, z. B. den SMA Sunny Home Manager 2.0 oder SolarEdge Export Control. Diese haben jetzt eine eigene [Geräteklasse](https://github.com/evcc-io/evcc/pull/32416), die neben dem Netzzähler konfiguriert wird, und müssen sich nicht mehr als Zähler ausgeben. Siehe [Externe Steuerung](/de/external-limit#curtailment-devices). +- **Datumsformat:** Das Datumsformat richtete sich bisher nach der gewählten Sprache. Das passt nicht immer, z. B. bei Englisch in Europa. In den [Einstellungen der Benutzeroberfläche](https://github.com/evcc-io/evcc/pull/29321) kannst du jetzt Tag zuerst, Monat zuerst oder ISO-Reihenfolge wählen. Danke an [webalexeu](https://github.com/webalexeu). +- **Phasenanzeige:** Die Darstellung der Phasen am Ladepunkt hat sich geändert. Bisher gab es einen Balken pro aktiver Phase, inaktive Phasen wurden einfach ausgeblendet. Jetzt zeigt eine dreiphasige Wallbox [immer drei Segmente](https://github.com/evcc-io/evcc/pull/33173), aktive Phasen sind hervorgehoben, sodass du auf einen Blick siehst, ob ein- oder dreiphasig geladen wird. +- **Polestar:** Statt der per Reverse Engineering gebauten Anbindung nutzt evcc jetzt die [offizielle Polestar Data Portal API](https://github.com/evcc-io/evcc/pull/33814). Danke an [loebse](https://github.com/loebse). +- **Nissan:** Der Login nutzt jetzt [MyNISSAN OneID](https://github.com/evcc-io/evcc/pull/33316), nachdem Nissan die alten NissanConnect-Zugangsdaten abgeschaltet hat. Danke an [alex-irrgang](https://github.com/alex-irrgang). +- **Škoda:** Die neue offizielle MyŠkoda-API wird unterstützt, siehe den [eigenen Blogpost](/de/blog/2026/08/27/skoda-vehicle-api). +- **Home Assistant:** Die evcc-App [erkennt die Home-Assistant-Instanz und das Token automatisch](https://github.com/evcc-io/evcc/pull/33000), sodass Home-Assistant-Geräte ohne manuelle Einrichtung als gefundene Geräte auftauchen, danke an [wlcrs](https://github.com/wlcrs). Home-Assistant-Batterien haben die Modi [Laden verhindern und Entladen](https://github.com/evcc-io/evcc/pull/33841) bekommen, danke an [igotsoul](https://github.com/igotsoul). Zwei Breaking Changes: Die Milliampere-Stromsteuerung an der [Home-Assistant-Wallbox](https://github.com/evcc-io/evcc/pull/33858) ist jetzt optional, und das [Preset für minsoc/maxsoc der Batterie](https://github.com/evcc-io/evcc/pull/33707) entfällt. + +## Neue Geräteunterstützung + +**Wallboxen:** Steca, Sonoff-Schaltsteckdosen, dazu Zählerfunktion für Spelsberg und Verbesserungen für go-e, OpenEVSE, NRGkick, Keba, Voltie und Zaptec + +**Zähler, PV- & Batteriesysteme:** CHINT ECH10K, Solplanet Hybrid, SENEC.Connect Cloud-API, Afore Hybrid über RS485, Deye-Mikrowechselrichter über Solarman und HTTP-Logger, Zendure SolarFlow 800 Pro, my-PV HEA THOR 3.5 und 9.0, Strombegrenzung für Solax X1/X3-HAC, Einspeiseenergie für Youless, openWB Pro und Sungrow + +**Fahrzeuge:** Polestar über die offizielle Data Portal API, neue offizielle MyŠkoda-API, Nissan-OneID-Login, LiveWire-S2-Motorräder, geladene Energie für Tesla BLE + +**Wärmepumpen & Heizung:** Weishaupt (Modbus TCP), 1SINQ OneKey (SG Ready über MQTT), Leistung und Temperatur für Viessmann dank [ickeundso](https://github.com/ickeundso) + +**Tarife:** EPEX-Spotpreise für Belgien, spotovaelektrina.cz für Tschechien, zusätzliche Regionen, Währungen und API-Key für Energy Price Forecast + +**Einspeisemanagement (§ 9 EEG):** SMA Sunny Home Manager 2.0, SolarEdge, Sungrow + +Natürlich gab es auch wieder viele Bugfixes und Verbesserungen an bestehenden Integrationen. +Details stehen in den Release Notes zu [0.315](https://github.com/evcc-io/evcc/releases/tag/0.315.0) und [0.316](https://github.com/evcc-io/evcc/releases/tag/0.316.0). + +--- + +💚 Ein großes Dankeschön an alle, die das Projekt voranbringen: durch Code, Ideen, Tests, Diskussionen und finanzielle Unterstützung, ohne die das Projekt in dieser Form nicht möglich wäre. + +Die Tage werden kürzer. +Nutzt die Sonne weise. 😉 +Viel Spaß beim Laden! + +**Viele Grüße**
+Das evcc Team
+Michael, Andi & Uli diff --git a/src/content/docs/de/blog/2026/09/25/highlights-smart-battery-solar-share.webp b/src/content/docs/de/blog/2026/09/25/highlights-smart-battery-solar-share.webp new file mode 100644 index 000000000..61b138eb9 Binary files /dev/null and b/src/content/docs/de/blog/2026/09/25/highlights-smart-battery-solar-share.webp differ diff --git a/src/content/docs/de/blog/2026/09/25/solar-share.webp b/src/content/docs/de/blog/2026/09/25/solar-share.webp new file mode 100644 index 000000000..f4a8f5592 Binary files /dev/null and b/src/content/docs/de/blog/2026/09/25/solar-share.webp differ diff --git a/src/content/docs/de/user-defined-devices.mdx b/src/content/docs/de/user-defined-devices.mdx index 2f8415d05..a8eec79a6 100644 --- a/src/content/docs/de/user-defined-devices.mdx +++ b/src/content/docs/de/user-defined-devices.mdx @@ -134,27 +134,78 @@ Beide Attribute sind optional. Ohne sie wird die Energiehistorie aus dem zeitlichen Verlauf von `power` abgeleitet. Echte Zählerstände liefern genauere Langzeitstatistiken. -### Schreib-Attribute +### Schreib-Attribute \{#meter-write-attributes\} | Attribut | Typ | Erfordert | Kontext | Beschreibung | | ------------- | ----- | --------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `limitsoc` | `int` | nein | `battery` | Setze Ladeziel für Batterie in %. Das Ladeziel wird aus den konfigurierten `MinSoc`, `MaxSoc` und dem aktuellen Ladestand (Attribut `soc`) berechnet. | -| `batterymode` | `int` | nein | `battery` | Setze Lademodus direkt (1: normal, 2: hold, 3: charge, 4: holdcharge, 5: discharge) | | `curtail` | `int` | nein | `pv` | Setze Einspeiselimit in % der Nennleistung der Erzeugung (0 bis 100, `100` = kein Limit). Nur zusammen mit `curtailed`. Siehe [Einspeisebegrenzer](#curtailer). | +| `batterymode` | `int` | nein | `battery` | Setze den Steuerungsmodus der Batterie direkt. Die Modi sind unten aufgeführt. | + +#### Batteriemodi \{#battery-modes\} + +| Wert | Modus | Verhalten | +| ---- | ------------ | ------------------------------------------------------------------ | +| `1` | `normal` | Normaler Betrieb: Laden aus Überschuss, Entladen für den Verbrauch | +| `2` | `hold` | Entladen verhindern, Laden aus Überschuss bleibt erlaubt | +| `3` | `charge` | Aus dem Netz laden, kein Entladen | +| `4` | `holdcharge` | Laden verhindern, Entladen für den Verbrauch bleibt erlaubt | +| `5` | `discharge` | Einspeisung ins Netz | Es werden nur die Batteriemodi genutzt, die das Gerät unterstützt. -Ist `batterymode` ein [`switch`](/de/reference/plugins#switch) (optional in einem `watchdog`), werden die unterstützten Modi aus dessen `case`-Werten übernommen. +Ist `batterymode` ein [`switch`](/de/reference/plugins#switch), werden die unterstützten Modi aus dessen `case`-Werten übernommen. +Das funktioniert auch, wenn der Switch in einem [`watchdog`](/de/reference/plugins#watchdog) steckt. Für alle anderen Plugins müssen die unterstützten Modi in `batterymodes` angegeben werden, z. B. `batterymodes: ["normal", "hold", "charge"]`. -### Beispiel +### Beispiele Lese die aktuelle Netzleistung über einen HTTP-Endpunkt. ```yaml -power: - source: http - uri: http://zaehler.network.local:8080/api/data.json?from=now - jq: .data.tuples[0][1] +meters: + - name: grid + type: custom + power: + source: http + uri: http://zaehler.network.local:8080/api/data.json?from=now + jq: .data.tuples[0][1] +``` + +Lese Leistung und Ladestand einer Hausbatterie und setze ihren Modus über HTTP. +Der `switch` deckt die Modi normal, hold und charge ab, evcc bietet also genau diese drei an. + +```yaml +meters: + - name: battery + type: custom + capacity: 10 # kWh + power: + source: http + uri: http://battery.local/api/power + soc: + source: http + uri: http://battery.local/api/soc + batterymode: + source: switch + switch: + - case: 1 # normal + set: + source: http + uri: http://battery.local/api/mode + method: POST + body: '{"mode": "auto"}' + - case: 2 # hold + set: + source: http + uri: http://battery.local/api/mode + method: POST + body: '{"mode": "hold"}' + - case: 3 # charge + set: + source: http + uri: http://battery.local/api/mode + method: POST + body: '{"mode": "charge"}' ``` ## Wallbox \{#charger\} diff --git a/src/content/docs/en/blog/2026/09/25/always-charge.webp b/src/content/docs/en/blog/2026/09/25/always-charge.webp new file mode 100644 index 000000000..0fbc45c6a Binary files /dev/null and b/src/content/docs/en/blog/2026/09/25/always-charge.webp differ diff --git a/src/content/docs/en/blog/2026/09/25/battery-page.webp b/src/content/docs/en/blog/2026/09/25/battery-page.webp new file mode 100644 index 000000000..774bbf80f Binary files /dev/null and b/src/content/docs/en/blog/2026/09/25/battery-page.webp differ diff --git a/src/content/docs/en/blog/2026/09/25/highlights-smart-battery-solar-share.mdx b/src/content/docs/en/blog/2026/09/25/highlights-smart-battery-solar-share.mdx new file mode 100644 index 000000000..4d02301db --- /dev/null +++ b/src/content/docs/en/blog/2026/09/25/highlights-smart-battery-solar-share.mdx @@ -0,0 +1,149 @@ +--- +date: 2026-09-25 +title: "Highlights: Smart Mode, Battery Page, Solar Share" +description: "Release highlights for evcc 0.315 and 0.316 from September 2026 with the new Smart mode and Always charge, the reworked home battery page, the solar share slider and optimizer progress." +authors: [naltatis] +tags: [release, highlights] +prev: false +next: false +cover: + alt: "Highlights Banner" + image: "./highlights-smart-battery-solar-share.webp" +--- + +Since the [last highlights post](/en/blog/2026/08/19/highlights-release-process-optimizer-customize) two feature releases have gone out: [0.315](https://github.com/evcc-io/evcc/releases/tag/0.315.0) and [0.316](https://github.com/evcc-io/evcc/releases/tag/0.316.0). +This post covers both. +The big topics: the charging modes got a new structure with **Smart** and **Always charge**, the home battery page has been reworked, the new **Solar share** slider replaces the confusing watt thresholds, and the optimizer keeps getting closer to taking over control. + +{/* excerpt */} + +## New Modes: Smart and Always Charge + +The modes **Solar** and **Min+Solar** date back to when evcc was purely about solar surplus charging. +Over time we added features that have little to do with solar: dynamic tariffs, charging plans, heat pumps and switchable devices. +Many people now run evcc without a solar system at all, and the names created confusion among new users. + +With [0.316](https://github.com/evcc-io/evcc/pull/32490) the modes are named after what they do, not how the power is produced. +**Solar** becomes **Smart**. +It covers solar surplus, dynamic tariffs and charging plans, and it is the mode the upcoming optimizer will work in. + +The **Min+Solar** mode is removed. +Its purpose, behaving like **Solar** mode but always providing at least minimum power, is an important feature for vehicles that do not like being started and stopped, or for installations with little solar surplus. +But this concept only makes sense for vehicle charging, not for switches, heaters or heat pumps. +That is why it is now the **Always charge** option in the dropdown of the **Smart** button for vehicle charging points instead of a mode of its own. +It can be switched on permanently or, with the **1x** button, for the current charging session only. +In the vehicle settings you can set a default per vehicle. + +![Always charge option in the dropdown of the Smart mode button](./always-charge.webp) + +The mode labels adapt to the device: a charger shows **Off / Smart / Fast**, a switchable device **Off / Smart / On**, a heat pump **Normal / Smart / Boost**. +The [solar charging page](/en/features/solar-charging#always-charge) explains the details. + +This is a breaking change for integrations. +The API, MQTT and websocket now report `smart` instead of `pv`, and `minpv` no longer appears on the read side. +Writing the old values still works: setting `pv` switches to **Smart**, setting `minpv` switches to **Smart** with **Always charge** on, so existing automations keep their behaviour. +If your integration compares against `pv` or `minpv`, it is time to update. +The major integrations were updated ahead of the release. +Thank you to all the maintainers who updated their projects 🙌 + +## Home Battery Page \{#battery\} + +The **Battery** page used to be a pure settings page. +Now it gives you an overview first: a status card with charge level, stored energy and current power. +With several batteries you get a breakdown: one card per battery plus a combined one, and the chart below shows the charge level of each battery over the past days. +When the [optimizer](#optimizer) is enabled, the page also shows its suggestions: what it would do with the battery right now, e.g. hold or charge from grid, and how the charge level would continue. +More on that further down. +The usage settings, priority, charging buffer and automatic start, are still there, now as easier to understand sentences instead of a form. + +![Battery page with status cards, charge level history and usage settings](./battery-page.webp) + +If you had experimental features enabled, you already know this page. +With [0.316](https://github.com/evcc-io/evcc/pull/33434) it is the default for everyone. + +**Battery control modes:** Battery control is now more fine-grained. +Each battery reports which of the modes it supports: normal operation, prevent discharging, charge from grid, prevent charging and discharge to grid. +evcc only offers what a device can actually do. +What each mode does is explained in the [mode table](/en/user-defined-devices#battery-modes) in the docs, and external systems can set a mode via the [REST API](/integrations/rest-api/operations/setexternalbatterymode). +Support for active battery control has grown in this cycle: Huawei SUN2000, Kostal Plenticore, Sungrow, Zendure Solarflow, Anker Solarbank, Atmoce, EcoFlow Stream, Marstek and Home Assistant batteries gained additional modes. +The [device list](/en/meters?f=battery-control) shows which battery systems support active control, and the [home battery page](/en/features/battery) explains what you can do with it. + +## Solar Share \{#solar-share\} + +This one is a very old feature request. +By default, charging in **Smart** mode only starts once the surplus covers the full minimum charging power of the vehicle. +If your solar system is small or the sun is low in winter, that moment might never come. +So far you could lower the bar with watt thresholds in the charging point configuration (restart required). +Those thresholds have confused new users for years, and, honestly, quite a few long-time users too 😅. + +The new [**Solar share**](https://github.com/evcc-io/evcc/pull/32104) slider in the charging point settings is simpler: you set how much of the minimum charging power has to be solar. +100% means charging waits for full surplus. +50% means half of it may come from the grid. +0% means charging starts as soon as there is any surplus at all. +No restart, no watts, just a slider. +The old thresholds still work for advanced setups. +While they are set, the slider is disabled and tells you why. + +![Solar share slider in the charging point settings, set to 50%](./solar-share.webp) + +The [solar charging page](/en/features/solar-charging#not-enough-surplus) has the details. + +## Optimizer Progress \{#optimizer\} + +The [optimizer](/en/features/optimizer) calculates a plan for your whole home over the next days: battery, charging points and heating, based on forecasts and prices. +It is still experimental and still advisory, i.e. it shows what it would do, but does not act yet. +A lot has happened in the last two releases: + +- The horizon now spans [48 hours plus the rest of the day](https://github.com/evcc-io/evcc/pull/32893), and the chart marks day boundaries with the weekday. +- Household demand is [broken down into individual profiles](https://github.com/evcc-io/evcc/pull/33749): base load, heating and charging points without a known vehicle capacity are shown separately. +- The household demand prediction got better, e.g. for [heating loadpoints](https://github.com/evcc-io/evcc/pull/28232) and for homes where a few heavy afternoons used to [skew the base load](https://github.com/evcc-io/evcc/pull/33700). +- The optimize page has an [empty state, a menu entry as soon as the optimizer is enabled, and a feedback link](https://github.com/evcc-io/evcc/pull/33750) for reporting implausible plans. +- Plans are [recalculated immediately](https://github.com/evcc-io/evcc/pull/33467) when a charging plan changes on the vehicle side, and the plan SoC goal [lands in the right slot](https://github.com/evcc-io/evcc/pull/33832). +- Grid charging and discharging are only planned for batteries that [actually support the mode](https://github.com/evcc-io/evcc/pull/33860). + +If you have not tried it yet: enable experimental features under **Configuration → Experimental**, switch on the optimizer and check whether the plan looks plausible for your home. +We are grateful for every piece of feedback. + +The next big step is **automatic mode**: the optimizer no longer just suggests, it decides when the battery charges or holds and when charging points in **Smart** mode start and stop. +The [pull request](https://github.com/evcc-io/evcc/pull/32881) is in preparation, and we have already received lots of feedback. +If you are adventurous, grab one of the test builds from the pull request comments, try it and tell us how it goes. +There is still work to do, but we are looking forward to getting it into the nightly. + +## Smaller Improvements + +- **Remote access:** [No longer experimental](/en/features/remote-access). The card is visible under **Configuration** without the flag, and a reset option removes the configuration and credentials. We introduced remote access in the [July highlights](/en/blog/2026/07/18/highlights-remote-access-widgets-optimizer). +- **Curtailment devices:** When the grid operator asks for less feed-in (§ 9 EEG), evcc normally tells each solar inverter directly to reduce its power. In some setups that command has to go to a central unit instead, e.g. the SMA Sunny Home Manager 2.0 or SolarEdge export control. These now have their own [device class](https://github.com/evcc-io/evcc/pull/32416), configured next to the grid meter, instead of posing as a meter. See the [external limit page](/en/external-limit#curtailment-devices). +- **Date format:** The date format used to follow the selected language, which does not cover regional differences, e.g. English in Europe. You can now pick day-first, month-first or ISO ordering in the [user interface settings](https://github.com/evcc-io/evcc/pull/29321). Thanks to [webalexeu](https://github.com/webalexeu). +- **Phase indicator:** The phase visualisation on the charging point has changed. Before, there was one bar per active phase and inactive phases were simply hidden. Now a three-phase charger [always shows three segments](https://github.com/evcc-io/evcc/pull/33173), with the active ones highlighted, so you can see at a glance whether it is charging on one or three phases. +- **Polestar:** The reverse-engineered integration is replaced by the [official Polestar Data Portal API](https://github.com/evcc-io/evcc/pull/33814). Thanks to [loebse](https://github.com/loebse). +- **Nissan:** The login now uses [MyNISSAN OneID](https://github.com/evcc-io/evcc/pull/33316), after Nissan retired the old NissanConnect credentials. Thanks to [alex-irrgang](https://github.com/alex-irrgang). +- **Škoda:** The new official MyŠkoda API is supported, see the [separate blog post](/en/blog/2026/08/27/skoda-vehicle-api). +- **Home Assistant:** The evcc app [auto-detects the Home Assistant instance and token](https://github.com/evcc-io/evcc/pull/33000), so Home Assistant devices appear as discovered devices without any manual setup, thanks to [wlcrs](https://github.com/wlcrs). Home Assistant batteries gained [holdcharge and discharge modes](https://github.com/evcc-io/evcc/pull/33841), thanks to [igotsoul](https://github.com/igotsoul). Two breaking changes: milliamp current control on the [Home Assistant charger](https://github.com/evcc-io/evcc/pull/33858) is optional now, and the [battery minsoc/maxsoc preset](https://github.com/evcc-io/evcc/pull/33707) is gone. + +## New Device Support + +**Wallboxes:** Steca, Sonoff switch sockets, plus meter capability for Spelsberg and improvements for go-e, OpenEVSE, NRGkick, Keba, Voltie and Zaptec + +**Meters, Solar & Battery Systems:** CHINT ECH10K, Solplanet hybrid, SENEC.Connect cloud API, Afore hybrid via RS485, Deye micro inverters via Solarman and HTTP logger, Zendure SolarFlow 800 Pro, my-PV HEA THOR 3.5 and 9.0, Solax X1/X3-HAC current limiter, return energy for Youless, openWB Pro and Sungrow + +**Vehicles:** Polestar via the official Data Portal API, new official MyŠkoda API, Nissan OneID login, LiveWire S2 motorcycles, charged energy for Tesla BLE + +**Heat Pumps & Heating:** Weishaupt (Modbus TCP), 1SINQ OneKey (SG Ready via MQTT), power and temperature for Viessmann thanks to [ickeundso](https://github.com/ickeundso) + +**Tariffs:** EPEX spot prices for Belgium, spotovaelektrina.cz for Czechia, additional regions, currencies and API key for Energy Price Forecast + +**Curtailment (§ 9 EEG):** SMA Sunny Home Manager 2.0, SolarEdge, Sungrow + +Of course, there have also been many bugfixes and improvements to existing integrations. +Details can be found in the release notes for [0.315](https://github.com/evcc-io/evcc/releases/tag/0.315.0) and [0.316](https://github.com/evcc-io/evcc/releases/tag/0.316.0). + +--- + +💚 Big thank you to everyone who moves the project forward: through code, ideas, testing, discussions and financial support, without which the project would not be possible in this form. + +The days are getting shorter. +Use the sun wisely. 😉 +Happy charging! + +**Best regards**
+The evcc Team
+Michael, Andi & Uli diff --git a/src/content/docs/en/blog/2026/09/25/highlights-smart-battery-solar-share.webp b/src/content/docs/en/blog/2026/09/25/highlights-smart-battery-solar-share.webp new file mode 100644 index 000000000..61b138eb9 Binary files /dev/null and b/src/content/docs/en/blog/2026/09/25/highlights-smart-battery-solar-share.webp differ diff --git a/src/content/docs/en/blog/2026/09/25/solar-share.webp b/src/content/docs/en/blog/2026/09/25/solar-share.webp new file mode 100644 index 000000000..f4a8f5592 Binary files /dev/null and b/src/content/docs/en/blog/2026/09/25/solar-share.webp differ diff --git a/src/content/docs/en/user-defined-devices.mdx b/src/content/docs/en/user-defined-devices.mdx index 32eb4d728..bac15a4de 100644 --- a/src/content/docs/en/user-defined-devices.mdx +++ b/src/content/docs/en/user-defined-devices.mdx @@ -133,27 +133,78 @@ Both attributes are optional. Without them, the energy history is derived from `power` over time. Real meter readings give more accurate long-term statistics. -### Write attributes +### Write attributes \{#meter-write-attributes\} | Attribute | Type | Required | Context | Description | | ------------- | ----- | -------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `limitsoc` | `int` | no | `battery` | Set charging target for battery in %. The charging target is calculated from the configured `MinSoc`, `MaxSoc` and the current state of charge (attribute `soc`). | -| `batterymode` | `int` | no | `battery` | Set charging mode directly (1: normal, 2: hold, 3: charge, 4: holdcharge, 5: discharge) | | `curtail` | `int` | no | `pv` | Set feed-in limit in % of the nominal production power (0 to 100, `100` = no limit). Only together with `curtailed`. See [Curtailment Device](#curtailer). | +| `batterymode` | `int` | no | `battery` | Set the battery control mode directly. The modes are listed below. | + +#### Battery modes \{#battery-modes\} + +| Value | Mode | Behaviour | +| ----- | ------------ | ---------------------------------------------------------------- | +| `1` | `normal` | Normal operation: charge from surplus, discharge for consumption | +| `2` | `hold` | Prevent discharging, charging from surplus still allowed | +| `3` | `charge` | Charge from grid, no discharging | +| `4` | `holdcharge` | Prevent charging, discharging for consumption still allowed | +| `5` | `discharge` | Discharge to grid | Only the battery modes the device supports are used. -If `batterymode` is a [`switch`](/en/reference/plugins#switch) (optionally wrapped in a `watchdog`), the supported modes are taken from its `case` values. +If `batterymode` is a [`switch`](/en/reference/plugins#switch), the supported modes are taken from its `case` values. +This also works when the switch is wrapped in a [`watchdog`](/en/reference/plugins#watchdog). Any other plugin needs `batterymodes` listing the supported modes, e.g. `batterymodes: ["normal", "hold", "charge"]`. -### Example +### Examples Read the current grid power from an HTTP endpoint. ```yaml -power: - source: http - uri: http://zaehler.network.local:8080/api/data.json?from=now - jq: .data.tuples[0][1] +meters: + - name: grid + type: custom + power: + source: http + uri: http://zaehler.network.local:8080/api/data.json?from=now + jq: .data.tuples[0][1] +``` + +Read power and charge level of a home battery and set its mode via HTTP. +The `switch` covers the modes normal, hold and charge, so evcc offers exactly these three. + +```yaml +meters: + - name: battery + type: custom + capacity: 10 # kWh + power: + source: http + uri: http://battery.local/api/power + soc: + source: http + uri: http://battery.local/api/soc + batterymode: + source: switch + switch: + - case: 1 # normal + set: + source: http + uri: http://battery.local/api/mode + method: POST + body: '{"mode": "auto"}' + - case: 2 # hold + set: + source: http + uri: http://battery.local/api/mode + method: POST + body: '{"mode": "hold"}' + - case: 3 # charge + set: + source: http + uri: http://battery.local/api/mode + method: POST + body: '{"mode": "charge"}' ``` ## Charger \{#charger\}