Hallo,
ich frage folgende Bedingung ab (Auszg aus einem stateFormat):
(ReadingsVal('$name','weather','') eq "sonnig") or (ReadingsVal('$name','weather','') eq "klar") or (ReadingsVal('$name','weather','') eq "heiter") or (ReadingsVal('$name','weather','') eq "wolkig") or (ReadingsVal('$name','weather','') eq "stark bewölkt"))
Geht das kürzer?
Was nicht funktioniert, oder zumindest den Anschein hat, dass es nicht funktioniert, ist folgendes:
(ReadingsVal('$name','weather','') eq "sonnig" or "klar" or "heiter" or "wolkig" or "stark bewölkt")
oder
(ReadingsVal('$name','weather','') eq ("sonnig" or "klar" or "heiter" or "wolkig" or "stark bewölkt"))
oder
(ReadingsVal('$name','weather','') eq "sonnig" or eq "klar" or eq "heiter" or eq "wolkig" or eq "stark bewölkt")
Viele Grüße Gisbert
Zitatich frage folgende Bedingung ab (Auszg aus einem stateFormat):
Kürzer geht es z.B. mit 'ner regexp (auch nur ein Auszug):
if (ReadingsVal($name,"weather","") =~ m/^(sonnig|klar|heiter|wolkig|stark\sbewölkt)$/) {...}
Edit: Außerdem wird das gezeigte '$name' nicht funktionieren: einfache Anführungszeichen funktionieren der Stelle gar nicht, Doppelte wären überflüssig...
Hallo dev0,
super, hat geklappt.
Auch das Leerzeichen und der Umlaut in <stark bewölkt> wird richtig verarbeitet.
Vielen Dank
Gisbert