FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Johnnyflash am 11 Dezember 2017, 08:59:57

Titel: Überlappende Zeitintervalle
Beitrag von: Johnnyflash am 11 Dezember 2017, 08:59:57
Hallo,
ich möchte ein DOIF einsetzen, um bei Sonnenaufgang bei einem Raffstore zunächst die Lamellen zu öffnen, später soll es vollständig geöffnet werden. Meine Idee sah so aus:

([{max("16:00",min("[T:ss_indoor]","21:30"))}-{max("08:00",min("[T:sr_indoor]","10:00"))}])
(set EG.Eingang.Raffstore closes)
DOELSEIF
([[T:ss]-11:00])
(set EG.Eingang.Raffstore 100 0)
DOELSE
(set EG.Eingang.Raffstore opens)


Oder etwas einfacher zu lesen mit den berechneten Zeiten:


([16:51:27-8:00:00])
(set EG.Eingang.Raffstore closes)
DOELSEIF
([16:12:33-11:00])
(set EG.Eingang.Raffstore 100 0)
DOELSE
(set EG.Eingang.Raffstore opens)


Das funktioniert leider nicht, da die Triggerzeit bei verlassen des ersten DOIF-Zweigs schon um ist. Was ist die einfachste Möglichkeit das umzusetzen?

Grüße
Philipp
Titel: Antw:Überlappende Zeitintervalle
Beitrag von: Per am 11 Dezember 2017, 12:10:53
Hast du es mal mit der unteren Definition probiert?
Titel: Antw:Überlappende Zeitintervalle
Beitrag von: Damian am 11 Dezember 2017, 12:36:24
Warum arbeitest du hier mit Zeitintervallen?

Du kannst für die drei verschiedenen Zustände einfach drei Zeitpunkte definieren.
Titel: Antw:Überlappende Zeitintervalle
Beitrag von: Johnnyflash am 11 Dezember 2017, 13:58:22
Stimmt, in diesem Fall ist es mit Zeitpunkten kein Problem. So sollte es funktionieren:
([[T:ss]] or [{max("08:00",min("[T:sr_indoor]","10:00"))}])
(set EG.Eingang.Raffstore 100 0)
DOELSEIF
([{max("16:00",min("[T:ss_indoor]","21:30"))}])
(set EG.Eingang.Raffstore closes)
DOELSEIF
([11:00])
(set EG.Eingang.Raffstore opens)


Ich habe allerdings in einem anderen Raum das Problem, dass ich dort demnächst wahrscheinlich noch Fensterkontakte für die Schiebetür montiere. Wie würdest du das am elegantesten lösen?
Titel: Antw:Überlappende Zeitintervalle
Beitrag von: Damian am 11 Dezember 2017, 14:53:36
Es kommt drauf an, was du vorhast, wenn du nur per Fensterkontakt die Bewegung deines Raffstore verhindern willst, dann brauchst du nur die Abfrage des Kontaktes überall mit and zu verknüpfen.