Hauptmenü

IF-Abfragen

Begonnen von Rheingold, 14 Februar 2017, 23:26:04

Vorheriges Thema - Nächstes Thema

Rheingold

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 :)
Fhem auf Raspi 3; Jeelink mit 6x TX29DTH; CUL433 mit 9x RCS 1000 N und Somfy-Steuerung; CUL868; MAX-Cube + Thermostate; Philips Hue & Ikea Tradfri; Google Home Assistant; FTUI für Tablet und SmartPhone via Reverse-Proxy

CoolTux


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") }}
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Rheingold

Danke sehr! Es klappt :)

Nur wieso muss hier mit Value (' ') gearbeitet werden?
Fhem auf Raspi 3; Jeelink mit 6x TX29DTH; CUL433 mit 9x RCS 1000 N und Somfy-Steuerung; CUL868; MAX-Cube + Thermostate; Philips Hue & Ikea Tradfri; Google Home Assistant; FTUI für Tablet und SmartPhone via Reverse-Proxy

CoolTux

Weil Du durch { } Dich auf Perlebene bewegst und da kann man nur Perfunktionen aufrufen. Value ist eine Perlfunktion welche in der fhem.pl steht.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

hschuett

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("...")} }