DOIF Vergleich Reading mit festem Wert funktioniert nicht (gelöst)

Begonnen von der_da, 30 Mai 2016, 14:04:38

Vorheriges Thema - Nächstes Thema

der_da

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?

l2r

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
Wissen ist Macht.
Ich weiß nix.
Macht nix.

kumue

wollte auch gerade nach dem Reading
[Wetter:fc0_rain:d]
fragen...

Kann selbst nicht schauen ob es dieses gibt, da ich Proplanta nicht verwende..

l2r

bei meinem Proplanta kann ich nur nach [Wetter:fc0_rain] fragen
Wissen ist Macht.
Ich weiß nix.
Macht nix.

der_da

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.

l2r

([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.
Wissen ist Macht.
Ich weiß nix.
Macht nix.

der_da

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!