Prüfung eines Bedingungsteiles im DOIF

Begonnen von Marko1976, 18 Januar 2025, 18:36:44

Vorheriges Thema - Nächstes Thema

Marko1976

Ich habe für meine Balkonbeleuchtung einen Außen-LED-Stripe montiert und schalte den Morgens und Abends.
Morgens vomWecker bis zum Sonnenaufgang. Zur Zeit kommt es Morgens aber immerwieder mal vor, dass gerade am Wochenende der Wecker zeitpunkt erst nach dem Sonnenaufgang ist und FHEM somit den Ausschaltzeitpunkt auf den nächsten Tag legt.
Ich müsste also theoretisch in der Bedinung prüfen ob der Weckzeitpunkt vor dem Sonnenaufgang liegt oder danach und bei danach den Bedingungsteil deaktivieren.

Zur Zeit sieht mein Code wie folgt aus und funktioniert bis auf die Einschränkung:
((([[Marion_S21Ultra:nextAlarmTime]-({sunrise()}+300+int(rand(600)))]) and ([sensor_wz_tuergriff_balkontuer] ne "open")) or (([[Marko_S21Ultra:nextAlarmTime]-({sunrise()}+300+int(rand(600)))]) and ([sensor_wz_tuergriff_balkontuer] ne "open")) or (([({sunset()}-1200)-01:00]) and ([sensor_wz_tuergriff_balkontuer] ne "open")))
(set HUEGroup84 scene [HUEGroup84:sollwert])
Also Morgens zwischen dem ersten Wecker (Marion) und Sonnenaufgang oder dem zweiten Wecker (Marko) und Sonnenaufgang oder Sonnenuntergang bis 01:00 Uhr Nachts in Kombination mit dem Türgriff.

Hat vielleicht jemand eine Idee wie ich das Problem umgehen kann?

Damian

Mit dieser Konstruktion wird das Intervallende durch den Wecker begrenzt:
   
([[Marion_S21Ultra:nextAlarmTime]-{sunrise('CIVIL',300+rand(600),'[Marion_S21Ultra:nextAlarmTime]')}] and ...

Wenn der Wecker später ist als der Sonnenaufgang, dann ist der Begin und des Ende des Intervalls gleich. Im DOIF werden Intervalle mit gleichem Begin und Ende ignoriert.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF