Schönen guten Tag,
ich habe einige Bewegungsmelder (BwM) bei mir verstreut.
Diese sollen unter anderen das Licht steuern.
Mein erster Ansatz war eine Kombination aus ,,on-for-timer" und wait hatte das Problem das ich öfters mal im Dunkeln stand. Der Grund war die 1% Regelung (Duty_Cycle).
Jetzt war meine Überlegung dass wenn der BwM nomotion gesendet hat und sich der Wert über eine Zeit von X sec nicht wieder auf motion geändert hat soll ein off gesendet werden.
Wenn ich es richtig verstanden habe kann ich mein DoIF mit ReadingsAge so anpassen das dies funktioniert.
Leider klappt es nicht wie vorgesehen.
Habt einer von euch eine Idee?
([BwM_EG_Flur_Lux:lux] < "13" and [BwM_EG_Flur] eq "motion" and ([HM_Eingang] eq "off" and [Roomba966:cleanMissionStatus-phase] ne "run") (set HM_Eingang on)
DOELSEIF
([BwM_EG_Flur] eq "nomotion" and ReadingsAge("BwM_EG_Flur","state","nomotion") > 5 and [EG_Flur_Beleuchtung_DOIF] eq "cmd_1") (set HM_Eingang off)
LG
Dennis
Wie soll das gehen (also mit DOIF)?
Der BWM triggert auf nomotion und da prüfst du, ob nomotion bereits einige zeit her ist?
-> NEIN, weil nomotion kam ja gerade erst -> Trigger des DOIF
Danach wird ja nicht mehr getriggert...
EDIT: watchdog könnte auch noch gehen...
Du könntest das mit einem notify machen, dort dann ein at (oder [named] sleep) und erneut prüfen, ob immer noch nomotion (und wie lange schon -> ReadingsAge).
Und erst dann reagieren...
Warum schaltest du nicht einfach bei motion ein und bei nomotion aus?
Statt (so vermute ich) immer mit motion erneut "on-for-timer"?
Gruß, Joachim
ZitatLeider klappt es nicht wie vorgesehen.
Habt einer von euch eine Idee?
Hallo Dennis,
ja ich habe eine: ReadingsAge ist eine PERL-Funktion - dann musst du das DOIF auch im PERL-Modus verwenden.
Und ich hab noch eine: Schau dir mal das Modul
"Homezone" an. Das verwenden einige für genau das: Steuerung u.a. Licht mit Hilfe von Bewegungsmeldern.
Hier mal als Beispiel einer meiner Flure:
defmod flk_zone homezone
attr flk_zone userattr hz_decay_afternoon hz_decay_day hz_decay_evening hz_decay_morning hz_decay_night hz_decay_sr hz_decay_ss hz_decay_sr hz_decay_ss :textField-long :textField-long :textField-long :textField-long hz_cmd_present:textField-long hz_lumiThreshold_present hz_cmd_likely:textField-long hz_lumiThreshold_likely hz_cmd_unlikely:textField-long hz_lumiThreshold_unlikely hz_cmd_absent:textField-long hz_lumiThreshold_absent
attr flk_zone hz_absenceEvent Wohnung:presence:.absent
attr flk_zone hz_cmd_absent set HM_Eingang off
attr flk_zone hz_cmd_likely IF ([Roomba966:cleanMissionStatus-phase] ne "run") (set HM_Eingang on)
attr flk_zone hz_dayTimes 03:30|backup 05:00|morning 10:00|day 14:00|afternoon 18:00|evening 23:00|night
attr flk_zone hz_decay 180
attr flk_zone hz_luminanceReading flk_huesens_light:lux
attr flk_zone hz_occupancyEvent flk_bwm:state:.motion
attr flk_zone hz_state 100:present 50:likely 1:unlikely 0:absent
Ich war so frei und habe deine Befehle in likely und absent eingetragen. ;)
VG Sebastian
Dafür bietet sich das Attribut do resetwait an:
DOIF (<Bewegung>) (set lamp on) (set lamp off)
attr do resetwait 0,300
Hiebei wird bei Bewegung der Befehl "set lamp on" nicht wiederholt.
Vielen Dank für die Antworten und Anregungen.
Über das Homezone Modul bin ich auch schon gestoßen. Das war mir aber jetzt gerade zu komplex, da ich beruflich gerade viel um zu tun habe.
Ich habe die Idee von Damian aufgegriffen und für mich angepasst. Ich musste jedoch noch ein "repeatsame 1" hinzufügen da es sonst leider doch mehrfach gesendet hat.
Hier noch meine Umsetzung falls es jemand anderen hilft.
P.S. Ich habe mir noch einen dummy eingefügt um das Licht wenn gewünscht auch Manuell einfach wieder zu schalten wenn es benötigt wird.
define EG_Flur_Beleuchtung_DOIF DOIF
([BwM_EG_Flur_Lux:lux] < "13" and \
[BwM_EG_Flur] eq "motion" and \
[EG_Licht] eq "Auto" and \
[Roomba966:cleanMissionStatus-phase] ne "run") \
(set HM_Eingang on)\
DOELSEIF \
([BwM_EG_Flur] eq "nomotion" and \
[EG_Licht] eq "Auto") \
(set HM_Eingang off)\
attr EG_Flur_Beleuchtung_DOIF do resetwait
attr EG_Flur_Beleuchtung_DOIF repeatsame 1
attr EG_Flur_Beleuchtung_DOIF room System
attr EG_Flur_Beleuchtung_DOIF wait 00:150
Ich habe mir noch einen dummy eingefügt um das Licht wenn gewünscht auch Manuell einfach wieder zu schalten wenn es benötigt wird.