Hallo,
ich möchte die Soll-Temperatur der Thermostate hochsetzen, wenn der Bewegungsmelder Bewegung erkennt und wieder heruntersetzen, wenn er für mind. 15min keine Bewegung erkennt.
Ich habe das mit folgendem "at" versucht, bekomme aber die bekannte Fehlermeldung "...already defined, delete it first" und es wird damit immer der erste "at" ausgeführt und nie bei erneuter "define" an die +15min angepasst.
(([BM_zimmer:motionCount] ne "") and ([?6:30-20:00])) (set WT_zimmer_Climate desired-temp 21, define at_BM_WT_zimmer_timer at +00:15 set WT_zimmer_Climate desired-temp 19) DOELSE ()
Jemand eine Idee, wie man das einfach umsetzen kann?
Eine Idee wäre abzufragen, ob es das "at" schon gibt und dann ein "modify" zu machen, aber ich hoffe es geht einfacher...
Ja, geht wirklich einfacher, "defmod" heißt das Zauberwort :)
lg, Ici
oder modify
danke icinger, das habe ich gesucht!
Zitat von: FhemPiUser am 27 September 2015, 10:00:28
Hallo,
ich möchte die Soll-Temperatur der Thermostate hochsetzen, wenn der Bewegungsmelder Bewegung erkennt und wieder heruntersetzen, wenn er für mind. 15min keine Bewegung erkennt.
Ich habe das mit folgendem "at" versucht, bekomme aber die bekannte Fehlermeldung "...already defined, delete it first" und es wird damit immer der erste "at" ausgeführt und nie bei erneuter "define" an die +15min angepasst.
(([BM_zimmer:motionCount] ne "") and ([?6:30-20:00])) (set WT_zimmer_Climate desired-temp 21, define at_BM_WT_zimmer_timer at +00:15 set WT_zimmer_Climate desired-temp 19) DOELSE ()
Jemand eine Idee, wie man das einfach umsetzen kann?
Eine Idee wäre abzufragen, ob es das "at" schon gibt und dann ein "modify" zu machen, aber ich hoffe es geht einfacher...
Geht einfacher ohne at:
(([BM_zimmer:motionCount] ne "") and ([?6:30-20:00])) (set WT_zimmer_Climate desired-temp 21)(set WT_zimmer_Climate desired-temp 19)
Attribut: wait 0,900
DOELSE () bei einer Bedingung ohne do always wird automatisch gesetzt.
Gruß
Damian
das mit dem wait hatte ich auch überlegt, aber ich denke dass das zweite kommando nie getriggert werden würde (ausser nachts und da soll es ohnehin nicht), da motioncount immer ungleich "" ist. motioncount zählt bei jeder bewegung hoch.
Zitat von: FhemPiUser am 27 September 2015, 11:51:36
das mit dem wait hatte ich auch überlegt, aber ich denke dass das zweite kommando nie getriggert werden würde (ausser nachts und da soll es ohnehin nicht), da motioncount immer ungleich "" ist. motioncount zählt bei jeder bewegung hoch.
Bedenke, dass durch die Klammerung beide Kommandos zu der Bedingung zählen und nicht zum Sonst-Fall. Ohne wait würden sie sogar sofort hintereinander ausgeführt werden.
Gruß
Damian
ja, aber ich dachte nur ein motioncount event triggert die doif abfrage? die bedingung mit den zeiten haben ja ein ? davor...
Zitat von: FhemPiUser am 27 September 2015, 12:55:45
ja, aber ich dachte nur ein motioncount event triggert die doif abfrage? die bedingung mit den zeiten haben ja ein ? davor...
reicht doch, wenn dein motioncount event triggert, dann werden beide Kommandos ausgeführt. Es handelt sich hier um neue Funktionalität des Wait-Attributes mit Komma (nicht mit Doppelpunkt verwechseln).
Gruß
Damian
irgendetwas stimmt noch nicht. er setzt die temperatur alle 15min hoch und dann in 15min wieder runter, auch ohne bewegung...
hab übrugens do always gesetzt.
@damian: das mit dem wait muss ich mal probieren...
@damian: jetzt habe ich das verstanden mit dem wait und umgesetzt. Es scheint zu funktionieren. Das DOIF ist schon genial....
...komisch, die Abfrage ([BM_zimmer:motionCount] ne "")
wird auch getriggert, wenn es gar kein motionCount-Event gab, sondern ein BM_zimmer:brightness-Event. Ist das normal?
habe jetzt ein and ([BM_Sinjezimmer:motionCount:sec] < 3)
hinzugefügt.
Zitat von: FhemPiUser am 27 September 2015, 14:36:07
...komisch, die Abfrage ([BM_zimmer:motionCount] ne "")
wird auch getriggert, wenn es gar kein motionCount-Event gab, sondern ein BM_zimmer:brightness-Event. Ist das normal?
habe jetzt ein and ([BM_Sinjezimmer:motionCount:sec] < 3)
hinzugefügt.
Du fragst nicht einen Trigger ab, sondern das Reading BM_zimmer:motionCount. Das Modul wertet die Bedingung aus, sobald irgendein Trigger von BM_zimmer kommt.
Wenn du nur auf das Event motionCount abfragen willst, dann kannst du das so ähnlich, wie beim notify machen, mit der Syntax:
([BM_zimmer:?motionCount])(...)
Genaueres dazu findest du in der deutschen Commandref zu DOIF.
Gruß
Damian
ok, danke