ChargeMaster

Adapter zur Verwaltung von Multi-EV-Ladegeräten unter Verwendung von PV-Energie

Aktueller Release
0.16.1
Entwickler
Hombach
Lizenz
MIT

Versionen

Posten

Dieser Adapter verwendet Sentry-Bibliotheken, um Ausnahmen und Codefehler automatisch an die Entwickler zu melden. Weitere Informationen und Hinweise zum Deaktivieren der Fehlerberichterstattung finden Sie unter [Link einfügen]. Sentry-Plugin-Dokumentation !

Adapter zur Steuerung eines oder mehrerer Ladegeräte für Elektrofahrzeuge unter Nutzung von Photovoltaikenergie

!!! DIESER ADAPTER BEFINDE SICH NOCH IM ENTWICKLUNGSZUSTAND !!!

ChargeMaster verwaltet eine oder mehrere Ladestationen für Elektrofahrzeuge (Wallboxen) und steuert deren Ladestrom basierend auf dem verfügbaren PV-Überschuss Ihres Hauses. Es ist herstellerunabhängig: Es kommuniziert nicht direkt mit der Hardware, sondern liest und schreibt die ioBroker-Zustände Ihrer vorhandenen Wallbox-Adapter (z. B. go-e, aber jeder Adapter, der die benötigten Zustände bereitstellt, funktioniert).

Merkmale

  • Steuert bis zu mehrere Wanddosen gleichzeitig unter Berücksichtigung eines globalen maximalen Gesamtstroms (z. B. der Grenze Ihres Hausanschlusses oder der Zuleitung zur Wanddose).
  • ChargeNOW- Modus pro Wallbox: Sofortiges Laden mit einem benutzerdefinierten Strom, unabhängig von der PV-Produktion
  • ChargeManager- Modus pro Wallbox: Automatisches Laden aus PV-Überschuss unter Berücksichtigung des Hausverbrauchs und des Speichers Ihrer Heimbatterie
  • Konfigurierbare Priorität der Heimbatterie: Das Laden des Elektrofahrzeugs beginnt erst, wenn die Heimbatterie einen konfigurierbaren Ladezustand erreicht hat; darüber hinaus kann ein Teil der Batterieleistung das Laden des Elektrofahrzeugs unterstützen.
  • Gleichmäßige Regelung: Der Ladestrom wird pro Steuerzyklus um 1 A erhöht/verringert, mit Hysterese und verzögerter Abschaltung zum Schutz des Fahrzeugladegeräts vor schnellem Schalten.
  • Ereignisgesteuert: Reagiert sofort auf Benutzereingaben (z. B. Aktivierung von ChargeNOW) und empfängt Energiedaten über Statusabonnements anstatt über Polling.

So funktioniert es

