(gelöst) DOIF mit der Abfrage von vielen Zuständen vereinfachen

Begonnen von rhoffm34, 02 Mai 2021, 12:34:48

Vorheriges Thema - Nächstes Thema

rhoffm34

Moin zusammen.

Ich habe ein DOIF in dem viele Schalter abgefragt werden ob diese auf "off" stehen.

if ([Garten_Schalter_1] eq "off" and [Garten_Schalter_2] eq "off" and [Garten_Schalter_3] eq "off" ... )
{fhem("set UVert.3_HM_Sw_1_PowerUVert.4 on-for-timer 600");}

Meine Frage ist, wie kann ich die Abfrage eleganter zusammenfassen?

Probiert habe ich

if ([UVert.4_HM_Sw_1_.*] eq "off")

das funktioniert nicht...

Vielleicht kann einer weiterhelfen.


Otto123

Hi,

unabhängig von DOIF würde ich die Schalter zunächst in einer structure zusammenfassen und die structure abfragen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rhoffm34

Danke Otto, structure kannte ich noch nicht. Das ist genau das was ich gebraucht habe.

Vielen Dank für die schnelle Antwort

Sany

um bei DOIF zu bleiben:
Zitathttps://fhem.de/commandref_modular_DE.html#DOIF_aggregation
schon mal gesehen?

das könnte bei Dir dann etwa so aussehen:
[#"^Garten_Schalter_":state:$_ !~ "off"]
"Summe der Devices die mit Garten_Schalter_ beginnen und deren state nicht "off" enthält"
also wenn alle off sind kommt hier 0 raus, ansonsten die Anzahl derer, die on sind.
if([#"^Garten_Schalter_":state:$_ !~ "off"] > 0){
    fhem("set UVert.3_HM_Sw_1_PowerUVert.4 on-for-timer 600");
    }


solltest Du zufällig noch Devices haben, die auch mit Garten_Schalter beginnen, aber nicht überprüft werden sollen, dann könntest Du alle zu überprüfenden in eine Gruppe packen (Bsp: attr XXX group ueberwacht) und dann die Def erweitern:
[#"^Garten_Schalter_":state:$_ !~ "off" and $group =~ "ueberwacht"]

zum testen kannst Du die Abfrage einfach als DOIF_Reading in Dein DOIF reinschreiben und zusehen, ob es entsprechend funktioniert
attr DeinDOIF DOIF_Readings GartenSchalterNotOFF:[#"^Garten_Schalter_":state:$_ !~ "off"]

Viel Erfolg!

(alles ungetestet, nur bei mir funktionierende Defs umgeschrieben!)
fhem als LXC auf Proxmox auf einem minix Z100 , weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....