Après avoir vu comment contrôler Domoticz avec Controlicz, nous allons de même voir comment interconnecter HomeBridge et Domoticz.
Homebridge est un projet Open Source. C’est un outil qui va nous permettre d’installer des plugins en fonction du matériel afin de l’ajouter à son assistant vocal préféré. Il en existe déjà plus de 260 mais ceux quel l’on va regarder sont surtout les plugins concernant les installation domotiques (Domoticz, Home Assistant, OpenHAB, Jeedom, FHEM…).
Pour commencer il nous faut:
Voyons premièrement comment installer Homebridge sur le Raspberry contenant le serveur Domoticz.
Installation de Homebridge
Pour commencer, se connecter sur le Raspberry en ssh ou en VNC et ouvrir un terminal. Ensuite, nous allons passer les deux commandes suivantes pour mettre à jour le système
sudo apt-get update sudo apt-get upgrade
Puis on installe les composants nécessaires et HomeBridge
D’abord l’installation de NodeJs.
Avant de commencer à installer Node JS nous allons en premier lieu vérifier la puce de notre Raspberry. Normalement à ce jour, le 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).
Mais voici la commande pour vérifier :
uname -a
Ici, nous pouvons donc voir que nous sommes avec un ARMV7.
ILinux domoticz 4.14.50-v7+ #1122 SMP Tue Jun 19 12:26:26 BST 2018 armv7l GNU/Linux
Nous allons donc lancer les commandes suivantes (pour armv7) :
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - sudo apt-get install -y nodejs
Quant à la commande pour les ARMV6, la voici :
wget https://nodejs.org/dist/v8.9.0/node-v8.9.0-linux-armv6l.tar.gz tar -xzf node-v8.9.0-linux-armv6l.tar.gz cd node-v6.11.1-linux-armv6l/ sudo cp -R * /usr/local/
Afin de vérifier que l’installation s’est bien déroulée et que la version est bonne :
node -v
et voici alors le retour pour moi :
v8.11.4
Ensuite, installons HomeBridge :
sudo npm install -g --unsafe-perm homebridge
On vérifie aussi que l’installation s’est bien passée :
sudo homebridge
Vous devez alors obtenir ceci:
No plugins found. See the README for information on installing plugins.
Ce qui est normal car nous n’avons pas encore installer de plugin.
Installation du plugin pour lié Homebridge et Domoticz
Pour commencer, nous allons chercher la commande pour le plugin HomeBridge et Domoticz dans la base HomeBridge
Puis une fois récupéré, on lance la commande :
sudo npm install -g homebridge-edomoticz
Puis si on relance la commande HomeBridge, on obtient ceci :
Couldn't find a config.json file
Nous allons donc créer le fichier.
Création du fichier config.json
Premièrement, il faut récupérer l’adresse Mac de carte réseau avec la commande suivante :
ifconfig
Si vous êtes connecté en ethernet, on la alors trouve ici (en rouge) :
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 1x.1x.x.x netmask 255.255.255.0 broadcast 1x.1x.x.x inet6 xxx::xxx:xxx:xxxx:xxxx prefixlen 64 scopeid 0x20<link> ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet) RX packets 52594 bytes 3498722 (3.3 MiB) RX errors 0 dropped 20 overruns 0 frame 0 TX packets 99797 bytes 26813738 (25.5 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Au contraire, si vous êtes connecté en WIFI, on la trouve ici (en rouge) :
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 1x.1x.x.x netmask 255.255.255.0 broadcast 1x.1x.x.x inet6 xxx::xxx:xxx:xxxx:xxxx prefixlen 64 scopeid 0x20<link> ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet) RX packets 1412923 bytes 806457321 (769.0 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 255641 bytes 40499080 (38.6 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Deuxièmement, il faut créer le dossier pour mettre le fichier (pour ma part, je lance HomeBridge avec root)
sudo mkdir /root/.homebridge/
Ensuite on créer le fichier
sudo nano /root/.homebridge/config.json
Puis, on y colle le code suivant (en remplaçant dans username l’adresse mac par la votre) :
{
"bridge":
{
"name": "Homebridge",
"username": "xx:xx:xx:xx:xx:xx",
"port": 51826,
"pin": "031-45-154"
},
"description": "Configuration file for (e)xtended Domoticz platform.",
"platforms":
[{
"platform": "eDomoticz",
"name": "eDomoticz",
"server": "127.0.0.1",
"port": "8080",
"ssl": 0,
"roomid": 0
}]
}
Et on fait “ctrl+X” puis “o” pour quitter et sauvegarder
Enfin, on lance HomeBridge :
sudo homebridge
et on obtient alors :
HomeBridge en démarrage automatique
En dernier lieu, nous allons voir comment mettre en place le lancement automatique de HomBridge au démarrage du Raspberry.
Pour commencer, nous allons copier le fichier config.json dans un nouveau répertoire et lui donner des droits d’accès. Cela nous permettra de créer un utilisateur qui pourra donc lancer le service (Pour ma part, je préféré le lancer en root)
mkdir /var/homebridge/ sudo cp /root/.homebridge/config.json /var/homebridge/ sudo chmod 777 /var/homebridge/
Ensuite on créé un fichier homebridge dans /etc/default
sudo nano /etc/default/homebridge
et on va copier ensuite ceci :
#Defaults / Configuration options for homebridge # The following settings tells homebridge where to find the config.json file and where to persist the data (i.e. pairing and others) HOMEBRIDGE_OPTS= -I /var/homebridge # If you uncomment the following line, homebridge will log more # You can display this via systemd's journalctl: journalctl -f -u homebridge # DEBUG=*
On fait “ctrl+X” puis “o” pour quitter et sauvegarder.
Puis, on finalise en créant un dernier fichier dans le systemd :
sudo nano /etc/systemd/system/homebridge.service
Et on va copier alors ceci :
[Unit] Description=Node.js HomeKit Server After=syslog.target network-online.target [Service] Type=simple User=root EnvironmentFile=/etc/default/homebridge ExecStart=/usr/lib/node_modules/homebridge/bin/homebridge $HOMEBRIDGE_OPTS Restart=on-failure RestartSec=10 KillMode=process [Install] WantedBy=multi-user.target
On fait “ctrl+X” puis “o” pour quitter et sauvegarder.
Reste à passer enfin les commandes suivantes :
systemctl daemon-reload systemctl enable homebridge systemctl start homebridge systemctl status homebridge
On obtient normalement le retour suivant :
homebridge.service - Node.js HomeKit Server
Loaded: loaded (/etc/systemd/system/homebridge.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2018-08-30 11:17:12 CEST; 22h ago
Main PID: 10692 (homebridge)
CGroup: /system.slice/homebridge.service
└─10692 homebridge
août 31 09:17:22 domoticz homebridge[10692]: [2018-8-31 09:17:22] [eDomoticz] Exterieur
août 31 09:17:22 domoticz homebridge[10692]: [2018-8-31 09:17:22] [eDomoticz] Parents
août 31 09:17:22 domoticz homebridge[10692]: [2018-8-31 09:17:22] [eDomoticz] Raphael
août 31 09:17:22 domoticz homebridge[10692]: [2018-8-31 09:17:22] [eDomoticz] Salon
août 31 09:27:22 domoticz homebridge[10692]: [2018-8-31 09:27:22] [eDomoticz] Buanderie
août 31 09:27:22 domoticz homebridge[10692]: [2018-8-31 09:27:22] [eDomoticz] Bureau
Et voila, le tour est joué.
Nous verrons dans un prochain article comment finalement le coupler avec Alexa.
Commentaires
Bonsoir,
Si je relance la commande sudo homebridge suite à tout ce modop j’ai une erreur :
“events.js:183
throw er; // Unhandled ‘error’ event
^
Error: listen EADDRINUSE :::51826
at Server.setupListenHandle [as _listen2] (net.js:1360:14)
at listenInCluster (net.js:1401:12)
at Server.listen (net.js:1485:7)
at EventedHTTPServer.listen (/usr/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/util/eventedhttp.js:60:19)
at HAPServer.listen (/usr/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/HAPServer.js:158:20)
at Bridge.Accessory.publish (/usr/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:607:16)
at Server._publish (/usr/lib/node_modules/homebridge/lib/server.js:128:16)
at Server.run (/usr/lib/node_modules/homebridge/lib/server.js:97:10)
at module.exports (/usr/lib/node_modules/homebridge/lib/cli.js:45:10)
at Object. (/usr/lib/node_modules/homebridge/bin/homebridge:17:22)
”
Est-ce normal ?
Merci d’avance de votre retour.
Cordialement, DocKoxx
Bonjour,
Désolé de répondre si tardivement. Je vais faire des tests et regarder puis je reviens vers vous.
Bonsoir, j’ai effectivement le même code erreur…
events.js:182
throw er; // Unhandled ‘error’ event
^
Error: listen EADDRINUSE :::45195
at Object.exports._errnoException (util.js:1024:11)
at exports._exceptionWithHostPort (util.js:1047:20)
at Server.setupListenHandle [as _listen2] (net.js:1319:14)
at listenInCluster (net.js:1367:12)
at Server.listen (net.js:1467:7)
at EventedHTTPServer.listen (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/util/eventedhttp.js:60:19)
at HAPServer.listen (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/HAPServer.js:158:20)
at Bridge.Accessory.publish (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:609:16)
at Server._publish (/usr/local/lib/node_modules/homebridge/lib/server.js:128:16)
at Server.run (/usr/local/lib/node_modules/homebridge/lib/server.js:97:10)
juste sous le code homekit…
alors moi ça s’arrête avant, lorsque je sfait systemctl enable homebridge,
j’obtiens :
Failed to enable unit: File homebridge.service: Invalid argument
Bonjour,
Je suis actuellement entrain de refaire ma centrale et de remettre Homebridge. Je vois si j’ai la même erreur.
moi aussi j’ai le même bloquage
Bonjour,
Désolé de répondre si tardivement, pas mal de changement chez moi en se moment. Au vu du nombre de commentaire concernant le bloquage je vais refaire l’installation chez moi et apporter les modifications nécessaire à l’article.
Merci,
J’avoue ne pas avoir trouvé de solutions
bonjour je galere pour la mise en route de homebridge une idée ??
pi@raspberrypi:~ $ homebridge
[2019-5-25 19:32:15] config.json (/home/pi/.homebridge/config.json) not found.
[2019-5-25 19:32:16] Warning: skipping plugin found at ‘/opt/nodejs/lib/node_modules/homebridge-edomoticz’ since we already loaded the same plugin from ‘/usr/local/lib/node_modules/homebridge-edomoticz’.
[2019-5-25 19:32:41] Loaded plugin: homebridge-alexa
[2019-5-25 19:32:41] Registering platform ‘homebridge-alexa.Alexa’
[2019-5-25 19:32:41] —
[2019-5-25 19:32:47] Loaded plugin: homebridge-edomoticz
[2019-5-25 19:32:47] Registering platform ‘homebridge-edomoticz.eDomoticz’
[2019-5-25 19:32:47] —
Load homebridge-edomoticz.eDomoticz
Setup Payload:
X-HM://0023ISYWYH4H2
Bonjour Gigi,
Désolé pour le délai de réponse, on est assez occupé en moment, et clairement pas assez assidus sur le projet.
Trispeer qui s’occupe de ça est en plein déménagement, il fera des updates dès que possible.
Bonsoir,
après avoir suivi votre tuto (un grand merci) j’ai également un message d’erreur.
[2019-10-18 20:41:37] TypeError: buf.copy is not a function
at Function.Buffer.concat (buffer.js:219:9)
at Object.encode (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/util/tlv.js:26:35)
at Object.encode (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/util/tlv.js:51:39)
at Object.encode (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/util/tlv.js:51:39)
at HAPServer._handlePairStepFive (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/HAPServer.js:459:21)
at HAPServer._handlePairStepFour (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/HAPServer.js:439:8)
at HAPServer._handlePairStepThree (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/HAPServer.js:413:8)
at HAPServer._handlePair (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/HAPServer.js:315:10)
at HAPServer. (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/HAPServer.js:209:39)
at emitNone (events.js:67:13)
Avez vous une petite idée?
Merci pour votre aide!!