HM-Sen-MDIR-O Funk-IR-Bewegungsmelder außen

Aus FHEMWiki
Wechseln zu: Navigation, Suche
HM-Sen-MDIR-O Funk-IR-Bewegungsmelder außen
HM-Sen-MDIR-O
Allgemein
Protokoll HomeMatic
Typ motionDetector
Kategorie HomeMatic
Technische Details
Kommunikation 868,3 MHz
Kanäle 1
Betriebsspannung 4,5 V
Leistungsaufnahme unbekannt
Versorgung Batterie, 3x LR06 (Mignon)
Abmessungen 76 x 74 x 90 mm
Sonstiges
Modulname CUL_HM
Hersteller eQ-3


HM-Sen-MDIR-O HomeMatic Funk-IR-Bewegungsmelder außen

Features

PIR-Bewegungsmelder mit Helligkeitssensor zur Tag-/Nachtumschaltung.

Neu: ca. 45 € (Oktober 2018)

Technische Daten:

  • Erfassungswinkel: ca. 90°
  • Erfassungsbereich: ca. 9 m
  • Drehbar: 360°
  • Neigbar: 45°
  • Schutzart: IP 44

Hinweise zur Inbetriebnahme und Installation

<Bitte ergänzen>

Betrieb mit FHEM

Das Pairing sollte wie in HomeMatic Devices pairen beschrieben durchgeführt werden. Die Anlerntaste am Bewegungsmelder sollte hierzu nur kurz betätigt werden. Bei einer Betätigung von vier Sekunden wird der Melder nur bei Unterschreiten einer festgelegten Helligkeitsschwelle auslösen (weitere Informationen siehe Abschnitt Anlernen der Herstellerdokumentation).

Hinweis: sobald einmal ein motion-Status erkannt wurde, verbleibt das Gerät in diesem Modus. Alle Konfigurationsbeispiele setzen also einen zusätzlichen watchdog voraus:

  define WD_Reset_EG.Scheune.MotionDetect watchdog EG.Scheune.MotionDetect:motion 00:04:05 SAME setreading EG.Scheune.MotionDetect state nomotion

Dieser Umweg mit einem Watchdog läßt sich auch mit einer DOIF-Lösung verheiraten, siehe Beispiel Außenbeleuchtung zeitgesteuert und bei Bewegung schalten. Als Alternative kann auch auf die Uhrzeit der letzten Erkennung geprüft werden:

 define di_lamp DOIF ([BM:state:sec] < 5)(set lamp on-for-timer 300)
 attr di_lamp do always

Event-Monitor

In regelmäßigen Abständen werden die folgenden Daten vom Bewegungsmelder (hier: HM-Sen-MDIR-O-2) übermittelt:

2014-11-19 16:31:24 CUL_HM HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer brightness: 120
2014-11-19 16:31:24 CUL_HM HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer cover: closed
2014-11-19 16:31:24 CUL_HM HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer battery: ok

Wird Bewegung erkannt, wird Folgendes vom Gerät (hier: HM-Sen-MDIR-O-2) übermittelt:

2014-11-19 16:27:55 CUL_HM HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer trigDst_2573FB: noConfig
2014-11-19 16:27:55 CUL_HM HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer motion
2014-11-19 16:27:55 CUL_HM HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer motion: on (to MyHMLAN)
2014-11-19 16:27:55 CUL_HM HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer motionCount: 235_next:116s
2014-11-19 16:27:55 CUL_HM HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer brightness: 120

Log-Auszug

<Bitte ergänzen>

Konfiguration

Bei eingeschaltetem Autocreate werden die erforderlichen Definitionen beim Pairen selbstständig erstellt (Beispiel: HM-Sen-MDIR-O-2).

define HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer CUL_HM 2B033A
attr HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer IODev MyHMLAN
attr HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer actCycle 000:10
attr HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer actStatus alive
attr HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer autoReadReg 4_reqStatus
attr HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer expert 2_full
attr HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer firmware 1.6
attr HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer model HM-Sen-MDIR-O-2
attr HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer peerIDs 00000000,
attr HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer room CUL_HM
attr HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer serialNr LEQ0xxxxxx
attr HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer subType motionDetector

Konfiguration über Register

Anzeige aller dekodierten Register

get <name> regList

zeigt alle moeglichen 'dekodierten' Register an. Fuer mdir sind dies alle, sollte also komplett sein. Hier findet man sowohl den Wertebereich alsauch eine (sehr) kleine Beschreibung. Ausgabe:

list:         register | range              | peer     | description
   0: pairCentral      |   0 to 16777215    |          | pairing to central
   1: brightFilter     |   0 to 7           |          | brightness filter - ignore light at night
   1: captInInterval   |     literal        |          | capture within interval options:on,off
   1: evtFltrNum       |   1 to 15          |          | sensitivity - read each n-th puls
   1: evtFltrPeriod    | 0.5 to 7.5s        |          | event filter period
   1: ledOnTime        |   0 to 1.275s      |          | LED ontime
   1: minInterval      |     literal        |          | minimum interval in sec options:240,60,120,30,15
   4: peerNeedsBurst   |     literal        | required | peer expects burst options:on,off

