Ertragsprognosedaten in Solaranzeige einbinden

PDF Dokumente für Informationen im Detail, sowie Bauanleitungen.

Moderator: Schattenschimmer

Bogeyof
Beiträge: 126
Registriert: Mi 13. Mai 2020, 10:04

Ertragsprognosedaten in Solaranzeige einbinden

Beitrag von Bogeyof »

Hallo zusammen,
ich habe die Tage eine Ertragsprognose vom DWD (MOSMIX-Daten) in die Solaranzeige eingebunden und inzwischen so aufbereitet, dass sie sich einfach in die Software integrieren lassen sollte.
Die Daten werden wie gesagt vom DWD geliefert (für bis zu 10 Tage) und das Ganze ist kostenlos. Der erste Schritt ist seinen Standort in der Liste unter folgendem Link herauszusuchen und die Standort-ID zu notieren:
https://www.dwd.de/DE/leistungen/met_ve ... &nn=495490
Solltet Ihr Euren Standort nicht finden, dann halt einen möglichst in der Nähe aussuchen.

Im Anhang findet Ihr 2 Skripte (prognose.php und prognose.py.txt, weil Python-Dateien nicht angehängt werden können).
Zuerst müsst Ihr die "prognose.py.txt" in "prognose.py" umbenennen, anschließend müssen die beiden Skripte auf Euren RaspBerry Pi in das Verzeichnis "/var/www/html" kopiert werden (z.B. mit WinSCP oder welches Tool Ihr sonst benutzt).
Anschließend müsst Ihr diesen Skripten Berechtigung zum Ausführen erteilen, dies erfolgt am besten mit der Kommandozeile an der Konsole des Raspi oder mit putty:

Code: Alles auswählen

cd /var/www/html
sudo chmod +x prognose.*
Als nächstes brauchen wir noch einen Eintrag in die Crontab, um das Skript prognose.php automatisch alle 30 Minuten ausführen zu lassen. Aufruf erfolgt wieder in der Kommandozeile an der Konsole (oder auch mit putty)

Code: Alles auswählen

crontab -e
Dort tragen wir eine Zeile z.B. unter der vorhandenen Zeile mit .../var/www/html/wetterdaten.php... ein:

Code: Alles auswählen

*/30  *  *  *  *    /var/www/html/prognose.php                 >/dev/null
Crontab speichern mit Funktionstaste F10 und noch den Button "Ja" auswählen zum Bestätigen.

Der letzte Schritt ist das Konfigurieren des Skripts auf Eure Anlage. Wir brauchen dazu folgende Informationen:
  • Die Standort-ID haben wir vorher schon ermittelt, diese müssen wir gleich in das Skript eintragen.
    Die Modulfläche, hier nehmen wir näherungsweise die (Anzahl Module * Länge * Breite) * 0.95 (pauschaler Abzug für 5% Ränder). Ergebnis sollten die qm Eurer Modulfläche sein (Beispiel 42).
    Den Wirkungsgrad der Module aus dem Datenblatt. Beispiel: Für 19,6% Wirkungsgrad schreiben wir 0.196 (immer Punkt als Dezimalstelle verwenden!).
    Einen pauschalen Reduzierungsfaktor für Ausrichtung, Dachneigung, Wirkungsverluste (liegt zwischen 0.8 und 0.95), Beispiele:
    - bei Sued-Ausrichtung und optimaler Dachneigung ca. 0.95
    - bei Sued-Ausrichtung und nicht alles optimal ca. 0.90
    - bei Ost-West und sonst guten Werten ca. 0.85
    - bei Ost-West und z.B. Verschattung usw. ca. 0.80
Jetzt tragen wir die Daten in das Skript prognose.php ein und sind fertig:

Code: Alles auswählen

mcedit /var/www/html/prognose.php
Ab ca. Zeile 73 findet ihr die Variablen, die Ihr mit Euren Werten anpassen müsst (Achtung immer Dezimalpunkt statt Komma verwenden):

Code: Alles auswählen

  $Standort = 10852;
  $Wirkungsgrad = 0.197;
  $Modulflaeche = 42;
  $Wirkungsverluste = 0.82;  
Gespeichert wird wieder mit Funktionstaste F10 und anschließender Bestätigung durch den Button "Ja".

Jetzt sollte die Prognose alle 30 Minuten im Hintergrund erstellt werden. Die Daten werden in der Datenbank "solaranzeige" oder was auch immer Ihr in der user.config.php (bzw. 1.user.config.php bei der Multi-Regler-Version) hinterlegt habt, abgelegt. Auch in die evtl. konfigurierte Remote-Datenbank sollte geschrieben werden.
Ihr findet den Wert im Measurement (in der Serie) "Wetterprognose" im Feld "eigenePrognose". Es ist ein stündlicher Wert, dieser soll den prognostizierten Ertrag für die kommende Stunde in Wh angeben. D.h. der Wert um 10:00 Uhr zeigt die Ertragsprognose für den Zeitraum 10:00 Uhr bis 10:59 Uhr.

Wenn Ihr nicht warten wollt (max. 30 Minuten) und die Prognose selbst direkt ausführen wollt, dann bitte in der Kommandozeile (Konsole oder putty) folgendes eingeben:

