HowTo : Node Red - Contrôlez les appareils avec Apple HomeKit et lisez les capteurs

Vous pouvez maudire les appareils Apple ou les idolâtrer, mais ce qu'Apple a très bien fait, c'est l'intégration des composants SmartHome dans leurs systèmes d'exploitation. iOs offre la possibilité de contrôler les appareils HomeKit (c'est ainsi que les composants SmartHome sont appelés dans l'univers Apple) via iOs.

Il est également pratique de pouvoir simuler ces appareils HomeKit avec NodeRed (et le nœud approprié). Vous pouvez contrôler les actionneurs de votre SmartHome à partir de votre appareil iOs et même afficher les données des capteurs du SmartHome (par exemple, la température, l'humidité).

Comment cela fonctionne et ce que vous devez prendre en compte est expliqué dans l'article suivant.


Consignes de sécurité

Je sais que les notes suivantes sont toujours un peu ennuyeuses et semblent inutiles. Malheureusement, de nombreuses personnes qui savaient "mieux" ont perdu des yeux, des doigts ou d'autres choses à cause d'une négligence ou se sont blessées. La perte de données est presque négligeable en comparaison, mais même celles-ci peuvent être vraiment ennuyeuses. Par conséquent, veuillez prendre cinq minutes pour lire les consignes de sécurité. Parce que même le projet le plus cool ne vaut pas une blessure ou d'autres problèmes.
https://www.nerdiy.de/sicherheitshinweise/

Liens d'affiliation/publicitaires

Les liens vers des boutiques en ligne répertoriés ici sont des liens dits d'affiliation. Si vous cliquez sur un tel lien d'affiliation et effectuez un achat via ce lien, Nerdiy.de recevra une commission de la boutique en ligne ou du fournisseur concerné. Le prix ne change pas pour vous. Si vous effectuez vos achats via ces liens, vous aidez Nerdiy.de à pouvoir proposer d'autres projets utiles à l'avenir. 🙂 


Conditions préalables

Articles utiles :
Avant de commencer cet article, vous devez avoir préparé le RaspberryPi pour qu'il soit accessible via le réseau et contrôlé via SSH. De plus, NodeRed doit être installé.

Les trois articles suivants décrivent ce qu'il faut faire pour préparer le RaspberryPi :
RaspberryPi - configuration pour les nerdiys !
RaspberryPi – La première configuration !
RaspberryPi - Contrôlez le RaspberryPi via SSH
NodeRed – Installer NodeRed sur le RaspberryPi
NodeRed – Installer de nouveaux nœuds

Outil requis :
-Non-

Matériel requis :

Dans la liste suivante, vous trouverez toutes les pièces dont vous avez besoin pour mettre en œuvre cet article.


Connectez-vous à l'interface de configuration de NodeRed

Avant de pouvoir modifier votre configuration NodeRed, vous devez - si activé - vous connecter d'abord à l'interface de configuration NodeRed.

Vue de la boîte de dialogue de connexion. Ici, vous devez entrer les données de connexion que vous avez spécifiées lors de la configuration de la connexion. Vous trouverez des informations à ce sujet dans l'article NodeRed - configurer la connexion de l'utilisateur.

Installation des nœuds requis

Pour que vos appareils Homekit puissent simuler des appareils, le nœud approprié doit bien entendu être d'abord installé. Pour cela, installez le nœud « node-red-contrib-homekit ». Comment votre nœud est installé dans l'article NodeRed – Installer de nouveaux nœuds expliqué.

node-red-contrib-homekit
Installation du nœud « node-red-contrib-homekit ».

Lire les détecteurs de mouvement

Un petit exemple de code de nœud pour être informé de l'état d'un détecteur de mouvement pourrait ressembler à ceci. Pour simuler le détecteur de mouvement, les nœuds « Injecter » « vrai » et « faux » sont installés, qui simulent un détecteur de mouvement avec un signal activé (vrai) et un détecteur de mouvement avec un signal non activé (faux). Vous pouvez alors « connecter » un détecteur de mouvement à ces entrées, dont les signaux sont ensuite affichés via HomeKit.

Il existe également un nœud d'injection appelé « requestOptions ». Si vous cliquez dessus, toutes les propriétés de cet appareil HomeKit seront affichées dans la barre de débogage.

Vue du NodeCode.
[{"id" : "9998cf7e.5cf8e","type":"homekit-service","z":"5dcffcbc.bae6c4","accessory":"a10e8039.50d9c","name":"BewegungsmelderBad","serviceName":"MotionSensor","x":740,"y":820,"wires":[["9dcd9414.118448"]]},{"id":"18fa3044.4d02d","type":"json","z":"5dcffcbc.bae6c4","name":"","property":"payload","action":"","pretty":false,"x":550,"y":820,"wires":[["9998cf7e.5cf8e"]]},{"id":"2fea5d63.ae8852","type":"template","z":"5dcffcbc.bae6c4","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{"MotionDetected":{{payload}}}","output":"str","x":400,"y":820,"wires":[["18fa3044.4d02d"]]},{"id":"c568f55f.d8e828","type":"inject","z":"5dcffcbc.bae6c4","name":"","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":190,"y":800,"wires":[["2fea5d63.ae8852"]]},{"id":"9dcd9414.118448","type":"debug","z":"5dcffcbc.bae6c4","name":"","active":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", "payloadType" : "bool", "repeat" :"", "crontab" :"", "once":false, "onceDelay":0.1,"x":190,"y":840,"wires":[["2fea5d63.ae8852"]]},{"id":"39aee99f.957496","type":"comment","z":"5dcffcbc.bae6c4","name":"Bewegungsmelder als Event","info":"","x":220,"y":740,"wires":[]},{"id":"769255e1.22b44c","type":"json","z":"5dcffcbc.bae6c4","name":"","property":"payload","action":"","pretty":false,"x":550,"y":860,"wires":[["9998cf7e.5cf8e"]]},{"id":"fdd0e0c1.c5117","type":"template","z":"5dcffcbc.bae6c4","name":"options","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{"foo":"bar"}","output":"str","x":400,"y":860,"wires":[["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-accessory", "z" :"", "accessoryName" : "capteurs", "pinCode" : "111-11-111", "port" : "32304", "manufacturer" : "Nerdiy.de", "model" : "Default Model", "serialNo" : "Default Serial Number", "accessoryType" : "10"}]

Pour que ce NodeCode fonctionne, il faut encore configurer l'accessoire HomeKit et le service. Pour ce faire, double-cliquez sur le nœud « Motion DetectorBath ». Cela ouvrira le menu suivant.

Là, vous définissez le « MotionSensor » dans la section « Service », puis cliquez sur l'icône du stylo dans la section « Accessoire ».
Vous pouvez/devez y saisir des données importantes pour une configuration ultérieure dans iOS. Saisissez toutes les données comme indiqué. Bien sûr, vous remplacez le code PIN par un code que vous seul connaissez personnellement. Celui-ci doit également être saisi au format XXX-XX-XXX. Les informations sous « Port » indiquent à quel port l'appareil HomeKit sera accessible ultérieurement. Vous n’êtes pas nécessairement obligé de le spécifier explicitement. Ensuite, NodeRed sélectionne un port aléatoire. Cependant, cela présente l'inconvénient qu'un appareil HomeKit qui a été connecté une fois à iOS se voit attribuer un port différent après un redémarrage de NodeRed et doit donc être reconnecté dans iOS. Vous pouvez éviter cela en attribuant un port fixe. Pour Type, il est recommandé de définir « CAPTEUR » car dans ce cas, vous utilisez également un capteur. Vous pouvez saisir toutes les autres informations à votre guise.

Une fois que vous avez renseigné toutes ces données, cliquez sur « Ajouter » et « Terminé » pour appliquer ce paramètre. La dernière section de cet article explique comment enregistrer les appareils HomeKit dans iOS.


Régler les thermostats de chauffage

Voici un exemple de code de nœud montrant comment vous pouvez transférer les informations d'un thermostat de chauffage vers un thermostat HomeKit simulé, par exemple. Il y a (dans cet exemple) deux propriétés qui sont affichées sur votre appareil iOS. Une fois la température cible réglée et la température réelle actuelle. Les deux valeurs peuvent être simulées via les nœuds d'injection. À ce stade, vous devrez remplacer les nœuds d'injection par les valeurs de votre véritable thermostat de chauffage.

D'autre part, les valeurs que vous envoyez à l'appareil HomeKit simulé via l'application iOS HomeKit sont sorties via le nœud de débogage. À ce stade, les valeurs à régler pourraient être transmises au thermostat de chauffage.

Il existe également un nœud d'injection appelé « requestOptions ». Si vous cliquez dessus, toutes les propriétés de cet appareil HomeKit seront affichées dans la barre de débogage.

Vue du NodeCode.
[{"id":"b3001d65.5105f","type":"comment","z":"5dcffcbc.bae6c4","name":"Heizungsthermostate steuern","info":"","x":220,"y":1300,"wires":[]},{"id":"b12f3ad3.c1ef68","type":"homekit-service","z":"5dcffcbc.bae6c4","accessory":"39b8cf37.35a27","name":"Heizung","serviceName":"Thermostat","x":740,"y":1480,"wires":[["3cb1fd5c.fd60c2"]]},{"id":"8d9e79f3.0de618","type":"json","z":"5dcffcbc.bae6c4","name":"","property":"payload","action":"","pretty":false,"x":590,"y":1480,"wires":[["b12f3ad3.c1ef68"]]},{"id":"7e9e340b.320a5c", "type" : "template", "z" : "5dcffcbc.bae6c4","name":"Soll-Temp","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{"TargetTemperature": {{payload}}}","output":"str","x":420,"y":1460,"wires":[["8d9e79f3.0de618"]]},{"id":"3cb1fd5c.fd60c2","type":"change","z":"5dcffcbc.bae6c4","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.TargetTemperature","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":940,"y":1480,"wires":[["4ca89ee5.5cd2d"]]},{"id":"4ca89ee5.5cd2d","type":"debug","z":"5dcffcbc.bae6c4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":1130,"y":1480,"wires":[]},{"id":"129c9403.2c229c","type":"template","z":"5dcffcbc.bae6c4","name":"Ist-Temp","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{"CurrentTemperature":{{payload}}}","output":"str","x":420,"y":1500,"wires":[["8d9e79f3.0de618"]]},{"id":"182c1f88.f4e04","type":"inject","z":"5dcffcbc.bae6c4","name":"","topic":"","payload":"30","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":230,"y":1600,"wires":[["129c9403.2c229c"]]},{"id":"93979569.ae6e68","type":"inject","z":"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":"","payload":"10","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":230,"y":1520,"wires":[["129c9403.2c229c"]]},{"id":"ccdae584.bd2dd8","type":"inject","z":"5dcffcbc.bae6c4","name":"","topic":"","payload":"30","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":230,"y":1440,"wires":[["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,"wires":[["7e9e340b.320a5c"]]},{"id":"fafe7787.64f6c8","type":"inject","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,"wires":[["b12f3ad3.c1ef68"]]},{"id":"a6b574ca.dc1c98","type":"template","z":"5dcffcbc.bae6c4","name":"options","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{"foo":"bar"}","output":"str","x":440,"y":1620,"wires":[["78c76a0a.b7b7f4"]]},{"id":"63397e19.508ff", "type" : "inject", "z" : "5dcffcbc.bae6c4", "name" : "requestOptions", "topic" :"", "payload" : "true", "payloadType" : "bool", "repeat" :"", "crontab" :"", "once":false, "onceDelay":0.1,"x":260,"y":1660,"wires":[["a6b574ca.dc1c98"]]},{"id":"39b8cf37.35a27","type":"homekit-accessory","z":"","accessoryName":"Heizung","pinCode":"111-11-111","port":"32305","manufacturer":"Nerdiy.de","model":"Default Model","serialNo":"Default Serial Number","accessoryType":"9"}]

Comme pour le détecteur de mouvement, vous devez également configurer l'accessoire HomeKit et le service avec ce NodeCode. Pour cela, double-cliquez sur le nœud « Chauffage ». Cela ouvrira à nouveau le menu suivant.

Là, vous réglez le service sur thermostat. Cliquez ensuite à nouveau sur l'icône du stylo dans la section « Accessoire ».
Le réglage est le même que dans l'exemple du détecteur de mouvement. La seule différence est que vous sélectionnez un numéro de port différent de celui pour la configuration du détecteur de mouvement (de préférence simplement le port suivant le port défini pour le détecteur de mouvement) et bien sûr également définissez le type sur « THERMOSTAT ».


Lire les capteurs de température et d'humidité

Cet exemple NodeCode montre comment simuler un capteur d'humidité et de température avec le nœud HomeKit. Le nœud HomeKit utilise les données de « openweathermap » comme « source de données ». Cela signifie que les températures actuelles de l'emplacement défini dans le nœud openweathermap sont affichées.

Comme pour tous les autres exemples, il existe également un nœud d'injection appelé « requestOptions ». Si vous cliquez dessus, toutes les propriétés de cet appareil HomeKit seront affichées dans la barre de débogage.

Vue du NodeCode.
[{"id":"cc6c7b40.da9078","type":"homekit-service","z":"5dcffcbc.bae6c4","accessory":"bd29e027.b0d63","name":"Temperatur","serviceName":"TemperatureSensor","x":1130,"y":1100,"wires":[["7a89e1f4.1dc75"]]},{"id":"3b22973d.547ac8","type":"homekit-service","z":"5dcffcbc.bae6c4","accessory":"2dc17d94.90bc32","name":"Luftfeuchtigkeit","serviceName":"HumiditySensor","x":1140,"y":1180,"wires":[["195b33c9.57261c"]]},{"id":"7a89e1f4.1dc75","type":"debug","z":"5dcffcbc.bae6c4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":1290,"y":1100,"wires":[]},{"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":"","property":"payload","action":"","pretty":false,"x":970,"y":1160,"wires":[["3b22973d.547ac8"]]},{"id":"400e1113.e2f29","type":"template","z":"5dcffcbc.bae6c4","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","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":"handlebars","syntax":"mustache","template":"{"CurrentTemperature":"{{payload}}"}","output":"str","x":820,"y":1120,"wires":[["1c8b89c4.9270b6"]]},{"id":"195b33c9.57261c","type":"debug","z":"5dcffcbc.bae6c4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":1290,"y":1180,"wires":[]},{"id":"a64825b.273ccd8","type":"change","z":"5dcffcbc.bae6c4","name":"convert","rules":[{"t":"set","p":"payload","pt":"msg","to":"data.main.temp-273.15","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":620,"y":1120,"wires":[["bf9000c2.be6a8"]]},{"id":"fcbc03d9.26567","type":"json","z":"5dcffcbc.bae6c4","name":"","property":"payload","action":"","pretty":false,"x":410,"y":1140,"wires":[["a64825b.273ccd8","553238c1.76cb68"]]},{"id":"9dbc96a3.21dcf8","type":"inject","z":"5dcffcbc.bae6c4","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":200,"y":1080,"wires":[["2d6b39b3.dc72f6"]]},{"id":"553238c1.76cb68","type":"change","z":"5dcffcbc.bae6c4","name":"convert","rules":[{"t":"set","p":"payload","pt":"msg","to":"data.main.humidity","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":620,"y":1160,"wires":[["400e1113.e2f29"]]},{"id":"2d6b39b3.dc72f6","type":"openweathermap","z":"5dcffcbc.bae6c4","name":"","wtype":"current","lon":"","lat":"","city":"Bochum","country":"Germany","language":"de","x":400,"y":1080,"wires":[["fcbc03d9.26567"]]},{"id":"66e6d0.bca8793","type":"comment","z":"5dcffcbc.bae6c4","name":"Klimasensoren auslesen","info":"","x":210,"y":1000,"wires":[]},{"id":"648f2c18.d730f4","type":"json","z":"5dcffcbc.bae6c4","name":"","property":"payload","action":"","pretty":false,"x":970,"y":1200,"wires":[["3b22973d.547ac8"]]},{"id":"f5f3fc95.8afe2","type":"template","z":"5dcffcbc.bae6c4","name":"options","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{"foo":"bar"}","output":"str","x":820,"y":1200,"wires":[["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":"","pretty":false,"x":970,"y":1080,"wires":[["cc6c7b40.da9078"]]},{"id":"d0d837e2.311f88","type":"template","z":"5dcffcbc.bae6c4","name":"options","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{"foo":"bar"}","output":"str","x":820,"y":1080,"wires":[["31aa55d1.30fa6a"]]},{"id":"c13c8c2f.1991c", "type" : "inject", "z" : "5dcffcbc.bae6c4", "name" : "requestOptions", "topic" :"", "payload" : "true", "payloadType" : "bool", "repeat" :"", "crontab" :"", "once":false, "onceDelay":0.1,"x":640,"y":1080,"wires":[["d0d837e2.311f88"]]},{"id":"bd29e027.b0d63","type":"homekit-accessory","z":"","accessoryName":"Temperatur","pinCode":"111-11-111","port":"32300","manufacturer":"Nerdiy.fr", "model" : "Modèle par défaut", "serialNo" : "Numéro de série par défaut", "accessoryType" : "10"},{"id" : "2dc17d94.90bc32", "type" : "homekit-accessory", "z" :"", "accessoryName" : "Humidité", "pinCode" : "111-11-111", "port" : "32301", "manufacturer" : "Nerdiy.de", "model" : "Default Model", "serialNo" : "Default Serial Number", "accessoryType" : "10"}]

Comme pour les exemples précédents, vous devez également configurer l'accessoire HomeKit et le service avec ce NodeCode. Pour cela, double-cliquez sur le nœud « Humidité » ou « Température ». Cela ouvrira à nouveau le menu suivant.

Pour ce faire, sélectionnez le « HumiditySensor » sous « Service » puis cliquez sur l'icône en forme de stylo dans la section « Accessoire ».
Le réglage est le même que dans les autres exemples. Le numéro de port doit être à nouveau augmenté d'un et réglé et le type est à nouveau réglé sur « SENSOR ».
Il en va de même pour la « température ». Là, le service est maintenant réglé sur « TemperatureSensor ». Cliquez ensuite à nouveau sur l'icône du stylo dans la section « Accessoire ».
...et redéfinit les propriétés comme dans les exemples précédents. Le type doit être à nouveau réglé sur « CAPTEUR ». La distinction entre les capteurs d'humidité et de température se fait via le service défini précédemment.

Lampes de contrôle (Tasmota)

Voici un exemple de la façon dont vous pouvez lier une lampe avec le micrologiciel Tasmota au nœud HomeKit afin que toutes les modifications de toutes les sources soient toujours transférées vers toutes les options d'entrée. Cela permet de régler la couleur, la luminosité ou le réglage général marche/arrêt dans iOS ou dans le tableau de bord ou d'une autre manière et en même temps, l'état actuel est également transmis à toutes les options de réglage.

Pour que ce code de nœud fonctionne pour vous, vous avez également besoin du nœud Sonoff et devez le configurer en conséquence (pour correspondre à votre appareil Sonoff).

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

Comme pour les exemples précédents, vous devez également configurer l'accessoire HomeKit et le service avec ce NodeCode. Pour ce faire, double-cliquez sur le nœud (dans ce cas) « Mini Fairy Lights ». Cela ouvrira à nouveau le menu suivant.

Là, vous définissez d'abord le service sur « Ampoule », puis cliquez sur l'icône en forme de stylo dans la section « Accessoire ».
Les paramètres ici doivent être traités de la même manière que dans les exemples précédents. Vous venez de définir le type sur « LIGHTBULB » et bien sûr, le numéro de port doit être à nouveau ajusté.

prises de contrôle

Cet exemple vous montre comment simuler une prise SmartHome avec le nœud HomeKit. A cet effet, on utilise une prise SonoffS26 qui (comme la lampe de l'exemple précédent) est « équipée » du firmware Tasmota. Comment programmer une telle socket avec le firmware Tasmota et la contrôler via Node-Red est dans l'article Tasmota - Prise Flash Sonoff S26 avec firmware Tasmota décrites.

Comme pour tous les autres exemples, il existe également un nœud d'injection appelé « requestOptions ». Si vous cliquez dessus, toutes les propriétés de cet appareil HomeKit seront affichées dans la barre de débogage.

Vue du NodeCode.
[{"id":"d6d0d8e6.785448","type":"comment","z":"5dcffcbc.bae6c4","name":"Steckdose","info":"","x":180,"y":1800,"wires":[]},{"id":"bad38f27.a93b4","type":"ui_switch","z":"5dcffcbc.bae6c4","name":"","label":"Steckdose","group":"16663fb4.9e351", "order":20, "width":0, "height":0, "passthru":false, "decouple" : "true", "topic" :"", "style" :", "onvalue" : "true", "onvalueType" :"bool","onicon":"","oncolor":"","offvalue":"false","offvalueType":"bool","officon":"","offcolor":"","x":670,"y":1920,"wires":[["f1118c1c.95804"]]},{"id":"f1118c1c.95804","type":"Sonoff device","z":"5dcffcbc.bae6c4","mode":"0","broker":"1fafbb1c.a2df75","device":"SonoffS26","name":"","onValue":"ON","offValue":"OFF","cmdPrefix":"cmnd","statPrefix":"stat","telePrefix":"tele","x":660,"y":1860,"wires":[["bad38f27.a93b4"]]},{"id":"a4cdda.44b67228","type":"homekit-service","z":"5dcffcbc.bae6c4","accessory":"b7e7d023.40f38","name":"Steckdose","serviceName":"Outlet","x":250,"y":1860,"wires":[["307b902a.ca26b"]]},{"id":"307b902a.ca26b","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":440,"y":1860,"wires":[["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":"options","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{"foo":"bar"}","output":"str","x":420,"y":1980,"wires":[["fb3c28d1.cb8da8"]]},{"id":"6bdad444.d1270c","type":"inject","z":"5dcffcbc.bae6c4","name":"requestOptions","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":260,"y":1980,"wires":[["811d7998.a861e8"]]},{"id":"16663fb4.9e351","type":"ui_group","z":"","name":"Licht","tab":"e5c99d4.147226","order":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" : "60", "cleansession":true, "birthTopic" :"", "birthQos" :"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"b7e7d023.40f38","type":"homekit-accessory","z":"","accessoryName":"Steckdosen","pinCode":"111-11-111","port":"32303","manufacturer":"Nerdiy.de","model":"Default Model","serialNo":"Default Serial Number","accessoryType":"7"},{"id":"e5c99d4.147226","type":"ui_tab","z":"","name":"Home","icon":"dashboard","order":1}]

Ici aussi (surprise 🙂 ) – comme pour les exemples précédents – il faut configurer l’accessoire HomeKit et le service. Pour ce faire, double-cliquez sur le nœud « Socket ». Cela ouvrira à nouveau le menu suivant.

Là, vous définissez d'abord le service sur « Outlet », puis cliquez sur l'icône en forme de stylo dans la section « Accessoire ».
Les paramètres ici doivent être traités de la même manière que dans les exemples précédents. Il vous suffit de définir le type sur « OUTLET » et bien sûr, le numéro de port doit être à nouveau ajusté.

Découvrez les paramètres et les propriétés possibles des appareils

Dans certains exemples, il existe un nœud d'injection nommé « requestOptions ». Cela vous donne la possibilité d'afficher les propriétés disponibles du nœud HomeKit respectif. Vous pouvez ensuite utiliser ces propriétés pour définir l'appareil HomeKit simulé. Par exemple, le nœud HomeKit qui contrôle la « mini chaîne de lumières » a la possibilité de définir la température de couleur. Ainsi, si vous définissez la propriété, la valeur correspondante sera affichée dans HomeKit.

Présentation des propriétés des nœuds HomeKit utilisés dans ces exemples.

Configuration sur iPhone

Une fois que vous avez créé vos appareils HomeKit souhaités dans NodeRed, il est maintenant temps de les enregistrer sur l'appareil iOS. Dans cette section, vous serez guidé (approximativement) étape par étape tout au long du processus d'inscription. Comme cela contient parfois beaucoup d'images, les étapes suivantes sont résumées sous forme de diaporamas.

Pour ce faire, ouvrez l'application « Accueil » sur votre appareil iOS (en l'occurrence un iPhone).
Dans « l’état d’usine », aucun appareil HomeKit n’est enregistré ici. C'est pourquoi vous verrez le bouton « Ajouter un accessoire » en bas. En cliquant dessus, vous serez redirigé vers le menu où vous pourrez ajouter de nouveaux appareils HomeKit.

humidité

Pour commencer à enregistrer un capteur d'humidité, cliquez sur « Ajouter un accessoire » comme indiqué à l'étape précédente.

Ce diaporama nécessite JavaScript.

thermostats de chauffage

Pour commencer à enregistrer le thermostat de chauffage, cliquez – comme à l’étape précédente – sur « Ajouter un accessoire » puis sur « Je n’ai pas de code ou je ne peux pas scanner ».

Ce diaporama nécessite JavaScript.

(Tasmota) lampe

Pour commencer à enregistrer la lampe, cliquez – comme à l’étape précédente – sur « Ajouter un accessoire » puis sur « Je n’ai pas de code ou je ne peux pas scanner ».

Ce diaporama nécessite JavaScript.

(Tasmota) prise

Pour commencer à enregistrer la prise, cliquez – comme à l’étape précédente – sur « Ajouter un accessoire » puis sur « Je n’ai pas de code ou je ne peux pas scanner ».

Ce diaporama nécessite JavaScript.

capteur de température

Pour commencer à enregistrer le capteur de température, cliquez – comme à l’étape précédente – sur « Ajouter un accessoire » puis sur « Je n’ai pas de code ou je ne peux pas scanner ».

Ce diaporama nécessite JavaScript.

détecteur de mouvement

Pour commencer à enregistrer le détecteur de mouvement, cliquez – comme à l’étape précédente – sur « Ajouter un accessoire » puis sur « Je n’ai pas de code ou je ne peux pas scanner ».

Ce diaporama nécessite JavaScript.


Vous l'avez peut-être déjà remarqué : avec ce nœud iOs, vous avez toutes sortes de possibilités. Essayez juste quelque chose autour. Si vous avez des questions, n'hésitez pas à les laisser dans les commentaires.

Amusez-vous avec le projet

J'espère que tout a fonctionné comme décrit. Si ce n'est pas le cas ou si vous avez des questions ou des suggestions, faites-le moi savoir dans les commentaires. Je les ajouterai à l'article si nécessaire.
Les idées de nouveaux projets sont toujours les bienvenues. 🙂

PS Beaucoup de ces projets - en particulier les projets matériels - coûtent beaucoup de temps et d'argent. Bien sûr, je le fais parce que j'aime ça, mais si vous pensez que c'est cool que je partage l'information avec vous, je serais heureux d'un petit don au fonds du café. 🙂

Achetez-moi un café sur ko-fi.com       

4 commentaires

  1. Salut Nerdi,

    site sympa et projets sympas ! J'ai déjà implémenté quelques éléments dans ma maison intelligente (KNX, pont vers HomeKit, Node Red, etc.) et j'ai encore beaucoup de projets. J'essaie d'utiliser le pont HomeKit de Node Red depuis un moment. Je fais également configurer et configurer les nœuds afin de pouvoir ensuite configurer un appareil dans l'application HomeKit à titre de test. Malheureusement, l'ensemble n'est pas stable, la connexion se coupe régulièrement et Node Red redémarre également régulièrement, c'est-à-dire que quelque chose dans le nœud de pont Homekit provoque le crash. Avez-vous également ce problème ou avez-vous une idée de ce qui pourrait en être la cause?

    Salutations Turner

    1. salut gymnaste,
      merci 🙂
      Malheureusement, je ne sais pas exactement quelle pourrait être la raison. Cependant, dans le passé, j'avais le problème que mon installation NodeRed continuait de redémarrer pour une raison quelconque. Pour faciliter un peu le débogage, j'ai créé un flux qui enregistre le dernier journal du processus NodeRed après le redémarrage de NodeRed. Vous pouvez donc très bien voir à quel moment NodeRed s'est écrasé et corriger l'erreur. 🙂
      Vous pouvez trouver des informations à ce sujet ici : https://nerdiy.de/howto-nodered-automatisches-speichern-des-nodered-journals-nach-dem-start-von-nodered-zu-debugging-zwecken/

      Cordialement
      Fabien

  2. Bonjour Fab,

    site vraiment cool. Je travaille actuellement sur le débit pour les thermostats de chauffage, l'import a également fonctionné à merveille. Je suis un peu bloqué en ce moment et j'ai quelques questions :

    1. Puis-je utiliser n'importe quel thermostat de chauffage ou doit-il être compatible Apple Homkit puisque je simule un Homekit ?

    2. Comment Node Red « sait » que j'ai un thermostat et que je n'ai pas besoin d'être transféré vers le WiFi d'une manière ou d'une autre ?

    3. Selon le thermostat, ai-je besoin du pont approprié ou est-ce possible sans le pont approprié ?

    Merci d'avance pour vos réponses, comme je l'ai dit, je ne sais plus quoi faire.

    Peut-être pouvez-vous également m'envoyer par e-mail des instructions détaillées sur la façon de procéder avec le nouveau thermostat du début à la fin.

    Je serais heureux d'avoir de vos nouvelles.

    LG 🙂

    1. Salut Daniel,
      1. En principe, cela peut être n'importe quel thermostat de chauffage, oui. Bien sûr, il doit être pris en charge par NodeRed ou pouvoir être contrôlé d'une autre manière. 🙂
      2. Selon le type de thermostat dont vous disposez, il est soit intégré via DECT (avec la Fritzbox), zigbee ou un autre standard. Parfois, vous avez également besoin d'une passerelle appropriée.
      3. Si vous possédez déjà une FritzBox, je vous recommande l'un des thermostats de radiateur compatibles avec la FritzBox. Des informations (y compris comment l'intégrer) peuvent être trouvées ici, par exemple : https://nerdiy.de/howto-nodered-fritzbox-heizkoerperthermostat-aus-nodered-steuern/

      J'espère que cela t'aidera. Sinon, merci de me le signaler. 🙂
      Cordialement
      Fabien

Kommentar hinterlassen

Votre adresse e-mail ne sera pas publiée. Erforderliche Felder sind mit * markiert

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.