Externe Sensoren einbinden in Homematic / HomeKit

Hat man Sensoren anderer Hersteller als Homematic möchte man diese vielleicht eben auch a) zur Steuerung nutzen oder b) diese „sehen“ über HomeKit zum Beispiel.

Ich verwende von Xiaomi den Temperatur- und Feuchtigkeitssensor. Der Nebenbei auch noch den Luftdruck misst. Der Sensor ist gefühlt nur 3×3 cm groß 🙂 also super klein. Funken kann der Sensor mittels ZigBee. Und so wird das System aussehen:

Der Sensor wird über den ConBee II im Daemon DECONZ angemeldet. DECONZ bietet hier eine API an womit man den abfragen kann. DECONZ läuft bei mir als Docker-Container. Gleichzeitig läuft auf der CCU3 der CUx-Daemon der virtuelle Geräte erstellen kann ( ja der könnte auch zigbee 😉 )
Kernstück ist dann Node Red – was die ganzen Dienste verknüpft. Es holt sich die Daten von Deconz und schaufelt sie in die CCU3, in die InfluxDB und aus der CCU3 gelangen die Geräte ins HomeKit

Vorbereitungen

  1. Über den CUxD legen wir ein Thermostat an
  2. in der CCU3 muss das CUxD-Gerät konfiguriert und einem Raum zugewiesen werden.
  3. Der Sensor muss im DECONZ angelernt werden.

Anlegen im CUxD

Dazu in der CCU3: Einstellung >> Gerätemanager >> CUx-Daemon auswählen
Im CUx-Daemon dann im Menü oben „Geräte“ auswählen und wie folgt einrichten:

Konfig in der CCU3

In der CCU3 erscheint das Gerät nun im Posteingang, kann einem Raum/Gewerke zugeordnet werden und mit Fertig in die Geräteliste übernommen werden.

hier sind nun einmal der Mode auf „Temp+HUM“ zu setzen und „USE_HMDATAPT“ ist zu deaktivieren.

Anlernen in der Phoscon App / DECONZ

Dazu einfach auf Einstellungen >> Sensoren gehen und „Neuen Sensor verbinden“ anklicken. Am Sensor selbst musste ich die Taste nur einmal kurz betätigen. Der Sensor blinkte blau und zack waren beide verbunden.

Im Node RED

Für den Zugriff auf DECONZ benötigen wir das Modul: node-red-contrib-deconz. Und das Modul node-red-contrib-ccu.

Hier wird nun der Wert vom Sensor abgefragt, kurz umgewandelt (division durch 100) und dann a) der CCU3 gemeldet (dazu gleich mehr) und in meinem Fall sende ich das noch an die Influx DB.

Um den Wert in der CCU3 ist es wichtig das Gerät wie oben beschrieben zu konfigurieren und dann die SET_HUMIDITY bzw. SET_TEMPERATURE zu setzen und nicht HUMIDITY oder TEMPERATURE direkt!

Anzeigen im HomeKit

Das ist wohl der einfachste Teil. Mithilfe des Node Red Paketes redmatic-homekit muss man nur, wie in der Anleitung gut beschrieben, eine Home Bridge in einen Flow ziehen und schon werden alle CCU3 Geräte veröffentlicht – vollautomatisch. 🙂

Alternativ kann man das auch händig machen. Die DECONZ Adapter haben alle 2 Ausgänge. Der erste immer für das Datenobjekt bzw. den State (je nach Einstellung) und der 2. ist der Service Ausgang für ein Universalgerät im HomeKit. siehe https://github.com/rdmtc/RedMatic/wiki/Homekit#universal-accessory

Node Red Flow