Code: Alles auswählen

cd /var/www/html
sudo ./prognose.php
Jetzt bin ich gespannt auf Eure Erfahrungen und natürlich auch, was an Skript, Installationsbeschreibung und Daten verbessert werden könnte. Viel Spaß damit!
Dateianhänge
prognose.php
(10.85 KiB) 71-mal heruntergeladen
prognose.py.txt
(19.96 KiB) 73-mal heruntergeladen

Bogeyof
Beiträge: 126
Registriert: Mi 13. Mai 2020, 10:04

Re: Ertragsprognosedaten in Solaranzeige einbinden

Beitrag von Bogeyof »

Ein paar Bilder zur Illustration, was damit gemacht werden könnte:
Pronose1.png
Hier werden die realen Erträge den Prognosewerten gegenübergestellt. An einem Tag mit vielen Wolken kann die Prognose nicht wirklich stundengenau sein, aber der Gesamtertrag und die Gesamtprognose sollten schon besser passen. Wenn einmal ein reiner Sonnentag ist, sollte es ziemlich gut passen (hoffe ich, wenn nicht, dann an den Parametern nachsteuern in der prognose.php)
Pronose2.png
Hier z.B. Verlaufskurven für heute und die nächsten 2 Tage (bis 10 Tage werden Daten geliefert).

Oder mein gesamtes Dashboard, rechts unten z.B. für 10 Tage die Tagesprognose
Pronose3.png
Und bitte nicht wundern, ich verwende 2 Prognosen, die 2. wird Ulrich in Kürze noch als Option innerhalb Solaranzeige anbieten.
(Siehe auch viewtopic.php?f=29&t=795).

Bogeyof
Beiträge: 126
Registriert: Mi 13. Mai 2020, 10:04

Re: Ertragsprognosedaten in Solaranzeige einbinden

Beitrag von Bogeyof »

Heute noch einmal eine verbesserte Version, hier werden deutlich mehr Prognosewerte aus den Wetterdaten übernommen, z.B. Windstärke und Richtung, Regenmenge, Sonnenscheindauer pro Stunde, Bewölkungsgrad, Luftdruck usw.
Alles wird unter der Serie (Measurement) Wetterprognose abgelegt.

In der prognose.php gibt es nun auch eine Möglichkeit, die Prognose besser auf die eigene Anlage zu tunen. Dabei kann ab Zeile 227 für jede Stunde ein Korrekturfaktor eingetragen werden. Dazu geht Ihr am besten so vor:
- man wartet einen möglichst sonnigen Tag ab, vergleicht dann die Stundenwerte der Prognose mit den tatsächlichen Produktionswerten (pro Stunde) und korrigiert in der prognose.php dann mit einem Faktor für die jeweilige Stunden. Diese korrigierten Werte sind unter eigenePrognoseL abgelegt (eigenePrognose wird nicht verändert).
- In der Praxis hat es sich bei mir bewährt, einen Durchschnitt aus (eigenePrognose + eigenePrognoseL) / 2 zu bilden, mit passendem Korrekturfaktor habe ich an sonnigen Tagen kaum noch eine Abweichung.
Nach dem Download wieder die prognose.py.txt in prognose.py umbenennen! Viel Erfolg!

Prognose.png
Wie man in der folgenden Grafik vom 24.06.20 erkennen kann, war zwischen 14:00 und 16:30 die Sonneneinstrahlung öfter vermindert, aber in allen anderen Stunden passten Prognose und tatsächliche Produktion fast perfekt:

Prognose2.png
Dateianhänge
Prognose.py.txt
(22.5 KiB) 67-mal heruntergeladen
prognose.php
(13.65 KiB) 59-mal heruntergeladen

jupiter4h
Beiträge: 19
Registriert: So 9. Aug 2020, 15:46

Re: Ertragsprognosedaten in Solaranzeige einbinden

Beitrag von jupiter4h »

Hallo Bogeyof,

danke für deine Entwicklung. Das hat mich so interessiert, dass ich solaranzeige installiert und dann deine Ergänzung eingebunden habe. Aber…
Bei den meisten Stationen, die ich bisher ausprobiert habe, bekomme ich vom Script folgende Fehlermeldungen:

Code: Alles auswählen

Unhandled exception in thread started by <bound method Thread._bootstrap of <dwdforecast(Thread-1, started 3007132768)>>
Traceback (most recent call last):
  File "/usr/lib/python3.7/threading.py", line 917, in _bootstrap_inner
    self.run()
  File "/var/www/html/prognose.py", line 296, in run
