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

Aus FHEMWiki
Version vom 4. August 2020, 15:25 Uhr von Ph1959de (Diskussion | Beiträge) (Forenlinks auf Wiki-Vorlage geändert; div. Rechtschreibung)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
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 aussen

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ässt sich auch mit einer DOIF-Lösung verheiraten, siehe Beispiel Aussenbeleuchtung 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 als auch 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 Intervall 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äss Filtereinstellungen eine Meldung ausgelöst hätten.
brightFilter
Gibt als brightness das Minimum der letzten brightFilter+1 Messungen aus. Damit werden kurze Erhöhungen der Beleuchtung ignoriert. Bei einer Messung alle 6 Minuten führt z.B. der Wert 5 dazu, dass brightness dem kleinsten Wert der letztzen 30 bis 36 Minuten entspricht. Bei 0 wird entsprechend der ungefilterte letzte Messwert verwendet. Damit kann bei motion-Meldungen an einen Aktor verhindern werden, dass kurzzeitige Beleuchtung zu fehlerhaften Helligkeitswerten führt (siehe diesen Forenbeitrag).
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

Aussenbeleuchtung 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) angepasst werden müssen.

Zeitgesteuerte Aussenbeleuchtung

Ein Dummy namens D_TimerAussenlicht speichert, ob das Aussenlicht ü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 Aussenbeleuchtung 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 Aussenlicht 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)

Einsatzbeispiele (BM und Aktor direkt peeren)

Man kann den Bewegungsmelder direkt mit einem Schaltaktor von Homematic peeren. Für die Übertragung der Befehle zum Bewegungsmelder muss dieser jeweils ausgelöst werden, drücken des Konfigtasters ist nicht notwendig!

  • LichtKeAussen ist ein Kanal eines 4-fach Aktors.
  • PIRWg ist der Bewegungsmelder.
set PIRWg peerChan 0 LichtKeAussen single set

Auslösen und dann die Funktion überprüfen mit

get hm configCheck

Nach dem Peeren wird der BM den Aktor bei jeder Bewegung toggeln.

Soll das Schaltverhalten des Aktors verändert werden sind die entsprechenden Short (sh) Register zu setzen. Für eine Zeitabhängige Schaltung müssen zwei Register im Schaltaktor gesetzt werden:

set LichtKeAussen regSet shOnTime 300 PIRWg
set LichtKeAussen regSet shSwJtOn on PIRWg

Jetzt wird der BM (minInterval=240) den Aktor für 5 min anschalten und auch innerhalb der Spanne 240-300 Sekunden nachtriggern. Will man diese Zeit verkürzen müssen OnTime im Aktor und minInterval im BM passend gesetzt werden:

  • minInterval nur feste Intervalle in sec 120,60,240,30,15
  • minInterval < OnTime-10

Die Schaltschwelle für die Helligkeit ist per default => 50 (CtOff=geLo und CtValLo=50)

Diese Betriebsart normalerweise keinen Sinn. Mit zwei Registern kann die Schaltschwelle auf Unterschreiten (ltLo) der Helligkeit < 10 gesetzt werden:

set LichtKeAussen regSet shCtOff ltLo PIRWg
set LichtKeAussen regSet shCtValLo 10 PIRWg

Achtung! per default ist Hi=100 und Lo=50 , der Wert für Lo muss kleiner als Hi sein!

Für größere Helligkeitswerte kann man alternativ shCtOff auch auf ltHi setzen. Die Bedeutung (aus get regList):

 shCtOff - Jmp on condition from off options:geHi,outside,geLo,ltHi,ltLo,between 

Peeren per peerSmart und setzen der Register per Template ist derzeit (August 2019) nicht funktional.

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