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
Danke für die Anleitung. Wie kann ich das Ganze wieder rückgängig machen? Also wenn ich den Service nicht mehr im Autostart haben möchte?
VG
Maik
Hallo Maik,
mit „update-rc.d -f remove“ kannst einen Dienst entfernen und mit „service –status-all“ kannst du dir alle Dienste auflisten lassen.
Grüße,
Kai
Moin,
danke für die tolle Anleitung. Ich habe aber leider ein Problem, und zwar sagt er mir in zeile 37 bei is_running(), das der /etc/init.d/homebridge: is not found.
Hast du ne Idee, woran das liegen kann?
Vielen Dank im voraus
beste Grüße
Patrick
Die Datei existiert aber wirklich?
Hast du die Rechte der Datei angepasst?
Grüße,
Kai
Hey,
die Datei existiert, ich rufe sie ja auf und er fängt an. Der plott echo „Starting $name“ wird ausgegeben und dann kommt die Fehlermeldung.
sudo chmod 755 /etc/init.d/homebridge habe ich ausgeführt
Grüße
Versuch es mal mit den RAW Daten (Symbol in dem Script Feld rechts in der Mitte) vom Script oben, kann sein das beim kopieren des Scripts etwas schief geht.
Grüße,
Kai
habe das Script abgetippt, bekomme es nicht so einfach kopiert auf dem Smartphone. Bin nochmal alles durchgegangen, keine unterscheide zu sehen.
Grüße
Patrick
Hey,
hab was rausgefunden, mit sudo homebridge startet es wie es soll. Mit nur homebridge kommt ein Fehler, dass er die config.json nicht lesen konnte.
Dieser Fehler steht auch im hombridge.err log beim ausführen des Scriptes.
Es wird anscheinend mit falschen Rechten / oder falschem Benutzer gestartet.
Grüße
Patrick
Das ist doch super. 🙂
was muss an dem Script geändert werden, dass er es richtig startet?
Du könntest mal versuchen im Script den User zu ändern.
Ich weiß nicht wie du die Homebridge installiert hast.
Da einige
Installationsanleitungen für den Benutzer root geschrieben sind funktionieren bei diesen der Start nur mit sudo homebridge ich habe bei dem gleichen Problem die Zeilen 11 bis 13 geändert.
dir=“/root/“
cmd=“DEBUG=* homebridge -U -D“
user=“root“
Hallo
Ich habe bei mir das Problem das bei einem Reboot Homebridge nicht automatisch startet.
Führe ich jedoch das Command
sudo /etc/init.d/homebridge start
startet Homebridge wunderbar, nur beim Reboot nicht
Habe dann mal noch folgendes gemacht.
pi@raspberrypi:~ $ sudo update-rc.d homebridge defaults
pi@raspberrypi:~ $ service –status-all
[ + ] alsa-utils
[ + ] avahi-daemon
[ – ] bluetooth
[ – ] console-setup.sh
[ + ] cron
[ + ] dbus
[ + ] dhcpcd
[ + ] dphys-swapfile
[ + ] fake-hwclock
[ – ] homebridge
[ – ] hwclock.sh
[ – ] keyboard-setup.sh
[ + ] kmod
[ + ] networking
[ – ] nfs-common
[ – ] paxctld
[ – ] plymouth
[ – ] plymouth-log
[ + ] procps
[ + ] raspi-config
[ – ] rpcbind
[ – ] rsync
[ + ] rsyslog
[ + ] ssh
[ – ] sudo
[ + ] triggerhappy
[ + ] udev
Müsste da dann homebridge nicht ein [ + ] haben? Verstehe nicht was bei mir nicht klappt.
Kann mir jemand einen Tip geben?
Vielen Dank
Hi, konntest du das Problem lösen?
Also ich habe jetzt mehrmals alles so wie oben durchgeführt gemacht und mit den Befehlen start, stop, status, restart funktioniert bei manueller Eingabe auch alles wunderbar.
Aber trotz den Befehlen:
sudo chmod 755 /etc/init.d/homebridge
sudo update-rc.d homebridge defaults
passiert einfach gar nichts beim Reboot. Ich kann nach wie vor manuell starten, das Skript läuft wunderbar, aber das mit dem Autostart funktioniert nicht.
Nutze einen Raspberry Pi Zero W…