[GELÖST] DOIF - Zeitspannen über Mitternacht

Begonnen von SirBen, 19 Dezember 2019, 16:28:53

Vorheriges Thema - Nächstes Thema

SirBen

Moin,
ich habe ein Problem mit einer Zeitlichen Steuerung von meiner Außenbeleuchtung.
Dieses DOIF habe ich angelegt:
([23:00-05:15|01234] or [23:00-07:00|56] or [{sunrise("REAL")}-{sunset("REAL")}])
(set ESPEasy_HWR_Dachbeleuchtung.* off)
DOELSE
(set ESPEasy_HWR_Dachbeleuchtung.* on)


Es soll Mo-Fr 05:15 eingeschaltet werden (außer die Sonne ist bereits aufgegangen) und Sa-So um 07:00.

Es funktioniert leider am Sonntag nicht richtig. Die Beleuchtung wird nicht um 07:00 eingeschaltet.
Was habe ich falsch gemacht?

Danke schon mal für die Hilfe!
Ben

P.S.: Ich habe das Ausschalten zeitlich definiert, weil es andersherum zu Fehlern kommt mit dem Sonnenaufgang. Im Sommer geht die Sonne vor 05:15 auf.

EDIT: Am Freitag geht das Licht erst um 07:00 an, anstatt um 05:15. Am Sonntag weder um 07:00 noch um 05:15.

Damian

Zitat aus der Commandref:

ZitatZeitintervalle über Mitternacht:

define di_light DOIF ([22:00-07:00]) (set light on) DOELSE (set light off)

in Verbindung mit Wochentagen (einschalten am Freitag ausschalten am Folgetag):

define di_light DOIF ([22:00-07:00|5]) (set light on) DOELSE (set light off)

Zeitintervalle über mehrere Tage müssen als Zeitpunkte angegeben werden.

Einschalten am Freitag ausschalten am Montag:

define di_light DOIF ([22:00|5]) (set light on) DOELSEIF ([10:00|1]) (set light off)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

SirBen

Das habe ich gelesen. Ist denn von Sa 23:00 auf Sonntag 07:00 mehrere Tage?

Damian

Zitat von: SirBen am 19 Dezember 2019, 16:47:57
Das habe ich gelesen. Ist denn von Sa 23:00 auf Sonntag 07:00 mehrere Tage?

ja: Samstag und Sonntag
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

SirBen

Zitatin Verbindung mit Wochentagen (einschalten am Freitag ausschalten am Folgetag):

define di_light DOIF ([22:00-07:00|5]) (set light on) DOELSE (set light off)

Das habe ich meiner Meinung nach umgesetzt. 23:00-07:00|6 bedeutet doch von Samstag 23:00 bis zum Folgetag (Sonntag) 07:00, oder irre ich mich da?

amenomade

Ich verstehe etwas nicht:
[23:00-05:15|01234] or [23:00-07:00|56]bedeutet am Nacht, aber
[{sunrise("REAL")}-{sunset("REAL")}] bedeute am Tag

Ist das wirklich so gewünscht? Was ist die Logik?

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

SirBen

Die Logik ist in der Nacht zwischen 23 Uhr und 05:15 bzw. 07:00 am Wochenende und am Tag braucht das Licht nicht eingeschaltet zu sein.
Das Licht soll nur in der Phase zwischen Sonnenuntergang und 23:00 - und von 05:15/07:00 bis zum Sonnenaufgang eingeschaltet sein.
Im Sommer ist der Sonnenaufgang aber vor 05:15/07:00, weshalb ich die Ausschaltzeit im DOIF deklariert habe.

xenos1984

Und wie wäre es, wenn du statt der Ausschaltzeiten die Einschaltzeiten als DOIF Abfrage angeben würdest, also von Sonnenuntergang bis 23:00 und von xx:xx morgens bis Sonnenaufgang? Von denen geht keine über Mitternacht.

amenomade

Zitat von: SirBen am 19 Dezember 2019, 21:44:57
Die Logik ist in der Nacht zwischen 23 Uhr und 05:15 bzw. 07:00 am Wochenende und am Tag braucht das Licht nicht eingeschaltet zu sein.
Das Licht soll nur in der Phase zwischen Sonnenuntergang und 23:00 - und von 05:15/07:00 bis zum Sonnenaufgang eingeschaltet sein.
Im Sommer ist der Sonnenaufgang aber vor 05:15/07:00, weshalb ich die Ausschaltzeit im DOIF deklariert habe.

Ok, klingt doch logisch.

Zitat von: xenos1984 am 19 Dezember 2019, 21:51:12
Und wie wäre es, wenn du statt der Ausschaltzeiten die Einschaltzeiten als DOIF Abfrage angeben würdest, also von Sonnenuntergang bis 23:00 und von xx:xx morgens bis Sonnenaufgang? Von denen geht keine über Mitternacht.
Dann müsste er aber kalkulieren, was zuerst kommt: Zeitdefinition oder Sonnenaufgang: wenn Sonnenaufgang vor 7 Uhr ist, geht doch "von xx:xx morgens bis Sonnenaufgang" über Mitternacht... und auch über den ganzen Tag
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

SirBen

Beim Durchsuchen der Logeinträge ist mir noch aufgefallen, dass am Freitag das Licht erst um 07:00 eingeschaltet wird.
0-6 ist doch immer Sonntag-Samstag, oder kann das aufgrund der lokalen Einstellung im System anders sein? Wenn das System z.B. auf deutsch umgestellt ist?

amenomade

Ne, das ist Perl. 0 ist immer Sonntag
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

SirBen

Lang lang ist's her, aber ich habe mich noch mal mit dem Thema beschäftigt.
Falls es jemand gebrauchen kann, hier das funktionierende DOIF:
([23:00] or [{sunrise("REAL")}])
(set Zentrale Dachueberstand off, {Log 1,"Licht aus"})
DOELSEIF
(((([05:15] and !$we) or ([07:00] and $we)) and ![{sunrise("REAL")}-{sunset("REAL")}]) or [{sunset("REAL",0,"","22:59")}])
(set Zentrale Dachueberstand on, {Log 1,"Licht an"})

Falls jemand den Fehler im ursprünglichen DOIF finden sollte, wäre ich daran auch weiterhin interessiert.

Danke und Gruß
Ben

Damian

Zitat von: SirBen am 04 April 2020, 20:21:01
Lang lang ist's her, aber ich habe mich noch mal mit dem Thema beschäftigt.
Falls es jemand gebrauchen kann, hier das funktionierende DOIF:
([23:00] or [{sunrise("REAL")}])
(set Zentrale Dachueberstand off, {Log 1,"Licht aus"})
DOELSEIF
(((([05:15] and !$we) or ([07:00] and $we)) and ![{sunrise("REAL")}-{sunset("REAL")}]) or [{sunset("REAL",0,"","22:59")}])
(set Zentrale Dachueberstand on, {Log 1,"Licht an"})

Falls jemand den Fehler im ursprünglichen DOIF finden sollte, wäre ich daran auch weiterhin interessiert.

Danke und Gruß
Ben
Es ist kein Fehler, Zeitintervalle beim Wechsel des Wochentags funktionieren nicht. Man muss den Einschalt- und den Ausschaltzeitpunkt separat definieren, so wie es in der Commandref steht (siehe zweiter Post hier). Das hast du jetzt auch gemacht.

Damit es mit Intervallen funktioniert, müsste für den Einschaltzeitpunkt ein anderer Wochentag definierbar sein, als für den Ausschaltzeitpunkt. Z. B.

[23:00|Fr-08:00|Sa]

Das ist aber bisher im DOIF nicht realisiert.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF