Power-Splitter

Der Power-Splitter analysiert den Stromverbrauch großer Verbraucher (E-Auto, Wärmepumpe, Haus). Der Verbrauch wird aufgeteilt in den Anteil, der mit Photovoltaik-Strom gedeckt wird und den Anteil, der aus dem Netz bezogen wird. Daraus ergeben sich interessante Einblicke in die Verbrauchskosten, die sonst so nicht möglich waren.

Zunächst ein paar wichtige Hinweise:

  • Die Berechnung erfolgt für sämtliche Verbrauchswerte von Wärmepumpe und/oder E-Auto, die in der InfluxDB vorhanden sind. Das bedeutet, dass nicht nur zukünftige Messwerte, sondern auch die Messwerte der Vergangenheit berücksichtigt werden.

  • Für die Berechnung kommt ein zusätzlicher Docker-Container (der eigentliche Power-Splitter) zum Einsatz. Dieser läuft dauerhaft im Hintergrund, berechnet die Aufteilung und schreibt sie in ein neues Measurement der InfluxDB.

  • Der Power-Splitter ergibt nur Sinn, wenn man ein E-Auto und/oder eine Wärmepumpe hat (also nicht zwingend beides) und erfolgreich an SOLECTRUS angebunden hat. Wer also beides nicht hat, für den ist es uninteressant, weil es dann nichts aufzuteilen gibt. Die von SOLECTRUS bereits berechnete Autarkie stellt in diesem Fall die Situation bereits dar.

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 Watt
  • house_power_grid: Netzbezug des Hauses, in Watt
  • heatpump_power_grid: Netzbezug der Wärmepumpe, 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. Dies wird dann nachgeholt, beginnend beim ältesten noch nicht bearbeiteten Tag. Dies kann einige Zeit in Anspruch nehmen, je nachdem, wie viele Daten nachzuarbeiten sind. Etwa 30min sind hierbei 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 (standardmäßig 1 Stunde) permanent neu, um hinzugekommene Messwerte zu berücksichtigen. Um Mitternacht wird der Tag abgeschlossen und der nächste Tag begonnen.

Protokollierung

Der Power-Splitter schreibt ein Protokoll ins Docker-Log, das im Normalfall so aussieht:

Power Splitter for SOLECTRUS, Version 0.5.0, built at 2024-08-30 02:05:48 +0200
Using Ruby 3.3.5 on platform x86_64-linux-musl
Copyright (c) 2024 Georg Ledermann <georg@ledermann.dev>
https://github.com/solectrus/power-splitter

Accessing InfluxDB at http://influxdb:8086, bucket SENEC
Sensor 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 'house_power' excluded 'heatpump_power'
Sensor initialization completed

Starting endless loop for processing current data...

2024-10-04 15:43:56 +0200 - Processing day 2024-10-04
  Pushing 188 records to InfluxDB
  Sleeping for 3600 seconds...
...

Das Protokoll kann über folgenden Befehl abgerufen werden:

docker compose logs power-splitter

Bei Problemen oder Fehlern (z.B. wenn die InfluxDB nicht erreichbar ist) wird dies ebenfalls protokolliert. Es empfiehlt sich daher, im Zweifelsfall zuerst das Protokoll zu prüfen.

Quelltext

Der Power-Splitter ist in Ruby implementiert, der Quelltext ist auf GitHub verfügbar:
github.com/solectrus/power-splitter


Unterkapitel