HowTo: Node Red – Apparaten bedienen met Apple HomeKit en sensoren uitlezen

Je kunt Apple-apparaten vervloeken of verafgoden, maar wat Apple heel goed heeft gedaan, is de integratie van SmartHome-componenten in hun besturingssystemen. iOs biedt inherent de mogelijkheid om HomeKit-apparaten (zo worden SmartHome-componenten in het Apple-universum genoemd) via iOs te besturen.

Ook praktisch is dat je deze HomeKit-apparaten kunt simuleren met NodeRed (en de bijbehorende node). Dit betekent dat u de actuatoren van uw SmartHome vanaf uw iOS-apparaat kunt bedienen en zelfs de sensorgegevens van de SmartHome kunt weergeven (bijvoorbeeld temperatuur, vochtigheid).

Hoe dit werkt en waar u op moet letten, leest u in het volgende artikel.


Veiligheidsinstructies

Ik weet dat de volgende opmerkingen altijd een beetje vervelend zijn en onnodig lijken. Helaas hebben veel mensen die "beter" wisten door onvoorzichtigheid ogen, vingers of andere dingen verloren of zichzelf verwond. Gegevensverlies is in vergelijking bijna te verwaarlozen, maar zelfs dit kan erg vervelend zijn. Neem daarom vijf minuten de tijd om de veiligheidsinstructies te lezen. Omdat zelfs het coolste project geen blessure of andere problemen waard is.
https://www.nerdiy.de/sicherheitshinweise/

Affiliate links / reclame links

De hier vermelde links naar online winkels zijn zogenaamde affiliate-links. Als u op zo'n affiliate-link klikt en via deze link een aankoop doet, ontvangt Nerdiy.de een commissie van de betreffende onlineshop of aanbieder. De prijs verandert voor jou niet. Als u via deze links uw aankopen doet, steunt u Nerdiy.de om in de toekomst andere nuttige projecten aan te kunnen bieden. 🙂 


Eisen

Handige artikelen:
Voordat je aan dit artikel begint, moet je de RaspberryPi zo hebben voorbereid dat deze via het netwerk bereikbaar en via SSH te bedienen is. NodeRed moet ook worden geïnstalleerd.

In de volgende drie artikelen wordt beschreven wat er moet gebeuren om de RaspberryPi voor te bereiden:
RaspberryPi – setup voor nerds!
RaspberryPi – De eerste configuratie!
RaspberryPi – Bedien de RaspberryPi via SSH
NodeRed – NodeRed installeren op de RaspberryPi
NodeRed – Installeer nieuwe knooppunten

Vereist gereedschap:
-Nee-

Benodigd materiaal:

In de volgende lijst vindt u alle onderdelen die u nodig heeft om dit artikel te implementeren.


Log in op de configuratie-interface van NodeRed

Voordat u uw NodeRed-configuratie kunt bewerken, moet u - indien geactiveerd - eerst inloggen op de NodeRed-configuratie-interface.

Weergave van het aanmeldingsvenster. Hier moet u de inloggegevens invoeren die u tijdens de configuratie van de login hebt opgegeven. Informatie hierover vind je in het artikel NodeRed - gebruikersaanmelding instellen.

Installatie van de vereiste knooppunten

Damit Ihr Homekit Geräte simulieren könnt muss natürlich erstmal die passende Node installiert sein. Installiert dazu die Node „node-red-contrib-homekit“. Wie Ihr Nodes installiert ist im Artikel NodeRed – Installeer nieuwe knooppunten uitgelegd.

node-red-contrib-homekit
Installation der Node „node-red-contrib-homekit“.

Lees bewegingsmelders

Ein kleiner Beispiel-Node-Code um über den Status eines Bewegungsmelders informiert zu werden könnte so aussehen. Zur Simulation des Bewegungsmelders sind die „Inject“-Nodes „true“ und „false“ eingebaut, welche ein Bewegungsmelder-ist-betätigt-Signal(true) und ein Bewegungsmelder-ist-nicht-betätigt-Signal(false) simulieren. An diese Eingänge könnt Ihr dann einen Bewegunsmelder „anschließen“, dessen Signale dann über HomeKit angezeigt werden.

Außerdem ist dabei noch eine Inject-Node mit dem Namen „requestOptions“. Bei einem klick darauf, werden Euch in der Debug-Leiste alle Eigenschaften dieses HomeKit-Devices angezeigt.

Weergave van de NodeCode.
[{"id '9998cf7e.5cf8e', type 'homekit-service', z '5dcffcbc.bae6c4', 'accessoire', a10e8039.50d9c, 'name 'Bewegingsmelder, slecht' , "serviceName":Bewegingssensor","x":740,"y":820,"draden":[["9dcd9414.118448"]]},{"id":18fa3044.4d02d", "type" : "json", "z":5dcffcbc.bae6c4", "name":", "property":payload", "action":", "pretty":false,"x":550," y ":820,"draden":[["9998cf7e.5cf8e"]]},{"id ': 2fea5d63.ae8852 '' type ' template '' z '' 5dcffcbc.bae6c4 '' name phore '', ''field '' payload '', fieldType '' msg '' format '' stuur '' syntax '' snor '' '' template '' 'Beweging gedetecteerd':{{ payload }}}", "output" str "x":400,"y":820,"wires":[["18fa3044.4d02d"]]},{"id":c568f55f.d8e828 " ,"type"inject", "z"5dcffcbc.bae6c4", "name"", "topic"", " repeat":", "crontab" "once":false,"onceDelay":0.1,"x":190,"y":800,"draden":[["2fea5d63.ae8852"] ] },{"id '9dcd9414.118448', type 'debug', z '5dcffcbc.bae6c4', 'name', 'actief':true,'tosidebar':true , "console":false,"tostatus":false,"complete:true","x":930,"y":820,"wires":[]},{"id:46dbd92c.8000e8 " ,"type"inject", "z"5dcffcbc.bae6c4", "name"", "topic"", "payload" "false", " repeat":", "crontab": "eenmaal":false,"eenmaalVertraging":0.1,"x":190,"y":840,"draden":[["2fea5d63.ae8852"] ] },{"id '39aee99f.957496', type 'comment', z '5dcffcbc.bae6c4', name 'Bewegingsmelder als gebeurtenis', 'info', "x ":220,"y":740,"draden":[]},{"id":769255e1.22b44c", "type":json", "z":5dcffcbc.bae6c4", naam" :"","property":payload","action":","pretty":false,"x":550,"y":860,"draden":[["9998cf7e.5cf8e" ]] },{"id 'fdd0e0c1.c5117', type 'template', z '5dcffcbc.bae6c4', name 'options', 'field 'payload', fieldType" :"msg", "format": stuur", syntax "snor", "template": {"foo":bar"}", "output" str, "x" :400 ,"y":860,"draden":[["769255e1.22b44c"]]},{"id '40c3c829.e4f308', type 'inject', 'z':5dcffcbc. bae6c4" ,"name"requestOptions", "topic" ", "payload" "true", "payloadType ", bool", "repeat" , "crontab" , "once ": false,"onceDelay":0.1,"x":220,"y":900,"wires":[["fdd0e0c1.c5117"]]},{"id 'a10e8039.50d9c","type ": "homekit-accessoire", "z" "accessoireName": "Sensoren", "pinCode" 111-11-111 "port" "32304", "manufacturer": "Nerdiy. de" ,"model": standaardmodel", "serialNo": standaard serienummer", "accessoiretype: 10"}]

