Hallo,
ich möchte meinen Rasen im Urlaub automatisch Bewässern. Leider ist die Gardena Smart App keine Wetterdaten auslesen/verwenden. Darum möchte ich dies über FHEM realisieren. Nun stoße ich gerade an ein Problem und komme nicht wirklich weiter. Ich möchte über meine Netatmo Regensensor den Niederschlag der letzten zwei Tagen auswerten. Folgende Abfrage habe ich hinbekommen:
define DOELSE ([Regensensor:rain_day] < 0.5 and [Windsensor:windstrength] < 2 and [06:00] and [Urlaub] eq "on") (set Irrigation_Control manualDurationValve2 20)
Damit kann ich leider nur den aktuellen Tag, von 0:00 bis 05:59, auswerten. So eine Abfrage habe ich noch nie gemacht und werde über Google/Forum nicht schlauer, oder ich verstehe den Ansatz nicht.
Gruß
MobiusOne
Geht das mit [Regensensor:rain_day:avg2] ?
https://fhem.de/commandref_DE.html#DOIF_Reading_Funktionen
Hallo amenomade,
nee, leider nicht. Außer 0.5 (23:58 Uhr) und 0 (0:10 Uhr) ergibt als Durchschnitt 0. Das Problem bei dieser Methode ist, dass das rain_day kein Absoluter statischer Wert ist. Wenn es nun für 15 Minuten regnen würde, in drei Stunden und dann nochmals in drei Stunden, würde rain_day drei mal, an einem Tag, aktualisiert werden.
Wie würdest Du dann anhand der existierenden Readings den Wert kalkulieren, der dich interessiert?
Mmmh, das ist eine gute Frage. Wenn ich mir das gerade nochmals deutsch den Kopf gehen lasse, würde mir nur folgendes einfallen:
- Der Wert von vorgestern wird um 23:59 Uhr, als Reading Vorgestern gespeichert
- Der Wert von gestern wird um 23:59 Uhr, als Reading Gestern gespeichert
- Der aktuelle Wert bis 06:00 Uhr ist kein Problem
- Die Vorhersage für den aktuellen Tag, ebenfalls kein Problem
Die vier Werte würde ich dann mit and verbinden. Das Problem wäre dann, wie ich eine rotierende Speicherung der Vorgestern und Gestern Readings hinbekomme. Diese müssten dann auch jeden Tag aktualisiert werden. Vorgestern wird durch Gestern überschrieben und Gestern vom heutigen Tag.
Hi,
eine Möglichkeit wäre mit einem DOIF um 23.59 die Werte zu "verschieben.
setreading wert_vorgestern [wert_gestern],
setreading wert_gestern [wert_heute],
setreading wert_heute [aktueller_wert]
Wichtig ist halt "hinten" zu beginnen da du ja sonst den nötigen Wert schon überschrieben hast.
Lässt sich sicher auch mit Userreading lösen.
Grüße
Achim
*facepalm* Na klar, wie logisch. So ne Art von DOIFs habe ich bereits in Verwendung. Danke für die Erinnerung! War dan gestern doch etwas zu spät. Habe es nun wie folgt realisiert:
define Regel_Rasenbewaesserung DOIF ([05:59])\
(setreading Regel_Rasenbewaesserung Regen_Vorgestern [Regel_Rasenbewaesserung:Regen_Gestern], setreading Regel_Rasenbewaesserung Regen_Gestern [Regensensor:rain_day], setreading Regel_Rasenbewaesserung Bewaesserung_Vorgestern [Regel_Rasenbewaesserung:Bewaesserung_Gestern], setreading Regel_Rasenbewaesserung Bewaesserung_Gestern [Regel_Rasenbewaesserung:Bewaesserung_Heute], IF ([Regensensor:rain_day] < 0.5 and [Regel_Rasenbewaesserung:Regen_Vorgestern] < 0.5 and [Regel_Rasenbewaesserung:Regen_Gestern] < 0.5) (setreading Regel_Rasenbewaesserung Regen_3Tage Nein), IF ([Regensensor:rain_day] > 0.5 or [Regel_Rasenbewaesserung:Regen_Vorgestern] > 0.5 or [Regel_Rasenbewaesserung:Regen_Gestern] > 0.5) (setreading Regel_Rasenbewaesserung Regen_3Tage Ja), IF ([Regel_Rasenbewaesserung:Bewaesserung_Heute] eq "Nein" and [Regel_Rasenbewaesserung:Bewaesserung_Vorgestern] eq "Nein" and [Regel_Rasenbewaesserung:Bewaesserung_Gestern] eq "Nein") (setreading Regel_Rasenbewaesserung Bewaesserung_3Tage Nein), IF ([Regel_Rasenbewaesserung:Bewaesserung_Heute] eq "Ja" or [Regel_Rasenbewaesserung:Bewaesserung_Vorgestern] eq "Ja" or [Regel_Rasenbewaesserung:Bewaesserung_Gestern] eq "Ja") (setreading Regel_Rasenbewaesserung Bewaesserung_3Tage Ja))\
DOELSEIF ([06:00] and [Regel_Rasenbewaesserung:Regen_3Tage] eq "Nein" and [Regel_Rasenbewaesserung:Bewaesserung_3Tage] eq "Nein" and [Wetter_Aussichten:fc0_rain] < 1.5 and [Wetter_Aussichten:fc0_temp_max] > 25 and [Windsensor:windstrength] < 3 and [Urlaub] eq "on")\
(set Irrigation_Control manualDurationValve2 8, set Irrigation_Control manualDurationValve3 8, setreading Regel_Rasenbewaesserung Bewaesserung_Heute Ja)\
DOELSEIF ([06:10] and [Regel_Rasenbewaesserung:Regen_3Tage] eq "Nein" and [Regel_Rasenbewaesserung:Bewaesserung_3Tage] eq "Nein" and [Wetter_Aussichten:fc0_rain] < 1.5 and [Wetter_Aussichten:fc0_temp_max] > 25 and [Windsensor:windstrength] < 3 and [Urlaub] eq "on")\
(set Irrigation_Control manualDurationValve4 20, setreading Regel_Rasenbewaesserung Bewaesserung_Heute Ja)
attr Regel_Rasenbewaesserung room Haussteuerung
Die Abfragen vom CMD1 laufen ohne Probleme durch. Ich bin mal auf Morgenfrüh gespannt.
Danke für eure Hilfe!