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

Om ervoor te zorgen dat uw Homekit-apparaten apparaten kunnen simuleren, moet uiteraard eerst het juiste knooppunt worden geïnstalleerd. Om dit te doen, installeert u het knooppunt “node-red-contrib-homekit”. Hoe uw knooppunt wordt geïnstalleerd in het artikel NodeRed – Installeer nieuwe knooppunten uitgelegd.

node-red-contrib-homekit
Installatie van het knooppunt “node-red-contrib-homekit”.

Lees bewegingsmelders

Een klein voorbeeld van een knooppuntcode om te informeren over de status van een bewegingsmelder zou er als volgt uit kunnen zien. Om de bewegingsmelder te simuleren zijn de “Inject” knooppunten “true” en “false” geïnstalleerd, die simuleren dat een bewegingsmelder is geactiveerd (waar) en een bewegingsmelder is niet geactiveerd signaal (false). Op deze ingangen kun je vervolgens een bewegingsmelder “aansluiten”, waarvan de signalen vervolgens via HomeKit worden weergegeven.

Er is ook een injectieknooppunt genaamd "requestOptions". Als je erop klikt, worden alle eigenschappen van dit HomeKit-apparaat weergegeven in de foutopsporingsbalk.

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"}]

Om deze NodeCode te laten werken, moet je nog steeds het HomeKit-accessoire en de dienst configureren. Dubbelklik hiervoor op het knooppunt “Motion DetectorBath”. Hierdoor wordt het volgende menu geopend.

Daar stelt u de “MotionSensor” in het gedeelte “Service” in en klikt u vervolgens op het penpictogram in het gedeelte “Accessoires”.
Daar kun/moet je gegevens invoeren die van belang zijn voor latere configuratie in iOS. Voer alle gegevens in zoals weergegeven. Uiteraard wijzigt u de pincode in een pincode die alleen u persoonlijk kent. Ook dit moet worden ingevuld in het formaat XXX-XX-XXX. De informatie onder “Poort” geeft aan op welke poort het HomeKit-apparaat later toegankelijk is. Je hoeft dit niet noodzakelijk expliciet te specificeren. Vervolgens selecteert NodeRed een willekeurige poort. Dit heeft echter als nadeel dat een HomeKit-apparaat dat ooit met iOS is verbonden, na een herstart van NodeRed een andere poort krijgt toegewezen en dus opnieuw moet worden verbonden in iOS. U kunt dit voorkomen door een vaste poort toe te wijzen. Bij Type wordt aanbevolen om “SENSOR” in te stellen, omdat u in dit geval ook een sensor gebruikt. Alle overige gegevens kunt u naar wens invullen.

Nadat u al deze gegevens heeft ingevoerd, klikt u op “Toevoegen” en “Gereed” om deze instelling toe te passen. In het laatste deel van dit artikel wordt uitgelegd hoe u de HomeKit-apparaten in iOS registreert.


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.

Er is ook een injectieknooppunt genaamd "requestOptions". Als je erop klikt, worden alle eigenschappen van dit HomeKit-apparaat weergegeven in de foutopsporingsbalk.

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"}]

Net als bij de bewegingsmelder moet je ook met deze NodeCode het HomeKit accessoire en de dienst configureren. Om dit te doen, dubbelklikt u op het knooppunt "Verwarming". Hierdoor wordt het volgende menu opnieuw geopend.

Daar stel je de service in op thermostaat. Klik vervolgens opnieuw op het penpictogram in het gedeelte 'Accessoires'.
De instelling is hetzelfde als in het voorbeeld van de bewegingsmelder. Het enige verschil is dat je een ander poortnummer selecteert dan bij de bewegingsmelderconfiguratie (bij voorkeur simpelweg de volgende poort na de ingestelde poort voor de bewegingsmelder) en uiteraard ook het type op “THERMOSTAAT” zet.


Temperatuur- en vochtigheidssensoren uitlezen

Dit NodeCode-voorbeeld laat zien hoe u een vochtigheids- en temperatuursensor kunt simuleren met de HomeKit-node. Het HomeKit-knooppunt gebruikt de gegevens van “openweathermap” als “gegevensbron”. Dit betekent dat de huidige temperaturen van de locatie die is ingesteld in het openweathermap-knooppunt worden weergegeven.

Zoals bij alle andere voorbeelden is er ook een injectieknooppunt genaamd “requestOptions”. Als je erop klikt, worden alle eigenschappen van dit HomeKit-apparaat weergegeven in de foutopsporingsbalk.

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"}]

Net als bij de voorgaande voorbeelden moet je met deze NodeCode ook het HomeKit-accessoire en de dienst configureren. Om dit te doen, dubbelklikt u op het knooppunt “Vochtigheid” of “Temperatuur”. Hierdoor wordt het volgende menu opnieuw geopend.

