Homebridge Start und Status in FHEM
Der Artikel befindet sich noch im Aufbau.
Achtung: Die Code Zeilen sind direkt der FHEM Config Datei entnommen.
Ich war es leid bei jeder Änderung die Homebridge betrifft immer wieder auf die Console zu müssen um den Dienst neu zustarten. Hier aus ist dann das folgenden entstanden. Was noch nicht geht ist die Erkennung wenn Homebridge abgeschmiert ist. Dies wird nach möglichleit zu einem späterem Zeitpunkt umgesetzt.
Grundlage ist das Script von meintechblog.de für das Auto Backup sowie das Startscript im Artikel Homebridge einrichten
Status Dummy anlegen
1. Anlegen einen Dummies um den Status in FHEM zu sehen:
define FHEM.Homebridge.Status dummy
attr FHEM.Homebridge.Status room 9.03_Tech
Start Script anlegen
2. Script im Verzeichnis /etc/init.d/ erstellen
Wenn die Datei noch nicht angelegt ist auf der Console mit folgenden Befehl erstellen.
sudo nano /etc/init.d/homebridge
Start Script befüllen
#!/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 for homebridge
# Description: Enable service provided by daemon.
### END INIT INFO
export PATH=$PATH:/usr/local/bin
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules
PID=`pidof homebridge`
case "$1" in
start)
if ps -p $PID > /dev/null 2>&1; then
echo "Homebridge is already running"
perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Homebridge.Status info Homebridge is allready running"
perl /opt/fhem/fhem.pl 7072 "set FHEM.Homebridge.Status on"
else
su - "hs-server-admin" -c "homebridge > /dev/null 2>&1 &"
echo "Homebridge starting"
sleep 2
$0 status
fi
;;
stop)
if ! ps -p $PID > /dev/null 2>&1; then
echo "Homebridge is not running"
perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Homebridge.Status info Homebridge is not running"
perl /opt/fhem/fhem.pl 7072 "set FHEM.Homebridge.Status off"
else
kill $PID
echo "Homebridge closed"
perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Homebridge.Status info Homebridge closed"
perl /opt/fhem/fhem.pl 7072 "set FHEM.Homebridge.Status off"
fi
;;
restart)
if ! ps -p $PID > /dev/null 2>&1; then
$0 start
else
$0 stop
$0 start
fi
;;
status)
if ps -p $PID > /dev/null 2>&1; then
echo "Homebridge is running PID $PID"
perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Homebridge.Status info Homebridge running as PID $PID"
perl /opt/fhem/fhem.pl 7072 "set FHEM.Homebridge.Status on"
else
echo "Homebridge is not running"
perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Homebridge.Status info Homebridge is not running"
perl /opt/fhem/fhem.pl 7072 "set FHEM.Homebridge.Status off"
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
exit 0
Start Script Autostart einrichten
Autostart aktivieren:
sudo chmod 755 /etc/init.d/homebridge
sudo update-rc.d homebridge defaults
Homebridge Start per Konsole
Nun kann man mit
sudo service homebridge start
bzw.
sudo /etc/init.d/homebridge start
den Dienst starten
Homebridge Start per FHEM
Homebridge Start Dummy einrichten
define FHEM.Homebridge dummy
attr FHEM.Homebridge event-on-change-reading state
attr FHEM.Homebridge room 9.03_Tech
attr FHEM.Homebridge webCmd status:start:stop:restart
Homebridge Start DOIF einrichten
define FHEM.Homebridge.DOIF DOIF ([FHEM.Homebridge] eq "start") ({system ("sudo /etc/init.d/homebridge start")})\
DOELSEIF ([FHEM.Homebridge] eq "stop") ({system ("sudo /etc/init.d/homebridge stop")})\
DOELSEIF ([FHEM.Homebridge] eq "restart") ({system ("sudo /etc/init.d/homebridge restart")})\
DOELSEIF ([FHEM.Homebridge] eq "status") ({system ("sudo /etc/init.d/homebridge status")})
attr FHEM.Homebridge.DOIF room 9.03_Tech
Homebridge FHEM Zugriff auf Script gewähren
sudo nano /etc/sudoers
Beispiel Zeile
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge
Beispiel Datei:
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
fhem ALL=(ALL) NOPASSWD:/opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge
# Members of the admin group may gain root privileges
%admin ALL = (ALL) NOPASSWD: ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d