Hallo,
ich habe ein Problem mit einer Lichtsteuerung in Verbindung mit einem Bewegunsgmelder. Trotz erneuter Bewegung im Bad geht das Licht aus und ich kann den Fehler im DOIF trotz vieler Versuche nicht finden.
Installation:
Aquara Bewegungsmelder der zu den Ereignissendungen noch zyklisch alle 60 Sec. einen Datensatz (occupancy, illuminancy) sendet, wenn kein Erigniss aufgetreten ist. Wurde in der Web-Oberfläche des Aquara eingestellt.
Lichtschalter ist ein Dimmer von Homematic (HmIP-BDT)
Das DOIF:
([Aquara_Motion_Bad_OG:occupancy] eq "true" and [?23:50-05:00])
(set Licht_BadOG_Spiegel_HmIP pct 40 0 15)
(set Licht_BadOG_Spiegel_HmIP off)
DOELSEIF ([Aquara_Motion_Bad_OG:occupancy] eq "true" and [?Aquara_Motion_Bad_OG:illuminance] < 80 and [?05:01-23:49])
(set Licht_BadOG_Spiegel_HmIP pct 100 0 8)
(set Licht_BadOG_Spiegel_HmIP off)
Attributes:
comment 03.10.22: HM-Sensor durch Aquara ausgetauscht
do resetwait
group Licht
room 2.1_OG_Bad,9.8.1_DOIF
wait 0,80:0,80
cmd1 soll in der Nacht das Licht nicht ganz so hell schalten
cmd2 ist für tagsüber
Das DOIF ist mit wait für die Tests auf 80 Sec. eingestellt. Normalerweise auf 20 Minuten.
Das List:
2022-10-15_11:42:30 Aquara_Motion_Bad_OG occupancy: true
2022-10-15_11:42:30 Aquara_Motion_Bad_OG illuminance: 55
2022-10-15_11:42:30 Licht_BadOG_Spiegel_HmIP pct 100 0 8
2022-10-15_11:42:30 di_Bad_OG_Licht_Spiegel cmd_nr: 2
2022-10-15_11:42:30 di_Bad_OG_Licht_Spiegel cmd_seqnr: 1
2022-10-15_11:42:30 di_Bad_OG_Licht_Spiegel cmd: 2.1
2022-10-15_11:42:30 di_Bad_OG_Licht_Spiegel cmd_event: Aquara_Motion_Bad_OG
2022-10-15_11:42:30 di_Bad_OG_Licht_Spiegel state: cmd_2_1
2022-10-15_11:42:30 di_Bad_OG_Licht_Spiegel wait_timer: 15.10.2022 11:43:50 cmd_2_2 Aquara_Motion_Bad_OG
2022-10-15_11:43:30 Aquara_Motion_Bad_OG occupancy: false
2022-10-15_11:43:30 Aquara_Motion_Bad_OG illuminance: 55
2022-10-15_11:43:44 Aquara_Motion_Bad_OG occupancy: true
2022-10-15_11:43:44 Aquara_Motion_Bad_OG illuminance: 93
2022-10-15_11:43:50 di_Bad_OG_Licht_Spiegel wait_timer: no timer
2022-10-15_11:43:50 Licht_BadOG_Spiegel_HmIP off
2022-10-15_11:43:50 di_Bad_OG_Licht_Spiegel cmd_nr: 2
2022-10-15_11:43:50 di_Bad_OG_Licht_Spiegel cmd_seqnr: 2
2022-10-15_11:43:50 di_Bad_OG_Licht_Spiegel cmd: 2.2
2022-10-15_11:43:50 di_Bad_OG_Licht_Spiegel cmd_event: Aquara_Motion_Bad_OG
2022-10-15_11:43:50 di_Bad_OG_Licht_Spiegel state: cmd_2
Um 11:42:30 wurde die Bewegung erkannt und das Licht eingeschalten. Sollte nach wait um 11.43:50 wieder ausgehen. Obwohl um 11:43:44 eine neue Bewegung erkannt wurde, ging das Licht um 11:43:50 trotzdem aus.
Hat jemand eine Idee, woran das liegt?
Grüße Jürgen
Das Problem wird vermutlich dieses Event sein:
ZitatAquara_Motion_Bad_OG occupancy: false
Du solltest die Abfrage auf reine Event-Abfrage umstellen:
...
DOELSEIF (["^Aquara_Motion_Bad_OG$:^occupancy: true"] and [?Aquara_Motion_Bad_OG:illuminance] < 80 and [?05:01-23:49])
...
Hallo Damian,
habe nur cmd2 umgestellt, da nur dieses zu der Uhrzeit ansprechen kann aber das Resultat ist dasselbe. Obwohl occupancy true gesendet wird bevor das Licht ausgeht, wird nicht neu getriggert.
Das DOIF zur Kontrolle:
([Aquara_Motion_Bad_OG:occupancy] eq "true" and [?23:50-05:00])
(set Licht_BadOG_Spiegel_HmIP pct 40 0 15)
(set Licht_BadOG_Spiegel_HmIP off)
DOELSEIF (["^Aquara_Motion_Bad_OG$:^occupancy: true"] and [?Aquara_Motion_Bad_OG:illuminance] < 20 and [?05:01-23:49])
(set Licht_BadOG_Spiegel_HmIP pct 100 0 8)
(set Licht_BadOG_Spiegel_HmIP off)
DOELSEIF ([Licht_BadOG_Spiegel_HmIP:state] eq "off" and ([?$SELF:cmd_nr] ne "1" or [?$SELF:cmd_nr] ne "2"))
(set Licht_BadOG_Spiegel_HmIP pct 0 0 10)
und das List dazu:
2022-10-15_19:58:28 Aquara_Motion_Bad_OG occupancy: true
2022-10-15_19:58:28 Aquara_Motion_Bad_OG illuminance: 0
2022-10-15_19:58:28 Licht_BadOG_Spiegel_HmIP pct 100 0 8
2022-10-15_19:58:28 di_Bad_OG_Licht_Spiegel cmd_nr: 2
2022-10-15_19:58:28 di_Bad_OG_Licht_Spiegel cmd_seqnr: 1
2022-10-15_19:58:28 di_Bad_OG_Licht_Spiegel cmd: 2.1
2022-10-15_19:58:28 di_Bad_OG_Licht_Spiegel cmd_event: Aquara_Motion_Bad_OG
2022-10-15_19:58:28 di_Bad_OG_Licht_Spiegel state: cmd_2_1
2022-10-15_19:58:28 di_Bad_OG_Licht_Spiegel wait_timer: 15.10.2022 19:59:48 cmd_2_2 Aquara_Motion_Bad_OG
2022-10-15_19:59:28 Aquara_Motion_Bad_OG illuminance: 0
2022-10-15_19:59:28 Aquara_Motion_Bad_OG occupancy: false
2022-10-15_19:59:39 Aquara_Motion_Bad_OG occupancy: true
2022-10-15_19:59:39 Aquara_Motion_Bad_OG illuminance: 38
2022-10-15_19:59:48 di_Bad_OG_Licht_Spiegel wait_timer: no timer
2022-10-15_19:59:48 Licht_BadOG_Spiegel_HmIP off
2022-10-15_19:59:48 di_Bad_OG_Licht_Spiegel cmd_nr: 2
2022-10-15_19:59:48 di_Bad_OG_Licht_Spiegel cmd_seqnr: 2
2022-10-15_19:59:48 di_Bad_OG_Licht_Spiegel cmd: 2.2
2022-10-15_19:59:48 di_Bad_OG_Licht_Spiegel cmd_event: Aquara_Motion_Bad_OG
2022-10-15_19:59:48 di_Bad_OG_Licht_Spiegel state: cmd_2
Aus irgendeinem Grund triggert das occupancy true nicht während der Timer noch läuft. Noch eine Idee?
Gruß Jürgen
Dann probiere es erstmal nur mit einem Zweig
DOIF (["^Aquara_Motion_Bad_OG$:^occupancy: true"] and [?Aquara_Motion_Bad_OG:illuminance] < 20 and [?05:01-23:49])
(set Licht_BadOG_Spiegel_HmIP pct 100 0 8)
(set Licht_BadOG_Spiegel_HmIP off)
Habe die Abfrage nur auf die Abfrage des Bewegungssensors reduziert und siehe da: Es ging.
Die Lösung lag in der nicht vollständig durchdachten Logik.
Wenn der Bewegungsmelder eine Bewegung erkennt und es im Bad dunkel ist, geht das Licht an. Wenn es dann aber im Bad durch das eingeschaltete Licht hell ist und eine weitere Bewegung erkannt wird kann das DOIF nicht mehr triggern. Diese Abfrage and [?Aquara_Motion_Bad_OG:illuminance] < 20
verhindert das dann.
Habe es jetzt auf folgenden Code geändert und es scheint zu gehen. Zudem ist das DOIF noch übersichtlicher geworden.
(["^Aquara_Motion_Bad_OG$:^occupancy: true"] and ([?Aquara_Motion_Bad_OG:illuminance] < 20 or [?Licht_BadOG_Spiegel_HmIP:state] eq "on"))
(IF ($hms gt "05:01" and $hms lt "23:49") (set Licht_BadOG_Spiegel_HmIP pct 100 0 8) ELSE (set Licht_BadOG_Spiegel_HmIP pct 40 0 15)) (set Licht_BadOG_Spiegel_HmIP off)
Noch eine Info für Benutzer desselben Aquara-Bewegungsmelders RTCGQ11LM:
Der occupancy_timeout unter Einstellungen (spezifische) legt nur fest, wann nach einem Senden von "true" ein "false" gesendet wird. Es beeinflusst nicht das Senden eines weiteren "true" bei einer erkannten Bewegung, wie ich angenommen hatte. Bei meinen Versuchen wurde ein weiteres "true" frühestens 60 Sekunden nach dem letzten "true" gesendet, auch wenn ständig Bewegung vor dem Sensor war
Besten dank für die Hilfe
Grüße Jürgen