Homebridge in Node-Red für Apple Homekit

Q: Es wurde gezeigt, wie man Knöpfe und Schalter zu Homebridge hinzufügt, so dass ich nun in der Lage bin, meine Kamera über Homebridge in meiner Homekit App auf meinem iPhone zu steuern. Ist es möglich, dies mit Node-RED zu kombinieren, um kleine Skripte und Automatisierung schreiben ?

Mike Polinowski
Alexa Kamera Skill
Firmware Update
Full HD Serie
INSTAR Cloud
INSTAR Deutschland GmbH
INSTAR Alexa Kamera Skill

Kontrollieren Sie Ihre Kamera mit Alexa Endgerät

INSTAR Alexa Support

Wir bieten Ihnen im Alexa Skill Store sowohl einen INSTAR Cloud Skill als auch einen INSTAR Camera Skill an. Für die INSTAR Cloud Skill benötigen Sie nur ein INSTAR Cloud-Konto und ein Alexa-Gerät mit einem Display. Fügen Sie die Skill auf Ihrem Alexa-Gerät hinzu und nutzen Sie es direkt.

Mike Polinowski
Apple Homekit
Firmware Update
Full HD Serie
INSTAR Deutschland GmbH
Apple Homekit

Kontrollieren Sie Ihre Kamera mit Ihrem iPhone oder iPad

INSTAR Homekit Support

Die Anbindung an den Homekit Dienst steht ab der Firmware Version 3.2(361) (Juni 2021) für alle Full HD Modelle zur Verfügung. Sie können die Firmware Ihrer Kamera direkt über die Weboberfläche aktualisieren.

A: Ja! Beginnen Sie mit der Installation von node-red-contrib-homekit-bridged aus Ihrem Node-Red Palette Menü:

Homekit in Node-RED

Suchen Sie nach homekit-bridged und klicken Sie auf installieren:

Homekit in Node-RED

Beachten Sie , dass Sie alternativ auch einen vorkonfigurierten Docker-Container aus dem Docker-HUB verwenden können.

Homebridge

Starten Sie nun das Homebridge-Gerät, das wir gemäß diesem Homebridge-Tutorial erstellt hatten:

docker run \
  --net=host \
  --name=homebridge \
  --privileged \
  --restart=always \
  -e PUID=0 -e PGID=0 \
  -e TZ=Europe/Berlin \
  -e HOMEBRIDGE_CONFIG_UI=1 \
  -e HOMEBRIDGE_CONFIG_UI_PORT=8080 \
  -e HOMEBRIDGE_INSECURE=1 \
  -v /opt/homebridge:/homebridge \
  oznu/homebridge

Und melden Sie sich bei der Homebridge-Benutzeroberfläche auf Port 8080 mit dem Standard-Login admin/admin an.

Erstellen eines Geräts in Node-Red

Ich beginne nun mit dem Import eines Beispielschalters nach Node-RED:

Homekit in Node-RED

Ich muss jetzt meine Bridge-PIN von der Homebridge-Benutzeroberfläche kopieren:

Homekit in Node-RED

Fügen Sie nun dem Homekit-Knoten eine neue Bridge hinzu:

Homekit in Node-RED

Und kopieren Sie Ihre persönliche PIN in das Feld Pin Code:

Homekit in Node-RED

Stellen Sie Ihre Änderungen an Node-RED bereit und probieren Sie die Inject-Knoten aus - sie injizieren entweder ein falsch oder wahr in Ihr Homebridge-Gerät:

Homekit in Node-RED

Sie können die jetzt Registerkarte Accessories in Homebridge überprüfen. Es sollte eine Schaltfläche hinzugekommen sein, die den Zustand widerspiegelt, den Sie in Node-RED injizieren:

Homekit in Node-RED

Praktisches Beispiel

Wir sind jetzt in der Lage, ein Paar MQTT-Ein-/Ausgangsknoten mit einem Homekit-Knoten zu verbinden und unsere Kamera über die MQTT-API zu steuern, wie in unserem früheren Tutorium. Verwenden wir nun Node-RED, um ein etwas komplexeres Skript zur Interaktion mit unserer Kamera und Homebridge zu schreiben.

Beginnen Sie mit dem Hinzufügen eines neuen Homekit-Knotens, aber wählen Sie diesmal MotionSensor als Service-Vorlage:

Homekit in Node-RED

Der vollständige Flow sieht so aus und kann aus dem untenstehenden JSON-Code importiert werden:

Homekit in Node-RED

