FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: der_da am 30 Mai 2016, 14:04:38

Titel: DOIF Vergleich Reading mit festem Wert funktioniert nicht (gelöst)
Beitrag von: der_da am 30 Mai 2016, 14:04:38
Hallo!

Bisher hat meine Bewässerungsautomatik nur überprüft, ob eine bestimmte Tagesdurchschnittstemperatur überschritten wurde oder nicht und dann die Bewässerungsart auf "Normal" oder "Hitze" gesetzt. Das funktioniert schon länger.
Nun möchte ich noch die vorhergesagte Regenmenge über das Modul PROPLANTA (in Ermangelung eines eigenen Regenmengensensors) mit einbeziehen um gegebenenfalls die Bewässerung auszusetzen.
Ich habe ein Reading fc0_rain mit dem aktuellen Wert 12.1 .
Um zu entscheiden, ob eine Bewässerung nötig ist oder nicht, möchte ich in meinem DOIF nun vergleichen, ob der Wert dieses Readings einen fest definierten Wert (z.B. 2) überschreitet oder nicht. Dazu habe ich meinem bereits existierenden DOIF in den ersten beiden Bedingungen noch den Vergleich mit dem Reading fc0_rain und eine dritte Bedingung für den Fall, dass das Reading größer als 2 ist, eingefügt.

([du_FlagTDT_Exist] eq "on" and [du_TagesdurchschnittstemperaturTerrasse] > 20 and [Wetter:fc0_rain:d] < 2) (set du_Bewaesserung_Art Hitze)
DOELSEIF
([du_FlagTDT_Exist] eq "on" and [du_TagesdurchschnittstemperaturTerrasse] <= 20 and [Wetter:fc0_rain:d] < 2) (set du_Bewaesserung_Art Normal)
DOELSEIF
([Wetter:fc0_rain:d] >= 2) (set du_Bewaesserung_Art Feucht)
DOELSE
(set du_Bewaesserung_Art Normal)


Leider schlägt jetzt immer Bedingung 4 zu. Der Vergleich scheint also nicht zu klappen. Warum? Liegt es am Punkt statt einem Komma im Wert des Readings?
Titel: Antw:DOIF Vergleich Reading mit festem Wert funktioniert nicht
Beitrag von: l2r am 30 Mai 2016, 14:36:37
wieso :d  bei der Abfrage von dem Reading?

müsste es nicht eigentlich [Wetter:fc0_rain] < 2 heißen? Oder hab ich bei der rasanten Entwicklung von DOIF etwas nicht mitbekommen?

Gruß Michael
Titel: Antw:DOIF Vergleich Reading mit festem Wert funktioniert nicht
Beitrag von: kumue am 30 Mai 2016, 14:40:06
wollte auch gerade nach dem Reading
[Wetter:fc0_rain:d]
fragen...

Kann selbst nicht schauen ob es dieses gibt, da ich Proplanta nicht verwende..
Titel: Antw:DOIF Vergleich Reading mit festem Wert funktioniert nicht
Beitrag von: l2r am 30 Mai 2016, 14:43:15
bei meinem Proplanta kann ich nur nach [Wetter:fc0_rain] fragen
Titel: Antw:DOIF Vergleich Reading mit festem Wert funktioniert nicht
Beitrag von: der_da am 30 Mai 2016, 14:44:11
das :d habe ich nur noch nachträglich eingefügt, da es ohne auch nicht funktionierte.
Hier ist beschrieben, dass man damit den Wert auf einen Dezimalwert eingrenzt:
https://forum.fhem.de/index.php/topic,49329.msg412779.html#msg412779

Aber wie gesagt, auch ohne :d kommt es zum selben Ergebnis - Bedingung 4 wird ausgelöst.
Titel: Antw:DOIF Vergleich Reading mit festem Wert funktioniert nicht
Beitrag von: l2r am 30 Mai 2016, 14:52:16
([du_FlagTDT_Exist] eq "on" and [du_TagesdurchschnittstemperaturTerrasse] > 20 and [Wetter:fc0_rain:d] < 2) (set du_Bewaesserung_Art Hitze)
DOELSEIF
([du_FlagTDT_Exist] eq "on" and [du_TagesdurchschnittstemperaturTerrasse] <= 20 and [Wetter:fc0_rain:d] < 2) (set du_Bewaesserung_Art Normal)
DOELSEIF
([du_FlagTDT_Exist] eq "on" and [du_TagesdurchschnittstemperaturTerrasse] > 0 and [Wetter:fc0_rain:d] >= 2) (set du_Bewaesserung_Art Feucht)
DOELSE
(set du_Bewaesserung_Art Normal)


probier das mal so. Dann sollte das eig laufen.

bei der Erklärung bin ich mir nicht ganz sicher, aber ich glaube, wenn du DOELSE verwendest musst du in den DOELSEIF-Bedingungen immer alle Abfragen drin haben, sonst könnte es passieren, dass ein anderes Reading triggert, was in Bedingung 3 nicht abgefragt wird. und dann der DOELSE-Fall genommen wird.
Titel: Antw:DOIF Vergleich Reading mit festem Wert funktioniert nicht
Beitrag von: der_da am 30 Mai 2016, 14:57:35
Zitat von: l2r am 30 Mai 2016, 14:52:16
([du_FlagTDT_Exist] eq "on" and [du_TagesdurchschnittstemperaturTerrasse] > 20 and [Wetter:fc0_rain:d] < 2) (set du_Bewaesserung_Art Hitze)
DOELSEIF
([du_FlagTDT_Exist] eq "on" and [du_TagesdurchschnittstemperaturTerrasse] <= 20 and [Wetter:fc0_rain:d] < 2) (set du_Bewaesserung_Art Normal)
DOELSEIF
([du_FlagTDT_Exist] eq "on" and [du_TagesdurchschnittstemperaturTerrasse] > 0 and [Wetter:fc0_rain:d] >= 2) (set du_Bewaesserung_Art Feucht)
DOELSE
(set du_Bewaesserung_Art Normal)


probier das mal so. Dann sollte das eig laufen.

bei der Erklärung bin ich mir nicht ganz sicher, aber ich glaube, wenn du DOELSE verwendest musst du in den DOELSEIF-Bedingungen immer alle Abfragen drin haben, sonst könnte es passieren, dass ein anderes Reading triggert, was in Bedingung 3 nicht abgefragt wird. und dann der DOELSE-Fall genommen wird.
Stimmt!  ;D
DANKE!