Selecteer hiervoor onder “Service” de “HumiditySensor” en klik vervolgens op het penpictogram in het gedeelte “Accessoires”.
De instelling is hetzelfde als in de andere voorbeelden. Het poortnummer moet opnieuw met één worden verhoogd en ingesteld en het type wordt weer op “SENSOR” gezet.
Hetzelfde geldt voor “temperatuur”. Daar staat de service nu ingesteld op “TemperatuurSensor”. Klik vervolgens opnieuw op het penpictogram in het gedeelte 'Accessoires'.
...en stelt de eigenschappen opnieuw in zoals in de vorige voorbeelden. Het type moet opnieuw op “SENSOR” worden ingesteld. Het onderscheid tussen vocht- en temperatuursensoren wordt gemaakt via de eerder gedefinieerde 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"}]

Net als bij de voorgaande voorbeelden moet je met deze NodeCode ook het HomeKit-accessoire en de dienst configureren. Dubbelklik hiervoor op het knooppunt (in dit geval) “Mini Fairy Lights”. Hierdoor wordt het volgende menu opnieuw geopend.

Daar stelt u eerst de dienst in op “Lightbulb” en klikt u vervolgens op het penpictogram in het gedeelte “Accessoires”.
De instellingen hier moeten op dezelfde manier worden afgehandeld als in de voorgaande voorbeelden. Je zet gewoon het type op “LIGHTBULB” en uiteraard moet het poortnummer weer aangepast worden.

controle stopcontacten

In dit voorbeeld zie je hoe je met de HomeKit node een SmartHome stopcontact kunt simuleren. Hiervoor wordt een SonoffS26-fitting gebruikt die (net als de lamp in het vorige voorbeeld) is “uitgerust” met de Tasmota-firmware. Hoe je zo’n stopcontact met de Tasmota-firmware kunt programmeren en via Node-Red kunt aansturen, staat in het artikel Tasmota - Flash Sonoff S26-aansluiting met Tasmota-firmware beschreven.

Zoals bij alle andere voorbeelden is er ook een injectieknooppunt genaamd “requestOptions”. Als je erop klikt, worden alle eigenschappen van dit HomeKit-apparaat weergegeven in de foutopsporingsbalk.

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}]

Ook hier (verrassing 🙂) moet je – net als bij de vorige voorbeelden – het HomeKit-accessoire en de dienst configureren. Om dit te doen, dubbelklikt u op het knooppunt "Socket". Hierdoor wordt het volgende menu opnieuw geopend.

Daar stelt u eerst de dienst in op ‘Outlet’ en klikt u vervolgens op het penpictogram in het gedeelte ‘Accessoires’.
De instellingen hier moeten op dezelfde manier worden afgehandeld als in de voorgaande voorbeelden. Je zet gewoon het type op “OUTLET” en uiteraard moet het poortnummer nog een keer aangepast worden.

Ontdek de apparaatinstellingen en eigenschappen

In sommige voorbeelden is er een injectieknooppunt met de naam “requestOptions”. Dit geeft u de mogelijkheid om de beschikbare eigenschappen van het betreffende HomeKit-knooppunt weer te geven. Vervolgens kunt u deze eigenschappen gebruiken om het gesimuleerde HomeKit-apparaat in te stellen. Het HomeKit-knooppunt dat de “Mini String of Lights” bestuurt, heeft bijvoorbeeld de mogelijkheid om de kleurtemperatuur in te stellen. Als u dus de eigenschap instelt, wordt de bijbehorende waarde weergegeven in HomeKit.

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.

Open hiervoor de app ‘Home’ op uw iOS-apparaat (in dit geval een iPhone).
In de “fabrieksstatus” zijn hier geen HomeKit-apparaten geregistreerd. Daarom zie je onderaan de knop 'Accessoire toevoegen'. Door erop te klikken kom je in het menu waar je nieuwe HomeKit apparaten kunt toevoegen.

vochtigheid

Om te beginnen met het registreren van een vochtigheidssensor, klikt u op “Accessoire toevoegen” zoals aangegeven in de vorige stap.

Deze slideshow vereist JavaScript.

verwarming thermostaten

Om de registratie van de verwarmingsthermostaat te starten, klikt u – net als in de vorige stap – op “Accessoire toevoegen” en vervolgens op “Heb geen code of kan niet scannen”.

Deze slideshow vereist JavaScript.

(Tasmota) lampje

Om de lamp te registreren klikt u – net als in de vorige stap – op ‘Accessoire toevoegen’ en vervolgens op ‘Heb geen code of kan niet scannen’.

Deze slideshow vereist JavaScript.

(Tasmota) stopcontact

Om het registreren van het stopcontact te starten, klikt u – net als in de vorige stap – op “Accessoire toevoegen” en vervolgens op “Heb geen code of kan niet scannen”.

Deze slideshow vereist JavaScript.

temperatuursensor

Om het registreren van de temperatuursensor te starten, klikt u – net als in de vorige stap – op “Accessoire toevoegen” en vervolgens op “Heb geen code of kan niet scannen”.

Deze slideshow vereist JavaScript.

Bewegingsdetector

Om de bewegingsmelder te registreren klikt u – net als in de vorige stap – op ‘Accessoire toevoegen’ en vervolgens op ‘Heb geen code of kan niet scannen’.

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 en niet op de een of andere manier naar WiFi hoef te worden overgebracht?

    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.