sunset-sunrise Außergewöhnlichkeit

Begonnen von holle75, 04 November 2017, 09:45:41

Vorheriges Thema - Nächstes Thema

holle75

Hallo Ihr, habe eine Nachtschaltung für das Licht gebastelt:

cfg
define NachtschaltungDOIF DOIF ([{sunset("REAL",0,"16:00","22:00")}-{sunrise_abs()}] and [AnwesenheitHaupt:state] eq "present") \
(set Structure_Nachtlicht on, set ZirkusOben_LICHT_Anbau_Stehlampe on) \
DOELSE (set Structure_Nachtlicht off, set ZirkusOben_LICHT_Anbau_Stehlampe off)
attr NachtschaltungDOIF devStateIcon disabled:general_aus@red:initialize initialize:general_an@yellow:disable initialized:general_an@yellow:disable cmd_1:general_an@green:disable cmd_2:general_an@yellow:disable
attr NachtschaltungDOIF group System
attr NachtschaltungDOIF room System,Anwesenheit
attr NachtschaltungDOIF sortby 008


Das Interessante jetzt ist, dass wenn wir nach Sonnenuntergang nach Hause kommen (bisher vor 24:00) die Nachtschaltung brav das List anschaltet, wir es dann wenns Richtung Bett geht ausschalten ..... aber Morgens für ein paar Minuten das Licht nochmals an und dann wieder aus geht. Wenn wir wenn Sunset greift zu Hause sind, passiert das nicht (oder wir habens noch nicht mitbekommen).

Jemand eine Spontanidee?

Gruß

H.

Ellert

Ds ist ein bekanntes Verhalten, sunrise_abs von heute liegt später als sunrise_abs von gestern, daher wird der Zeitraum nach der Neuberechnung des Timers kurz wahr, weil die berechnete Ausschaltzeit, ein paar Minuten später liegt.

holle75

Danke dir Ellert, gibts da auch schon einen schlauen workaround?

Ellert

Nicht mit DOELSE arbeiten sondern mit DOELSEIF und der entsprechenden Bedingung.

holle75

Mmh, wüßte ich in diesem Fall nicht wie. Das Nachtlicht soll ja auch angehen, wenn ich nach Sonnenuntergang nach Hause komme.

Ellert

Dann mache die Zeitspanne nicht triggernd und verodere Anwesendheit mit Sonnenuntergang

holle75

Du bist mir zu schnell ...

DOIF ?Zeitspanne and (Sonnenuntergang or Anwesenheit) \
     (Licht an)
DOELSEIF Sonnenaufgang \
    (Licht aus)


macht auch Licht an wenn ich nicht anwesend bin


DOIF ?Zeitspanne or (Sonnenuntergang and Anwesenheit) \
     (Licht an)
DOELSEIF Sonnenaufgang \
    (Licht aus)


macht keinen Sinn. Wie muß ich deinen Satz verstehen? ;)

Ellert

Das hast Du richtig verstanden und ich habe Dich mit dem "auch" missverstanden.

Also entweder Du experimentierst noch etwas mit den Bedingungen oder wartest bis die Tage wieder länger werden. ;)

Alternativ kannst Du indirekte Timer für das Ende einer Zeitspanne verwenden und diese nach Mitternacht aktualisieren mit einem extra DOIF.

holle75

.... ich glaube, ich akzeptiere einfach die morgendliche Disco. Es ist ja alles auzuhalten, wenn man weiß, dass es kein Fehler ist :D

Nee, werde bei Gelegenheit mal zwei Dummies Mittags befüllen. Die brauch ich sowieso an anderer Stelle und dann ist das ein Aufwasch.

Aber nochmal zum genaueren Verständnis: Bei Sonnenauf -untergang wird dann genau zu der Zeit neuberechnet und dadurch ..... wenn ich Mittags die Dummies festlege sollte das Problem gelöst sein?


Danke dir und Gruß

H.

Damian

ersetze mal sunrise_abs() durch sunrise(), das sollte schon helfen. Den Unterschied kannst du hier nachlesen: https://fhem.de/commandref.html#SUNRISE_EL
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

holle75


holle75

Auch so:

([{sunset("REAL",0,"16:00","22:00")}-{sunrise(0,"04:00","09:00")}] and [AnwesenheitHaupt:state] eq "present")
(set Structure_Nachtlicht on, set ZirkusOben_LICHT_Anbau_Stehlampe on)
DOELSE (set Structure_Nachtlicht off, set ZirkusOben_LICHT_Anbau_Stehlampe off)


geht morgens das Licht für 1-2 Minuten an. Es wundert mich ein wenig, dass nur ich das Problem habe. Sonnenuntergang bis Aufgang sollte doch eigentlich keine seltene Anforderung sein? Noch Ideen jemand? Was haltet ihr von der Idee zwei Dummies Mittags zu befüllen und diese als Zeitgeber einzusetzen?

Brockmann

Wie wäre es so?


(([{sunset("REAL",0,"16:00","22:00")}) or [?{sunset("REAL",0,"16:00","22:00")}-{sunrise(0,"04:00","09:00")}]) and [AnwesenheitHaupt:state] eq "present")
(set Structure_Nachtlicht on, set ZirkusOben_LICHT_Anbau_Stehlampe on)
DOELSE (set Structure_Nachtlicht off, set ZirkusOben_LICHT_Anbau_Stehlampe off)

Dann wird bei Sonnenuntergang eingeschaltet, wenn "present".
Ansonsten ist das Intervall nicht-triggernd, also wird nur durch Änderungen bei der Anwesenheit getriggert.
Das "Problem" beim verschobenen Sonnenaufgang gäbe es dann nicht mehr.
Allerdings ginge das Licht so morgens nicht aus, was ja aber auch nicht nötig ist, wenn ich es recht verstanden habe?

holle75

Danke Brockmann fürs mitdenken. Allerdings hätte ich es doch gerne auch automatisch ausgehend (ich nutze ein ähnliches DOIF an anderer Stelle für die Parkbeleuchtung). Ich bastel jetzt mal was mit den zwei zum Mittag befüllten Dummies, teste und berichte.

Per

Zitat von: holle75 am 08 November 2017, 18:05:17Was haltet ihr von der Idee zwei Dummies Mittags zu befüllen und diese als Zeitgeber einzusetzen?
Ich habe ein DOIF verwendet und dieses mit sunrise/sunset befüllt, allerdings ohne Zeitraum drumrum. Dieser kommt erst in den jeweils nutzenden DOIF dazu.
Vorteil: man kann auch in der Übersicht den aktuellen Zustand sehen, inlk. der nächsten Schaltzeiten.