Watchdog mit disabledForIntervals bis zum sunset

Begonnen von OtisWright, 18 Januar 2016, 21:45:02

Vorheriges Thema - Nächstes Thema

OtisWright

Hallo,

ich möchte diesen Post nutzen um mich einerseits vorzustellen und andererseits meine erste Frage zu stellen.

Mein Name ist Sebastian, ich bin Maschinenbau-Ingenieur und ich baue mir nun seit ca. 2 Wochen mein Smart Home mit FHEM und einem Raspberry Pi zusammen.
Die Basics konnte ich mir bisher aus zahlreichen Beiträgen, dem Wiki und etwas eigenem Programmierverständnis zusammenreimen. Ich hänge momentan jedoch vor einer Herausforderung, die ich hier kurz beschreiben möchte:

Ich möchte eine Anwesenheitsschaltung erstellen, die, sobald es dunkel wird, entweder eine Lampe anschaltet, oder (wenn ich weg bin) einen TV simulator. Die eigentliche Anwesenheitserkennung funktioniert über mein Handy und geofancy. Das klappt soweit auch alles einwandfrei - mit einer einschränkung:

Ich schaffe es nicht, dass die Schaltung nur funktioniert wenn es dunkel ist und Statusänderungen bei Tageslicht ebenfalls ausgeführt werden. So würde ich es gerne machen:


define watchdog_Abwesend watchdog GeoAnwesend:off 00:00:30 GeoAnwesend:on\
set Wohnzimmer_TV_Simulator on;; set Wohnzimmer_TV_Licht off;;\
setstate watchdog_Abwesend defined
attr watchdog_Abwesend disabledForIntervals 23:00-24:00 00:00-{sunset("REAL")}
attr watchdog_Abwesend regexp1WontReactivate 1

define watchdog_Anwesend watchdog GeoAnwesend:on 00:00:30 GeoAnwesend:off\
set Wohnzimmer_TV_Simulator off;; set Wohnzimmer_TV_Licht on;;\
setstate watchdog_Anwesend defined
attr watchdog_Anwesend disabledForIntervals 23:00-24:00 00:00-{sunset("REAL")}
attr watchdog_Anwesend regexp1WontReactivate 1


Da der Watchdog offenbar nur Statusänderungen nach der disabledForIntervals Zeit ausführt, müsste ich noch eine IF schleife davor hängen, die mir bei sunset mit einem AT befehl die entsprechende Lampe / TV Simulator anschaltet (das klappt auch schon).

Jetzt scheint das disabledForIntervals jedoch nicht zu klappen, wie ich will. statt sunset muss ich eine feste Zeit eingeben, was für mich jedoch ungeeignet ist. Wie kann ich das am geschicktesten lösen?

achso. TV_Simulator und TV_Licht sind dummys. ich schalte für den anfang erstmal 433 mhz baumarkt steckdosen.

OtisWright

#1
Weiß das etwa keiner ?das muss doch möglich sein.


edit:

hab es jetzt mit DOIF versucht. mal gucken ob das so funktioniert wie ich mir das vorstelle.


define di_Abwesenheitsschaltung DOIF ([GeoAnwesend] eq "on" and [{sunset("REAL",0,"16:00","22:59:30")}-23:00]) \
(set Wohnzimmer_TV_Simulator off;; set Wohnzimmer_TV_Licht on) \
DOELSEIF ([GeoAnwesend] eq "off" and [{sunset("REAL",0,"16:00","22:59:30")}-23:00]) \
(set Wohnzimmer_TV_Simulator on;; set Wohnzimmer_TV_Licht off)