PV-Vorhersage mit dem Iobroker
Verfasst: Di Dez 21, 2021 10:27 am
Hallo ihr,
nachdem es bereits mehrfach angefragt wurde habe ich mir jetzt die Daten über Solcast (Danke an hominidae für den Tipp) geholt, zerlegt und aufbereitet. Zudem schicke ich mir die Werte an die InfluxDB um sie mit Grafana aufzubereiten, das könnt ihr euch aber easy im Skript anpassen, wenn gewollt.
Vorrausetzung ist neben dem Iobroker (wer hätte bei der Überschrift damit rechnen können...) auch ein Konto bei https://solcast.com/ .
Dieses ist für eine Anlage für Privatpersonen kostenlos, ihr bekommt dann eine API, mit der ihr die Abfrage über JSON machen könnt.
Als erstes legt ihr euch Datenpunkte an. Diese sollten für 7 Tage angelegt werden, ich hab noch jeweil das Datum mit angelegt. Dies diente ursprünglich nur der Kontrolle aber mittlerweile nutze ich es auch für die Auswertung. Wie ihr sie nennt ist eigentlich jedem selbst überlassen, hier exemplarisch meine:
Ich hab außerdem noch drei zusätzlich Datenpunkte um meinen eignen "Tuning"-Faktor zu berechnen, dazu später mehr unten.
Das Skript legt (außer den Tuningpunkten) aber die benötigten Datenpunkte von sich aus an, ihr könnt sie aber später gerne selbst ändern.
Und hier das Skript:
Ihr könnt einfach die Textdatei importieren (bei Blockly--->Blöcke importieren).
Als erstes müsst ihr den Request bearbeiten, hier nehmt ihr einfach den Link auf Solcast (JSON auswählen) und ergänzt ihn wie folgt:
Den Teil am Schluss mit "&api_key=" ergänzt ihr logischerweise um euren API Key, dieser ist in eurem Profil hinterlegt.
Damit ist der erste Schritt schon gemacht, ihr holt euch die Daten ab. Diese werden jedoch in einem Halbstundenrythmus dargestellt mit der jeweils erwarteten Leistung der Anlage in Watt. Für die meisten ist jedoch die erwartete Produktion in kWh interessant, daher zerlege ich die Werte noch in ihre einzelnen Tage und berechne hieraus die gesamten kWh für den Tag. Diese schreibe ich dann in die Datenpunkte.
Im Skript passt ihr noch die Datenpunkte auf eure Datenpunkte an.
Schon ruft ihr für die nächsten 7 Tage die Vorhersage ab.
Innerhalb der ersten Schleife findet ihr einen zweiten Request. Dieser dient dazu mir die Daten auch an InfluxDB zu schicken und zwar mit dem korrekten Timestamp in der Zukunft. Wenn ihr kein InfluxDB nutzt, dann könnt ihr den Teil löschen. Wenn doch sind noch folgende Anpassungen erforderlich:
Hier jeweils euren Username und das Passwort eingeben, falls ihr das ganze Verschlüsselt habt. Ansonsten könnt ihr den Teil "&u=USER&p=PASSWORT" einfach löschen.
Statt "Vorhersage" tragt ihr den Namen der Datenbank ein, die ihr nutzen wollt. Ich hab mir eine neue gemacht um meine bestehende bei einem Fehler nicht zu zerschießen
Das war es, schon habt ihr die Daten mit Timestamp auch in der InfluxDB. Diese werden auch immer überschrieben, wenn sich die Vorhersage ändert, da 7 Tage schon sehr viel Wahrsagerei sind.
Der letzte Teil ist gerade experimentell und läuft erst seit kurzem:
Da die Werte erfahrungsgemäß immer etwas abweichen, möchte ich gerne einen Langzeitfaktor bekommen, um die ich dieses glätten kann.
Hierfür nehme ich einfach das meine tatsächlich erzielte Leistung und teile sie durch die Vorhersage. Diesen Wert addiere ich dann jeden Tag auf und teile ihn durch die Anzahl aller jemals errechneten Werte.
Dies ist nötig, da man ja jedem Wert die gleiche Gewichtung geben will.
Um das ganze auch bei einem Neustart zu haben, ist es wichtig dies in Datenpunkte zu speichern, daher die drei extra Datenpunkte.
Und so sieht das Skript aus:
Und hier das Skript:
Diese läuft wie gesagt erst seit kurzem, aber so müsstet ihr auf die Dauer einen recht guten Mittelwert erhalten, um eure Vorhersage anzupassen.
Ihr müsst dann das Vorhersageskript natürlich noch irgendwann anpassen und den Wert ganz am Ende vor Schreiben in die Datenpunkte um Tuniningfaktor multiplizieren.
Soweit hoffe ich, dass alles drin und verständlich ist,
Liebe Grüße
Simon
nachdem es bereits mehrfach angefragt wurde habe ich mir jetzt die Daten über Solcast (Danke an hominidae für den Tipp) geholt, zerlegt und aufbereitet. Zudem schicke ich mir die Werte an die InfluxDB um sie mit Grafana aufzubereiten, das könnt ihr euch aber easy im Skript anpassen, wenn gewollt.
Vorrausetzung ist neben dem Iobroker (wer hätte bei der Überschrift damit rechnen können...) auch ein Konto bei https://solcast.com/ .
Dieses ist für eine Anlage für Privatpersonen kostenlos, ihr bekommt dann eine API, mit der ihr die Abfrage über JSON machen könnt.
Als erstes legt ihr euch Datenpunkte an. Diese sollten für 7 Tage angelegt werden, ich hab noch jeweil das Datum mit angelegt. Dies diente ursprünglich nur der Kontrolle aber mittlerweile nutze ich es auch für die Auswertung. Wie ihr sie nennt ist eigentlich jedem selbst überlassen, hier exemplarisch meine:
Ich hab außerdem noch drei zusätzlich Datenpunkte um meinen eignen "Tuning"-Faktor zu berechnen, dazu später mehr unten.
Das Skript legt (außer den Tuningpunkten) aber die benötigten Datenpunkte von sich aus an, ihr könnt sie aber später gerne selbst ändern.
Und hier das Skript:
Ihr könnt einfach die Textdatei importieren (bei Blockly--->Blöcke importieren).
Als erstes müsst ihr den Request bearbeiten, hier nehmt ihr einfach den Link auf Solcast (JSON auswählen) und ergänzt ihn wie folgt:
Code: Alles auswählen
https://api.solcast.com.au/rooftop_sites/XXXX/forecasts?format=json&api_key=EUER-API-KEY
Damit ist der erste Schritt schon gemacht, ihr holt euch die Daten ab. Diese werden jedoch in einem Halbstundenrythmus dargestellt mit der jeweils erwarteten Leistung der Anlage in Watt. Für die meisten ist jedoch die erwartete Produktion in kWh interessant, daher zerlege ich die Werte noch in ihre einzelnen Tage und berechne hieraus die gesamten kWh für den Tag. Diese schreibe ich dann in die Datenpunkte.
Im Skript passt ihr noch die Datenpunkte auf eure Datenpunkte an.
Schon ruft ihr für die nächsten 7 Tage die Vorhersage ab.
Innerhalb der ersten Schleife findet ihr einen zweiten Request. Dieser dient dazu mir die Daten auch an InfluxDB zu schicken und zwar mit dem korrekten Timestamp in der Zukunft. Wenn ihr kein InfluxDB nutzt, dann könnt ihr den Teil löschen. Wenn doch sind noch folgende Anpassungen erforderlich:
Code: Alles auswählen
curl -i -XPOST 'http://localhost:8086/api/v2/write?bucket=Vorhersage&precision=ns&u=USER&p=PASSWORT' \
Statt "Vorhersage" tragt ihr den Namen der Datenbank ein, die ihr nutzen wollt. Ich hab mir eine neue gemacht um meine bestehende bei einem Fehler nicht zu zerschießen
Das war es, schon habt ihr die Daten mit Timestamp auch in der InfluxDB. Diese werden auch immer überschrieben, wenn sich die Vorhersage ändert, da 7 Tage schon sehr viel Wahrsagerei sind.
Der letzte Teil ist gerade experimentell und läuft erst seit kurzem:
Da die Werte erfahrungsgemäß immer etwas abweichen, möchte ich gerne einen Langzeitfaktor bekommen, um die ich dieses glätten kann.
Hierfür nehme ich einfach das meine tatsächlich erzielte Leistung und teile sie durch die Vorhersage. Diesen Wert addiere ich dann jeden Tag auf und teile ihn durch die Anzahl aller jemals errechneten Werte.
Dies ist nötig, da man ja jedem Wert die gleiche Gewichtung geben will.
Um das ganze auch bei einem Neustart zu haben, ist es wichtig dies in Datenpunkte zu speichern, daher die drei extra Datenpunkte.
Und so sieht das Skript aus:
Und hier das Skript:
Diese läuft wie gesagt erst seit kurzem, aber so müsstet ihr auf die Dauer einen recht guten Mittelwert erhalten, um eure Vorhersage anzupassen.
Ihr müsst dann das Vorhersageskript natürlich noch irgendwann anpassen und den Wert ganz am Ende vor Schreiben in die Datenpunkte um Tuniningfaktor multiplizieren.
Soweit hoffe ich, dass alles drin und verständlich ist,
Liebe Grüße
Simon