Was ist der Power-Splitter?
Der Power-Splitter analysiert den Stromverbrauch von E-Auto, Wärmepumpe, Haus und benutzerdefinierten Verbrauchern. Er teilt den Verbrauch auf in den Anteil, der mit Photovoltaik-Strom gedeckt wird, und den Anteil, der aus dem Netz stammt. Auf dieser Aufteilung beruhen die Verbrauchskosten je Verbraucher.
Dazu drei Hinweise:
-
Die Berechnung erfolgt für sämtliche Verbrauchswerte, die in der InfluxDB vorhanden sind. Das bedeutet, dass nicht nur zukünftige Messwerte, sondern auch die Messwerte der Vergangenheit berücksichtigt werden.
-
Die Berechnung erledigt ein eigener Docker-Container (der eigentliche Power-Splitter). Er läuft dauerhaft im Hintergrund, berechnet die Aufteilung und schreibt sie in ein neues Measurement der InfluxDB.
-
Der Power-Splitter setzt voraus, dass neben dem Hausverbrauch weitere Verbraucher überwacht werden, etwa ein E-Auto, eine Wärmepumpe oder benutzerdefinierte Verbraucher. Fehlen sie, gibt es nichts aufzuteilen. Dann genügt die Autarkie, die SOLECTRUS auch ohne den Power-Splitter berechnet.
Berechnete Werte
Abschnitt betitelt „Berechnete Werte“Der Power-Splitter schreibt die folgenden Werte als Field in das Measurement power_splitter der InfluxDB:
wallbox_power_grid: Netzbezug der Wallbox, in Watthouse_power_grid: Netzbezug des Hauses, in Wattheatpump_power_grid: Netzbezug der Wärmepumpe, in Wattcustom_power_XX_grid: Netzbezug eines benutzerdefinierten Verbrauchers (XXvon 01 bis 20), in Wattbattery_charging_power_grid: Netzbezug der Batterie, in Watt
Beim Start prüft der Power-Splitter zunächst, ob Messwerte aus der Vergangenheit vorliegen, für die noch kein Split erfolgt ist. Diese arbeitet er nach, beginnend beim ältesten noch unbearbeiteten Tag. Je nach Datenmenge dauert das eine Weile, etwa 30 Minuten sind nicht ungewöhnlich.
Anschließend erfolgt die Berechnung für den aktuellen Tag. Der Power-Splitter läuft dann im Endlosmodus und berechnet den aktuellen Tag in einem vorgegebenen Intervall (in einer Installation mit HELIOS alle 5 Minuten) permanent neu, um hinzugekommene Messwerte zu berücksichtigen. Um Mitternacht wird der Tag abgeschlossen und der nächste Tag begonnen.
Neuberechnung erzwingen
Abschnitt betitelt „Neuberechnung erzwingen“Mitunter sollen die berechneten Werte verworfen und neu berechnet werden, etwa nach einem nachträglichen Import historischer Messwerte.
Dafür bekommt der laufende Container das Signal USR1:
docker compose kill --signal USR1 power-splitterDer Container beendet sich dabei nicht, sondern beginnt von vorn. Der Fortschritt steht im Protokoll. Danach wechselt er zurück in den Endlosmodus.
Ist die Vergangenheit abgearbeitet, leert der Power-Splitter den Redis-Cache und setzt die Tageszusammenfassungen zurück. Beides erledigt er selbst, denn die Zusammenfassungen enthalten auch seine Werte. Nötig sind dafür DB_HOST, DB_USER, DB_PASSWORD und REDIS_URL – in einer Installation mit HELIOS sind sie immer gesetzt.
Logging
Abschnitt betitelt „Logging“Der Power-Splitter schreibt ein Protokoll ins Docker-Log, das im Normalfall so aussieht:
Power Splitter for SOLECTRUS, Version v1.0.2, built at 2026-05-26 15:10:41 +0200Using Ruby 4.0.5 on platform aarch64-linux-muslCopyright (c) 2024-2026 Georg Ledermann <georg@ledermann.dev>https://github.com/solectrus/power-splitter
Accessing InfluxDB at http://influxdb:8086, bucket solectrusSensor initialization started - Sensor 'grid_import_power' mapped to 'SENEC:grid_power_plus' - Sensor 'house_power' mapped to 'SENEC:house_power' - Sensor 'heatpump_power' mapped to 'Consumer:power' - Sensor 'wallbox_power' mapped to 'SENEC:wallbox_charge_power' - Sensor 'battery_charging_power' mapped to 'SENEC:bat_power_plus' - Sensor 'custom_power_01' mapped to 'Washer:power' - Sensor 'custom_power_02' mapped to 'Fridge:power' - Sensor 'custom_power_03' mapped to 'KabelFritz:power' - Sensor 'custom_power_04' mapped to 'Synology:power' - Sensor 'custom_power_05' mapped to 'iMac:power' - Sensor 'custom_power_06' mapped to 'Dishwasher:power' - Sensor 'house_power' excluded 'heatpump_power'Sensor initialization completed
Starting endless loop for processing current data...
2026-07-14 10:16:17 +0200 - Processing day 2026-07-14 Pushing 123 records to InfluxDB Sleeping for 300 seconds......Fehler protokolliert der Power-Splitter ebenfalls, etwa wenn die InfluxDB nicht erreichbar ist.
Quelltext
Abschnitt betitelt „Quelltext“Der Power-Splitter ist in Ruby implementiert, der Quelltext ist auf GitHub verfügbar:
github.com/solectrus/power-splitter