FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Zrrronggg! am 01 April 2013, 20:47:56

Titel: && und || Bedingungen
Beitrag von: Zrrronggg! am 01 April 2013, 20:47:56
Folgendes ist klar und verwende ich viel:


{ if (Value("Aktor_A") eq "on" || Value("Dummy_B") eq "irgendwas") { fhem("...

{ if (Value("ktor_A") eq "off" && Value("Dummy_C") ne "blabla") { fhem("...


Ich habe aber jetzt eine Aufgabe, wo ich gerne Folgendes machen würde:

Wenn (A oder B) und C, dann...

if (Value("Aktor_A") eq "on" || Value("Dummy_B") eq "irgendwas" && Value("Dummy_C") ne "blabla") { fhem("...

scheint mir nicht okay, weil da ja nicht klar ist, ob  

(A oder B) und C

oder

A oder (B und C)

zutreffen soll.

Wie mach ich das eindeutig? Kann nicht genug Perl...

Titel: Aw: && und || Bedingungen
Beitrag von: Puschel74 am 01 April 2013, 20:56:09
Hallo,

ich vermute mal so ähnlich wie in Mathe.
Die Klammern richtig setzen ;-)

if (((Value("Aktor_A") eq "on" || Value("Dummy_B")) eq "irgendwas" && Value("Dummy_C")) ne "blabla") { fhem("...

Ungetestet und nur aus dem Kopf.

grüße
Titel: Aw: && und || Bedingungen
Beitrag von: Zrrronggg! am 01 April 2013, 22:05:23
Diese Vermutung hatte ich auch, sowas ist aber bei Perl und FHEM öfters mal falsch.

Das Austesten ist bei solchen Sachen nicht ganz unkomplex, daher bin ich eigentlich auf der suche nach jemand der es ... ehem ... weiß, bevor ich das austesten muss.
Titel: Aw: && und || Bedingungen
Beitrag von: Dietmar63 am 01 April 2013, 22:40:23
Du mußte klammern! : (A oder B) und C

&& bindet stärker als ||. Wenn du sie fort lässt wird eine implizite Klammer um b und C gesetzt