Wettersensor Pro: Niederschlagswerte über mehrere Tage

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Ruud2702
Beiträge: 76
Registriert: 18.06.2018, 12:47
Hat sich bedankt: 9 Mal
Danksagung erhalten: 1 Mal

Wettersensor Pro: Niederschlagswerte über mehrere Tage

Beitrag von Ruud2702 » 05.06.2020, 14:21

Hallo zusammen,

der Wettersensor Pro liefert ja bekanntlich den Niederschlagswert für heute und gestern und resetet diese jeweils um 07:00 Uhr morgens.

Gibt es eine Möglichkeit, die Rückstellzeit zu verändern?
Gibt es eine Möglichkeit, den Niederschlag auch z.B. über 2 oder 3 Tage in Summe zu erfassen?

Viele Grüße und ein schönes Wochenende!

dtp
Beiträge: 10685
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 330 Mal
Danksagung erhalten: 507 Mal

Re: Wettersensor Pro: Niederschlagswerte über mehrere Tage

Beitrag von dtp » 05.06.2020, 17:31

Blende unter "Programme und Zentralverknüpfungen" die "systeminternen Programme" ein und ändere dann das Programm "prgDailySunshineRainCounter_xxxx" nach deinen Wünschen. Ich hab das Zeitmodul z.B. auf 00:00 Uhr gesetzt.
2020-06-05_16h46_59.png
2020-06-05_16h46_59.png (20.8 KiB) 1858 mal betrachtet
Wenn du mehrere Tageswerte zusammenzählen möchtest, dann musst du dir ein kleines Skript schreiben, das du in das obige Programm einfügst und das dir die Werte der Systemvarialben "svHmIPRainCounterToday_xxxx" für drei Tage in einer neuen Systemvariablen "Summierte Regenmenge" aufaddiert.

Also z.B. in der Form

Code: Alles auswählen

integer countPeriod = 259200; ! Zeitperiode in Sekunden
integer resetDelay = 36000; ! Verzögerung zum Zurücksetzen der Systemvariablen svRainCounterCum

string svRainCounterDay = "svHmIPRainCounterToday_xxxx";
string svRainCounterCum = "Summierte Regenmenge";
integer timeDiff; integer rainCounterCum = 0; integer rainCounterDay = 0;

timeDiff = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svRainCounterDay)).Timestamp().ToInteger() - (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svRainCounterCum)).Timestamp().ToInteger();
rainCounterDay = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svRainCounterDay)).Value();

if(timeDiff < countPeriod){(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svRainCounterCum)).State(rainCounterCum + rainCounterDay);}
else{(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svRainCounterCum)).State(0, resetDelay);}
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Ruud2702
Beiträge: 76
Registriert: 18.06.2018, 12:47
Hat sich bedankt: 9 Mal
Danksagung erhalten: 1 Mal

Re: Wettersensor Pro: Niederschlagswerte über mehrere Tage

Beitrag von Ruud2702 » 06.06.2020, 15:43

Hallo dtp,

vielen lieben Dank! Die Zeit habe ich nun ebenfalls auf 00:00 Uhr zurückgesetzt.

Das Script kopiere ich unter den bereits vorhandenen Script-Abschnitt in dem internen Programm und muss dort lediglich "countPeriod" entsprechend des gewünschten Zeitfensters bis zum nächsten Reset anpassen? Muss an "resetDelay" irgendwas verändert werden?

Viele Grüße und vielen Dank!

Benutzeravatar
Baxxy
Beiträge: 11084
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 638 Mal
Danksagung erhalten: 2301 Mal

Re: Wettersensor Pro: Niederschlagswerte über mehrere Tage

Beitrag von Baxxy » 06.06.2020, 15:59

Ruud2702 hat geschrieben:
06.06.2020, 15:43
lediglich "countPeriod" entsprechend des gewünschten Zeitfensters bis zum nächsten Reset anpassen?
Du musst natürlich noch eine
dtp hat geschrieben:
05.06.2020, 17:31
neuen Systemvariablen "Summierte Regenmenge"
Typ Zahl anlegen und in dtp's Script die Zeile...

Code: Alles auswählen

string svRainCounterDay = "svHmIPRainCounterToday_xxxx";
an deine versteckte Systemvariable anpassen.

Da mir auf die Schnelle nicht einfällt wie man die versteckten SysVars angezeigt bekommt würde ich vorschlagen du suchst die korrekte Bezeichnung im original Script vom HmIP-SWO-PR - pro.

Grüße
Baxxy

Ruud2702
Beiträge: 76
Registriert: 18.06.2018, 12:47
Hat sich bedankt: 9 Mal
Danksagung erhalten: 1 Mal

Re: Wettersensor Pro: Niederschlagswerte über mehrere Tage

