HomeBridge et Domoticz

Dans Centrale by Trispeer11 Commentaires

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 :

Démarage HomeBridge et Domoticz

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

  1. 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

    1. Author

      Bonjour,

      Désolé de répondre si tardivement. Je vais faire des tests et regarder puis je reviens vers vous.

  2. 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…

  3. alors moi ça s’arrête avant, lorsque je sfait systemctl enable homebridge,

    j’obtiens :

    Failed to enable unit: File homebridge.service: Invalid argument

    1. Author

      Bonjour,
      Je suis actuellement entrain de refaire ma centrale et de remettre Homebridge. Je vois si j’ai la même erreur.

    1. Author

      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.

  4. 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

    1. 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.

  5. 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!!

Laisser un commentaire

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