Hauptmenü

HM-Sen-MDIR-WM55 und DOIF

Begonnen von chrille76, 17 Dezember 2016, 13:52:31

Vorheriges Thema - Nächstes Thema

chrille76

Hallo,

ich befasse mich erst seit Kurzem mit FHEM und noch kürzer mit der Einbindung von Homematic-Komponenten. Im Moment versuche ich gerade, genannten Bewegungsmelder einzubinden. Dazu habe ich ein DOIF entsprechend der Commandref angelegt.
Zitatdefine di_on_for_timer ([detector:"motion"])
(set light on)
(set light off)
attr di_on_for_timer do resetwait
attr di_on_for_timer wait 0,30

Sieht dann bei mir so aus:
define di_wz_light_motion DOIF ([?[twilight:ss_civil]-[twilight:sr_civil]] and [WZ.HM_Sen_MDIR_WM55_Motion:"motion"])
    (set HUEGroup4 scene tD9vmHnIpLhu-O-)
    (set HUEGroup4 off)
attr di_wz_light_motion do resetwait
attr di_wz_light_motion wait 0,60


Nun zu meinen Fragen/Problemen.

  • Funktioniert das überhaupt, wenn minInterval des Bewegungsmelders größer oder gleich 60 ist? So wie ich das verstehe, wird doch eine erneute Bewegung nach dem Anschalten nur nach Ablauf von minInterval übertragen...!?
  • Offensichtlich wird auch ein Motion-Event ausgelöst, wenn motion von "on" auf "off" wechselt. Das führt doch dann zu resetwait und der Timer läuft nochmal, auch wenn keine Bewegung mehr stattfindet...!?
  • Bisher habe ich es nicht sinnvoll hinbekommen, dass das DOIF nur dann auslöst, wenn das Licht nicht ohnehin schon an ist. Tipps?

Danke und Gruß, Christian

PS: M. E. ist das eine Anfängerfrage. Sollte der Beitrag aber im Homematic- oder DOIF-Bereich besser aufgehoben sein, sagt es mir einfach.

Tabularasa

Hi. Guck mal hier https://wiki.fhem.de/wiki/HM-Sen-MDIR-O_Funk-IR-Bewegungsmelder_au%C3%9Fen. Da sind ein paar Beispiele. Ich bin zwar noch nicht soweit, dass ich es verstehe, aber vielleicht hilft es dir und du postest dein Ergebnis was mir dann hilft ;D

Damian

define di_wz_light_motion DOIF ([?[twilight:ss_civil]-[twilight:sr_civil]] and [WZ.HM_Sen_MDIR_WM55_Motion:"motion on"] and [?HUEGroup4] eq "off")
    (set HUEGroup4 scene tD9vmHnIpLhu-O-)
    (set HUEGroup4 off)
attr di_wz_light_motion do resetwait
attr di_wz_light_motion wait 0,60


Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

chrille76

Zitat von: Damian am 17 Dezember 2016, 21:02:58
define di_wz_light_motion DOIF ([?[twilight:ss_civil]-[twilight:sr_civil]] and [WZ.HM_Sen_MDIR_WM55_Motion:"motion on"] and [?HUEGroup4] eq "off")
    (set HUEGroup4 scene tD9vmHnIpLhu-O-)
    (set HUEGroup4 off)
attr di_wz_light_motion do resetwait
attr di_wz_light_motion wait 0,60

Danke, Damian. So in der Art hätte ich mir das auch vorgestellt. Was mir allerdings nicht klar ist: wenn ich auf den Enschaltzustand des Lichts abfrage, dann kann doch aber eine weitere Bewegung nicht den Zeitraum verlängern, da es ja dann eben schon an ist...!? Oder wo ist mein Denkfehler?

Zitat von: Tabularasa am 17 Dezember 2016, 19:32:33
Hi. Guck mal hier https://wiki.fhem.de/wiki/HM-Sen-MDIR-O_Funk-IR-Bewegungsmelder_au%C3%9Fen. Da sind ein paar Beispiele. Ich bin zwar noch nicht soweit, dass ich es verstehe, aber vielleicht hilft es dir und du postest dein Ergebnis was mir dann hilft ;D
Das hab ich tatsächlich schon gelesen und es hat mir auch weitergeholfen. Nur eben nicht bei den hier gestellten Fragen  ;)

Damian

Zitat von: chrille76 am 18 Dezember 2016, 10:37:22
Danke, Damian. So in der Art hätte ich mir das auch vorgestellt. Was mir allerdings nicht klar ist: wenn ich auf den Enschaltzustand des Lichts abfrage, dann kann doch aber eine weitere Bewegung nicht den Zeitraum verlängern, da es ja dann eben schon an ist...!? Oder wo ist mein Denkfehler?
Das hab ich tatsächlich schon gelesen und es hat mir auch weitergeholfen. Nur eben nicht bei den hier gestellten Fragen  ;)

Du hast Recht. Für die Verlängerung müsstest du noch den eigenen Zustand abfragen, z. B

define di_wz_light_motion DOIF ([?[twilight:ss_civil]-[twilight:sr_civil]] and [WZ.HM_Sen_MDIR_WM55_Motion:"motion on"] and ([?HUEGroup4] eq "off" or $cmd == 1.1 ) ...
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

chrille76

So, jetzt läuft es so, wie ich es möchte. Vielen Dank!

Um noch einmal zusammenfassend auf meine Fragen aus dem Eröffnungspost einzugehen, falls jemand ähnliche Fragen hat:
Zitat

  • Funktioniert das überhaupt, wenn minInterval des Bewegungsmelders größer oder gleich 60 ist? So wie ich das verstehe, wird doch eine erneute Bewegung nach dem Anschalten nur nach Ablauf von minInterval übertragen...!?
  • Offensichtlich wird auch ein Motion-Event ausgelöst, wenn motion von "on" auf "off" wechselt. Das führt doch dann zu resetwait und der Timer läuft nochmal, auch wenn keine Bewegung mehr stattfindet...!?
  • Bisher habe ich es nicht sinnvoll hinbekommen, dass das DOIF nur dann auslöst, wenn das Licht nicht ohnehin schon an ist. Tipps?

  • Die Frage habe ich mir mittlerweile durch Testen selbst beantwortet. resetwait muss größer als minInterval sein, sonst geht das Licht nach Ablauf des Timers auch bei weiterer Bewegung aus, da diese erst nach dem nächsten Intervall gesendet wird.
  • Gelöst mit "motion: on" (Doppelpunkt muss da sein). Danke, Damian!
  • Gelöst durch Abfrage des eigenen Zustands und des Einschaltzustands der Lampen. Danke, Damian! Aber Achtung: Mit HUEGroup funktioniert das nicht, man muss die einzelnen HUEDevices abfragen.

Im Ergebnis sieht es nun so aus:
([?[twilight:ss_civil]-[twilight:sr_civil]] and [WZ.HM_Sen_MDIR_WM55_Motion:"motion: on"] and (([?HUEDevice6] eq "off" and [?HUEDevice7] eq "off" and [?HUEDevice8] eq "off") or $cmd == 1.1))
    (set HUEGroup4 scene tD9vmHnIpLhu-O-)
    (set HUEGroup4 off)