Beitrag von Ruud2702 » 06.06.2020, 16:07

@Baxxy, auch dir vielen Dank!

Ich habe die Variable "NiederschlagSumme" wie beschrieben angelegt.
Die versteckte Systemvariable ist die 4-stellige Zahlenfolge oder? Die wird mir im vorhandenen Script schon angezeigt, daher habe ich diese einfach übernommen.

Dummerweise habe ich das Script grade getestet und die Werte wurden alle genullt. Daher sehe ich nicht pb es geklappt hat :-)

Code: Alles auswählen

object chn = dom.GetObject('4410');
object oSysVarSunshineCounterToday = dom.GetObject('svHmIPSunshineCounterToday_4410');
object oSysVarSunshineCounterYesterday = dom.GetObject('svHmIPSunshineCounterYesterday_4410');
object oSysVarRainCounterToday = dom.GetObject('svHmIPRainCounterToday_4410');
object oSysVarRainCounterYesterday = dom.GetObject('svHmIPRainCounterYesterday_4410');
if (oSysVarSunshineCounterYesterday && oSysVarSunshineCounterToday) {oSysVarSunshineCounterYesterday.State(oSysVarSunshineCounterToday.Value());}if (oSysVarSunshineCounterToday) {oSysVarSunshineCounterToday.State(0);}if (oSysVarRainCounterYesterday && oSysVarRainCounterToday) {oSysVarRainCounterYesterday.State(oSysVarRainCounterToday.Value());}if (oSysVarRainCounterToday) {oSysVarRainCounterToday.State(0);}

integer countPeriod = 172800; ! Zeitperiode in Sekunden
integer resetDelay = 36000; ! Verzögerung zum Zurücksetzen der Systemvariablen svRainCounterCum

string svRainCounterDay = "svHmIPRainCounterToday_4410";
string svRainCounterCum = "NiederschlagSumme";
integer timeDiff; integer rainCounterCum = 0; integer rainCounterDay = 0;

timeDiff = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svRainCounterDay)).Timestamp().ToInteger() - (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svRainCounterCum)).Timestamp().ToInteger();
rainCounterDay = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svRainCounterDay)).Value();

if(timeDiff < countPeriod){(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svRainCounterCum)).State(rainCounterCum + rainCounterDay);}
else{(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svRainCounterCum)).State(0, resetDelay);}

dtp
Beiträge: 10685
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 330 Mal
Danksagung erhalten: 507 Mal

Re: Wettersensor Pro: Niederschlagswerte über mehrere Tage

Beitrag von dtp » 06.06.2020, 16:29

4410 ist die ID, die dein Wettersensor angelegt hat. Die einfach statt der vier Xe einfügen. Korrekt.

Erstelle aber bitte ein neues Skript und füge es nicht in das Original ein.

Hast du eine neue Systemvariable "NiederschlagSumme" vom Typ Zahl erstellt?
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Benutzeravatar
Baxxy
Beiträge: 11084
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 638 Mal
Danksagung erhalten: 2301 Mal

Re: Wettersensor Pro: Niederschlagswerte über mehrere Tage

Beitrag von Baxxy » 06.06.2020, 16:31

Ruud2702 hat geschrieben:
06.06.2020, 16:07
Dummerweise habe ich das Script grade getestet und die Werte wurden alle genullt. Daher sehe ich nicht pb es geklappt hat
Tja, als wäre es 00:00 Uhr. Kann passieren. :wink:
Aber dtp ist sehr gut im scripten daher sollte das auch funktionieren.
Ich würde aber dtp's Script nicht in das original Script einfügen sondern als separates Script im DANN anlegen.
Im Scriptkopf lege ich auch immer ein paar Info's ab, z.B. so...

Code: Alles auswählen

!- Regenmenge letzte 3 Tage Script für HmIP-SWO-PR - pro (Author dtp)
!- https://homematic-forum.de/forum/viewtopic.php?f=26&t=59194#p586259

integer countPeriod = 172800; ! Zeitperiode in Sekunden
integer resetDelay = 36000; ! Verzögerung zum Zurücksetzen der Systemvariablen svRainCounterCum
...
... 
Einfach nur der Übersichtlichkeit halber. Und weil man ja vergesslich wird. :roll:

Grüße
Baxxy

Ruud2702
Beiträge: 76
Registriert: 18.06.2018, 12:47
Hat sich bedankt: 9 Mal
Danksagung erhalten: 1 Mal

Re: Wettersensor Pro: Niederschlagswerte über mehrere Tage

Beitrag von Ruud2702 » 06.06.2020, 16:38

Danke euch beiden. Den Tipp mit dem Scriptkopf habe ich direkt umgesetzt ;-)

