[Gelöst] Readingsval mit mehreren möglichen Werten

Begonnen von Gisbert, 17 Juni 2018, 11:13:23

Vorheriges Thema - Nächstes Thema

Gisbert

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
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

dev0

#1
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...

Gisbert

Hallo dev0,

super, hat geklappt.
Auch das Leerzeichen und der Umlaut in <stark bewölkt> wird richtig verarbeitet.

Vielen Dank
Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY