Récemment, j’ai essayé un truc : installer HomeBridge sur un Raspberry Pi. Beaucoup me disaient que ce hack qui permet de rendre compatible HomeKit des dizaines d’appareils était très efficace et pratique. Pratique, peut-être, simple à installer, pas vraiment. Procédons.
L’idée de départ était de rendre mon purificateur d’air compatible avec HomeKit. Il est connecté, mais Dyson ne propose pas la prise en charge de HomeKit.
Installer HomeBridge
Première étape, installer HomeBridge. Ce programme en Node JS peut fonctionner sur pas mal d’OS, mais j’ai choisi le plus simple dans mon cas : un Raspberry Pi. J’avais déjà un bloc de 5 cartes dans un coin (alimentées par un chargeur dotés de six prises USB) donc j’ai ajouté une carte. Petite contrainte dans mon cas, j’ai pris un vieux Raspberry Pi en spare, un modèle A+ (ARMv6, donc). Je précise avant de commencer, l’installation peut être plus simple si vous avez déjà une distribution domotique ou un NAS Synology (par exemple) et on peut même installer HomeBridge sur un Mac.
La documentation d’HomeBridge est assez complète et le logiciel évolue régulièrement. Je suis parti du tutorial… qui n’est pas complet.
Première étape, installer un Raspberry Pi avec une version récente de Raspbian et connaître son modèle. Les Raspberry Pi B, B+, A, A+ et Zero (W) sont en ARMv6 (processeur ARM11) et les Raspberry Pi 2 et 3 en ARMv7 (Cortex A7 ou A53). C’est important. Commencez par mettre à jour le système et installer le nécessaire. Je suppose que vous savez vous connecter en SSH ou brancher un clavier.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git make
sudo apt-get install libavahi-compat-libdnssd-dev
Abandonnez la méthode du tutorial pour installer Node JS. Elle installe une vieille version et certains plug-in demandent une version récente. Avec un Raspberry Pi en ARMv6 (cas de mon A+), la solution la plus simple est ce script. Et pas besoin de passer par sudo apt-get nodejs
: ça installe une vieille version.
J’avais besoin au moins de la 8.0, j’ai installé la 8.£9 avec cette commande.
wget -O - https://raw.githubusercontent.com/sdesalas/node-pi-zero/master/install-node-v8.9.0.sh | bash
Pour vérifier la version, tapez simplement cette commande.
node -v
La solution classique n’a pas fonctionné dans mon cas, donc j’ai suivi l’installation unusual du tutorial.
sudo npm install -g --unsafe-perm homebridge hap-nodejs node-gyp
cd /usr/local/lib/node_modules/homebridge/
sudo npm install --unsafe-perm bignum
cd /usr/local/lib/node_modules/hap-nodejs/node_modules/mdns
sudo node-gyp BUILDTYPE=Release rebuild
Truc rigolo (non), pour une raison bizarre, je n’avais pas les mêmes dossiers pour l’installation. Selon les cas, vous devrez remplacer /usr/local/lib
par /usr/lib/
ou /opt/node/lib/
ou même /opt/nodejs/lib/
. Ca dépend visiblement de la façon d’installer Node JS (simple, non ?).
C’est le moment de tester à vide. En théorie, l’exécutable est dans le path, donc taper homebridge
suffit. En pratique, j’ai du mettre le chemin complet (/opt/nodejs/bin/homebridge
).
Les plug-in
HomeBridge sert juste de lien entre vos appareils et HomeKit. Il faut donc installer des plug-in. Il en existe vraiment beaucoup, pour pas mal d’appareils. Ça va de la température CPU du Raspberry Pi au contrôle de différents appareils connectés. Dans mon cas, je voulais gérer un purificateur d’air. Attention au choix du plug-in, vérifiez les retours avant : certains sont basiques, buggés ou compliqués à mettre en place. Pour Dyson, par exemple, il en existe plusieurs avec différents problèmes. Pour la connexion, Dyson utilise en effet un numéro de série (dérivé de l’adresse MAC) et un mot de passe, noté sur l’appareil, et le vrai mot de passe dérive de ce dernier. Un des plug-in va vous demander de sniffer la liaison entre l’application et l’appareil (pas très pratique), un autre de le calculer vous-même (c’est un hash précis) et celui que j’ai utilisé fait tout automatiquement.
J’ai utilisé homebridge-dyson-link, avec un bon suivi. L’installation de base est simple :
npm install -g homebridge-dyson-link
Une fois que c’est fait, il faut installer un fichier de configuration. Les ennuis commencent. En théorie, il faut récupérer l’exemple de base, le modifier et ajouter les informations spécifiques au plug-in. En pratique, dans la majorité des retours que j’ai eu sur HomeBridge, le point de crispation a été ce fichier. Il est formaté en JSON et – premier point – il vaut mieux utiliser un éditeur de texte qui ne joue pas trop sur le contenu (quelques éditeurs de textes cassent le formatage). Deuxième point, la logique du JSON n’est pas évidente de prime abord, même quand on connaît (un peu) la programmation. Le fichier config.json
se trouve dans ~/.homebridge/
. Attention, si vous lancez HomeBridge avec la commande sudo
(ce n’est pas nécessaire), il va aller lire le fichier qui se trouve dans /home/root/.homebridge/
.
nano ~/.homebridge/config.json
Dans les trucs importants, comptez bien les accolades et les crochets. Un copier/coller malheureux peut en faire disparaître une et rendre le tout inutilisable. Ensuite, vérifiez la présence des virgules en fin de ligne. Il en faut quand la ligne est suivie d’un autre élément dans le même bloc, mais pas s’il s’agit du dernier élément. Même chose pour les blocs : un bloc (entre des accolades) suivi d’un second bloc doit être terminé par une virgule. Et enfin attention à vos guillemets, surtout si vous effectuez des copier/coller : certains OS (et éditeurs de textes) remplacent les guillemets par des versions différentes. La solution la plus simple pour vérifier si tout va bien est un validateur en ligne. Il permet de voir si le fichier est correctement formaté.
Une fois le fichier correctement formaté, il faut lancer HomeBridge avec un iPhone a proximité. Normalement, si tout se lance correctement – je vous le souhaite – le terminal va afficher un code QR et un code HomeKit (impossible à scanner…). Il suffit donc d’ajouter un périphérique HomeKit dans l’application Maison en scannant le code QR (ou en tapant le code) et attendre que l’appareil iOS se connecte à HomeBridge. iOS 11 (je ne sais pas pour les précédents) indique que HomeBridge n’est pas certifié et qu’il peut poser des soucis, mais ce n’est pas réellement un souci.
Avec mon purificateur Dyson, le résultat n’est pas totalement parfait : s’il envoie les données (température, qualité de l’air, etc.) et qu’HomeKit permet de gérer la ventilation, le plug-in (ou le purificateur, aucune idée) ne gère pas la vitesse quand l’appareil est en mode automatique. Donc quelle que soit la vitesse, HomeKit affiche la dernière vitesse choisie en manuel. Bien évidemment, ce bug est lié à mon appareil, pas à HomeBridge.
HomeBridge en démarrage automatique
Si ça marche sans erreurs (ce n’était pas mon cas, suite à des erreurs, mais je vous passe ces étapes), il faut lancer HomeBridge au démarrage.
La méthode que j’ai utilisé est celle qui passe par init.d
. Première chose, copiez le contenu de ce fichier dans le presse-papier.
Ensuite, tapez la commande suivante, collez le contenu dans le fichier et modifiez les trois lignes qui suivent. La ligne qui commence par cmd
est importante : il faut bien mettre le bon dossier en fonction de votre installation.
sudo nano /etc/init.d/homebridge
dir="/home/pi"
cmd="DEBUG=* /opt/nodejs/bin/homebridge"
user="pi"
Ensuite, tapez ces deux commandes et redémarrez.
sudo chmod 755 /etc/init.d/homebridge
sudo update-rc.d homebridge defaults
Normalement, si tout se passe bien, HomeBridge démarre automatiquement.
Que penser de HomeBridge
Mon avis reste un peu mitigé. Dans l’absolu, c’est un bon moyen de rendre un appareil standard compatible avec HomeKit. Dans la pratique, c’est un peu compliqué à installer, pas franchement user friendly, alors que le but de HomeKit est notamment de proposer de la domotique simple à utiliser. En dehors de ça, et même si ça semble assez stable dans le temps, les chances de tomber en panne augmentent : au lieu de dépendre d’un seul appareil, on dépend de la liaison entre un appareil et le Raspberry Pi et du Raspberry Pi avec HomeKit. Enfin, si HomeBridge même ne pose pas de soucis de compatibilité, c’est nettement moins évident pour les plug-in : il faut trouver le bon, le configurer (pas toujours évident) et espérer qu’il ne contienne pas de bugs. Avec mon appareil Dyson, sur trois possibilités après une simple recherche, deux sont (très) compliquées à mettre e oeuvre.
Pour tester rapidement ou essayer de connecter un appareil incompatible (comme moi), HomeBridge peut s’envisager. Mais dans la majorité des cas, choisir un appareil compatible HomeKit nativement me semble un bien meilleur choix, sauf à aimer les bidouilles. Là, pour un résultat avec des bugs cosmétiques, j’ai quand même perdu l’équivalent d’un après-midi de bidouille. Après, j’avoue que même sur les appareils HomeKit, ce n’est pas toujours parfait, surtout quand HomeKit arrive avec une mise à jour comme chez Netatmo.
Bonjour,
Pour avoir utilisé homebridge pendant un an couplé a domoticz, je peux dire que c’est globalement stable avec les quelques bemols suivants :
– Pb quand on essaie de mettre un IP fixe au raspberry PI; homebridge plante apres quelques heures. Je n’ai pas encore trouvé la raison.
– Changement de version d’IOS et de TVOS qui peuvent faire planter homebridge et necessite generalement une reinstallation
Le benefice que j’y vois est que cela permet de supprimer l’achat d’un hub qui sert uniquement de passerelle vers iOS. Par exemple, il est possible d’utiliser ses devices Belkin dans l’application Home sans avoir a recourir au hub dedier; on peut meme controler plusieurs systemes de domotiques (Belkin, Philipps, Z-Wave etc) depuis un Pi avec Homebridge et Domoticz.
Perso je l’utilise couplé sur une installation jeedom sur raspberry, et je suis super content !
J’ai remonté via des virtuel dans jeedom certaine action d’un nabaztag avce un bouton sur l’app maison (ca sert pas a grand chose mais c’est drôle)
J’aimerais encore tester d’utiliser la caméra d’un Karotz comme caméra homekit, vu que la cam du karotz est utilisable dans jeedom je pense qu’on peu la faire remonter dans HomeBridge pour l’utiliser directement dans l’app maison :)
Pour ma part je vois enfin le bout à la pénible installation que j’ai tenté :
_tout mon système xiaomi home (capteurs, boutons, prises, alarme etc..)
_Emetteur broadlink (IR/RF pour controler clims et des prises non connectées mais RF)
_Ampoules xiaomi philips
Comme dit dans l’article, tout est compliqué, de la récupération de token d’identification crypté à l’apprentissage de commande, mais quel plaisir quand ca marche !
J’ai déjà quelques hue mais le but de tout ca est bien sur d’économiser (capteurs, ampoules, etc 4 à 5 fois moins cher que l’équivalent homekit) en s’amusant (parfois pas amusant du tout :D) à coder le Json.
J’utilise Screen et laisse le rasp tourner en continu, à voir comment ca évoluera !
Prochaine étape, intégrer mon hub harmony à cette joyeuse config !
Hello,
tu m’as donné envie alors je l’ai installé sur mon mac mini (high Sierra) et j’y ai connecté ma station Netatmo et ses satellites sans « trop » de problème.
Et surtout cela fonctionne plutôt bien, en tous cas dans l’immédiat…
J’ai pas mal galéré avec l’installation de home bridge et de domoticz sur le raspberry moi aussi, mais tout les capteurs Mysensors sont maintenant effectig et les deux prises non homekit que j’ai depuis le remplacement de celle jhomekit qui buguaient marche avec Siri et Homekit je suis content, j’essai maintenant de hacker mon installation alarme la maison (dont je ne me sert pas) pour utiliser les capteurs de celle ci (capteurs portes/fenetres et capteur presence). Des que j’ai du temps j’essaierais ca https://harizanov.com/2014/07/interfacing-with-paradox-home-security-system-attempt-2/
Bonjour Pierre,
Je suis sous un Nas QNAP avec une application de virtualisation avec une VM Debian.
Je n’arrive pas à accéder au fichier config.json qui se trouve dans ~/.homebridge/. .
Dans le terminal, en tapant sudo nano ~/.homebridge/config.json , j’arrive à créer le fichier json. mais au moment de l’enregistrement,
« Erreur lors de l’écriture de /root/.homebridge/config.json : Aucun fichier ou dossier de ce type.
Aurais-tu une idée du problème que je devrais avoir?
Perso, j’ai ajouté Homebridge à ma stack domotique en 5 minutes sur mon Pi, en ajoutant 5 lignes de code au docker-compose.yml de mon appli, il suffit d’ajouter un container Docker Homebridge et lui indiquer le hostname / IP de Domoticz, par exemple, et les centaines de periphériques domotiques non-compatibles Homekit deviennent accessibles gratuitement sous MacOS et iOS comme par enchantement, ainsi que l’UI Homebridge :) https://github.com/oznu/docker-homebridge. La magie de Docker comme d’hab’, en quelques lignes et quelques minutes on ajoute des briques éprouvées et prêtes à l’emploi :D « simple à installer, pas vraiment », et bien si, justement :)