Der Adapter führt einen Regelzyklus durch (standardmäßig alle 10 Sekunden). Für jede konfigurierte Wanddose plant er einen Zielstrom basierend auf ihrem Betriebsmodus:

  1. ChargeNOW aktiviert → die Wallbox ist mit dem benutzerdefiniertenChargeCurrent Die
  2. ChargeManager aktiviert → wenn der SoC der Heimbatterie den Sollwert erreicht hat (Settings.Setpoint_HomeBatSoC Der optimale Strom wird aus dem PV-Überschuss berechnet (siehe Lademanager-Algorithmus ). Andernfalls bleibt die Wallbox ausgeschaltet, bis die Batterie geladen ist.
  3. Wenn keines der beiden aktiviert ist , ist die Wallbox ausgeschaltet.

Anschließend verteilt ein globaler Begrenzer den verfügbaren Gesamtstrom (maximum total current Einstellung: Wandsteckdosen im ChargeNOW-Modus werden zuerst bedient, der verbleibende Strom wird an die ChargeManager-Wandsteckdosen verteilt. Sollte der verbleibende Strom einer Wandsteckdose unter ihren Mindeststrom fallen, wird sie vollständig abgeschaltet. Abschließend werden die resultierenden Ströme und Ladeaktivierungsbefehle in die konfigurierten Wandsteckdosen-Zustände geschrieben.

Anforderungen

  • node.js >= 22.18, js-controller >= 6.0.11, admin >= 7.6.20
  • Ein ioBroker-Adapter für Ihre Wallbox(en) mit folgenden Funktionen: Ladestrom einstellen, Laden zulassen/deaktivieren, aktive Ladeleistung, aktiver Ladestrom
  • ioBroker gibt Ihre PV-Produktion (W), Ihren Stromverbrauch im Haus (W) und – falls vorhanden – den Ladezustand (%) Ihrer Hausbatterie an, z. B. vom Wechselrichteradapter.

Konfiguration

Grundeinstellungen

EinstellungBeschreibung
cycle timeRegelzyklusintervall in Millisekunden (Standardwert 10000). Werte unter 5000 werden nicht empfohlen.
maximum total currentGlobale Strombegrenzung in A über alle Wanddosen zusammen (z. B. Versorgungsleitungsbegrenzung).
state of solar powerAusländischer Staat mit der aktuellen PV-Produktion in W.
state of home power consumptionAusländischer Staat mit dem aktuellen Haushaltsverbrauch in W (ohne Wallbox-Ladeleistung).
state of home battery state of chargeAusländischer Staat mit aktuellem SoC der Heimbatterie in %.

Wallbox-Liste

Füge pro Wandkasten eine Zeile hinzu:

SpalteBeschreibung
state charge currentDer ausländische Staat legt den Sollwert für den Ladestrom (A) fest .
state charge allowedFremdstaat, der den Befehl zum Aktivieren/Deaktivieren der Ladung schreibt (boolescher Wert).
state active powerAusländischer Staat liest die aktuelle Ladeleistung (W) aus.
state active currentDer ausländische Staat liest den aktuellen Ladestrom (A) ab.
min currentMinimaler Ladestrom dieser Wallbox in A (typischerweise 6 A).
max currentMaximaler Ladestrom dieser Wallbox in A (z. B. 16 A).

Alle konfigurierten Zustände werden beim Start des Adapters überprüft – falls ein Zustand nicht existiert, protokolliert der Adapter einen Fehler und stoppt.

Vom Adapter erstellte Zustände

ZustandBeschreibung
Settings.Setpoint_HomeBatSoCMinimaler Ladezustand der Hausbatterie in Prozent, bevor die PV-Überschussladung beginnt (beschreibbar, Standardwert 80).
Settings.WB_<x>.ChargeNOWSofortiges Laden für die Wallbox aktivieren<x> (beschreibbar).
Settings.WB_<x>.ChargeCurrentLadestrom in A, der im ChargeNOW-Modus verwendet wird (beschreibbar).
Settings.WB_<x>.ChargeManagerPV-Überschussladung für Wallbox aktivieren<x> (beschreibbar).
Power.ChargeGemessene Gesamtladeleistung aller Wallboxen in Watt.
info.connectionTrifft zu, solange alle konfigurierten ausländischen Zustände verifiziert wurden und der Adapter läuft.

Algorithmus des Ladungsmanagers

Der optimale Ladestrom für eine Wallbox im ChargeManager-Modus wird wie folgt berechnet:

batteryShare = up to 2000 W, scaling linearly from 0 at Setpoint_HomeBatSoC to 2000 W at 100% SoC
optimalCurrent = (solarPower - houseConsumption + 100 W reserve + batteryShare) / 230 V

Der geplante Strom nähert sich dann diesem Optimum um 1 A pro Zyklus. Der Ladevorgang wird aktiviert, sobald der geplante Strom den Mindeststrom der Wallbox zuzüglich einer Hysterese von 3 A überschreitet, und erst deaktiviert, nachdem der geplante Strom über 15 aufeinanderfolgende Zyklen unter dem Mindeststrom geblieben ist (verzögerte Abschaltung, vermeidet das Ein- und Ausschalten bei kurzen Bewölkungen).

Hinweise und Einschränkungen

  • Die Leistungs-zu-Strom-Umwandlung geht von einphasigem Laden mit 230 V aus. Bei dreiphasigen Lade-Wallboxen wird der berechnete Überschussstrom derzeit nicht durch die Anzahl der Phasen geteilt – die konfigurierbare Phasenanzahl ist geplant.
  • Der Eigenverbrauch darf nicht die Ladeleistung der Wallbox selbst beinhalten, da sonst der Regelkreis in Schwingung gerät.
  • Der Adapter schreibt in jedem Zyklus die Zustände Ihrer Wallbox – stellen Sie sicher, dass die Konfiguration korrekt ist.state charge current /state charge allowed Es handelt sich dabei tatsächlich um die beschreibbaren Steuerzustände Ihres Wanddosenadapters.

Spenden


Wenn dir dieses Projekt gefallen hat – oder du einfach nur großzügig sein möchtest –, spendiere mir doch ein Bier. Prost! 😉

Getestet mit

  • 3x go-E Ladegerät & Kostal PikoBA

Changelog

WORK IN PROGRESS

  • (HombachC) fixed vulnerability
  • (HombachC) updated dependencies

0.16.1 (2026-08-10)

  • (HombachC) projectUtils: use extendObject instead of setObject in forceMode so user customizations survive restarts
  • (HombachC) updated dependencies

0.16.0 (2026-07-05)

  • (HombachC) switched data acquisition from polling to event driven foreign state subscriptions, react immediately to user input
  • (HombachC) fixed warnings of adapter checker
  • (HombachC) repository cleanup
  • (HombachC) removed unused chai/sinon-chai/chai-as-promised/proxyquire devDependencies and switch tests to node:assert
  • (HombachC) fixed race condition at first start
  • (HombachC) fixed wrong config default keys in io-package.json and added guard for missing maxAmpTotal
  • (HombachC) moved module-global variables into adapter class to fix possible conflicts in compact mode
  • (HombachC) stop state machine and reset info.connection on adapter unload
  • (HombachC) await wallbox state writes with proper error handling and throttle/switch off boxes exceeding the measured total current limit
  • (HombachC) fixed lost min/max/step value of 0 and duplicated unit handling in projectUtils
  • (HombachC) charge manager: clamp optimal current at zero and fix division by zero with home battery setpoint of 100%
  • (HombachC) validate and clamp Setpoint_HomeBatSoC state changes (NaN guard, 0-100%)
  • (HombachC) improved typing: typed state getters in projectUtils instead of any, fixed wallBoxList tuple type
  • (HombachC) removed yarn devDependency and switched release build hook to npm
  • (HombachC) extracted charge planning and limiting algorithms into testable module and added 18 unit tests
  • (HombachC) improved README with feature overview, configuration, states and algorithm documentation

0.15.1 (2026-06-04)

  • (HombachC) fix warnings of adapter checker
  • (HombachC) upgraded typescript to 6.x.x
  • (HombachC) updated projectUtils
  • (HombachC) updated dependencies

0.15.0 (2026-05-09)

  • (copilot) BREAKING: adapter requires node.js >= 22 now
  • (HombachC) update dependencies

0.14.7 (2026-04-16)

  • (HombachC) min admin 7.6.20 as recommended (#762)
  • (HombachC) switch to ES2023 code
  • (HombachC) update dependencies

Old Changes see CHANGELOG OLD

License

MIT License

Copyright (c) 2021-2026 Christian Hombach

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE

SOFTWARE.