FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: leachim200 am 23 März 2019, 09:40:24

Titel: notify programierfehler?
Beitrag von: leachim200 am 23 März 2019, 09:40:24
Hallo
ich suche und suche und finde absolut nicht die Lösung

Folgender code bereitet mir Kopfzerbrechen
WintergartenLicht:on {if ((ReadingsVal("WetterLicht","light","") > 3) && (($hour >=22 || $hour <=17))) { fhem("set WintergartenLicht off")}}

Ich möchte das das WintergartenLicht dann ausgeschaltet wird wenn der Lichtwert größer 3 ist und die Uhrzeit zwischen 22 und 17 Uhr liegt.
Allerdings schaltet er egal was ich hinten eingebe immer dann wenn der Lichtwert zutreffend ist egal was dahinter steht.
Titel: Antw:notify programierfehler?
Beitrag von: DeeSPe am 23 März 2019, 09:44:35
Problem ist das OR!

{fhem("set WintergartenLicht off") if (ReadingsNum("WetterLicht","light","") > 3 && ($hour >=22 || $hour <=17))}

Gruß
Dan

EDIT: Sorry Du wolltest ja zwischen 22 und 17 Uhr und nicht 17 bis 22 Uhr.
Titel: Antw:notify programierfehler?
Beitrag von: CoolTux am 23 März 2019, 09:45:28
Meinst du wirklich zwischen 22 und 17 Uhr oder zwischen 17 und 22 Uhr?
Davon Mal ab kannst das mit der Zeit auch raus nehmen und setzt das Attribut disableForInterval.
Titel: Antw:notify programierfehler?
Beitrag von: Otto123 am 23 März 2019, 11:05:54
Moin,

das notify reagiert auf WintergartenLicht:on und der Ausführungsteil ist dann final set WintergartenLicht off ....
Das macht doch keinen Sinn? Oder kommt der Event WintergartenLicht:on als Dauerfeuer?

Ich würde die Aufgabe mit DOIF lösen. (Ich möchte das das WintergartenLicht dann ausgeschaltet wird wenn der Lichtwert größer 3 ist und die Uhrzeit zwischen 22 und 17 Uhr liegt.)
Edit: korrigiert
define di_WGaus DOIF ([22:00 - 17:00] and [WetterLicht:light] > 3)(set WintergartenLicht off)

Oder bei einem notify dem Vorschlag von Cooltux folgen und Wetterlicht als Trigger verwenden. Dazu am einfachsten den Trigger mit dem Eventmonitor auswählen und das notify gleich erzeugen lassen. Dann könnte man auch gleich mit $EVENT oder $EVTPARTx weiter arbeiten.

Gruß Otto
Titel: Antw:notify programierfehler?
Beitrag von: amenomade am 23 März 2019, 17:44:11
@Otto: in deinem define fehlt vielleicht noch das Wort "DOIF" ;)
Titel: Antw:notify programierfehler?
Beitrag von: betateilchen am 23 März 2019, 19:26:43
Der Ausführungsteil für ein notify ist auch nicht komplizierter.


{ fhem("set WintergartenLicht off") unless (ReadingsNum("WetterLicht","light",99) <= 3 || $hour ~~ [17..22]) }


Wenn man mit ReadingsNum() arbeitet, weil man einen numerischen Wert haben möchte, sollte man nicht unbedingt einen alphanumerischen defaultwert in der Funktion angeben. Aber das nur so nebenbei.
Titel: Antw:notify programierfehler?
Beitrag von: leachim200 am 24 März 2019, 09:09:28
Hallo
Vielen dank für eure Antworten.

Vorweg ich habe es dann wie Otto gesagt hat mit einem DOIF gelöst.
Ja ich möchte das zwischen 22 - 17 uhr das licht ausgeschaltet wird. Grund ist Wintergartenlicht war nur ein test Verwendet wird das ganze in einem Reitstall wo die Pferde permanent am Lichtschalter herumspielen und den 600Watt strahler einschalten....