FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Gunjahx am 23 März 2016, 21:43:14

Titel: Mehrere IF Bedingungen kombinieren
Beitrag von: Gunjahx am 23 März 2016, 21:43:14
Ich versuche gerade eine Rollladensteuerung zu realisieren. Soweit funktioniert diese auch. Nun soll sie eine Urlaubsschaltung bekommen, da einige Rollläden am Wochenende nur auf Knopfdruck geöffnet werden können und dann im Urlaub den ganzen Tag geschlossen bleiben würden.

ich habe mir dafür einen dummy "Urlaub" angelegt mit EventMap "on off".
Folgender Eintrag funktioniert und schaltet um 21.30 bei "Urlaub = on" den Rolladen

define Buero_Rollladen_Urlaub at *21:30:00 { if ( Value ("Urlaub") eq "on")  { fhem("set RollladenBuero on");; } }


Wenn ich diesen jetzt kombiniere mit dem $we Befehl, dann klappt das nicht:

define Buero_Rollladen_Urlaub at *21:36:00 { if ($we) && ( Value ("Urlaub") eq "on")  { fhem("set RollladenBuero on");; } }



Den Umkehrschluss hab ich auch probiert, also das Wochentags um 06:30 Uhr die Rollläden NICHT automatisch hoch gehen sollen wenn Urlaub aktiviert ist. Das klappt auch nicht. Auch bei "Urlaub = on" gehen die Rollläden hoch.

define SchlaZi_Rollladen_AutoUp at *06:30:00 { if (!($we)) && ( Value ("Urlaub") eq "off")  { fhem("set RollladenBuero on");; } }


Hat jemand eine Idee was der Fehler sein könnte?
Titel: Antw:Mehrere IF Bedingungen kombinieren
Beitrag von: Hauenschild am 23 März 2016, 22:30:09
Ich finde für solche Funktionen ein DOIF übersichtlicher. Im folgenden ein Beispiel für meine "Wasserwand-Schaltung", welche auch einen Dummy [Unterwegs] beinhaltet und am Wochende unterschiedlich schaltet:

define di_Wasserwandpumpe_Tag DOIF ([09:30|8] or [12:00|7] and [Unterwegs] eq "nein") (set Wasserwandpumpe on) DOELSEIF ([17:30|8] or [14:00|7]) (set Wasserwandpumpe off)

Mit diesem DOIF wird die Wasserwand am Wochenende und an Feiertagen [ |7 ] um 12:00 Uhr eingeschaltet und um 14:00 Uhr ausgeschaltet. An Arbeitstagen[ |8 ] wird die Wasserwand um 09:30 Uhr eingeschaltet und um 17:30 Uhr ausgeschaltet.

Ich hoffe der Hinweis hilft weiter.
Titel: Antw:Mehrere IF Bedingungen kombinieren
Beitrag von: Gunjahx am 23 März 2016, 22:51:24
Danke, das werde ich morgen mal probieren.

Dennoch wäre natürlich auch schön zu wissen wo oben der Fehler liegt.
Titel: Antw:Mehrere IF Bedingungen kombinieren
Beitrag von: linuxpaul am 23 März 2016, 23:27:37
Ich denke es muss die Bedingung in einer Klammer stehen, oder?
Bsp 1: if () {} -> OK
Bsp 2 & 3: if () && () {} -> nicht OK

Da sollte eine Klammer rum, also:
if ($we && ( Value ("Urlaub") eq "on")) {...}



ist das besser ?

:)
linuxpaul
Titel: Antw:Mehrere IF Bedingungen kombinieren
Beitrag von: Gunjahx am 24 März 2016, 07:12:07
Ja, das war das Problem. Wie so oft einfacher Fehler mit vergessener Klammer.

Danke für die Hilfe.

Den Vorschlag mit dem DOIF werd ich auch mal testen die Tage