Damit dieser NodeCode funktioniert müsst Ihr noch das HomeKit-accessory und den Service konfigurieren. Klickt dazu doppelt auf die Node „BewegungsmelderBad“. Dadurch öffnet sich das folgende Menü.

Dort stellt Ihr in der Rubrik „Service“ den „MotionSensor“ ein und klickt dann in der Rubrik „Accessory“ auf das Stift-Icon.
Dort könnt /müsst Ihr nun Daten eintragen, welche für die spätere Konfiguration in iOS wichtig sind. Tragt alle Daten wie abgebildet ein. Dabei verändert Ihr aber natürlich den Pin Code zu einem den nur Ihr persönlich kennt. Dieser muss auch im Format XXX-XX-XXX eingetragen werden. Die Angabe bei „Port“ gibt an unter welchem Port das HomeKit-Device später erreichbar ist. Diesen müsst Ihr nicht unbedingt explizit angeben. Dann wird von NodeRed ein zufälliger Port ausgewählt. Dies hat allerdings den Nachteil, dass ein einmal mit iOS verbundenes HomeKit-Device nach einem neustart von NodeRed einen anderen Port zugewiesen bekommt und somit in iOS neu verbunden werden muss. Durch die Vergabe eines festen Ports vermeidet Ihr dies. Bei Type empfiehlt es sich dazu noch „SENSOR“ einzustellen, weil Ihr in diesem Fall ja auch einen Sensor verwendet. Alle anderen Angaben könnt Ihr nach Eurem belieben eintragen.

Habt Ihr all diese Daten eingetragen klickt Ihr auf „Add“ und auf „Done“ um diese Einstellung zu übernehmen. Im letzten Abschnitt dieses Artikels wird erklärt wie Ihr die HomeKit-Devices dann in iOS anmeldet.


Verwarmingsthermostaten aanpassen

Hier ziet u een voorbeeld van een knooppuntcode over hoe u bijvoorbeeld de informatie van een verwarmingsthermostaat kunt doorsturen naar een gesimuleerde HomeKit-thermostaat. Er zijn (in dit voorbeeld) twee eigenschappen die op uw iOS-apparaat worden weergegeven. Eén keer de ingestelde doeltemperatuur en de huidige werkelijke temperatuur. Beide waarden kunnen via de inject-nodes worden gesimuleerd. Op dit punt zou u de injectieknooppunten moeten vervangen door de waarden van uw echte verwarmingsthermostaat.

Aan de andere kant worden de waarden die u via de iOS HomeKit-app naar het gesimuleerde HomeKit-apparaat verzendt, via het debug-knooppunt uitgevoerd. Op dit punt kunnen de in te stellen waarden worden doorgestuurd naar de verwarmingsthermostaat.

Außerdem ist dabei auch wieder eine Inject-Node mit dem Namen „requestOptions“ vorhanden. Bei einem klick darauf, werden Euch in der Debug-Leiste alle Eigenschaften dieses HomeKit-Devices angezeigt.