Müsste das Script nicht aber in das interne Programm "prgRainCounter_4410" rein, welches scheinbar bei Erkennen von Niederschlag auslöst und somit einen stets aktuellen Wert ausgibt? Ansonsten würden die neue Variable ja immer nur nachts um 00:00 Uhr aktualisiert oder?

Edit:
Jetzt habe ich glaube ich grade einen Knoten im Kopf, entschuldigt. Ich erkläre kurz mein Vorhaben...
Nachts um 1 Uhr fragt ein Programm ab, ob es a) regnet und b) der Niederschlag der letzten 48h > X mm war. Trifft nichts von all dem zu, startet die Bewässerung.

Vielleicht sehe ich ja grade den Wald vor lauter Bäumen nicht, aber müsste das schöne Script von dtp nicht vor dem internen Script abgearbeitet werden? Ansonsten hätte das interne Script ja den tagesaktuellen Wert bereits auf den Vortag geschoben und den tagesaktuellen Zähler wiederum resetet bevor dtp's Script rechnen darf?

Benutzeravatar
Baxxy
Beiträge: 11084
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 638 Mal
Danksagung erhalten: 2301 Mal

Re: Wettersensor Pro: Niederschlagswerte über mehrere Tage

Beitrag von Baxxy » 07.06.2020, 13:10

Ruud2702 hat geschrieben:
06.06.2020, 16:38
Nachts um 1 Uhr fragt ein Programm ab, ob es a) regnet und b) der Niederschlag der letzten 48h > X mm war. Trifft nichts von all dem zu, startet die Bewässerung.
Da du nur 48h die Regenmenge erfassen willst würde ich anders an die Sache herangehen.
Die Werte für 0h bis -24h (SysVar: "svHmIPRainCounterToday_4410") und für -24h bis -48h (SysVar: "svHmIPRainCounterYesterday_4410") stehen dir ja zur Verfügung und brauchen nur kurz bevor dein Bewässerungsprogramm startet zusammengerechnet werden.
Du willst um 01:00 bewässern somit würde ich das Programm "prgDailySunshineRainCounter_xxxx" erst um 01:01 Uhr ausführen lassen damit die Tagesdaten noch zur Verfügung stehen.
Um 00:59 Uhr würde ich täglich ein Programm mit einem simplen Script starten was die beiden Regenmengen zusammenrechnet und in eine SysVar Typ Zahl mit Beispielnamen "Regenmenge_letzte_48h" schreibt.

Code: Alles auswählen

!- Werte zweier SysVars addieren und in eine 3. SysVar schreiben
real rain24 = dom.GetObject (ID_SYSTEM_VARIABLES).Get ("svHmIPRainCounterToday_4410").Value();
real rain48 = dom.GetObject (ID_SYSTEM_VARIABLES).Get ("svHmIPRainCounterYesterday_4410").Value();

dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Regenmenge_letzte_48h").State(rain24 + rain48);
Diese SysVar fragst du dann in deinem 01:00 Uhr Bewässerungsprogramm auf Regenmenge > x ab.

Das ganze ist recht simpel und relativ unflexibel, sollte aber ermöglichen was gefordert war.

Grüße
Baxxy

dtp
Beiträge: 10685
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 330 Mal
Danksagung erhalten: 507 Mal

Re: Wettersensor Pro: Niederschlagswerte über mehrere Tage

Beitrag von dtp » 07.06.2020, 15:54

Ruud2702 hat geschrieben:
06.06.2020, 16:38
Müsste das Script nicht aber in das interne Programm "prgRainCounter_4410" rein, welches scheinbar bei Erkennen von Niederschlag auslöst und somit einen stets aktuellen Wert ausgibt? Ansonsten würden die neue Variable ja immer nur nachts um 00:00 Uhr aktualisiert oder?

Nee, das muss es nicht, weil nur der Tageswert unmittelbar vor dem Zurücksetzen interessant ist.
Ruud2702 hat geschrieben:
06.06.2020, 16:38
...aber müsste das schöne Script von dtp nicht vor dem internen Script abgearbeitet werden? Ansonsten hätte das interne Script ja den tagesaktuellen Wert bereits auf den Vortag geschoben und den tagesaktuellen Zähler wiederum resetet bevor dtp's Script rechnen darf?
Da widerum hast du allerdings Recht. Nimm mein Skript und führe es um 00:00 Uhr aus und führe dann das original Skript mit einer Sekunde Verzögerung aus. Dann bist du auf der sicheren Seite.

Wenn dich nur die letzten 48 Stunden interessieren, dann kannst du es auch so machen, wie von @Baxxy vorgeschlagen. Mein Skript hätte halt den Vorteil, dass du den Erfassungszeitraum frei wählen kannst.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“