INSTAR MQTT Server mit Homematic
Redmatic
Wir haben bereits ein Tutorial über die Installation von Redmatic - dort konnten Sie Node-RED auf ihrer Homematic verwenden, um die Kontrolle über Ihre Kamera mit Hilfe der HTTP-Schnittstelle zu übernehmen (CGI Befehle). Dort finden Sie auch alle Informationen, die Sie benötigen, um Homematic-Sensoren an Ihre CCU anzuschließen und wie Sie Ihre Homematic-Software für die Kommunikation mit Ihrer INSTAR IP-Kamera einrichten.
Diesmal werden wir die gleichen Tools verwenden, aber sie werden sie mit der MQTT-Schnittstelle Ihrer INSTAR Full HD-Kamera verbinden.
Erste Schritte mit Node-RED
Wir haben bereits mit Node-RED in Verbindung mit dem MQTT Protokoll zur Automatisierung unserer IP-Kamera gearbeitet. Node-RED lässt sich sehr einfach über das Addon RedMatic auf dem Homematic Control Panel installieren.
RedMatic kombiniert mehrere Softwarekomponenten zu einem CCU-Add-on, das bequem auf einer Homematic CCU3 als Zusatzsoftware über das WebUI installiert werden kann.
Die installierte Node-RED-Version wird mit den CCU-Knoten für Node-RED ausgeliefert und ermöglicht es, Regeln, Automatisierungen, Skripte und Verbindungen von externen Diensten und Systemen für Ihr Homematic System auf einfache, visuelle Weise zu implementieren - und das weitgehend ohne Programmierkenntnisse.
Die RedMatic WebApp ist eine Benutzeroberfläche, die ohne weitere Konfiguration sofort genutzt werden kann. Die Installation kommt darüber hinaus noch mit einem Dashboard, das Sie zur Steuerung Ihrer Automatisierungen nutzen können.
- Zuerst müssen wir die neueste Version von Github herunterladen. Sie benötigen die Datei
redmatic-<version>.tar.gz
:
- Gehen Sie in der Homematic WebUI auf das Control Panel um Zusatzsoftware zu installieren:
- Wählen Sie die heruntergeladene Datei aus und installieren sie das Addon (kann bis zu 10 Minuten dauernx).:
- Warten Sie dann, bis die CCU neu gestartet ist. Die Installation von RedMatic dauert einige Zeit. Node-RED wird danach erreichbar sein unter
http://<ccu-adresse>/addons/red
. Und das Node-RED Dashboard unterhttp://<ccu-adresse>/addons/red/ui
:
Das Standard-Login ist Admin
(mit Großbuchstaben A
) und das Admin-Passwort auf Ihrer CCU3!
Homematic Sensoren
Sie können dem früheren Tutorial folgen um zu lernen wie Sie Sensoren zu Ihrem Homematic-System hinzufügen können.
Bewegungsmelder
Wir möchten nun einen Homematic Bewegungsmelder verwenden, um unsere Schwenk-/Neigekamera auf gespeicherte Position 2 zu bewegen, wenn eine Bewegung erkannt wird. Nachdem der Bewegungsmelder in seinen Ruhezustand zurückgekehrt ist, möchten wir, dass unsere Kamera wieder in die Position 1 schwenkt.
- Zuerst ziehen wir einen CCU Value Knoten auf den Arbeitsbereich und doppelklicken darauf, um die Konfigurationsseite zu öffnen.
- Wählen Sie BidCos-RF als Schnittstelle, um Ihren Homematic PIR-Bewegungsmelder einzubinden.
- Wenn Sie in das Feld Kanal klicken, sehen Sie alle RF-Geräte, die mit Ihrem Homematic Center verbunden sind. Als wir unseren Bewegungsmelder anlernten, sahen wir, dass der Name des Melders mit NEQ1545018 beginnt. Wir haben zwei Einträge zur Verfügung - der erste endet mit
:0
und der zweite mit:1
. Wir werden den zweiten hier auswählen (wenn Sie den ersten nehmen und Sie werden sehen, dass es noch andere Variablen gibt, einschließlich LOWBAT, das eine Warnung bei niedrigem Batteriestand beinhaltet, die wir in unsere Node-RED-Ströme aufnehmen könnten.) - Als Datenpunkt wählen wir Motion. Dieser gibt uns immer eine Meldung von
true
, sobald der Sensor eine Bewegung erkannt hat.
Der Bewegungssensor sendet entweder einen false
oder true
Zustand, wenn sich sein Zustand ändert - eine erkannte Bewegung löst den true
Zustand aus und fällt nach einer Abklingzeit wieder auf false
Zustand zurück. Um diese Informationen zu nutzen, werden wir einen Switch Knoten hinzufügen, der diese beiden Nachrichten trennt:
Falls wir von unserem Sensor (Alarm) ein true
erhalten, wollen wir die Nachrichten auf {"val": "1"}
ändern. Ein false
bedeutet, dass der Sensor wieder in den Ruhezustand gegangen ist (Idle) und wir müssen die Meldung auf {"val":"0"}
ändern:
Diese Nachricht können wir nun nutzen, um über die MQTT-Schnittstelle ein Preset auf unserer Kamera anzufahren. Ein Wert von 0
repräsentiert die erste und ein Wert von 1
die zweite voreingestellte Position auf unserer Kamera. Das MQTT-Topic, an das wir diese Informationen senden müssen, heißt features/ptz/preset
. Wir können einen MQTT Out Knoten verwenden, um dieses Status-Update an unsere Kamera zu senden:
Damit sich Node-RED mit dem MQTT Broker Ihrer Kamera verbinden kann, müssen Sie zunächst den Server definieren. Geben Sie die IP-Adresse Ihrer Kamera und den MQTT-Port ein, den Sie in der WebUI Ihrer Kamera einstellt haben. Wenn Sie den regulären Port (Standard 1883
) wählen, überspringen Sie den folgenden Schritt. Wenn Sie jedoch die TLS-Verschlüsselung für Ihr MQTT-Netzwerk verwenden möchten, wählen Sie stattdessen den SSL-Port (Standard 8883
). Klicken Sie danach auf das Editieren Symbol, um das SSL-Zertifikat Ihrer Kamera unten hinzuzufügen:
Öffnen Sie die WebUI Ihrer Kamera und navigieren Sie zum Konfigurationsmenü MQTT Broker unter Features. Klicken Sie dort auf die Schaltfläche Download, um die Client-Zertifikatsdatei von Ihrer Kamera herunterzuladen.
Zurück in Node-RED klicken Sie auf Upload, um das Zertifikat hochzuladen:
Wechseln Sie danach auf die Registerkarte Security und geben Sie dort das von Ihnen eingestellte MQTT Broker Login ein:
Jedes Mal, wenn der Bewegungssensor ausgelöst wird, erhält Ihre Kamera nun den Befehl, zu Preset Position 2 anzufahren und zu Position 1 zurückzukehren, wenn der Sensor wieder in den Ruhezustand wechselt.
Wir können die gleichen Schritte für den Türsensor wiederholen, den wir zuvor unserem Homematic-System hinzugefügt haben, um unsere Kamera zur Preset Position 3 zu schicken, sobald jemand die Türe öffnet:
Den Node-RED Flow herunterladen
Sie können den kompletten Flow herunterladen und in Ihr Node-RED Admin-Panel importieren. Kopieren Sie den untenstehenden JSON-Code und klicken Sie in Node-RED auf das Hamburger-Menü oben rechts. Wählen Sie Import und kopieren Sie den Code in das Eingabefeld. Klicken Sie auf die rote Schaltfläche Import und ziehen Sie den Fluss an die gewünschte Position.
[{"id":"d6b5f7c8.7183e8","type":"ccu-value","z":"427fc89b.e34038","name":"Motion Detector","iface":"BidCos-RF","channel":"NEQ1545018:1 HM-Sen-MDIR-O-2 NEQ1545018:1","datapoint":"MOTION","mode":"","start":true,"change":true,"cache":false,"queue":false,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":false,"ccuConfig":"38263145.35ea0e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":100,"y":100,"wires":[["2471cac0.29f4d6"]]},{"id":"d3434bbe.05fa58","type":"change","z":"427fc89b.e34038","name":"Alarm","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"val\":\"1\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":380,"y":76,"wires":[["a8958f92.4cb8c"]]},{"id":"a8958f92.4cb8c","type":"mqtt out","z":"427fc89b.e34038","name":"features/ptz/preset","topic":"instar/000389888811/features/ptz/preset","qos":"1","retain":"false","broker":"6df4e12a.0c747","x":556,"y":99,"wires":[]},{"id":"2471cac0.29f4d6","type":"switch","z":"427fc89b.e34038","name":"","property":"payload","propertyType":"msg","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":252,"y":100,"wires":[["d3434bbe.05fa58"],["6197b16.f4d705"]]},{"id":"6197b16.f4d705","type":"change","z":"427fc89b.e34038","name":"Idle","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"val\":\"0\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":380,"y":127,"wires":[["a8958f92.4cb8c"]]},{"id":"c7056a66.400448","type":"ccu-value","z":"427fc89b.e34038","name":"Door Sensor","iface":"BidCos-RF","channel":"OEQ1985716:1 HM-Sec-SCo OEQ1985716:1","datapoint":"STATE","mode":"","start":true,"change":true,"cache":false,"queue":false,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":false,"ccuConfig":"38263145.35ea0e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":90,"y":200,"wires":[["1e91dd74.85f263"]]},{"id":"daa36829.abb308","type":"change","z":"427fc89b.e34038","name":"Alarm","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"val\":\"2\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":380,"y":176,"wires":[["7de0a4c1.0f702c"]]},{"id":"7de0a4c1.0f702c","type":"mqtt out","z":"427fc89b.e34038","name":"features/ptz/preset","topic":"instar/000389888811/features/ptz/preset","qos":"1","retain":"false","broker":"6df4e12a.0c747","x":556,"y":199,"wires":[]},{"id":"1e91dd74.85f263","type":"switch","z":"427fc89b.e34038","name":"","property":"payload","propertyType":"msg","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":252,"y":200,"wires":[["daa36829.abb308"],["10361ae7.7e6fb5"]]},{"id":"10361ae7.7e6fb5","type":"change","z":"427fc89b.e34038","name":"Idle","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"val\":\"0\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":380,"y":227,"wires":[["7de0a4c1.0f702c"]]},{"id":"28e6bcd8.29e804","type":"comment","z":"427fc89b.e34038","name":"Homematic Sensors","info":"","x":110,"y":40,"wires":[]},{"id":"38263145.35ea0e","type":"ccu-connection","z":"","name":"localhost","host":"localhost","regaEnabled":true,"bcrfEnabled":true,"iprfEnabled":true,"virtEnabled":true,"bcwiEnabled":false,"cuxdEnabled":false,"regaPoll":true,"regaInterval":"30","rpcPingTimeout":"60","rpcInitAddress":"127.0.0.1","rpcServerHost":"127.0.0.1","rpcBinPort":"2047","rpcXmlPort":"2048"},{"id":"6df4e12a.0c747","type":"mqtt-broker","z":"","name":"IN-9010 Full HD","broker":"192.168.2.165","port":"8883","tls":"95eab325.77ade","clientid":"","usetls":true,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"95eab325.77ade","type":"tls-config","z":"","name":"","cert":"","key":"","ca":"","certname":"instar-cert.cert","keyname":"","caname":"","servername":"","verifyservercert":true}]
- Sie können diese Flow mit Ihren eigenen Sensoren verwenden - ändern Sie einfach den ausgewählten Sensor im ersten Knoten jeder Sequenz.
Systemvariablen
Wir können auch eine Systemvariable verwenden, um ein MQTT-Update an unsere Kamera zu senden. Als Beispiel wollen wir eine Variable erstellen, die Daheim
lautet, die wir beim Betreten unseres Hauses auslösen wollen. In diesem Fall möchten wir, dass die Bewegungserkennung an unseren Kameras deaktiviert wird.
Um diese Variable zu erstellen gehen Sie bitte zu Einstellungen und Systemvariablen. Die Variable sollte true
sein, wenn Sie zu Hause sind, und false
, wenn Sie unterwegs sind:
Jetzt können wir zu Node-RED wechseln und einen SysVar Knoten auf die Arbeitsfläche ziehen. Wählen Sie die soeben erstellte Variable Daheim
und aktivieren Sie, das der Wert bei einer Änderung ausgegeben werden soll:
Der Rest dieses Flow ist identisch mit den beiden, die wir zuvor erstellt haben. Wir müssen zwischen einer Message mit Payload true
oder false
unterscheiden. Je nach Payload soll ein MQTT Topic mit einem anderen Payload aktualisiert werden - 0
oder 1
, aus oder an.
Wenn Sie den internen PIR-Sensor Ihrer Kamera verwenden, um Bewegungen zu erkennen, können Sie das alarm/actions/pir/enable
Topic verwenden um den Sensor mit {"val":"1"}
oder {"val":"o"}
zu aktivieren oder deaktivieren.
Hinweis Dies gilt für die Kameramodelle IN-8015 FHD und IN-9008 FHD. Das Kameramodell IN-9020 FHD verwendet stattdessen den z.B. den Befehl "alarm/action/alarmin", um den PIR zu schalten. In unserer MQTT Dokumentation finden Sie einen passenden Befehl für jeden Anwendungsfall.
Den Node-RED Flow herunterladen
Sie können den kompletten Flow herunterladen und in Ihr Node-RED Admin-Panel importieren. Kopieren Sie den untenstehenden JSON-Code und klicken Sie in Node-RED auf das Hamburger-Menü oben rechts. Wählen Sie Import und kopieren Sie den Code in das Eingabefeld. Klicken Sie auf die rote Schaltfläche Import und ziehen Sie den Fluss an die gewünschte Position.
[{"id":"e23a5982.cd37b8","type":"ccu-sysvar","z":"427fc89b.e34038","name":"Daheim","ccuConfig":"38263145.35ea0e","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":80,"y":320,"wires":[["1bc1f6f2.fbf029"]]},{"id":"f36b8a95.38f2b8","type":"change","z":"427fc89b.e34038","name":"home","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"val\":\"0\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":296,"wires":[["91a19433.03d868"]]},{"id":"91a19433.03d868","type":"mqtt out","z":"427fc89b.e34038","name":"alarm/actions/pir/enable","topic":"instar/000389888811/alarm/actions/pir/enable","qos":"1","retain":"false","broker":"6df4e12a.0c747","x":536,"y":319,"wires":[]},{"id":"1bc1f6f2.fbf029","type":"switch","z":"427fc89b.e34038","name":"","property":"payload","propertyType":"msg","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":212,"y":320,"wires":[["f36b8a95.38f2b8"],["da80c0a1.e74de"]]},{"id":"da80c0a1.e74de","type":"change","z":"427fc89b.e34038","name":"away","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"val\":\"1\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":347,"wires":[["91a19433.03d868"]]},{"id":"38263145.35ea0e","type":"ccu-connection","z":"","name":"localhost","host":"localhost","regaEnabled":true,"bcrfEnabled":true,"iprfEnabled":true,"virtEnabled":true,"bcwiEnabled":false,"cuxdEnabled":false,"regaPoll":true,"regaInterval":"30","rpcPingTimeout":"60","rpcInitAddress":"127.0.0.1","rpcServerHost":"127.0.0.1","rpcBinPort":"2047","rpcXmlPort":"2048"},{"id":"6df4e12a.0c747","type":"mqtt-broker","z":"","name":"IN-9010 Full HD","broker":"192.168.2.165","port":"8883","tls":"95eab325.77ade","clientid":"","usetls":true,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"95eab325.77ade","type":"tls-config","z":"","name":"","cert":"","key":"","ca":"","certname":"instar-cert.cert","keyname":"","caname":"","servername":"","verifyservercert":true}]