HM-Sen-MDIR-O-2 und MQTT

Hallo zusammen,

ich habe seit gestern einen HM-Sen-MDIR-O-2 über homegear in Betrieb, welcher per MQTT in node-red intergriert ist. Soweit so gut, MOTIONs werden erkannt und per MQTT gesendet, allerdings auch wenn es draußen hell ist, obwohl ich diesen über die “4-Sekunden Button gedrückt halten”-Methode angelernt habe.

Es werden jedoch trotzdem auch bei Helligkeit MOTION-Events gesendet - ist das ggf. normal?

Muss ich ggf. über node-red-contrib-homegear-mqtt und ein Event-Joining, also Zusammenführen der Events zu einer msg und Abfrage der BRIGHTNESS den Tag abfangen?

Schon mal Danke für Eure Antworten!

Matze

Ich nutze weder HM-Sen-MDIR-O-2 noch node-red-contrib-homegear-mqtt, sondern einfach den MQTT-Node: https://allgeek.de/2017/07/09/homematic-mit-node-red-ueber-homegear/

Wie es aber aussieht, hat der Bewegungsmelder eine Helligkeitsfilter der das eventuell bewerkstelligen kann: https://ref.homegear.eu/device.html?directory=HomeMatic+BidCoS&file=rf_sec_mdir.xml&familyLink=homematicbidcos&name=HM-Sec-MDIR-2#affixSubsubsection1_0_1
Schau dazu am besten mal in die Anleitung des Geräts. Konfigurationsparameter kannst per putParamset setzen.

Ansonsten müsstest du in node-red die aktuelle Helligkeit irgendwie lesen und im Kontext speichern, damit du sie beim Auftreten des Bewegungs-Events vergleichen kannst und entsprechend auslösen kannst.
Das ginge in node-blue glaube ich einfacher. Dort kannst du ja auch wieder eine MQTT-Message feuern, wenn die Bedingung erfüllt ist.

Danke für Deine Antwort.
Sorry, ich verwende hier auch den MQTT-in und nicht node-red-contrib-homegear-mqtt, welches mir aber evtl. die beiden benötigten bis jetzt separaten MQTT-Messages in eine Message zusammenführen könnte. So habe ich das bereits mit einem HM-WDS30-QT2-SM für Vor- und Rücklauftemperatur umgesetzt. Dann könnte ich BRIGHTNESS und MOTION in einem Event auswerten und erst unter einem bestimmten Wert die Lampe(n) schalten - jedoch bin ich davon ausgegangen, dass MOTION nur gesetzt wird, wenn die notwendige Helligkeit unterschritten wird - beim Anlernen gibt es zwei Wege hierzu und ich habe den entsprechenden mit 4-sekunden gedrückt halten gewählt. Aber MQTT über homegear verhält sich wohl etwas anders als natives homematic.

eben folgendes getestet:

rc print_r($hg->getParamset(21,1))
Array
(
[AES_ACTIVE] => 1
[BRIGHTNESS_FILTER] => 7
[CAPTURE_WITHIN_INTERVAL] =>
[EVENT_FILTER_NUMBER] => 1
[EVENT_FILTER_PERIOD] => 1
[LED_ONTIME] => 0
[MIN_INTERVAL] => 2
)
Exit code: 0
rc ‘$hg->putParamset(21, 1, array(BRIGHTNESS_FILTER => 1));’
Exit code: 0
rc print_r($hg->getParamset(21,1))
Array
(
[AES_ACTIVE] => 1
[BRIGHTNESS_FILTER] => 1
[CAPTURE_WITHIN_INTERVAL] =>
[EVENT_FILTER_NUMBER] => 1
[EVENT_FILTER_PERIOD] => 1
[LED_ONTIME] => 0
[MIN_INTERVAL] => 2
)

löst leider immer noch aus - muss ich wohl die ganzen MQTT-Events wieder zusammen fassen und dann beides auswerten …

Aber so nebenbei hat man auch noch einen Helligkeitssensor …

30

Das ginge eben auch über Kontext, weil du bei node-red ja immer einen “event” verarbeitest.

Pack dir doch einfach den Brightness-Wert und speicher ihn zwischen (Kontext) und nehm dir dann einen function node der nur ein msg-object erzeugt, wenn brightness aus dem global-context einen bestimmten wert unterschreitet.

yo, genau so habe ich es gemacht mit einem function node. Dort per msg.topic unterscheide ich was für ein Wert kommt, speichere brightness im context und im Falle eines Motion, wird dieser nur durchgereicht wenn die Helligkeit einen bestimmten Wert unterschreitet.

1 Like