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.
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
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.
[{"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.
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.
[{"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.
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.
[{"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.
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).
[{"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.
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.
[{"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.
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.
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.
vochtigheid
Om te beginnen met het registreren van een vochtigheidssensor, klikt u op “Accessoire toevoegen” zoals aangegeven in de vorige stap.
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”.
(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’.
(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”.
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”.
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’.
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. 🙂
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
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
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 🙂
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