minInterval
Minimales Interval in Sekunden vor dem Senden einer neuen Funknachricht. Der Standard ist 240. D.h. nach einer Bewegungs-Meldung werden erst nach min. 4 Minuten weitere Meldungen gesendet. Ob dafür neue Bewegungen nötig sind oder Bewegungen innerhalb des Intervalls ausreichen, regelt das Register captInInterval.
captInInterval
Sendet am Ende der "Sendepause" (minInterval) eine Funkmeldung, wenn Bewegungen innerhalb der Pause gemäß Filtereinstellungen eine Meldung ausgelöst hätten.
brightFilter
Filtert plötzliche Helligkeitsschwankungen aus und wirkt sich auf den Helligkeitswert aus. Dies soll bei motion-Meldungen an einen Aktor verhindern, dass durch plötzliche/kurzzeitige Beleuchtung ein falscher Helligkeitswert übermittelt wird. 0 Filtert nichts aus.
evtFltrNum
Filtert Bewegungen aus. Steht dieser Wert z.B. auf 5 so wird erst bei der fünften Bewegung die Meldung gesendet.
evtFltrPeriod
Gibt an wie viel Zeit zwischen zwei Bewegungen vergehen muss um für den evtFltrNum Filter gezählt zu werden. Steht dieser Wert auf 1 und evtFltrNum auf 5 so muss der Sensor 5 Sekunden Bewegungen registrieren um eine Meldung zu senden.
ledOnTime
Legt die Aufleuchtdauer der internen LED zur optischen Rückmeldung fest. Die LED leuchtet jedoch nur bei einer Funkübertragung auf. D.h. ist auch von minInterval abhängig.

Einsatzbeispiele (per Notify)

Gerät bei Bewegung schalten

Mit dem folgenden Notify kann z. B ein Unterputz-Schaltaktor für die angegebene Zeit (in Sekunden) eingeschaltet werden - ein Peeren ist dazu vorher nicht erforderlich. Das Einschalten passiert in diesem Beispiel unabhängig von der Helligkeit.

define Notify_Bewegungsmelder_Haustuer notify HM_Sen_MDIR_O_2_2B033A_BewegMelderHaustuer:motion set HM_LC_SW1_FM_298FB2_HaustuerLicht on-for-timer 300

Außenbeleuchtung zeitgesteuert und bei Bewegung schalten

Das fortgeschrittene Beispiel steuert die Beleuchtung in Abhängigkeit von Uhrzeiten und zwei Bewegungsmeldern.

Dazu wird das Twilight-Modul verwendet:

 define MyTwilight Twilight 54.2539407 9.0650127 1 12833034

wobei die Koordinaten und die Stadt-ID (letzte Zahl) angepaßt werden müßen.

Zeitgesteuerte Außenbeleuchtung
Ein Dummy namens D_TimerAussenlicht speichert, ob das Außenlicht über die Uhrzeitregelung aktiviert wurde:

 define D_TimerAussenlicht dummy
 attr D_TimerAussenlicht room Aussen
 
 define AussenlichtONOFF DOIF (( [05:30-07:40|8] or [06:30-08:00|7] or [15:30-22:30] or ([15:30-01:00] and [PresTVWintergarten:state] eq "present")) and [MyTwilight:twilight_weather] < 40) \
     (set D_TimerAussenlicht on, set Aussenlicht on) \
 DOELSE \
     (set D_TimerAussenlicht off, set Aussenlicht off)

Dies aktiviert die Außenbeleuchtung zwischen 05:30-07:40 an Werktagen oder zwischen 06:30-08:00 an Wochenenden oder Ferientagen oder zwischen 15:30-22:30 oder zwischen 15:30-01:00 sofern der Fernseher (PresTVWintergarten) mit Hilfe des PRESENCE-Moduls erkannt wurde - aber nur, wenn es dunkel ist. Für die Erkennung der Dunkelheit wurde des Twilight-Modul verwendet und der Schwellwert auf 40 definiert. Wie in der Dokumentation ersichtlich, sind die angegebenen Uhrzeiten die möglichen START- und END-Zeiten - sollte die Dunkelheit (AND-Verknüpfung des Twilight-Modules) nicht ausreichen, wird das Licht später ein- oder früher ausgeschaltet.

Bewegungsmelder

