Moin,
ich habe mich mal an ein DOIF gewagt und würde gerne eure fachmännische Meinung dazu hören :-)
Bin mir nicht sicher, ob ich die Abfragen richtig gesetzt habe.
Meine Zielsetzung:
Lampen sollen gedimmt angehen wenn:
A:sunset(...) erreicht ist
und
B: die Lampen noch aus sind.
Die Lampen sollen ausgehen wenn:
A: Werktags um 21:50 Uhr -> wenn der TV aus ist
B: Wochenende um 22:30 Uhr -> wenn der TV aus ist
C: wenn der TV in der Zeit von 21:50 bis 23:45 Uhr ausgeschaltet wird.
Habe ich etwas vergessen?
Anbei mein Versuch:
([{sunset("HORIZON=1.0",0,"16:30","21:30")}] and [HUEGroup0] eq "off")
(set HUEGroup0 bri 10 : transitiontime 0; set HUEGroup0 bri 192 : transitiontime 9000)
DOELSEIF
(([21:50 | 8] or [22:30 | 7]) and [LGTVwz:presence] eq "absent")
(set HUEGroup0 off)
DOELSEIF
([?21:50-23:45] and [LGTVwz:presence] eq "absent")
(set HUEGroup0 off)
Danke fürs Prüfen, Gruß Dirk
funktioniert es nicht, oder traust du dich nicht? ???
Moin Frank,
ich konnte noch nicht alles testen, ist ja Wochenende :-)
und ja ... ich trau mich noch nicht richtig :-\
Die Infos in der Commandref haben mich heute erschlagen :-[
Ist halt wie beim ersten mal :)
Gruß Dirk
ZitatDie Infos in der Commandref haben mich heute erschlagen
deshalb anschmeissen und beobachten (zb fhem.log und eventmonitor).
zum testen könnte man auch erstmal ein dummy setzen, oder einträge in fhem.log generieren. da es sich wohl aber "nur" um eine lampe handelt... , was soll schiefgehen?
nur mut, probieren geht über studieren. :)
Hallo MacDad,
also so wie du es geschrieben hast, sind alle eckigen Klammern als Ereignisse definiert.
Um das Verhalten wie im Text zu erreichen, würde ich noch die
roten Fragezeichen einfügen - dann sind diese eckigen Klammern keine Ereignisse, sondern Abfragen.
Ansonsten müsste aus meiner Sicht noch entweder ein leerer DOELSEIF-Fall eingefügt werden oder aber das attr do always, sonst würde das DOIF glaube ich nur 1x durchlaufen.l
(musste das Code-Attribut des Forums entfernen, sonst hätte die rote Markierung nicht funktioniert)
Zitat von: MacDad am 17 Januar 2016, 14:10:49
([{sunset("HORIZON=1.0",0,"16:30","21:30")}] and [?HUEGroup0] eq "off")
(set HUEGroup0 bri 10 : transitiontime 0; set HUEGroup0 bri 192 : transitiontime 9000)
DOELSEIF
(([21:50 | 8] or [22:30 | 7]) and [?LGTVwz:presence] eq "absent")
(set HUEGroup0 off)
DOELSEIF
([?21:50-23:45] and [LGTVwz:presence] eq "absent")
(set HUEGroup0 off)
Danke fürs Prüfen, Gruß Dirk
Und wie schon geschrieben.
Bei einer Hue-Lampe kann ja nichts passieren. Probieren geht über studieren :-)
Viele Grüße,
Heiko
Moin,
ja ... genau ... "Probieren geht über studieren" :-)
Also,
die Lampen gingen heute Nachmittag nicht an, obwohl sie aus waren.
Hier habe ich die Abfrage auf die HUEGroup0 in Verdacht.
Die Fragezeichen habe ich jetzt ergänzt, Danke für den Hinweis Heiko.
Nun warten wir mal ab, wob die Lampen wenigstens aus gehen.
Werde berichten ... Danke, Gruß Dirk
... Test Licht aus:
Zum testen habe ich die Zeiten wie folgt geändert:
B: Wochenende um 21:55 Uhr -> wenn der TV aus ist
C: wenn der TV in der Zeit von 21:50 bis 23:45 Uhr ausgeschaltet wird.
Der TV war um 21:55 Uhr an, Lampen blieben an!
TV um 21:57 Uhr ausgeschaltet, Lampen gingen kurze Zeit später auch aus (Presence Abfrage alle 60 Sekunden)
Sieht schon mal ganz gut aus :)
Werde weiter berichten ;)
Gruß Dirk
Moin,
auch die Änderung von Heiko hat leider die Lampen nicht eingeschaltet. :'(
Der erste Teil sieht jetzt so aus:
([{sunset("HORIZON=1.0",0,"16:30","21:30")}] and [?HUEGroup0] eq "off")
(set HUEGroup0 bri 10 : transitiontime 0; set HUEGroup0 bri 192 : transitiontime 9000)
Es liegt auf jeden Fall an der Abfrage der HUEGroup0, denn wenn ich "nur" eine Uhrzeit hinterlege, ohne "and", funktioniert es :-)
Die Frage die sich mir stellt, wie bekomme ich den richtigen Status der HUE abgefragt?
Gruß Dirk
... da ich den Status der HUEGroup0 nicht abgefragt bekomme, frage ich jetzt einfach EINE der HUELampen über ein notify ab und schreibe den Status in ein Dummy.
HUEDevice3 {fhem("set dum_HUEStatus an") if (ReadingsVal("HUEDevice3","onoff","") eq "1")}
HUEDevice3 {fhem("set dum_HUEStatus aus") if (ReadingsVal("HUEDevice3","onoff","") eq "0")}
Mein aktueller CODE sieht so aus, habe ihn noch ein wenig erweitert.
(([06:20|8] or [07:30|7]) and [?dum_HUEStatus] eq "aus") (set HUEGroup0 on)
DOELSEIF
(([07:50|8] or [09:30|7]) and [?dum_HUEStatus] eq "an") (set HUEGroup0 off)
DOELSEIF
([{sunset("HORIZON=1.0",0,"16:30","21:30")}] and [?dum_HUEStatus] eq "aus")
(set HUEGroup0 bri 10 : transitiontime 0; set HUEGroup0 bri 192 : transitiontime 9000)
DOELSEIF
(([21:30 | 8] or [21:50 | 7]) and [?LGTVwz:presence] eq "absent")
(set HUEGroup0 off)
DOELSEIF
([?21:30-23:45] and [LGTVwz:presence] eq "absent")
(set HUEGroup0 off)
jetzt bin ich mal auf morgen gespannt ... werde weiter testen, erweitern und berichten :)
Schönen Abend, Gruß Dirk
Du könntest das HUEDevice3 im DOIF direkt abfragen und das notify sparen, mit:
[?HUEDevice3:onoff] == 1
Moin Ellert,
Danke für den Hinweis.
Da ich den Status aber noch bei weiteren Auswertungen benötigen werde, habe ich mich erstmal für ein Dummy entschieden.
Wobei ... in der Kürze liegt die Würze ... und im DOIF ist der Eintrag wirklich kurz ;D
Da muss ich noch mal drüber nachdenken.
Danke, Gruß Dirk