Accueil / Domotique / Homebridge / Tout savoir sur Homebridge, le pont pour piloter des objets domotique depuis iOS

Tout savoir sur Homebridge, le pont pour piloter des objets domotique depuis iOS

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

On 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…)

Read this article in English

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.

Si nodejs n’est pas encore installé sur votre système, commencez par cette commande

sudo apt-get install nodejs npm

Ensuite on peut installer homebridge.

sudo npm set prefix '/usr' -g
sudo npm update -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.

hombridge domoticz adresse mac rpi hwaddr

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 de votre RPI. 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.

homebrige domoticz edomoticz config
Exemple de configuration de Homebridge pour Domoticz.

Lancez manuellement HB avec la commande.

hombridge
homebrige domoticz premier demarrage
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 :