J’ai découvert récemment le RM Mini 3 de Broadlink qui permet de recopier un signal infrarouge rapidement et simplement, puis de le renvoyer via une application dédiée de Broadlink. Parfait pour l’air climatisé ! Mais dans un souci de rationalisation, pourquoi s’embêter avec 15 applications différentes alors que Homebridge peut tout nous rassembler dans Homekit? La difficulté était de faire parler les deux…
Pourquoi ce boitier ?
Dans les étapes de construction d’un boitier de gestion de domotique, j’ai beaucoup eu à me débattre avec la gestion de l’infrarouge… Autant une télécommande de télévision ou de home cinéma est simple à gérer (voir Lire un signal infrarouge), autant comme on en parle à la fin de l’article une télécommande de climatiseur n’est pas une sinécure.
J’ai choisit de gérer l’allumage de ma télévision et du home cinema par Homebridge et Homekit, mais pas son contrôle (volume, entrée hdmi, sélection, etc.). Ceci pour une raison simple : Vous imaginez avoir dans Homekit une icone par bouton de la télécommande ?
Voici ce à quoi ressemble déjà mon Homekit :
Nous atteignons là déjà la limite de ce que mon esprit est capable d’assimiler en terme de joyeux chaos ! J’ai donc fait une application web pour gérer les commandes des télécommandes de la télévision et du home cinéma (qui sera détaillée dans un prochain article de la série). Pour l’instant, j’ai trouvé largement suffisant de me contenter d’utiliser le black bean pour contrôler exclusivement la climatisation.
Unboxing
La notice quant à elle n’est pas très claire… Il y a des menus de l’application qui sont encore non expliqués, et l’ajout de l’appareil me semblait plus compliqué qu’il ne l’était réellement :
Connexion au réseau wifi
Parce qu’il faut faire les choses dans l’ordre, voyons déjà comment faire marcher le black bean de façon standard, sans passer par Homekit. Déjà pour voir comment cela marche, puis aussi pour avoir la satisfaction de pouvoir contrôler la climatisation pourtant ancienne depuis mon smartphone. Et ça, c’est classe !
Pour commencer, branchez l’appareil sur une adaptateur USB, puis nous allons le connecter à notre réseau wifi. Téléchargez l’application e-control de Broadlink :
Ensuite, appuyez avec une épingle ou un trombone sur le bouton reset à l’arrière de l’appareil, jusqu’à ce que la lumière bleue en façade s’allume et clignote rapidement. Là, ouvrez votre application précédemment téléchargée et allez dans le menu « + » en haut puis « Ajouter un périphérique ».
Vous arriverez sur la page de paramétrage de réseau wifi, rentrez alors vos identifiants et patientez un peu. Normalement, vous devriez obtenir l’information liée à votre appareil connecté au wifi. De la, tapez dessus puis retournez dans le menu « + » mais cette fois, sélectionnez « Ajouter distant ». Vous aurez le choix de l’appareil (climatiseur, télévision, etc).
Prenons la télécommande de la télévision par exemple. Appuyez alors sur une touche, mettons la touche On/Off. Vous aurez un message de type « En attente du bouton d’apprentissage ». Appuyez sur le bouton associé de la télécommande en la dirigeant vers le black bean, et ça y est : toutes les touches sont fonctionnelles… Et il en sera de même pour la climatisation, c’est aussi simple que ça !
Attribution d’une adresse IP Fixe
Maintenant que l’appareil est connecté, vous aurez besoin pour la suite de lui attribuer une adresse IP fixe au niveau de votre routeur wifi. C’est très important pour que Homebridge sache exactement à qui parler, et c’est généralement une bonne idée lorsque vous développez une plateforme d’IoT à la maison d’attribuer quelques adresses IP fixes pour pouvoir faire votre plan de communication.
Intégration Homekit : homebridge-broadlink-rm
Plus j’avançais dans mes recherches, plus la question s’annonçait problématique… J’ai trouvé plusieurs plugins Homebridge qui proposaient de faire le travail, et je remercie vivement leurs auteurs ! Néanmoins en termes de complexité, la piste la plus fréquente consistait à sniffer avec wireshark les paquets réseaux échangés lors de l’utilisation de l’application e-remote, puis d’aller trouver le « payload » encapsulé dans la requête et la copier-coller dans le fichier de configuration. Oui, voilà voilà…
Puis, j’ai trouvé ce plugin : homebridge-broadlink-rm créé par Luke Rhodes.
Le plugin est également disponible sur npm.
En fait rien de bien différent avec celui-ci dans l’utilisation. Il faut comme les autres aller recopier un code très long dans le fichier de configuration de Homebridge lorsque l’on ajoute l’accessoire : « data« :« 2600500000012…« .
En revanche, ce plugin offre la possibilité de lire un signal directement et d’en retrouver le code dans le terminal. Cela m’a pris 5 minutes de recopier plusieurs températures de mon climatiseur et de les ajouter à Homekit.
Installation
L’installation est on ne peut plus classique, mais pas dépourvue d’embûches… Alors oui en théorie il suffit de lancer la commande
sudo npm install -g homebridge-broadlink-rm
Mais vous vous rendrez vite compte qu’il y a probablement un problème de version… Ce plugin nécessite un version 7+ de node, alors vous allez mettre à jour node :
sudo npm cache clean -f sudo npm install -g n sudo n stable
Puis vous allez avoir un problème de conflit, car Homebridge n’aura pas été installé avec cette version et ses modules par défaut non plus. Il est possible de directement désinstaller Homebridge au complet et de le réinstaller avec la dernière version de node, mais c’est un peu « overkill ». Vous pouvez aussi plus simplement supprimer les modules dans .homebridge/node_modules et relancer l’installation. Ainsi vous n’écraserez pas votre configuration déjà existante.
Quoi qu’il en soit, à ce point le plugin devrait être installé. Si ce n’est pas le cas, parlons-en dans les commentaires !
L’accessoire Learn IR
Pour lire le signal, pas grand chose à faire. J’ai choisi pour ne pas polluer mon boitier de domotique de lancer Homebridge depuis mon ordinateur, mais cela ne fait aucune différence. La seule chose à faire est de paramétrer la plateforme Broadlink à votre fichier de configuration config.json et d’y ajouter l’accessoire de type « learn-code » avec son adresse IP fixe (dans mon exemple « host ») :
"platforms":[ { "platform":"BroadlinkRM", "name":"Broadlink RM", "accessories":[ { "accessory": "Broadlink RM Learner", "type": "learn-code", "name": "Learn IR", "host": "XXX.XXX.XXX.XXX" } ] } ]
Puis lancez Homebridge :
Maintenant si vous ajoutez votre bridge dans Homekit, vous devriez y voir l’accessoire Learn IR :
Lecture du signal
Maintenant, si vous actionnez cet accessoire, le Black Bean devrait se mettre en mode « Apprentissage » (led orange en façade). Il vous suffit alors d’appuyer sur la touche de télécommande que vous souhaitez reproduire en dirigeant la télécommande vers le boitier. La console devrait afficher le code correspondant à cette touche :
Maintenant, il vous faudra prendre le « learned hex code », et l’insérer dans le config.json de Homebridge en vous inspirant du fichier de configuration d’exemple fournit par le créateur du plugin : https://github.com/lprhodes/homebridge-broadlink-rm/blob/master/config-sample.json. La page d’accueil du plugin détaille tous les types disponibles : Interrupteur, bouton On/Off de télévision, ventilateur, climatiseur, etc.
Config.json de Homebridge
Voici ce à quoi ressemblait mon config.json :
Relancez Homebridge, et voilà ! Vous contrôlez votre climatiseur depuis Homekit !
Cas particulier d’un climatiseur
Comme je le disais dans mon précédent article parlant des codes infrarouges, une télécommande de climatiseur n’envoie pas véritablement d’information de type « plus chaud », ou « deux degrés de moins ». Non, à chaque changement d’état la télécommande envoie une impulsion contenant toutes les informations nouvelles : « 22 degrés, souffle force 4, mode balayage ». je monte de 1 degré? La télécommande envoie « 23degrés, souffle force 4, mode balayage », et ainsi de suite.
De fait, à moins d’avoir un bouton dans Homekit par combinaison de température/mode/puissance, et bien nous devons scanner certains états les plus généraux de la télécommande, ceux dont on va réellement se servir.
La domotique consiste à nous faciliter la vie, pas à nous créer d’autres problèmes. Quel était le mien? Je voulais que ma climatisation se déclenche quand ma femme ou moi-même arrivons à moins de 200m de la maison le soir après le travail, pour rafraîchir l’appartement en été. Je voulais aussi qu’elle se coupe la nuit au cas où nous l’oublierions. Pour ces usages, aucunement besoin d’aller me compliquer les choses, je veux juste pouvoir l’éteindre et l’allumer. Gérer plus de températures, c’est juste pour le fun ! Donc j’ai créé deux scénarios, « Clim ON » et « Clim OFF » que je déclenche selon les conditions d’heure ou d’emplacement.
Si vous avez d’autres idées d’automatisation, parlons-en !
chapeau pour la mise en place, j’espère pouvoir le faire et pourquoi pas avoir ton aide. Je compte allumer éteindre ma barre de son Bose quand j’allume ma télévision. Merci encore pour ton TUTO. Ce que je trouve compliqué c’est avec Node, car moi j’utilise homebridge avec Synology et Docker. Alors sa complique un peu les choses. Merci.
Salut,
Merci pour ton message. Pourquoi penses-tu que ça puisse compliquer les choses? Homebridge est développé en node, si tu utilises homebridge alors de toutes façon il faudra t’y confronter 🙂 Docker est juste un conteneur, il déploie ton environnement Node.
Merci de ta réponse. Je n’ai malheureusement pas beaucoup de compétence j’ai réussi a faire fonctionné mon thermostat Nest et ma télévision avec HomeBridge. Mais je débute, par exemple je ne sais pas comment mettre a jour Node en version 7+ avec Docker. En rentrant les lignes de commande dans le fichier install.sh? J’ai réussi en suivant des tutos comme j’ai pu. D’ailleurs comment puis je savoir sur quel version est Docker? Merci d’avance de tes précisions. Je reçois le broadlink mini mercredi, je pourrais tester tous sa. Merci
J’ai essayé de connaitre la version de node installé sur mon Synology en me connectant en ssh sur le syno. hors quand je tape la ligne de commande « node -v » ou « node -version » cela me répond « command not found ». Il n’a pas l’air installé, je vous avoue être un peu perdu. Merci
Pour cela, je te conseillerai de suivre le tutoriel de homebridge pour installer tout ce dont tu as besoin. Pour ton synology, tu peux essayer de suivre les instruction d’installation sur le raspberry pi : https://github.com/nfarina/homebridge/wiki/Running-HomeBridge-on-a-Raspberry-Pi#install-node
Cela dit… Je te déconseille fortement d’utiliser ton NAS pour homebridge, ce n’est pas vraiment fait pour et homebridge risque d’être gourmand pour pas grand chose…
Pour ma part, j’avais aussi homebridge sur mon synology mais rapidement l’achat d’un raspberry pi m’a paru essentiel. D’autant que j’ai pu ajouter plein de capteur et d’émetteur (infrarouge, radio, etc). La seule contrainte avec le raspberry pi, c’est que homebridge va crasher le pi tous les 2-3j pour une raison que personne dans la communauté n’explique. J’ai contourné avec un reboot quotidien à 4h du matin, cela fait maintenant 4 semaines qu’il tourne sans le moindre accroc !
salut,
Tu as raison. J’ai l’impression de tourner en rond…
J’ai mise à jour le node avant installation de homebridge
J’ai installé homebridge sans plugin ==> visible sur iphone.
J’ai installé le plugin ==> probleme de version. La version a été downgrade…
tu as la possibilité de nous donner les étapes pour ne pas se faire avoir ?
PS: je suis novice mais débrouillard en temps normale et j’arrive à m’en sortir mais là il y a quelques choses qui m’échappe.
Tu voudrais les étapes de quoi exactement? Downgrader la version de node?
Bonjour,
Effectivement, la version du Node était à jour (v8) puis après l’installation, c’est repassé à V6.
Vu que j’étais bloqué, j’ai reformaté la carte SD, et je recommence de A à Z.
J’ai commencé l’opération il y a 10 min.
je pense que c’est le tuto que je suis pour l’installation de homebridge qui me joue des tours…
Je vais essayer en m’appuyant sur le lien que tu as envoyé à Laurent.
Je crois comprendre ce qu’il se passe.
Les lignes de commande que j’utilise pour installer Homebridge downgrade systématiquement la version de Node…
et je me retrouve dans la même situation, c’est a dire incompatible car version du node n’est pas bon…
Bon,
Je pense avoir avancé.
le plugin est installé ==> plus d’erreur de version.
Sur Homekit, le bridge apparaît bien mais rien concerant le learning…
La prochaine étape est de modifier le ficher config.json afin de créer les actions je suppose.
C’est bien ca ?
pour info, il y a déjà des fonctions enregistrées sur mon broadlink rm mini 3. je ne sais pas cela peut poser problème.
Ce qui est déjà installé sur le broadlink n’aura pas de conséquences, homebridge va principalement utiliser l’émetteur mais pas y installer quoi que ce soit.
Quel est ton problème avec le learning?
Salut,
le learning n’apparaissait pas.
mais j’ai bien avancé.
Je peux contrôler 5 ou 6 équipements pour le moment.
il me reste des ajustements à faire au niveau du ficher config.json :
– exécution de la commande deux fois à à la suite pour éteindre un VP
Les équipements en question sont en infrarouge.
Donc il suffit qu’une commande ne passe pas, toute les scènes foirent…
Je pense donc ajouter une tempo entre les actions: ça peut potentiellement aider.
Et la je viens de me rendre compte que lorsque je ferme ma session SSH (en appuyant croix rouge de putty), Homebridge se coupe également.
malgré les ajustements, je voulais le laisser tourner pour voir si ca plante. Si oui, faut que je fasse comme toi c’est à dire reboot le système à un moment T où je suis sur certain que tous mes équipements sont éteints sinon au revoir les scènes.
Si tu as encore plus de conseils à me donner je suis preneur 🙂
Mes intentions sont de contrôler les équipements de mon salon composé de VP, écran de projection électrique, TV, ampli.
Le but est d’activer un mode TV ou un mode Cinema ou passer de l’un à l’autre.
et ca en commande vocale car je le fais déjà avec broadlink sinon.
Par contre le coup du terminal, tu n’es pas obligé de le laisser allumé! Sur la wiki de homebridge tu as toutes les instructions nécessaires pour le démarrer proprement au démarrage : https://github.com/nfarina/homebridge/wiki/Running-Homebridge-on-a-Raspberry-Pi#running-homebridge-on-bootup.
Mon raspberry est redémarré chaque nuit sans que ça me pose de problème au niveau des équipements. Je ne sais pas comment tu contrôle le reste de ta maison, mais j’ai pour ma part aussi quelques prises et interrupteurs commandés par une télécommande radio 433, j’ai fait un tuto sur le sujet ^^
Sinon pour le reste, une fois que tes accessoires sont bien paramétrés dans homebridge tu n’as plus qu’à les ajouter dans l’application home. De là, Siri peut les contrôler sans problème !
Cool.
Pour le moment je suis bloqué pour sur le lancement de homebridge automatiquement…je vais continuer à chercher
salut,
Je pense être à la fin de l’installation complète.
J’ai essayé plusieurs méthodes pour l »ajout d’un vidéoprojecteur.
Seule difference:
– lorsqu’on veut eteindre le VP, il faut appuyer deux fois.
Et juste à cause de ca, je suis bloqué.
Dernier code que j’ai essayé sans succès.
Une idée?
Aucune chaîne de caractère est envoyé quand on actionne la commande.
{
« name »: « VP NEW »,
« type »: « switch-multi-repeat »,
« interval »:0.5,
« data »: [
« on »: « 26… »,
« off »:[
« 26000… »,
« 26000… »
]
]
}
Hello, et désolé du délai de réponse, j’ai « un peu » déconnecté ^^ Si tu n’as pas déjà trouvé, je te recommande de creuser du côté de l’accessoire switch-repeat
Bonjour, je possède un Rm 3 mini et je souhaiterai commander comme vous des appareils en IR via HomeKit, mais je ne m’y connais pas du tout en programmation et j’avoue qu’apres avoir lu trois fois l’article je suis complètement perdu.
Pouvez vous me conseiller pour y arriver, existe t’il une vidéo explicative point par point pour s’en sortir.
Merci d’avance
Guillaume
Bonjour Balard, il doit sûrement y avoir des vidéos sur youtube qui expliquent cela. j’en ai trouvé quelques unes qui expliquent comment utiliser le RM Mini avec Google Assistant, j’imagine que ça doit être similaire. Je vous encourage à creuser 🙂