[{"id":"f166fe9f.4bcde","type":"deconz-input","z":"dde2b0e6.aa168","name":"Bad Feuchte","server":"81052cf.8204ed","device":"00:15:8d:00:04:65:9e:1a-01-0405","device_name":"Multisensor 3 Bad : ZHAHumidity","state":"humidity","output":"always","outputAtStartup":true,"x":110,"y":440,"wires":[["5d167aa.1a49e84","2027fc31.7aab34"],[]]},{"id":"2027fc31.7aab34","type":"function","z":"dde2b0e6.aa168","name":"/ 100","func":"msg.payload = ( msg.payload / 100.0 )\nreturn msg;","outputs":1,"noerr":0,"x":330,"y":680,"wires":[["368e868c.72f33a"]]},{"id":"5d167aa.1a49e84","type":"function","z":"dde2b0e6.aa168","name":"/ 100","func":"msg.payload = {Bad_Feuchte: ( msg.payload / 100.0 )}\nreturn msg;","outputs":1,"noerr":0,"x":330,"y":420,"wires":[["391f3cc9.1cf6a4"]]},{"id":"85bc5941.0fe3e8","type":"function","z":"dde2b0e6.aa168","name":"/ 100","func":"msg.payload = ( msg.payload / 100.0 )\nreturn msg;","outputs":1,"noerr":0,"x":330,"y":740,"wires":[["6bba9e24.dd6f"]]},{"id":"617ed7c2.c5d398","type":"function","z":"dde2b0e6.aa168","name":"/ 100","func":"msg.payload = {BadTemperatur: ( msg.payload  / 100.0 )}\nreturn msg;","outputs":1,"noerr":0,"x":330,"y":500,"wires":[["391f3cc9.1cf6a4"]]},{"id":"18e0e1f9.2b591e","type":"deconz-input","z":"dde2b0e6.aa168","name":"Bad Temp","server":"81052cf.8204ed","device":"00:15:8d:00:04:65:9e:1a-01-0402","device_name":"Multisensor 3 Bad : ZHATemperature","state":"temperature","output":"always","outputAtStartup":true,"x":110,"y":500,"wires":[["617ed7c2.c5d398","85bc5941.0fe3e8"],[]]},{"id":"6bba9e24.dd6f","type":"ccu-set-value","z":"dde2b0e6.aa168","name":"set temp","iface":"CUxD","ccuConfig":"c14af3ca.fbc75","rooms":"","roomsRx":"str","functions":"","functionsRx":"str","device":"CUX9002003","deviceRx":"str","deviceName":"","deviceNameRx":"str","deviceType":"","deviceTypeRx":"str","channel":"CUX9002003:1","channelRx":"str","channelName":"","channelNameRx":"str","channelType":"","channelTypeRx":"str","channelIndex":"","channelIndexRx":"str","datapoint":"SET_TEMPERATURE","datapointRx":"str","force":false,"x":580,"y":740,"wires":[]},{"id":"368e868c.72f33a","type":"ccu-set-value","z":"dde2b0e6.aa168","name":"set feuchte","iface":"CUxD","ccuConfig":"c14af3ca.fbc75","rooms":"","roomsRx":"str","functions":"","functionsRx":"str","device":"CUX9002003","deviceRx":"str","deviceName":"","deviceNameRx":"str","deviceType":"","deviceTypeRx":"str","channel":"CUX9002003:1","channelRx":"str","channelName":"","channelNameRx":"str","channelType":"","channelTypeRx":"str","channelIndex":"","channelIndexRx":"str","datapoint":"SET_HUMIDITY","datapointRx":"str","force":false,"x":570,"y":680,"wires":[]},{"id":"391f3cc9.1cf6a4","type":"change","z":"dde2b0e6.aa168","name":"Klima_Innen","rules":[{"t":"set","p":"measurement","pt":"msg","to":"Klima_Innen","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":590,"y":440,"wires":[["444445b0.f3c80c"]]},{"id":"a5473156.07d27","type":"influxdb out","z":"dde2b0e6.aa168","influxdb":"542a42d0.731ccc","name":"Insert Influx Hausdaten","measurement":"","precision":"","retentionPolicy":"","x":1150,"y":440,"wires":[]},{"id":"444445b0.f3c80c","type":"delay","z":"dde2b0e6.aa168","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"2","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":860,"y":440,"wires":[["a5473156.07d27"]]},{"id":"81052cf.8204ed","type":"deconz-server","z":"","name":"Phoscon-GW","ip":"192.168.103.2","port":"8098","apikey":"AB6C93F0DF","ws_port":"8099","secure":false,"polling":"15"},{"id":"c14af3ca.fbc75","type":"ccu-connection","z":"","name":"CCU3","host":"192.168.103.3","regaEnabled":true,"bcrfEnabled":true,"iprfEnabled":true,"virtEnabled":true,"bcwiEnabled":false,"cuxdEnabled":true,"regaPoll":true,"regaInterval":"30","rpcPingTimeout":"60","rpcInitAddress":"192.168.103.2","rpcServerHost":"192.168.103.2","rpcBinPort":"2047","rpcXmlPort":"2048","queueTimeout":"5000","queuePause":"250","contextStore":""},{"id":"542a42d0.731ccc","type":"influxdb","z":"","hostname":"192.168.103.2","port":"8086","protocol":"http","database":"Hausdaten","name":"Influx Raspi 4 Hausdaten","usetls":false,"tls":""}]

Über den Autor Danny Sotzny

Hallo, ich bin Danny Sotzny und bin Software- entwickler und Fotograf. Dabei beschäftige ich mich mit aktuellen Technologien und bekannten Problemen. Schwerpunkte setze ich bei der Webentwicklung (PHP/JS) und der Software- entwicklung mit .NET (C#). Der Blog dient für mich selbst als Gedächtnishilfe für typische und alltägliche Probleme, aber auch persönliche Erlebnisse werden veröffentlicht. Ich betreibe zusätzlich noch Foto-Sotzny.de für meine Fotografien und sotzny.net, was meine Webseite für die Softwareentwicklung ist.

Über Danny Sotzny

Hallo, ich bin Danny Sotzny und bin Software- entwickler und Fotograf. Dabei beschäftige ich mich mit aktuellen Technologien und bekannten Problemen. Schwerpunkte setze ich bei der Webentwicklung (PHP/JS) und der Software- entwicklung mit .NET (C#). Der Blog dient für mich selbst als Gedächtnishilfe für typische und alltägliche Probleme, aber auch persönliche Erlebnisse werden veröffentlicht. Ich betreibe zusätzlich noch Foto-Sotzny.de für meine Fotografien und sotzny.net, was meine Webseite für die Softwareentwicklung ist.
Dieser Beitrag wurde unter Blogroll abgelegt und mit , , , , , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.