FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Rheingold am 14 Februar 2017, 23:26:04

Titel: IF-Abfragen
Beitrag von: Rheingold am 14 Februar 2017, 23:26:04
Hallo zusammen,

kurze Frage in die Runde zu IF-Abfragen. Ich möchte eine Zeitschaltuhr einstellen, die wochentags aktiv ist, wenn der Schalter "Zeitschaltung_Abends" auf "on" steht.

define Zeitschaltuhr_Abends dummy
attr Zeitschaltuhr_Abends webCmd on:off
define test_licht at *23:22 { if(($wday == 1 || $wday == 2 || $wday == 3 || $wday == 4 || $wday == 5) && ("Zeitschaltuhr_Abends" eq "on" )) { fhem("set Esszimmer_Licht on-for-timer 900") }}


Wenn ich dann in FHEM den Schalter auf "on" stelle, passiert mit diesem Aufruf nichts... Ein Licht geht nicht an.
Könnte mir evtl. jemand auf die Sprünge helfen wieso?

Danke schon mal :)
Titel: Antw:IF-Abfragen
Beitrag von: CoolTux am 14 Februar 2017, 23:31:33

define test_licht at *23:22 { if(($wday == 1 || $wday == 2 || $wday == 3 || $wday == 4 || $wday == 5) && ( Value('Zeitschaltuhr_Abends') eq 'on' )) { fhem("set Esszimmer_Licht on-for-timer 900") }}
Titel: Antw:IF-Abfragen
Beitrag von: Rheingold am 14 Februar 2017, 23:36:58
Danke sehr! Es klappt :)

Nur wieso muss hier mit Value (' ') gearbeitet werden?
Titel: Antw:IF-Abfragen
Beitrag von: CoolTux am 14 Februar 2017, 23:49:28
Weil Du durch { } Dich auf Perlebene bewegst und da kann man nur Perfunktionen aufrufen. Value ist eine Perlfunktion welche in der fhem.pl steht.
Titel: Antw:IF-Abfragen
Beitrag von: hschuett am 15 Februar 2017, 00:16:43
Alternative per FHEM IF-Modul könnte so aussehen:
define test_licht at *23:22 IF (!$we and [Zeitschaltuhr_Abends] eq "on") (set Esszimmer_Licht on-for-timer 900)

Bedingungsteil:
!$we = "Nicht-Wochenende" UND
STATE von Device Zeitschaltuhr_Abends = on

Ggf. kürzer als die einzelnen $wday Abfragen und spielt sich nicht auf Perl-Ebene ab, sondern auf FHEM-Ebene.
Am Ende übersetzt das IF-Modul das Kommando von der FHEM-Ebene auf die Perl-Ebene in ein { if (...) {fhem("...")} }