[{"id":"783862e2.45477c","type":"homekit-service","z":"9a6bd5e7.967408","isParent":true,"bridge":"4132a771.850788","parentService":"","name":"MQTT Alarmserver","serviceName":"MotionSensor","topic":"","filter":false,"manufacturer":"INSTAR","model":"IN-8015 FHD","serialNo":"000001","cameraConfigVideoProcessor":"","cameraConfigSource":"","cameraConfigStillImageSource":"","cameraConfigMaxStreams":"","cameraConfigMaxWidth":"","cameraConfigMaxHeight":"","cameraConfigMaxFPS":"","cameraConfigMaxBitrate":"","cameraConfigVideoCodec":"","cameraConfigAudioCodec":"","cameraConfigAudio":false,"cameraConfigPacketSize":"","cameraConfigVerticalFlip":false,"cameraConfigHorizontalFlip":false,"cameraConfigMapVideo":"","cameraConfigMapAudio":"","cameraConfigVideoFilter":"","cameraConfigAdditionalCommandLine":"","cameraConfigDebug":false,"cameraConfigInterfaceName":"","characteristicProperties":"{}","x":559,"y":51,"wires":[["4d9c9a3c.69a0d4"],[]]},{"id":"8f35f643.8ca9e8","type":"mqtt in","z":"9a6bd5e7.967408","name":"Alarm Server","topic":"instar/10D1DC218F96/status/alarm/triggered","qos":"1","datatype":"auto","broker":"fbc900bc.b83bb","x":90,"y":51,"wires":[["7dc6d773.751818"]]},{"id":"7dc6d773.751818","type":"change","z":"9a6bd5e7.967408","name":"{\"MotionDetected\":true}","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"MotionDetected\":true}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":286,"y":51,"wires":[["783862e2.45477c","d7eb0fd1.103b5"]]},{"id":"d7eb0fd1.103b5","type":"delay","z":"9a6bd5e7.967408","name":"15s Delay","pauseType":"delay","timeout":"15","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":229,"y":97,"wires":[["d2b769a7.b94af8"]]},{"id":"d2b769a7.b94af8","type":"change","z":"9a6bd5e7.967408","name":"{\"MotionDetected\":false}","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"MotionDetected\":false}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":418,"y":97,"wires":[["783862e2.45477c"]]},{"id":"eeaf38d9.a69958","type":"switch","z":"9a6bd5e7.967408","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"{\"MotionDetected\":true}","vt":"str"},{"t":"eq","v":"{\"MotionDetected\":false}","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":864,"y":44,"wires":[["1b0e0bfe.ad8c94"],["a61efdfd.82e8f"]]},{"id":"b3e74d68.7f11c","type":"mqtt out","z":"9a6bd5e7.967408","name":"Preset Position","topic":"instar/10D1DC218F96/features/ptz/preset","qos":"1","retain":"false","broker":"fbc900bc.b83bb","x":1135,"y":40,"wires":[]},{"id":"4d9c9a3c.69a0d4","type":"json","z":"9a6bd5e7.967408","name":"","property":"payload","action":"","pretty":false,"x":740,"y":44,"wires":[["eeaf38d9.a69958"]]},{"id":"a61efdfd.82e8f","type":"change","z":"9a6bd5e7.967408","name":"Idle","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"val\":\"0\"}","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":985,"y":61,"wires":[["b3e74d68.7f11c"]]},{"id":"1b0e0bfe.ad8c94","type":"change","z":"9a6bd5e7.967408","name":"Alarm","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"val\":\"1\"}","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":984,"y":24,"wires":[["b3e74d68.7f11c"]]},{"id":"4132a771.850788","type":"homekit-bridge","z":"","bridgeName":"Homebridge","pinCode":"031-45-155","port":"","allowInsecureRequest":true,"manufacturer":"Default Manufacturer","model":"Default Model","serialNo":"Default Serial Number","customMdnsConfig":false,"mdnsMulticast":true,"mdnsInterface":"","mdnsPort":"","mdnsIp":"","mdnsTtl":"","mdnsLoopback":true,"mdnsReuseAddr":true,"allowMessagePassthrough":true},{"id":"fbc900bc.b83bb","type":"mqtt-broker","z":"","name":"192.168.2.117","broker":"192.168.2.117","port":"8883","tls":"70b691b5.003e5","clientid":"nodered","usetls":true,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"70b691b5.003e5","type":"tls-config","z":"","name":"8015Black","cert":"","key":"","ca":"","certname":"pcert.pem","keyname":"","caname":"","servername":"","verifyservercert":true}]

Links und rechts haben wir einen MQTT-In- und Out-Knoten mit den MQTT-Topics:

instar/10D1DC218F96/status/alarm/triggered
instar/10D1DC218F96/features/ptz/preset

Vergessen Sie nicht, die MQTT-ID - 10D1DC218F96 - durch die ID Ihrer persönlichen Kamera zu ersetzen!

Wenn ein Alarm ausgelöst wird, wird das MQTT-Alarmserver-Topic status/alarm/triggered von unserer Kamera aktualisiert. In diesem Fall senden wir eine {"MotionDetected":true} Nachricht an den Homekit-Knoten, die nach 15s auf {"MotionDetected":false} zurückfällt. Wenn die Bewegungserkennung auf wahr eingestellt ist, bewegt sich unsere Kamera auf die voreingestellte Position 2 und wieder zurück auf 1, sobald die Erkennung wieder falsch ist.

Homekit in Node-RED