Homebridge Autostart auf dem Raspberry Pi

In diesem Blogeintrag beschreibe ich, wie die Homebridge von nfarina per Autostart auf dem Raspberry Pi gestartet werden kann.

Als erstes muss ein Service mit folgendem Inhalt auf dem Raspberry Pi für die Homebridge angelegt werden:

sudo nano /etc/init.d/homebridge

#!/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=* homebridge -U -D"
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

In der Zeile 11 wird das Verzeichnis des Benutzers angegeben.

dir="/home/pi"

In der Zeile 12 wird der Befehl zum Homebridge starten inkl. Parameter angegeben.

cmd="DEBUG=* homebridge -U -D"

In der Zeile 13 wird der Benutzer angegeben unter welchem die Homebridge gestartet werden soll.

user="pi"

Im Normalfall kann dies so übernommen werden, außer die Homebridge wird zum Beispiel mehrfach auf dem Pi ausgeführt.

Als nächstes muss der Service noch die richtigen Berechtigungen erhalten und im Autostart eingetragen werden:

sudo chmod 755 /etc/init.d/homebridge
sudo update-rc.d homebridge defaults

Über folgenden Aufruf kann die Homebridge gestartet oder gestoppt werden:

sudo /etc/init.d/homebridge start
sudo /etc/init.d/homebridgee stop