Weergave van de NodeCode.
[{"id":b3001d65.5105f", type":comment", z":5dcffcbc.bae6c4", "name": Verwarmingsthermostaten regelen, "info":, "x" : 220,"y":1300,"draden":[]},{"id 'b12f3ad3.c1ef68', 'type 'homekit-service', z '5dcffcbc.bae6c4', 'accessoire " :"39b8cf37.35a27","name "Verwarming", serviceName "Thermostaat", "x":740,"y":1480,"draden":[["3cb1fd5c.fd60c2"]]} , {"id '8d9e79f3.0de618', type 'json', z '5dcffcbc.bae6c4', 'name', 'property', 'payload', 'action' " ,"pretty":false,"x":590,"y":1480,"draden":[["b12f3ad3.c1ef68"]]},{"id":7e9e340b.320a5c", "type": " template", "z":5dcffcbc.bae6c4", "name": instelpunttemperatuur, "field": payload, "fieldType: msg", format: stuur, "syntaxis" :"moustache", "template": {"Doeltemperatuur": {{payload}}}", "output":str", "x":420,"y":1460,"draden":[[" 8d9e79f3.0de618"]]},{"id '3cb1fd5c.fd60c2', 'type': wijzigen ', z':5dcffcbc.bae6c4 ', naam ', 'regels':[{ "t":set", "p":payload","pt"msg", "to":payload.TargetTemperature", "tot":msg"}],"action":" ,"property":,"from":1480,"draden":[["4ca89ee5.5cd2d "]]},{"id '4ca89ee5.5cd2d', type 'debug', z '5dcffcbc.bae6c4', naam ', 'actief':true,'naarzijbalk' :true,"console":false,"tostatus":false,"complete:true","x":1130,"y":1480,"draden":[]},{"id":129c9403 .2c229c", "type":template, "z":5dcffcbc.bae6c4", "name":Is-Temp", "field":payload", "fieldType":msg", format zzlebars","syntax: snor","template":{"CurrentTemperature":{{payload}}}", "output":str","x":420,"y": 1500,"draden":[["8d9e79f3.0de618"]]},{"id":182c1f88.f4e04", "type": injecteren", "z":5dcffcbc.bae6c4", "naam": "","topic":","payload":30";payloadType"num",repeat":", "crontab"": "once":false,"onceDelay": 0.1,"x":230,"y":1600,"draden":[["129c9403.2c229c"]]},{"id '93979569.ae6e68', type 'injecteren', 'bijv. "5dcffcbc.bae6c4", "name" , "topic" , "payload" , "20", "payloadType ", num", "repeat" , "crontab " ","once":false,"onceDelay":0.1,"x":230,"y":1560,"wires":[["129c9403.2c229c"]]},{"id":f2fdf87d.6e9be8 ","type"inject","z"5dcffcbc.bae6c4"name""topic""topic""payload""10""payloadType""num", "repeat":", "crontab": "eenmaal":false,"eenmaalVertraging":0.1,"x":230,"y":1520,"draden":[["129c9403.2c229c"] ]},{"id 'ccdae584.bd2dd8', 'type 'inject', 'z '5dcffcbc.bae6c4 ', 'name', 'topic', 'payload': "30", "payloadType":num", "repeat":", "crontab" ", "eenmaal":false,"eenmaalVertraging":0.1,"x":230,"y":1440, "draden":[["7e9e340b.320a5c"]]},{"id '820780bd.32628', 'type 'inject', 'z '5dcffcbc.bae6c4 ', 'name' ,"topic" ", "payload":20", "payloadType":num", "repeat":", "crontab" ", "once":false,"onceDelay":0.1, "x":230,"y":1400,"draden":[["7e9e340b.320a5c"]]},{"id 'fafe7787.64f6c8', type 'injecteren', 'z': "5dcffcbc.bae6c4", "name":", "topic":", "payload":10", "payloadType":num", "repeat":", "crontab": "once":false,"onceDelay":0.1,"x":230,"y":1360,"wires":[["7e9e340b.320a5c"]]},{"id":78c76a0a.b7b7f4", "type"json", "z":5dcffcbc.bae6c4", "name"", "property":payload, "action":", "pretty":false,"x": 590,"y":1620,"draden":[["b12f3ad3.c1ef68"]]},{"id 'a6b574ca.dc1c98', type 'template', z '5dcffcbc.bae6c4 ","name"options", field "payload", fieldType "msg", format "stuur", syntax "snor", template ", "foo static:bar"}","output:str","x":440,"y":1620,"draden":[["78c76a0a.b7b7f4"]]},{"id":63397e19 .508ff", type "inject", z "5dcffcbc.bae6c4", naam "requestOptions", topic ", "payload" "true", "payloadType" bool","repeat":", "crontab" ", "once":false,"onceDelay":0.1,"x":260,"y":1660,"draden":[["a6b574ca. dc1c98"]]},{"id '39b8cf37.35a27', type 'homekit-accessoire', 'z': ', 'accessoireName', 'Verwarming', 'pinCode': 111-11 -111", "port":32305", "manufacturer":Nerdiy.de", "model": "Standaardmodel", "serialNo: "Standaard serienummer", "accessoireType: 9"}]

Wie beim Bewegungsmelder müsst Ihr auch bei diesem NodeCode das HomeKit-Accessory und den Service  konfigurieren. Klickt dazu doppelt auf die Node „Heizung“. Dadurch öffnet sich wieder das folgende Menü.

Dort stellt Ihr den Service auf Thermostat. Danach klickt Ihr in der Rubrik „Accessory“ wieder auf das Stift-Icon.
Die Einstellung läuft wieder genauso wie beim Bewegungsmelder-Beispiel ab. Der einzige Unterschied ist nun, dass Ihr eine andere Port Nummer als bei der Bewegungsmelder-Konfiguration auswählt(am besten einfach den nächsten Port nach dem, beim Bewegungsmelder eingestellten Port) und natürlich auch den Type auf „THERMOSTAT“ setzt.


Temperatuur- en vochtigheidssensoren uitlezen

Dieses NodeCode-Beispiel zeigt wie man einen Luftfeuchtigkeits- und Temperatursensor mit der HomeKit-Node simuliert. Die HomeKit-Node nutzt dabei als „Datenquelle“ die Daten von „openweathermap“. Das heißt es werden die aktuellen Temperaturen des in der openweathermap-Node eingestellten Ortes angezeigt.

Wie bei allen anderen Beispielen ist dabei auch wieder eine Inject-Node mit dem Namen „requestOptions“ vorhanden. Bei einem klick darauf, werden Euch in der Debug-Leiste alle Eigenschaften dieses HomeKit-Devices angezeigt.

Weergave van de NodeCode.
[{"id 'cc6c7b40.da9078', type 'homekit-service', z '5dcffcbc.bae6c4', 'accessoire', bd29e027.b0d63, 'name', 'Temperatuur', "serviceName":TemperatuurSensor","x":1130,"y":1100,"draden":[["7a89e1f4.1dc75"]]},{"id":3b22973d.547ac8", "type": "homekit-service", "z"5dcffcbc.bae6c4", "accessoire":2dc17d94.90bc32", "name":Vochtigheid", serviceName: "VochtigheidSensor", "x":1140,"y ":1180,"wires":[["195b33c9.57261c"]]},{"id '7a89e1f4.1dc75', type 'debug', z '5dcffcbc.bae6c4', 'naam " "actief":true,"naarzijbalk":true,"console":false,"naarstatus":false,"complete":true","x":1290,"y":1100," draden":[]},{"id '1c8b89c4.9270b6', type 'json', z '5dcffcbc.bae6c4',name ', 'property ', payload' ,"action":","pretty":false,"x":970,"y":1120,"wires":[["cc6c7b40.da9078"]]},{"id":a3736df8.87e9c ","type"json","z"5dcffcbc.bae6c4"name" "name" "property" "payload" "action" "pretty":false,"x ":970,"y":1160,"draden":[["3b22973d.547ac8"]]},{"id '400e1113.e2f29', type 'template', z '5dcffcbc .bae6c4", "name" ", "field" , payload ", fieldType " msg ", format "stuur", syntax "snor", template ":" CurrentRelativeHumidity:{{payload}}"}","output:str","x":820,"y":1160,"wires":[["a3736df8.87e9c"]]},{" id 'bf9000c2.be6a8', type 'template', z '5dcffcbc.bae6c4', 'name', 'field', payload,'fieldType', msg", "format": stuur", "syntax": snor", "template":{"CurrentTemperature":{{payload}}"}", "output":str", "x":820, "y":1120,"wires":[["1c8b89c4.9270b6"]]},{"id '195b33c9.57261c', type 'debug', z '5dcffcbc.bae6c4', "name": "actief":true,"naarsidebar":true,"console":false,"tostatus":false,"complete":true","x":1290,"y":1180 ,"draden":[]},{"id 'a64825b.273ccd8', 'type': wijzigen ', z': 5dcffcbc.bae6c4 ', 'name ' converteren ', 'regels': [{"t":set", "p":payload", "pt":msg", "to":data.main.temp-273.15", "tot":jsonata"}], "action": "property": "from": "to": "reg":false,"x":620,"y":1120,"draden": [["bf9000c2.be6a8"]]},{"id 'fcbc03d9.26567', 'type 'json', z '5dcffcbc.bae6c4 ', naam ', 'eigendom' :"payload", "action":", "mooi":false,"x":410,"y":1140,"draden":[["a64825b.273ccd8", "553238c1.76cb68"]]} ,{"id '9dbc96a3.21dcf8', type 'inject', 'z':5dcffcbc.bae6c4 ', name', 'topic', 'payload', 'payload' ,"payloadType":date","repeat" "crontab" "once":false,"onceDelay":0.1,"x":200,"y":1080,"draden" :[["2d6b39b3.dc72f6"]]},{"id '553238c1.76cb68', 'type 'wijzigen',z '5dcffcbc.bae6c4', 'name 'converteren', ' regels":[{"t"set"p"payload"pt"msg""to""data.main.humidity""tot"jsonata"}] ,"action":", "property" , "from":, "to":, "reg":false,"x":620,"y":1160,"draden" :[["400e1113.e2f29"]]},{"id '2d6b39b3.dc72f6', 'type': openweerkaart ', z '5dcffcbc.bae6c4 ', 'name', 'wtype vacature”, lon”,”lat”,”city”:Bochum”, “country”:Duitsland”, “taal”:400, "y":1080,"draden":[["fcbc03d9.26567"]]},{"id '66e6d0.bca8793', type 'comment', z '5dcffcbc.bae6c4", "name 'Klimaatsensoren lezen', 'info': 'x':210,'y':1000,'draden':[]},{'id ':648f2c18.d730f4', 'type " :"json", "z":5dcffcbc.bae6c4", "name":", "property":payload", "action":", "pretty":false,"x":970, " y":1200,"draden":[["3b22973d.547ac8"]]},{"id":f5f3fc95.8afe2", "type"template", "z":5dcffcbc.bae6c4", " name 'options', field 'payload', fieldType ' msg ', format 'stuur', 'syntax 'snor', 'template': 'foo': " bar"}","output:str","x":820,"y":1200,"draden":[["648f2c18.d730f4"]]},{"id:4a9292b6.a69abc " ,"type"inject", "z"5dcffcbc.bae6c4", "name"requestOptions", "topic" ", "payload" "true", "payloadType" "bool" , "repeat":", "crontab" , "once":false,"onceDelay":0.1,"x":640,"y":1200,"wires":[["f5f3fc95.8afe2" ] ]},{"id '31aa55d1.30fa6a', type 'json', z '5dcffcbc.bae6c4', 'name', 'property', 'payload', 'action' " :"","mooi":false,"x":970,"y":1080,"draden":[["cc6c7b40.da9078"]]},{"id":d0d837e2.311f88", type phoretemplate","z"5dcffcbc.bae6c4",name"options",field"payload",fieldType"msg",format"stuur", syntax eerder: moustache, template: {"foo: bar"}", output: str", x":820,"y":1080,"draden":[[" 31aa55d1 .30fa6a"]]},{"id 'c13c8c2f.1991c', 'type': injecteren ', z ' 5dcffcbc.bae6c4 ',name 'requestOptions',topic ' " ,"payload":true", "payloadType":bool", "repeat":", "crontab" ", "once":false,"onceDelay":0.1,"x":640, " y":1080,"draden":[["d0d837e2.311f88"]]},{"id 'bd29e027.b0d63', type 'homekit-accessoire', z ': ',' accessoireName "Temperatuur", "pinCode":111-11-111", "port":32300", "manufacturer": "Nerdiy.de", "model": "Standaardmodel", "serialNo": " Standaard serienummer", "accessoireType":10"},{"id":2dc17d94.90bc32", "type": homekit-accessoire", "z": "accessoireName: Vochtigheid" , "pinCode":111-11-111", "port":32301", "manufacturer":Nerdiy.de", "model": "Standaardmodel", "serialNo": "Standaard serienummer", "accessoireType:"10"}]

