Tout savoir sur Homebridge, le pont pour piloter des accessoires domotiques depuis iOS • Domotique et objets connectés à faire soi-même

Homebridge est un projet Open Source développé par Nick Farina (Githubsite internet). C’est un projet modulaire auquel on peut ajouter des plugins en fonction du matériel que l’on souhaite ajouter à son iPhone (ou iPad). Il en existe déjà plus de 260 (la liste complète ici) et vous pouvez même développer  le votre (des exemples pour démarrer). 

Il existe des plugins pour les principaux logiciels domotique (Domoticz, Home Assistant, OpenHAB, Jeedom, FHEM…) et pour de nombreux matériels (Ampoules Philips Hue, NAS Synology…)

English version

Installer Homebridge sur Raspbian

Commençons par mettre à jour le système

sudo apt-get update
sudo apt-get upgrade

Si votre distribution ne prend pas en charge l’expansion automatique de la partition (au premier lancement, c’est par exemple le cas pour l’image de Domoticz), lancez raspi-config.

sudo raspi-config

Puis Option 1 – Expand Filesystem. Ensuite Finish et enfin Allow reboot.

Installer Node.js

Avant d’installer Homebridge, il est nécessaire d’installer Node.js. Suivez les étapes suivantes qui correspondent à votre modèle de Raspberry. On commence par supprimer le Node.js déjà existant sur le système pour installer la version 6.3.1 (version conseillée pour le projet Homebridge).

Raspberry Pi A/B/B+ (anciens modèles)

sudo apt-get remove nodejs
sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/{npm*,node*,man1/node*} /var/db/receipts/org.nodejs.*
hash -r
wget https://nodejs.org/dist/v6.3.1/node-v6.3.1-linux-armv6l.tar.gz
tar -xvf node-v6.3.1-linux-armv6l.tar.gz
cd node-v6.3.1-linux-armv6l
sudo cp -R * /usr/local/
cd ~/

Raspberry Pi 2 ou 3

sudo apt-get remove nodejs
sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/{npm*,node*,man1/node*} /var/db/receipts/org.nodejs.*
hash -r
wget https://nodejs.org/dist/v6.3.1/node-v6.3.1-linux-armv7l.tar.gz
tar -xvf node-v6.3.1-linux-armv7l.tar.gz
cd node-v6.3.1-linux-armv7l
sudo cp -R * /usr/local/
cd ~/

Installer Homebridge et Domoticz

Maintenant, nous pouvons installer Homebridge et le plugin eDomoticz

sudo npm set prefix '/usr' -g
sudo npm install -g homebridge --unsafe-perm

Récupérez l’adresse Mac du votre Raspberry PI. Ce n’est pas noté mais sans cette configuration (astuce trouvée ici), vous risquez de ne pas réussir à détecter le pont HB sur iPhone (ou iPad). Exécutez ifconfig. L’adresse Mac du RPI se trouve à droite de HWaddr.

Créez un répertoire dédié à Homebridge

mkdir ~/.homebridge

Puis ouvrez le fichier de configuration dans un éditeur de texte (pico ou nano).

sudo nano ~/.homebridge/config.json

Modifiez la valeur de la clé username en saisissant l’adresse Mac du Raspberry Pi.

Vous pouvez en profiter pour attribuer un code Pin plus personnel. Enregistrez (Ctrl + X ) puis O (ou Y). L’exemple suivant est tiré du tutoriel d’installation pour Domoticz. Vous devrez l’adapter en fonction du plugin dont vous avez besoin.

Lancez manuellement HB avec la commande.

homebridge

Au démarrage les appareils domotique sont présentés à iOS.

Au démarrage, HB recherche tous les dispositifs (appareils) configurés et les rend visible par un iPhone ou un iPad relié au réseau local.

Il n’est pas encore capable de prendre en compte les modifications apportées au fichier de configuration “à chaud”. Il faudra le redémarrer manuellement à chaque fois que vous ajoutez un matériel par exemple. Voici donc quelques commandes utiles.

Lancer automatiquement Homebridge au démarrage du Raspberry

Vérifiez tout d’abord que les sources de HB ont été installées globalement.

sudo npm install -g homebridge

Ensuite on édite le fichier init.d

sudo nano /etc/init.d/homebridge

Copiez ce code dans le fichier (origine du code source).

#!/bin/sh
### BEGIN INIT INFO
# Provides: homebridge
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO

dir="/home/pi"
cmd="DEBUG=* /usr/local/bin/homebridge"
user="pi"

name=`basename $0`
pid_file="/var/run/$name.pid"
stdout_log="/var/log/$name.log"
stderr_log="/var/log/$name.err"

get_pid() {
cat "$pid_file"
}

is_running() {
[ -f "$pid_file" ] && ps `get_pid` > /dev/null 2>&1
}

case "$1" in
start)
if is_running; then
echo "Already started"
else
echo "Starting $name"
cd "$dir"
if [ -z "$user" ]; then
sudo $cmd >> "$stdout_log" 2>> "$stderr_log" &
else
sudo -u "$user" $cmd >> "$stdout_log" 2>> "$stderr_log" &
fi
echo $! > "$pid_file"
if ! is_running; then
echo "Unable to start, see $stdout_log and $stderr_log"
exit 1
fi
fi
;;
stop)
if is_running; then
echo -n "Stopping $name.."
kill `get_pid`
for i in {1..10}
do
if ! is_running; then
break
fi

echo -n "."
sleep 1
done
echo

if is_running; then
echo "Not stopped; may still be shutting down or shutdown may have failed"
exit 1
else
echo "Stopped"
if [ -f "$pid_file" ]; then
rm "$pid_file"
fi
fi
else
echo "Not running"
fi
;;
restart)
$0 stop
if is_running; then
echo "Unable to stop, will not attempt to start"
exit 1
fi
$0 start
;;
status)
if is_running; then
echo "Running"
else
echo "Stopped"
exit 1
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac

exit 0

On doit rendre le script executable

sudo chmod 755 /etc/init.d/homebridge

Et maintenant on demande à l’OS de démarrer le script au démarrage

sudo update-rc.d homebridge defaults

On peut le lancer manuellement avec la commande

sudo /etc/init.d/homebridge start

Si HB est déjà lancé, le script vous en informera et ne fera rien de plus.

Autres commandes utiles pour piloter Homebridge

Arrêter

Pour arrêter manuellement

sudo /etc/init.d/homebridge stop

Connaitre l’état

Exécutez la commande suivante pour savoir si le service est démarré ou arrêté.

sudo /etc/init.d/homebridge status

 Redémarrer

Vous venez de faire une modification dans le fichier de configuration ~/.homebridge/config.json, exécutez l’option restart pour relancer.

sudo /etc/init.d/homebridge restart

Consulter les journaux (logs)

Une fois que HB est configuré pour ce lancer au démarrage, on a plus de retour visuel de ce qui ce passe. Voici deux autres commandes bien utiles pour accéder aux logs en temps réel.

tail -f /var/log/homebridge.log

Et pour consulter le journal des erreurs

tail -f /var/log/homebridge.err

Sources :

Avez-vous aimé cet article ?