Diese Lösung basiert auf der vorgeschlagenen Bewegungsmelder-Lösung mit DOIF, integriert jedoch das löschen des motion-Zustandes in den Bewegungsmeldern:

 define D_MotionDetectHinten dummy
 
 define DI_MotionHintenScheune DOIF ([EG.Scheune.MotionDetect] eq "motion" )  (set D_MotionDetectHinten on, set D_MotionDetectHinten off, setreading EG.Scheune.MotionDetect state nomotion)
 attr DI_MotionHintenScheune do always
 
 define DI_MotionHintenDurchgang DOIF ([EG.Durchgang.MotionDetect] eq "motion" )  (set D_MotionDetectHinten on, set D_MotionDetectHinten off, setreading EG.Durchgang.MotionDetect state nomotion)
 attr DI_MotionHintenDurchgang do always
 
 define DI_MotionLichtHinten DOIF ([D_MotionDetectHinten] eq "on" and [D_TimerAussenlicht] eq "off" and [MyTwilight:twilight_weather] < 40) \
     (set LichtStruc.Aussen.Hinten on) \
 DOELSE  \
     (set   LichtStruc.Aussen.Hinten off)
 attr DI_MotionLichtHinten wait 0:240

Der Dummy D_MotionDetectHinten wird von beiden Bewegungsmeldern (EG.Durchgang.MotionDetect und EG.Scheune.MotionDetect) getriggert. Sobald diese eine Bewegung erkennen, werden diese auf das Muster on gefolgt von off gesetzt. Direkt danach wird der motion-Status des auslösenden Bewegungsmelders gelöscht.

Das dritte DOIF reagiert auf einen Wechsel des Dummys (D_MotionDetectHinten) und prüft, ob das Außenlicht bereits zeitgesteuert (D_TimerAussenlicht, siehe Abschnitt oben) aktiviert wurde. Ist dies nicht der Fall und dunkel (Twilight-Modul und Abfrage) genug, wird die structure (LichtStruc.Aussen.Hinten) ohne Verzögerung für 240 Sekunden aktiviert.

Die Bewegungsmelder können dann ebenfalls auf eine 240-Sekunden-Verzögerung konfiguriert werden - die Lichter brennen ja bereits für diese Zeitdauer.

Gerät bei Bewegung in Abhängigkeit der Helligkeit schalten

Mit der nachfolgenden Notify-Definition werden zwei Log-Einträge erzeugt, eine Meldung auf der Dreambox angezeigt, falls diese angeschaltet ist, und ein Unterputz-Schaltaktor für die angegebene Zeit (in Sekunden) eingeschaltet, falls die gemessene Helligkeit am Bewegungsmelder kleiner oder gleich 90 ist.

Der Code ist hier so angegeben, wie er in der Weboberfläche nach einem Klick auf das DEF-Feld übernommen werden kann.

HM_BewegMelder_Carport:motion { 
    Log 1, "Trigger-Notify von BewegMelderCarport: @";
    Log 1, ReadingsVal( "HM_BewegMelder_Carport", "brightness", "");
    fhem( "set E2_Dreambox showText Bewegung am Carport" ) if ReadingsVal("E2_Dreambox","state","") eq "on"; 
    if ( ReadingsVal( "HM_BewegMelder_Carport", "brightness", "") <= 90 ) {
        fhem( "set HM_Sw1_GarageLED on-for-timer 300" );
    }
}

Einsatzbeispiele (per DOIF)

Aktor in Abhängigkeit der Helligkeit und innerhalb eines Zeitraums schalten

Voraussetzung: Twilight-Modul Die Twilight-Abfragen könnten natürlich auch entfernt werden.

define di_lampe DOIF (
(
	[sensor:brightness] < 120 and
	[?[twilight:ss_indoor]-23:59]
)
	(set lampe on)
DOELSEIF 
(
	[sensor:brightness] > 80 and
	[?04:00-[twilight:sr_indoor]]
)
	(set lampe off)

Aktor bei Bewegung einschalten (inkl. weiterer Gimmicks)

Benötigte Module: Twilight und Residents

Die Zeilen zum Residents und Twilight-Modul könnten natürlich auch entfernt werden.

define di_lampe2 DOIF (
(
	(
		## Bewegungsmelder löst aus
		[sensor:?motion] and
		## nur wenn Lampe nicht zuvor manuell eingeschaltet wurde
		[lampe:state] ne "on" and
		## und wenn es nicht sowieso hell genug ist.
		[?sensor:brightness] < 50
	) 
	and
	(
		## entweder immer nachts
		[?00:00-[twilight:sr_civil]] or
		## oder wenn niemand daheim
		[?rgr_Residents] ne "home"
	)
) 
	(set lampe2 on-for-timer 180)

Sonstiges

Anzeige der Uhrzeit der letzten Bewegung

Möchte man den Zeitpunkt der letzten erfassten Bewegung in der GUI sehen, so muss hierzu folgendes Attribut gesetzt werden.

attr Sensor showtime 1

Bekannte Probleme

Geräte verfügen über keinen Sabotage-Kontakt.

Links