Hallo,
ich habe folgendes Szenario bzw. ich möchte folgendes erreichen...
Ich steuere mit dem Homematic-Dimmer HM-LC-Dim2t-SM ein Lampenpaar an.
Diese sollen im "Normalzustand" gedimmt sein.
Wird nun der Bewegungsmelder (HM-Sen-MDIR-O) getriggert, sollen die Lampen auf 100% gestellt werden und nach 60 Sekunden wieder auf deren alten Wert.
bisher habe ich folgendes:
define Bewegung notify Bewegungsmelder:motion {if( ReadingsVal ("Bewegungsmelder","brightness",0) < 100 ){my $dimmlevel = ReadingsVal ("Eingangsbeleuchtung","level",0);; fhem ("set Eingangsbeleuchtung on;; sleep 60;; set Eingangsbeleuchtung pct $dimmlevel");;}}
Das Problem ist, dass wenn innerhalb der 60Sek. erneut der Bewegungsmelder eine Bewegung meldet, wird anstatt des vorhigen (gedimmten) Wertes der Wert auf 100% gesetzt.
Das sich der 100%-Zustand um weitere 60Sek. verlängert, wenn erneut eine Bewegung festgestellt wurde, ist ja auch gut. Allerdings sollte spätestens 60 sek. nach der letzten "am-Stück-Bewegung" der alte Wert angenommen werden.
Ich steh etwas auf dem Schlauch bzw. bin derzeit noch nicht sehr in der fhem-scripting-Syntax drin.
Ich hatte schon daran gedacht, das man beim readingsVal des "origial" dimmwertes prüft ob die letzte Bewegung schon älter als 60 Sek. ist und nur dann den Wert speichert.
Dazu müsste man sich den timestamp vom vorherigen Trigger in einen dummy oder so schreiben und dann hier gegenprüfen.
Allerdings habe ich das noch nicht hinbekommen.
Evtl. könnt ihr mir ja helfen.
gruß
Jan