HMIP Wetterstation – Regenmenge Gestern ermitteln

Wer eine Homatic IP Wetterstation besitzt erhält eine Vielzahl von Wetterdaten. Diese lassen sich hervorragend mit einem Datenbanktool als Zeitreihen erfassen und visualisieren. Da ich Openhab benutze, ist bei mir aktuell RRD4J für die Persistence die erste Wahl. Um diese Daten nutzen und speichern zu können muss man allerdings die Eigenschäften dieser Kanäle ansprechen Wenn man in der CCU den Status der Wetterstation anzeigen lässt, werden einige dieser verfügbaren Daten ausgegeben.
Interssant sind die Daten zur Sonnenscheindauer von Gestern und zur Regenmenge Gestern. Wer diese Wert nämlich in den Eigenschaften des Wetterstation Objektes sucht (z.B. in Openhab), wird diese nicht finden.
Versteckte Prozeduren
Bei diesen Werten handelt es sich um versteckte Systemvariablen, die nicht so einfach aufgerufen werden können. Diese versteckten Systemvariablen werden allerdings durch systeminterne Programme erzeugt, die auf der CCU3 unter „Programme und Verknüpfung“ aufgerufen werden können. Dazu klickt man nach dem Öffnen des Menüpunktes unten auf den Button „Systeminterne Programme einblenden“ und schon werden diese in der Liste der Programme angezeigt. Diese besitzen i.d.R .kryptische Namen, so dass es Sinn macht, in diese hereinzuschauen, um das richtige Programm zu finden. Für die beiden oben genannten Werte ist das das folgenden Programme das richtige (wird mit einer Wetterstation automatisch installiert):
In diesem werden die internen Systemvariablen für die Sonnescheindauer und den Regen Gestern gesetzt. Es fällt hier bereits auf, dass dieses Programm immer nur morgens um 7:00 Uhr ausgelöst wird. Es ist nicht klar, warum diese Zeit vorgegeben wurde, da doch der Vortag i.d.R. um 0:00 Uhr aufhört und der neue Tag beginnt.
Ich werde daher im nächsten Schritt diese Uhrzeit auf 0:05 Uhr ändern und gleichzeitig das Programm so erweitern, dass die Regenmenge des Vortages in eine sichtbare Systemvariable geschrieben wird, die auch von anderen Programmen aufgerufen werden kann.
Systemvariable erzeugen
Dazu erzeug ich als erstes eine neue (sichtbare) Systemvariable, in der die Regenmenge des Vortages abgespeichert werden soll.
Über Einstellungen / Systemvariable kann durch Drücken auf den Button „Neu“ eine neue Systemvariable wie folgt angelegt werden:
Programm modifzieren
Nun kann wieder das interne Programm „prgDailySunshineRainCounter_6513“ aufgerufen und durch einen Klick auf der Scriptzeile der Editor mit dem Programmscript aufgerufen werden. Dieses ergänze ich insgesamt um zwei Zeilen. In der ersten Zeile wird ein Objekt für die neue Systemvariable erzeugt, in der zweiten Zeile wird diesem Objekt der Wert der internen Systemvariablen mit der Regenmenge von gestern als Status zugewiesen.
Hallo und vielen Dank für die Mühe und die Lust für derartige Hilfestellungen! Ich habe noch eine Bitte für einen weiteren Tipp. Die Systemvariablen „Regen heute“ und „Regen gestern“ existieren nach dem Einbinden der Wetterstation ( Homematic IP-Pro ), werden aber nicht mit Daten gefüttert. Im Status der Geräte werden die Werte angezeigt nur nicht bei den benannten Variablen. Regen gestern habe ich mit dem Skript hier hinbekommen. Den aktuellen Regenwert von heute würde ich auch gerne noch zuweisen. Kann mir dafür auch jemand einen Tipp geben an welcher Stelle in welchem Skript eine Wertezuweisung erfolgen muß? Vielen Dank und Gruß, Toralf
Hallo,
Die heutige Regenmenge wird in dem von der Wetterstation automatisch angelegtem systeminternen Programm „prgRainCounter_6513_<< Seriennummer Wetterstation >>:1“ in die Systemvariable „svHmIPRainCounterToday_6513“ geschrieben. Die systeminternen Programme kannst Du über den Button ganz unten bei den Programmen „Systeminterne Programme einblenden“ sichtbar machen.
Du kannst also nun in diesem systeminternen Programm einfach Zeilen einfügen, um das Update der systeminternen Variablen in eine eigenen Systemvariable zu speichern. Der Vorteil der Speicherung in einer eigenen Variable ist, dass diese anschließend in der WebUI sichtbar ist.
Alternativ schreibst Du ein kleines Programm, welches immer dann ausgelöst wird, wenn die „Regenmenge“ der Wetterstation (Kanal 1) eine Aktualisierung erfährt. Dann rufts Du in dem Programm ein Script auf, in dem Du die oben genannte Systemvariable ausliest und in eine eigene Variable schreibst.
Beste Grüße
Dieter
Hallo und vielen für die tolle Anleitung. Ich hätte aber noch einen kleinen Hinweis der Licht ins Dunkle bringt, warum das Programm jeden Tag um 7:00 Uhr gestartet wird und nicht wie erwartet um 0:01 Uhr. Das ist einfach historisch bedingt. Früher wurden die Regenmengen manuell mittels entsprechender Messbehälter abgelesen und Protokolliert. Da diese Institute nicht rund um die Uhr besetzt waren, wurden diese Werte mit Beginn der Arbeitszeit also gegen 7:00 Uhr abgelesen. Soweit ich das weiß, wird das teilweise heute auch noch so gemacht, um die Ergebnisse, welche die Automatikmessungen liefern zu überprüfen. Hierdurch hat sich wohl 7:00 Uhr als Standartzeit für die Messung entwickelt und es kann sein, dass man mit einem anderen Zeitpunkt als Grundlage doch erheblich von den Regenmengenangaben der verschiedenen Wetterinstitute abweicht, wenn man einen anderen Zeitpunkt wählt. (Bitte berichtigt mich, falls ich da falsch liege)
Viele Grüße
Karsten
Hallo Karsten,
Vielen Dank für die Information, die das Rätsel auflöst.
Ich empfehle mittlerweile, die Niederschlagsmengen kontinuierlich in Influxdb zu protokollieren, so dass man beliebige Vergleichszeiträume selber erstellen kann.
Viele Grüße
Dieter