Das folgende Python-Skript liest die Leistungs und Verbrauchsdaten des Wechselrichters unserer PV-Anlage aus. Grundidee dieses Projektes war es, die Stromkosten unseres Elektroautos berechnen zu können. Hierfür muss man natürlich wissen wie hoch der Solarstromanteil bei der in das Auto eingespeisten Energie ist. Also wurde ein Strommesser (Shelly 3em) installiert, um differenzieren zu können, wann genau das Auto geladen wird.
Das Skript besteht aus mehreren Funktionen und einer Hauptschleife, die die Aufgaben der Datenerfassung, Datenspeicherung und des Sitzungsmanagements übernehmen, Datenspeicherung, Fehlerbehandlung und Sitzungsverwaltung. Das Skript läuft auf einem Server im lokalen Netzwerk.
- insert_data_into_Leistung_database(time, data): Fügt Leistungsdaten in die Datenbank ein.
- insert_data_into_Arbeit_database(time, data): Fügt Arbeitsdaten in die Datenbank ein.
- insert_data_into_Shelly_database(time, Watt, Wattstunden): Fügt Shelly-Daten in die Datenbank ein.
- read_database(query): Liest Daten aus der Datenbank.
- get_new_session_id(): Holt eine neue Sitzungs-ID vom Wechselrichter.
- get_data(sid): Holt Daten vom Wechselrichter unter Verwendung der Sitzungs-ID.
- Erfasst die aktuelle Zeit.
- Fragt Daten vom Wechselrichter ab und behandelt mögliche Fehler (Timeout, Verbindungsfehler, ungültige Sitzungs-ID).
- Fragt Daten von der Shelly-API ab.
- Berechnet die Wattstunden und speichert die Daten in der Datenbank.
- Speichert Leistungsdaten alle 10 Sekunden und Arbeitsdaten einmal pro Stunde.
- Berechnet die Ausführungszeit und wartet entsprechend, um den nächsten Datenerfassungszyklus zu starten.
Das Skript verwendet ein Logging-System, um die Fehlersuche erheblich zu vereinfachen. Die Logs werden in der Datei (logfile.log) gespeichert und enthalten Informationen über aufgetretene Fehler.
(Auflistung von oben nach unten betrachtet)
- Die orangefarbene Kurve zeigt den gesamten Netzbezug des Hauses, also inklusive der Ladevorgänge der Autos. Der Blaue zeigt den reinen Hausverbrauch, da hier die Datenpunkte des Shelly Messgerätes abgezogen werden. Zu beachten ist hierbei, dass der Haushalt zusätzlich über ein Hybridfahrzeug verfügt, dessen Ladevorgänge noch nicht erfasst sind. Dies ist um den Zeitpunkt 2024-05-04 gut zu erkennen, da der blaue und der orange Graph vollständig übereinstimmen.
- Dieser Graph beschreibt den absoluten Ertrag (grün) und das, was nach Abzug des Haushaltsverbrauchs (inkl. Hybridfahrzeug) zur Verfügung steht (braun). Also der Überschuss, der im Normalfall ins Netz eingespeist wird.
- Hier sind die Ladezyklen des Elektroautos dargestellt. Genauer gesagt, was aus dem Netz bezogen werden muss, um das Auto zu laden. Also Ladelast - ((Absoluter Ertrag) - Hausverbrauch). Gut zu erkennen ist, dass sich der zu Verfügung stehende Ertrag der Solaranlage aus (2.) und dieser Plot ergänzen, da natürlich bei mehr zur Verfügung stehendem Ertrag weniger aus dem Netz bezogen werden muss.
Der Anteil des Solarstroms am Verbrauch des Elektroautos in diesem Zeitraum beträgt ~36%. Die Berechnung erfolgt druch:
- Netzbezug_Wh = Datenpunkte(Netzbezug durch Auto).sum() / 360
- Gesamtlast_Wh = Datenpunkte(Gesamtlast durch das Auto).sum() / 360
- Anteil Solarstrom = (Gesamtlast_Wh - Netzbezug_Wh) / Gesamtlast_Wh * 100
Es wird durch 360 geteilt, da alle 10s ein Datenpunkt in Watt erzeugt wird, so dass wir mit dieser Rechnung die Wh für diesen Zeitraum erhalten.