PV-Vorhersage mit dem Iobroker

thesorrow101
Beiträge: 685
Registriert: Mo Okt 12, 2020 7:41 am

PV-Vorhersage mit dem Iobroker

Beitrag von thesorrow101 »

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:
Datenpunkte.JPG
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:
Auswerteskript.rtf
(348.98 KiB) 354-mal heruntergeladen
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
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:

Code: Alles auswählen

curl -i -XPOST 'http://localhost:8086/api/v2/write?bucket=Vorhersage&precision=ns&u=USER&p=PASSWORT' \
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:
Tuning.JPG
Und hier das Skript:
Tuning.rtf
(6.43 KiB) 196-mal heruntergeladen
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
Zuletzt geändert von thesorrow101 am Mo Jan 17, 2022 6:24 pm, insgesamt 4-mal geändert.
thesorrow101
Beiträge: 685
Registriert: Mo Okt 12, 2020 7:41 am

Re: PV-Vorhersage mit dem Iobroker

Beitrag von thesorrow101 »

Ich habe festgestellt, dass das Skript zum Jahreswechsel einen Fehler aufweist und den 01.01.2022 kleiner wertet als den 31.12.2021.

Ich beobachte das ganze mal, ob das ein Problem zum Monatswechsel ist oder nur zum Jahreswechsel und stelle dann je nachdem ein neues ein!

EDIT: Keine Ahnung warum, aber innerhalb der Auswertung habe ich das Format durch JJJJ.MM.TT ersetzt und jetzt wertet er es wieder korrekt aus. Das Skript oben im Beitrag ist bereits korrigiert.

Liebe Grüße
thesorrow101
Beiträge: 685
Registriert: Mo Okt 12, 2020 7:41 am

Re: PV-Vorhersage mit dem Iobroker

Beitrag von thesorrow101 »

Falls es jemand nutzt würde ich mich freuen, wenn ihr von euch hören lasst, ob es klappt oder ob es Probleme gibt! :)
ThoSt
Beiträge: 93
Registriert: Mo Nov 30, 2020 8:23 pm

Re: PV-Vorhersage mit dem Iobroker

Beitrag von ThoSt »

Schaut interessant aus und ich habe es mal getestet. Leider schlägt der Import in Blockly fehl:
"TypeError: Block type unspecified"

Welche Version nutzt du? Bei mir ist alles auf dem letzten Stand (heute).

Ich nehme an die Datenpunkte sind string (datum_) und number (PV_Gesamt)? Oder?

Gruß,
ThoSt
thesorrow101
Beiträge: 685
Registriert: Mo Okt 12, 2020 7:41 am

Re: PV-Vorhersage mit dem Iobroker

Beitrag von thesorrow101 »

ThoSt hat geschrieben: Di Jan 11, 2022 10:41 pm Schaut interessant aus und ich habe es mal getestet. Leider schlägt der Import in Blockly fehl:
"TypeError: Block type unspecified"

Welche Version nutzt du? Bei mir ist alles auf dem letzten Stand (heute).

Ich nehme an die Datenpunkte sind string (datum_) und number (PV_Gesamt)? Oder?

Gruß,
ThoSt
Ich nutze das Beta Repository.

Hm seltsam, den Fehler kann ich mir spontan nicht erklären, aber ich kann es morgen oder so nochmal überprüfen!

PV Gesamt etc sind alle Float. Datum ist string.
ThoSt
Beiträge: 93
Registriert: Mo Nov 30, 2020 8:23 pm

Re: PV-Vorhersage mit dem Iobroker

Beitrag von ThoSt »

OK, wäre cool :) Will das gerne mal testen!
thesorrow101
Beiträge: 685
Registriert: Mo Okt 12, 2020 7:41 am

Re: PV-Vorhersage mit dem Iobroker

Beitrag von thesorrow101 »

ThoSt hat geschrieben: Di Jan 11, 2022 10:41 pm Schaut interessant aus und ich habe es mal getestet. Leider schlägt der Import in Blockly fehl:
"TypeError: Block type unspecified"

Welche Version nutzt du? Bei mir ist alles auf dem letzten Stand (heute).

Ich nehme an die Datenpunkte sind string (datum_) und number (PV_Gesamt)? Oder?

Gruß,
ThoSt
Ich habe es gerade mal probiert und ich kann die Blöcke aus der Datei oben ohne Probleme importieren. Welche Version von JavaScript und Js-Controller hast du?
ThoSt
Beiträge: 93
Registriert: Mo Nov 30, 2020 8:23 pm

Re: PV-Vorhersage mit dem Iobroker

Beitrag von ThoSt »

Hi,

node.js=v12.22.9 und Javascriptausführung 5.2.13.

Sonst läuft alles rund. Keine Ahnung wo das problem sein könnte.

:/
thesorrow101
Beiträge: 685
Registriert: Mo Okt 12, 2020 7:41 am

Re: PV-Vorhersage mit dem Iobroker

Beitrag von thesorrow101 »

ThoSt hat geschrieben: Do Jan 13, 2022 7:54 pm Hi,

node.js=v12.22.9 und Javascriptausführung 5.2.13.

Sonst läuft alles rund. Keine Ahnung wo das problem sein könnte.

:/
node.js wird mittlerweile die 14er empfohlen! Zieh das vielleicht mal rauf :)

Java Script hab ich auf 5.2.19 aber das sollte nicht so viel ausmachen
ThoSt
Beiträge: 93
Registriert: Mo Nov 30, 2020 8:23 pm

Re: PV-Vorhersage mit dem Iobroker

Beitrag von ThoSt »

Danke, das scheints gewesen zu sein. Konnte nach dem Update von NodeJS die Blöcke importieren.
Werde mal weiterbasteln :)
Antworten