AttributeError: 'dwdforecast' object has no attribute 'Rad1h'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.7/threading.py", line 885, in _bootstrap
    self._bootstrap_inner()
  File "/usr/lib/python3.7/threading.py", line 927, in _bootstrap_inner
    (self.name, _format_exc()), file=_sys.stderr)
  File "/usr/lib/python3.7/traceback.py", line 167, in format_exc
    return "".join(format_exception(*sys.exc_info(), limit=limit, chain=chain))
  File "/usr/lib/python3.7/traceback.py", line 121, in format_exception
    type(value), value, tb, limit=limit).format(chain=chain))
  File "/usr/lib/python3.7/traceback.py", line 508, in __init__
    capture_locals=capture_locals)
  File "/usr/lib/python3.7/traceback.py", line 363, in extract
    f.line
  File "/usr/lib/python3.7/traceback.py", line 285, in line
    self._line = linecache.getline(self.filename, self.lineno).strip()
  File "/usr/lib/python3.7/linecache.py", line 16, in getline
    lines = getlines(filename, module_globals)
  File "/usr/lib/python3.7/linecache.py", line 47, in getlines
    return updatecache(filename, module_globals)
  File "/usr/lib/python3.7/linecache.py", line 137, in updatecache
    lines = fp.readlines()
  File "/usr/lib/python3.7/codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 2193: invalid start byte
Getestet habe ich hier zuletzt mit der Station E667. Über den Link http://opendata.dwd.de/weather/local_fo ... /E667/kml/
habe ich gesehen, das Rad1h-Daten vorhanden sind. Trotzdem die Fehlermeldungen.

Teste ich die Station 10852 läuft das Script fehlerfrei durch. Hast du eine Idee, woran das liegen könnte?

LG
Holger

Bogeyof
Beiträge: 126
Registriert: Mi 13. Mai 2020, 10:04

Re: Ertragsprognosedaten in Solaranzeige einbinden

Beitrag von Bogeyof »

Das ist nicht die Stationsnummer, für E667 wäre es 99808...

jupiter4h
Beiträge: 19
Registriert: So 9. Aug 2020, 15:46

Re: Ertragsprognosedaten in Solaranzeige einbinden

Beitrag von jupiter4h »

Also das glaube ich jetzt doch nicht.
Schaue ich in den Stationskatalog (https://www.dwd.de/DE/leistungen/met_ve ... &nn=495490), finde ich die 99808 ganze 367 mal (bei den unterschiedlichsten Orten).

Auch wenn ich auf https://wettwarn.de/mosmix/mosmix.html nachschaue, bekomme ich für Neustadt am Rübenberge die Stations-ID E667.

DIe gleiche Fehlermeldung bekomme ich auch bei Station E756 (Hannover-Kirchrode).

Zwei Punkte fallen mir bei den Fehlermeldungen in's Auge:
1. "AttributeError: 'dwdforecast' object has no attribute 'Rad1h'".
Da die Datei MOSMIX_L_2020081209_E756.kml heruntergeladen wird, kann ich sehen, dass Rad1h-Daten vorhanden sind.
2. "UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 2193: invalid start byte"
Damit kann ich leider nichts mit anfangen. Die Datei habe ich mal angehängt. Vielleicht hast du ja eine Idee dazu.
Dateianhänge
MOSMIX_L_2020081209_E756.kml.txt
(336.37 KiB) 19-mal heruntergeladen

Bogeyof
Beiträge: 126
Registriert: Mi 13. Mai 2020, 10:04

Re: Ertragsprognosedaten in Solaranzeige einbinden

Beitrag von Bogeyof »

OK, Asche auf mein Haupt. Ich habe die prognose.py ursprünglich mit den Standortdaten fest verdrahtet, später den Aufruf mit Übergabeparameter eingebaut. Allerdings war immer noch eine Variable fest eingestellt mit 10852 und damit schlägt ein Vergleich auf den Standort fehl. Sollte jetzt behoben sein und funktionieren...
Dateianhänge
prognose.py.txt
(22.51 KiB) 23-mal heruntergeladen

jupiter4h
Beiträge: 19
Registriert: So 9. Aug 2020, 15:46

Re: Ertragsprognosedaten in Solaranzeige einbinden

Beitrag von jupiter4h »

Alles gut - danke.
Und funktioniert jetzt auch fehlerfrei :D .

Jetzt muss ich nur schauen, wie ich mir in Grafana die Daten zur Anzeige bringen kann. Würde mir sehr helfen, wenn du mir den "select" für die "Stündlichen Prognosen 10 Tage" zeigst. Dadrauf könnte ich dann aufsetzen.

LG
Holger

Bogeyof
Beiträge: 126
Registriert: Mi 13. Mai 2020, 10:04

Re: Ertragsprognosedaten in Solaranzeige einbinden

Beitrag von Bogeyof »

Prognose.png
Ich nutze den Durchschnitt aus Prognose und PrognoseL (um eine Stunde versetzt und um die stündlichen Faktoren korrigiert in der prognose.php), dieser wird noch einmal mit einem Faktor im Dashboard (als Dashboard-Variable definiert) korrigiert, dieser ist aktuell bei mir 0.97.

jupiter4h
Beiträge: 19
Registriert: So 9. Aug 2020, 15:46

Re: Ertragsprognosedaten in Solaranzeige einbinden

Beitrag von jupiter4h »

Danke.
Jetzt habe ich nur das Problem, dass du ja 2 Prognosen auswertest. Damit muss ich mich erst einmal auseinandersetzen.
Aber nicht mehr heute.
Habe mir das einfacher vorgestellt. Gut Ding will Weile haben.

Antworten