Hallo ins Forum,
ich habe auf meinem Raspi und FHEM folgenden DoIf Befehl:
DOELSEIF\
(( [BewMelder1:brightness] < [Grenzwert_Licht_zu_Innenlicht:state]\
and\
[16:00-21:30])\
or\
[21:30]\
)\
({Licht_Innenlicht_an})\
DOELSEIF\
(( [BewMelder1:brightness] < [Grenzwert_Licht_zu_Gartenlicht:state]\
and\
[16:10-21:40])\
or\
[21:40]\
)\
({Licht_Garten_an})\
DOELSEIF\
(( [BewMelder1:brightness] < [Grenzwert_Licht_zu_Rolladen:state]\
and\
[16:30-22:00])\
or\
[22:00]\
)\
({Rolladen_abends})\
Die Grenzwerte sind alle in absteigender Reihenfolge also Innenlicht: 150; Gartenlicht: 120 und Rolladen: 100
Ich hatte gehofft, dass ich damit folgendes realiseren kann:
1. Innenlicht geht irgendwann zwischen 16:00 Uhr und 21:30 Uhr an, sofern die Lichtmenge des Bewegungsmelders unter dem Grenzwert (150) ist. Spätestens um 21:30 Uhr soll das Innenlicht auf jeden Fall angehen
2. GartenLicht soll nach obigem Muster irgendwann zwischen 16:10 und 21:40, je nach Grenzwert (120) ausgelöst werden
usw.
Leider funktioniert nur der erste Teil richtig. Das GartenLicht wird frühestens "getriggert", wenn 21:30 Uhr vorbei ist und das erste "Reading" vom Bewegungsmelder kommt. Dieses kann dann auch schon eine Stunde unter dem definierten Grezwert sein Gleiches gilt für den Rolladen. Frühester Trigger ist erstes Reding nach 21:40 Uhr, egal wie tief das Reading der Helligkeit vorher war.
Habe ich das DoIf nicht richtig verstanden, da ich dachte, alle Bedingungen werden "überwacht" und bei einem "Trigger" (z.B. Grenzwert wird unterschritten) werden die anderen Bedingungen geprüft. Bei mir muss alerrdings erst die Zeitspanne "abgelaufen" sein, damit die Überprüfung wieder startet.
Ich kann jetzt natürlich zwei weitere DoIf deklarieren, aber das ist ja eigentlich nicht der Sinn der Sache, oder doch (und ich habe das Ganze falsch verstanden)?
Gruss
Andreas