Wie bei den vorherigen Beispielen müsst Ihr auch bei diesem NodeCode das HomeKit-Accessory und den Service konfigurieren. Klickt dazu doppelt auf die Node „Luftfeuchtigkeit“ bzw. „Temperatur“. Dadurch öffnet sich wieder das folgende Menü.

Wählt dazu unter „Service“ den „HumiditySensor“ aus und klickt dann in der Rubrik „Accessory“ auf das Stift-Icon.
Die Einstellung läuft wieder wie bei den anderen Beispielen ab. Die Portnummer muss wieder um Eins erhöht und festgelegt werden und der Type wird wieder auf „SENSOR“ gesetzt.
Das gleiche gilt für die „Temperatur“. Dort wird der Service nun auf „TemperatureSensor“ eingestellt. Danach klickt Ihr in der Rubrik „Accessory“ wieder auf das Stift-Icon.
…und stellt die Eigenschaften wieder wie bei den vorherigen Beispielen ein. Der Type muss wieder auf „SENSOR“ festgelegt werden. die Unterscheidung zwischen Luftfeuchtigkeits- und Temperatur-Sensor passiert dabei über den zuvor festgelegten Service.

Controle (Tasmota) lampen

Hier is een voorbeeld van hoe je een lamp met de Tasmota-firmware aan de HomeKit-node kunt koppelen, zodat alle wijzigingen van alle bronnen altijd naar alle ingangsopties worden verzonden. Hierdoor is het mogelijk om de kleur, helderheid of algemene aan/uit instellingen in iOS of in het dashboard of op een andere manier in te stellen en tegelijkertijd wordt ook de huidige status doorgegeven aan alle instelmogelijkheden.

Om deze NodeCode voor u te laten werken, heeft u ook de Sonoff-node nodig en moet u deze dienovereenkomstig configureren (geschikt voor uw Sonoff-apparaat).

Weergave van de NodeCode.
[{"id":"b200ae52.6003d","type":"comment","z":"5dcffcbc.bae6c4","name":"Tasmota RGB-LED-Steuerung","info":"","x":220,"y":80,"wires":[]},{"id":"a42e8481.c58778","type":"ui_switch","z":"5dcffcbc.bae6c4","name":"","label":"MiniLichterkette","group":"ca676059.8e72e","order":12,"width":0,"height":0,"passthru":false,"decouple":"true","topic":"","style":"","onvalue":"true","onvalueType":"bool","onicon":"","oncolor":"","offvalue":"false","offvalueType":"bool","officon":"","offcolor":"","x":820,"y":220,"wires":[["fd8991ee.f7fd1"]]},{"id":"73405495.f1e9cc","type":"homekit-service","z":"5dcffcbc.bae6c4","accessory":"753c6646.f99048","name":"MiniLichterkette","serviceName":"Lightbulb","x":200,"y":160,"wires":[["94a1b366.5c039","9b6599ac.52e878"]]},{"id":"94a1b366.5c039","type":"change","z":"5dcffcbc.bae6c4","name":"convert","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.On","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":160,"wires":[["fd8991ee.f7fd1"]]},{"id":"9e961d23.1c88b","type":"ui_colour_picker","z":"5dcffcbc.bae6c4","name":"","label":"MiniLichterkette","group":"ca676059.8e72e","format":"hsl","outformat":"object","showSwatch":true,"showPicker":true,"showValue":true,"showHue":true,"showAlpha":true,"showLightness":true,"dynOutput":"false","order":25,"width":0,"height":0,"passthru":false,"topic":"","x":200,"y":520,"wires":[["be8d6249.9bab5"]]},{"id":"6c5cc00.0eed54","type":"ui_slider","z":"5dcffcbc.bae6c4","name":"","label":"MiniLichterkette","group":"ca676059.8e72e","order":0,"width":0,"height":0,"passthru":false,"topic":"","min":0,"max":"100","step":1,"x":200,"y":380,"wires":[["2dabaae2.c1e016"]]},{"id":"20784c5.660aab4","type":"template","z":"5dcffcbc.bae6c4","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{"Brightness":"{{payload.l}}","Hue":"{{payload.h}}", "Saturation":"{{payload.s}}", "On": true}","output":"str","x":580,"y":520,"wires":[["e8458a57.465e58"]]},{"id":"e8458a57.465e58","type":"json","z":"5dcffcbc.bae6c4","name":"","property":"payload","action":"","pretty":false,"x":730,"y":520,"wires":[["73405495.f1e9cc"]]},{"id":"3bd94571.32107a","type":"mqtt out","z":"5dcffcbc.bae6c4","name":"Set Hue","topic":"cmnd/MiniLichterkette/HsbColor1","qos":"","retain":"","broker":"aa8ea139.37c07","x":800,"y":280,"wires":[]},{"id":"c8c9c8e5.fccc08","type":"mqtt out","z":"5dcffcbc.bae6c4","name":"Set Saturation","topic":"cmnd/MiniLichterkette/HsbColor2","qos":"","retain":"","broker":"aa8ea139.37c07","x":820,"y":400,"wires":[]},{"id":"be920697.1bc058","type":"mqtt out","z":"5dcffcbc.bae6c4","name":"Set Brightness","topic":"cmnd/MiniLichterkette/HsbColor3","qos":"","retain":"","broker":"aa8ea139.37c07","x":820,"y":340,"wires":[]},{"id":"9b6599ac.52e878","type":"function","z":"5dcffcbc.bae6c4","name":"Split Color Values","func":"if (msg.payload.Hue!==undefined)
{
    msg.payload=msg.payload.Hue;
    return [ msg, null, null ];
}
if (msg.payload.Brightness!==undefined)
{
    msg.payload=msg.payload.Brightness;
    return [null,  msg, null ];
}
if (msg.payload.Saturation!==undefined)
{
    msg.payload=msg.payload.Saturation;
    return [ null, null, msg ];
}","outputs":3,"noerr":0,"x":470,"y":220,"wires":[["3bd94571.32107a"],["be920697.1bc058"],["c8c9c8e5.fccc08"]]},{"id":"15bdce9b.ac1781","type":"mqtt in","z":"5dcffcbc.bae6c4","name":"dimmerState","topic":"stat/MiniLichterkette/RESULT","qos":"2","broker":"aa8ea139.37c07","x":190,"y":440,"wires":[["441ae395.5fbfcc"]]},{"id":"441ae395.5fbfcc","type":"json","z":"5dcffcbc.bae6c4","name":"","property":"payload","action":"","pretty":false,"x":350,"y":440,"wires":[["5918dc5d.eee394"]]},{"id":"5918dc5d.eee394","type":"change","z":"5dcffcbc.bae6c4","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.Dimmer","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":520,"y":440,"wires":[["6c5cc00.0eed54"]]},{"id":"96cbb503.343228","type":"json","z":"5dcffcbc.bae6c4","name":"","property":"payload","action":"","pretty":false,"x":530,"y":380,"wires":[["73405495.f1e9cc"]]},{"id":"2dabaae2.c1e016","type":"template","z":"5dcffcbc.bae6c4","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{"Brightness":"{{payload}}"}","output":"str","x":380,"y":380,"wires":[["96cbb503.343228"]]},{"id":"be8d6249.9bab5","type":"function","z":"5dcffcbc.bae6c4","name":"map","func":"msg.payload.l=msg.payload.l*100;
msg.payload.s=msg.payload.s*100;

return msg;","outputs":1,"noerr":0,"x":430,"y":520,"wires":[["20784c5.660aab4"]]},{"id":"bf36bff2.3d98f","type":"mqtt in","z":"5dcffcbc.bae6c4","name":"colorState","topic":"stat/MiniLichterkette/RESULT","qos":"2","broker":"aa8ea139.37c07","x":180,"y":580,"wires":[["d85429c0.4501c8","852254eb.6c9668"]]},{"id":"852254eb.6c9668","type":"json","z":"5dcffcbc.bae6c4","name":"","property":"payload","action":"","pretty":false,"x":330,"y":580,"wires":[["be6203d4.c9e66"]]},{"id":"4a52a0ca.93eac","type":"function","z":"5dcffcbc.bae6c4","name":"convert Color","func":"//var input=msg.payload.HSBColor;
let values=msg.payload.HSBColor.split(",");
msg.payload.h=values[0];
msg.payload.s=values[1]/100;
msg.payload.l=values[2]/100;

return msg;","outputs":1,"noerr":0,"x":610,"y":580,"wires":[["9e961d23.1c88b"]]},{"id":"be6203d4.c9e66","type":"switch","z":"5dcffcbc.bae6c4","name":"","property":"payload.HSBColor","propertyType":"msg","rules":[{"t":"nnull"}],"checkall":"true","repair":false,"outputs":1,"x":450,"y":580,"wires":[["db3e37fb.97a5f8","4a52a0ca.93eac"]]},{"id":"fd8991ee.f7fd1","type":"Sonoff device","z":"5dcffcbc.bae6c4","mode":"0","broker":"665cb0c4.3e438","device":"MiniLichterkette","name":"","onValue":"ON","offValue":"OFF","cmdPrefix":"cmnd","statPrefix":"stat","telePrefix":"tele","x":810,"y":160,"wires":[["a42e8481.c58778"]]},{"id":"b3771bf1.2acd78","type":"json","z":"5dcffcbc.bae6c4","name":"","property":"payload","action":"","pretty":false,"x":550,"y":120,"wires":[["73405495.f1e9cc"]]},{"id":"5dbdb6ee.9ac9f8","type":"template","z":"5dcffcbc.bae6c4","name":"options","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{"foo":"bar"}","output":"str","x":400,"y":120,"wires":[["b3771bf1.2acd78"]]},{"id":"97278e2f.5d65a","type":"inject","z":"5dcffcbc.bae6c4","name":"requestOptions","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":200,"y":120,"wires":[["5dbdb6ee.9ac9f8"]]},{"id":"d85429c0.4501c8","type":"debug","z":"5dcffcbc.bae6c4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":350,"y":640,"wires":[]},{"id":"db3e37fb.97a5f8","type":"debug","z":"5dcffcbc.bae6c4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":590,"y":640,"wires":[]},{"id":"ca676059.8e72e","type":"ui_group","z":"","name":"Mini-Lichterkette","tab":"d651a8eb.fefb38","disp":true,"width":"6","collapse":false},{"id":"753c6646.f99048","type":"homekit-accessory","z":"","accessoryName":"Lampen","pinCode":"111-11-111","port":"32302","manufacturer":"Nerdiy.de","model":"Default Model","serialNo":"Default Serial Number","accessoryType":"5"},{"id":"aa8ea139.37c07","type":"mqtt-broker","z":"","name":"Server-Mqtt","broker":"server.fritz.box","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"665cb0c4.3e438","type":"mqtt-broker","z":"","name":"","broker":"server.fritz.box","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"d651a8eb.fefb38","type":"ui_tab","z":"","name":"Home","icon":"dashboard"}]

Wie bei den vorherigen Beispielen müsst Ihr auch bei diesem NodeCode das HomeKit-Accessory und den Service konfigurieren. Klickt dazu doppelt auf die Node (in diesem Fall)“MiniLichterkette“. Dadurch öffnet sich wieder das folgende Menü.

Dort stellt Ihr wieder zunächst den Service auf „Lightbulb“ und klickt dann in der Rubrik „Accessory“ auf das Stift-Icon.
Die Einstellungen hier sind wieder so zu handhaben wie bei den vorherigen Beispielen. Nur den Type stellt Ihr auf „LIGHTBULB“ und natürlich muss die Portnummer wieder angepasst werden.

controle stopcontacten

Dieses Beispiel zeigt Euch wie Ihr eine SmartHome-Steckdose mit der HomeKit-Node simulieren könnt. Dazu wird Hier eine SonoffS26-Steckdose verwendet die (wie auch die Lampe im vorherigen Beispiel) mit der Tasmota-Firmware „bestückt“ ist. Wie Ihr so eine Steckdose mit der Tasmota-Firmware programmiert und über Node-Red steuert ist in dem Artikel Tasmota - Flash Sonoff S26-aansluiting met Tasmota-firmware beschreven.

Wie bei allen anderen Beispielen ist dabei auch wieder eine Inject-Node mit dem Namen „requestOptions“ vorhanden. Bei einem Klick darauf, werden Euch in der Debug-Leiste alle Eigenschaften dieses HomeKit-Devices angezeigt.

Weergave van de NodeCode.
[{"id 'd6d0d8e6.785448', type 'comment', z '5dcffcbc.bae6c4', name 'Socket', 'info', 'x':180 ,"y":1800,"draden":[]},{"id"bad38f27.a93b4","type"ui_switch",z"5dcffcbc.bae6c4",name" ,"label"Socket",group":16663fb4.9e351",bestel":20,"breedte":0,"hoogte":0,"doorvoer":false,"decouple":true" ,"topic" ", "style" ", " onvalue "true ", onvalueType " bool ",onicon ", " oncolor ", " offvalue " false","offvalueType <<bool","officon":","offcolor":","x":670,"y":1920,"draden":[["f1118c1c.95804"]] },{"id 'f1118c1c.95804', type 'Sonoff-apparaat', z '5dcffcbc.bae6c4', mode '0 ', broker '1fafbb1c.a2df75', "device":SonoffS26", "name":", "onValue": AAN", "offValue": UIT", "cmdPrefix":cmnd", "statPrefix":stat", "telePrefix" :"tele","x":660,"y":1860,"draden":[["bad38f27.a93b4"]]},{"id"a4cdda.44b67228","type"homekit- service","z '5dcffcbc.bae6c4', 'accessoire': b7e7d023.40f38 ', 'name' stopcontact, 'serviceName', stopcontact, 'x':250,'y':1860 ,"draden":[["307b902a.ca26b"]]},{"id":307b902a.ca26b", "type"wijzigen", z"5dcffcbc.bae6c4", "name" convert","rules":[{"t":set","p"payload","pt"msg", "to"payload.On",tot""msg" }],"action":valse,"x":440,"y":1860," draden":[["f1118c1c.95804"]]},{"id 'fb3c28d1.cb8da8', type 'json',z '5dcffcbc.bae6c4', 'name', "property":payload", "action":", "pretty":false,"x":570,"y":1980,"wires":[["a4cdda.44b67228"]]},{" id '811d7998.a861e8', type 'template', z '5dcffcbc.bae6c4', 'name' opties, 'field', payload, 'fieldType', msg' ,"format"stuur","syntax"snor",template":{"foo"bar"}",output"str",x":420,"y" :1980,"wires":[["fb3c28d1.cb8da8"]]},{"id":6bdad444.d1270c", type": injecteren", "z":5dcffcbc.bae6c4", "naam" :"requestOptions", "topic" ", "payload":true, "payloadType":bool", "repeat":", "crontab" ", "once":false, "onceDelay ":0.1,"x":260,"y":1980,"draden":[["811d7998.a861e8"]]},{"id"16663fb4.9e351", "z":", "name": "licht", "tab": e5c99d4.147226 "bestelling":2,"disp":true,"width":6", "collapse":false },{"id '1fafbb1c.a2df75', type 'mqtt-broker', z ', 'name 'Server-Mqtt', 'broker': server.fritz.box ","port":1883", "clientid": "usetls":false,"compatmode":true,"keepalive":true,"keepalive":true,"geboorteTopic": "geboorteQos":0", "geboortePayload" ", "closeTopic" ", "closeQos" "0", "closePayload" , "willTopic" , "willQos" 0 ","willPayload"},{"id":b7e7d023.40f38", "type": homekit-accessoire", "z":", "accessoireName": stopcontacten, "pinCode": "111-11-111", "port":32303", "manufacturer":Nerdiy.de", "model": "Standaardmodel", "serialNo": "Standaard serienummer", "accessoireType" 7"},{"id 'e5c99d4.147226', type 'ui_tab', z ', 'name', 'Home', icon 'dashboard', 'bestellen': 1}]

Auch hier müsst Ihr (Überraschung 🙂 ) – wie bei den vorherigen Beispielen –  das HomeKit-Accessory und den Service konfigurieren. Klickt dazu doppelt auf die Node „Steckdose“. Dadurch öffnet sich wieder das folgende Menü.

Dort stellt Ihr wieder zunächst den Service auf „Outlet“ und klickt dann in der Rubrik „Accessory“ auf das Stift-Icon.
Die Einstellungen hier sind wieder so zu handhaben wie bei den vorherigen Beispielen. Nur den Type stellt Ihr auf „OUTLET“ und natürlich muss die Portnummer wieder angepasst werden.

Ontdek de apparaatinstellingen en eigenschappen

Bei Einigen Beispielen ist eine Inject-Node mit dem Namen „requestOptions“ vorhanden. Über diese habt Ihr die Möglichkeit die verfügbaren Eigenschaften der jeweiligen HomeKit-Node anzeigen zu lassen. Diese Eigenschaften könnt Ihr dann nutzen um das simulierte HomeKit-Gerät einzustellen. Zum Beispiel gibt es bei der HomeKit-Node welche die „MiniLichterkette“ steuert die Möglichkeit die ColorTermperature zu setzen. Setzt Ihr also die Eigenschaft wird der entsprechende Wert in HomeKit angezeigt.

Overzicht van de eigenschappen van de HomeKit-knooppunten die in deze voorbeelden worden gebruikt.

Instellen op iPhone

Nadat u de gewenste HomeKit-apparaten in NodeRed heeft aangemaakt, kunt u ze nu op het iOS-apparaat registreren. In dit onderdeel wordt u (enigszins) stap voor stap door het registratieproces geleid. Omdat dit soms veel afbeeldingen bevat, worden de volgende stappen samengevat als diavoorstellingen.

Öffnet dazu auf Eurem iOS-Gerät(in diesem Fall ein iPhone) die App „Home“.
Im „Werkszustand“ sind hier noch keine HomeKit-Devices angemeldet. Deswegen springt euch im unteren Bereich auch schon der „Add Accesory“-Button entgegen. Durch einen Klick darauf werdet Ihr zum Menü geleitet mit dem Ihr neue HomeKit-Devices hinzufügen könnt.

vochtigheid

Um die Anmeldung eines Luftfeuchtigkeitssensors zu starten klickt Ihr – wie im vorherigen Schritt angegeben – auf „Add Accessory“.

Deze slideshow vereist JavaScript.

verwarming thermostaten

Um die Anmeldung des Heizungs-Thermostats zu starten klickt Ihr – wie im vorherigen Schritt – auf „Add Accessory“ und dann auf „Don’t Have a Code or Can’t Scan“.

Deze slideshow vereist JavaScript.

(Tasmota) lampje

Um die Anmeldung der Lampe zu starten klickt Ihr – wie im vorherigen Schritt – auf „Add Accessory“ und dann auf „Don’t Have a Code or Can’t Scan“.

Deze slideshow vereist JavaScript.

(Tasmota) stopcontact

Um die Anmeldung der Steckdose zu starten klickt Ihr – wie im vorherigen Schritt – auf „Add Accessory“ und dann auf „Don’t Have a Code or Can’t Scan“.

Deze slideshow vereist JavaScript.

temperatuursensor

Um die Anmeldung des Temperatursensors zu starten klickt Ihr – wie im vorherigen Schritt – auf „Add Accessory“ und dann auf „Don’t Have a Code or Can’t Scan“.

Deze slideshow vereist JavaScript.

Bewegingsdetector

Um die Anmeldung des Bewegungsmelders zu starten klickt Ihr – wie im vorherigen Schritt – auf „Add Accessory“ und dann auf „Don’t Have a Code or Can’t Scan“.

Deze slideshow vereist JavaScript.


Het is je misschien al opgevallen: met deze iOs-node heb je allerlei mogelijkheden. Probeer gewoon iets rond. Als u vragen heeft, kunt u deze achterlaten in de reacties.

Veel plezier met het project

Ik hoop dat alles werkte zoals beschreven. Zo niet, of als je vragen of suggesties hebt, laat het me weten in de commentaren. Ik zal dit dan zo nodig aan het artikel toevoegen.
Ideeën voor nieuwe projecten zijn altijd welkom. 🙂

PS Veel van deze projecten - vooral de hardwareprojecten - kosten veel tijd en geld. Natuurlijk doe ik dit omdat ik het leuk vind, maar als je het cool vindt dat ik de informatie met je deel, dan zou ik blij zijn met een kleine donatie aan het koffiefonds. 🙂

Koop Me a Coffee op ko-fi.com       

4 comments

  1. hallo nerdy,

    coole site en coole projecten! Ik heb al het een en ander in mijn smart home geïmplementeerd (KNX, bridge naar HomeKit, Node Red etc.) en heb nog veel gepland. Probeer al een tijdje de HomeKit Bridge van Node Red te gebruiken. Ik krijg ook de knooppunten ingesteld en geconfigureerd, zodat ik vervolgens als test een apparaat in de HomeKit-app kan instellen. Helaas is het geheel niet stabiel, valt de verbinding regelmatig weg en start Node Red zichzelf ook regelmatig opnieuw op, dwz iets in de Homekit bridge node veroorzaakt de crash. Heb jij dit probleem ook of heb je een idee wat de oorzaak zou kunnen zijn?

    Groetjes Turner

    1. hoi gymnast,
      bedankt 🙂
      Wat de reden zou kunnen zijn weet ik helaas niet precies. In het verleden had ik echter het probleem dat mijn NodeRed-installatie om de een of andere reden steeds opnieuw opstartte. Om het debuggen een beetje makkelijker te maken, heb ik een stroom gemaakt die het laatste logboek van het NodeRed-proces opslaat na het herstarten van NodeRed. U kunt dus vrij goed zien op welk punt NodeRed crashte en de fout herstellen. 🙂
      Informatie hierover vind je hier: https://nerdiy.de/howto-nodered-automatisches-speichern-des-nodered-journals-nach-dem-start-von-nodered-zu-debugging-zwecken/

      Hartelijke groeten
      Fabian

  2. Hallo Fab,

    echt coole site. Ik ben momenteel bezig met de flow voor de verwarmingsthermostaten, ook de import werkte wonderwel. Ik zit nu een beetje vast en heb een paar vragen:

    1. Kan ik elke verwarmingsthermostaat gebruiken of moet deze geschikt zijn voor Apple Homkit aangezien ik een Homekit simuleer?

    2. Hoe "weet" Node red dat ik een thermostaat heb, moet deze niet op de een of andere manier naar wifi worden overgezet?

    3. Heb ik afhankelijk van de thermostaat de juiste brug nodig, of kan dit ook zonder de juiste brug?

    Bij voorbaat dank voor uw antwoorden, zoals ik al zei, ik weet niet wat ik nu moet doen.

    Misschien kun je me ook gedetailleerde instructies e-mailen over hoe je van begin tot eind met de nieuwe thermostaat om moet gaan.

    Ik hoor graag van je.

    LG 🙂

    1. Dag Daniel,
      1. Dit kan in principe elke verwarmingsthermostaat zijn, ja. Het moet natuurlijk ondersteund worden door NodeRed of op een andere manier aangestuurd kunnen worden. 🙂
      2. Afhankelijk van wat voor soort thermostaat je hebt, is deze geïntegreerd via DECT (bij de Fritzbox), zigbee of een andere standaard. Soms heb je ook een geschikte gateway nodig.
      3. Als je al een FritzBox hebt, raad ik een van de radiatorthermostaten aan die compatibel is met de FritzBox. Informatie (inclusief hoe deze te integreren) vindt u hier, bijvoorbeeld: https://nerdiy.de/howto-nodered-fritzbox-heizkoerperthermostat-aus-nodered-steuern/

      Ik hoop dat dit je zal helpen. Laat het me anders even weten. 🙂
      Hartelijke groeten
      Fabian

Kommentar hinterlassen

Het e-mailadres wordt niet gepubliceerd. Erforderliche Felder sind mit * markiert

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.