Hauptmenü

DOIF regagiert falsch.

Begonnen von msfox, 06 Juli 2022, 15:55:36

Vorheriges Thema - Nächstes Thema

msfox

Ich habe ein DOIF angelegt, mit folgender Bedingung:
( [HMW_IO12_SW7_DR_LEQ0117187_14:"off"]) ( set HMW_IO_12_Sw7_DR_LEQ0117610_13 off)

Also, wenn der eine Schalter aus ist, so soll auch der andere Schalter deaktiviert werden.
Leider funkioniert es genau umgekehrt:
Wenn ich den Schalter einschalte, dann schaltet der andere Schalter aus.
Es klappt auch nicht wenn ich
( [HMW_IO12_SW7_DR_LEQ0117187_14:"on"]) ( set HMW_IO_12_Sw7_DR_LEQ0117610_13 off)

Was hab ich falsch gemacht?
Ist das DOIF überhaupt das Richtige?
Ein Notify ist aus meiner Sicht nicht richtig, da ich dort auf ein Event des Sensors reagiere kann. Entscheidend ist aber der Zustand verschiedener Aktoren.

Was ist der Hintergrund des Szenarios im Endzustand:
Als Bedingungen soll der Zustand (ausgeschaltet) von 4 Magnetventilen für die Bewässerung geprüft werden. Sind alle 4 ausgeschaltet, so soll auch die Tauchpumpe ausgeschaltet werden. Entsprechend würde die Bedingung noch durch andere Schalter mit "and" verknüpft.
( [HMW_IO12_SW7_DR_LEQ0117187_14:"off" and HMW_IO12_SW7_DR_LEQ0117187_15:"off"]) ( set HMW_IO_12_Sw7_DR_LEQ0117610_13 off)

Damian

Wenn du den Zustand auswerten willst, dann muss du auch den Zustand abfragen und nicht das Event:

([HMW_IO12_SW7_DR_LEQ0117187_14:state] eq "off") ( set HMW_IO_12_Sw7_DR_LEQ0117610_13 off)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

msfox

Danke, hat funktioniert. In der Commandref steht es aber anders oder ich habe es falsch übersetzt.
define di_rc_tv DOIF ([remotecontol:"on"]) (set tv on) DOELSE (set tv off)
https://fhem.de/commandref_DE.html#DOIF

Otto123

Das ist die Abfrage eines Events:
[remotecontol:"on"]
Das ist die Abfrage eines Zustandes:
[remotecontol] eq "on"

Abfragen von Zuständen kannst Du mit and verknüpfen, Abfragen von Events nicht! Es gibt in FHEM keine gleichzeitigen Events.

Die Idee von Dir ist syntaktisch völlig falsch
( [HMW_IO12_SW7_DR_LEQ0117187_14:"off" and HMW_IO12_SW7_DR_LEQ0117187_15:"off"]) ( set HMW_IO_12_Sw7_DR_LEQ0117610_13 off)
Achtung: Beide Ausdrücke ergeben nicht die gleiche Logik!!! Nur fürs Prinzip. ;)
entweder (Events kann man nur or verknüpfen)
( [HMW_IO12_SW7_DR_LEQ0117187_14:"off"] or [HMW_IO12_SW7_DR_LEQ0117187_15:"off"])
oder
( [HMW_IO12_SW7_DR_LEQ0117187_14] eq "off" and [HMW_IO12_SW7_DR_LEQ0117187_15] eq "off")
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

msfox

Zitat von: Otto123 am 06 Juli 2022, 23:48:32
Das ist die Abfrage eines Events:
[remotecontol:"on"]
Das ist die Abfrage eines Zustandes:
[remotecontol] eq "on"
Ah, danke. Habe den Hinweis auch in der CommandRef gefunden und den Zusammenhang verstanden. Ist halt recht viel beschrieben, wo man nicht immer gleich sieht, dass man genau diesen Teil braucht bzw. dieser wichtig ist.

Ps.: Gruß aus Halle :).