Homebridge Status und Neustart in FHEM

Begonnen von Diggewuff, 18 Juli 2016, 15:09:32

Vorheriges Thema - Nächstes Thema

Diggewuff

Hey Leute,

Ich habe es nun endlich geschafft und Homebridge zum laufen bekommen.
Zum Starten verwende ich das Skript aus dem Wiki http://www.fhemwiki.de/wiki/Homebridge_Start_und_Status_in_FHEM welches unter anderem auch die Einbindung in FHEM ermöglichen soll, dafür habe ich nach Anleitung auch das DOIF definiert.

SKRIPT:

Code: [Auswählen]

#!/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"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Homebridge off"
else
        su - pi -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"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Homebridge 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"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Homebridge 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"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Homebridge off"
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"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Homebridge off"
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
exit 0


DOIF:

Code: [Auswählen]

(
[FHEM.Homebridge] eq "start"
)
   (
   set FHEM.Homebridge on,
   {system ("sudo /etc/init.d/homebridge start")}
   )
DOELSEIF
(
[FHEM.Homebridge] eq "stop"
)
   (
   set FHEM.Homebridge on,
   {system ("sudo /etc/init.d/homebridge stop")}
   )
DOELSEIF
(
[FHEM.Homebridge] eq "restart"
)
   (
   set FHEM.Homebridge on,
   {system ("sudo /etc/init.d/homebridge restart")}
   )
DOELSEIF
(
[FHEM.Homebridge] eq "status"
)
   (
   set FHEM.Homebridge on,
   {system ("sudo /etc/init.d/homebridge status")}
   )


Allerdings habe ich das große Problem das in den Dummys aus der Anleitung keinerlei Daten angezeigt werden, und das bei Ausführung Eines Befehls der Art:


Code: [Auswählen]

{system ("sudo /etc/init.d/homebridge start")}


FHEM sich vollständig aufhängt so dass ein Neustart meines RasPI notwendig ist.
Auf der Konsole ausgeführt mach das Skript keine Probleme, trägt allerdings keine Daten in die Dummy's sein.

Hat jemand eine Idee woran das liegen könnte?

Grinsekatze

#1
Ich habe genau das gleiche Problem. Zunächst auf meinem alten Pi 2 und nun auch auf dem neuen Pi 3.

Ich habe die Homebridge nach diesen beiden Wikis aufgesetzt (mit NodeJS v.6):
http://www.fhemwiki.de/wiki/Homebridge_einrichten
http://www.fhemwiki.de/wiki/Homebridge_Start_und_Status_in_FHEM

Kann hier Niemand helfen?

Diggewuff

Ich bin was das angeht auch noch keinen Schritt weiter.  :(

Grinsekatze

#3
Ich glaube die Lösung gefunden zu haben!

Das Wiki hat einige Fehler und sollte daher dringend einmal abgeändert werden.

Zum einen sollte davon abgesehen werden, wie unter "Homebridge FHEM Zugriff auf Script gewähren" beschrieben die sudoers direkt zu bearbieten ("sudo nano /etc/sudoers")! Dafür gibt es das Programm visudo:
sudo visudo

Weiter ist der DOIF offenbar fehlerhaft (danke an dieser Stelle an micha105 für den Tipp: https://forum.fhem.de/index.php/topic,53772.msg454167.html#msg454167). Den System-Aufrufen müssen Und-Symbole ("&") hinzugefügt werden:
define FHEM.Homebridge.DOIF DOIF ([FHEM.Homebridge] eq "start") (set FHEM.Homebridge on, {system ("sudo /etc/init.d/homebridge start&")})\
DOELSEIF ([FHEM.Homebridge] eq "stop") (set FHEM.Homebridge on, {system ("sudo /etc/init.d/homebridge stop&")})\
DOELSEIF ([FHEM.Homebridge] eq "restart") (set FHEM.Homebridge on, {system ("sudo /etc/init.d/homebridge restart&")})\
DOELSEIF ([FHEM.Homebridge] eq "status") (set FHEM.Homebridge on, {system ("sudo /etc/init.d/homebridge status&")})
attr FHEM.Homebridge.DOIF room 9.03_Tech


Danach funktioniert es - zumindest bei mir.

Jedoch darf kein Telnet Passwort vergaben sein, da Skript "/etc/init.d/homebridge" nicht mehr ordnungsgemäß funktioniert. Altrnativ kann jedoch ein globalPassword für den Telnet-Port vergeben werden.

Diggewuff

Klasse jetzt läuft auch bei mir.
Danke!!!
Kannst du mir noch verraten wie ich meinen telnet port jetzt mit einem Global Passwort absichere?

Grinsekatze

Im Web Interface oben in der Kommandozeile folgendes eingeben:
attr telnetPort globalpassword <Passwort>
<Passort> muss dabei dein gewähltes Passwort sein.
Um das ganze dann zu speichern in dieser Kommandozeile noch save eingeben.

DeeSPe

Ich kann Euch nur empfehlen bei den aktuellen Debian Versionen von init.d auf system.d zu wechseln, da die Kompatibilität zu init.d in der nächsten Version sicherlich gestrichen wird.
Und zum anderen ist ein system.d Skript wesentlich kürzer und damit übersichtlicher. Auch läuft dann homebridge unter einem eigenen User.

Gruß
Dan

P.S. Eventuell sollte auch im Homebridge-Wiki mal der Weg für system.d geebnet werden.
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Grinsekatze

#7
Zitat von: DeeSPe am 25 Juli 2016, 09:55:48
Ich kann Euch nur empfehlen bei den aktuellen Debian Versionen von init.d auf system.d zu wechseln, da die Kompatibilität zu init.d in der nächsten Version sicherlich gestrichen wird.

Prinzipiell sehr gerne. Jedoch habe ich keine Ahnung, wie. Auf die schnelle habe ich eben einmal Tante Google bemüht. Doch noch keine einfache Erklärung gefunden.

Da ich auch nur bedingt mit Linux vertraut bin werde ich es nicht mal eben machen können.

Wenn ich eine Erklärung (oder gar en Howto) finde, der mir darlegt, wie die Umstellung bei Jessie vonstatten geht (sowie mögliche vorhandene eigene init.d-Skripte konvertiert werden), wage ich sehr gerne die Umstellung.

Aktuell habe ich sowohl das Homebridge-, als auch einige Shutdown-Skripte für meinen RemotePi-HAT (rc.local) "verbaut". Ein Hyperion-Skript wird in Kürze ebenfalls folgen (sobald ich mir mal die Zeit nehme und alles zusammenbaue).


Edit:

Ok, wie man auf systemd umstellt ist offewnbar hier genauer beschrieben (jedoch von mir noch nicht getestet): https://major.io/2014/05/20/switching-to-systemd-on-debian-jessie/

DeeSPe

Tante Google hat mir auf Anhieb Folgendes zu Homebridge und system.d ausgespuckt: https://gist.github.com/johannrichard/0ad0de1feb6adb9eb61a/
Vielleicht hilft es ja dem Einen oder Anderen.

Was meinst Du denn mit Hyperion-Skript? Der Hyperion Server bringt doch schon seine fertigen Skripte mit. Passend dazu gibt es auch schon ein FHEM Modul in Beta Phase:
98_Hyperion.pm (rein zufällig von mir)  ;)

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

niklasen

Hallo Miteinander,
ich bin total Happy über die Homebridge Lösung. Der Frauenakzeptanzfaktor ist enorm hoch, da die Usability endlich einen weiten Schritt macht mit iOS 10 und der Homekit Integration.

Es funktioniert alles so wie es soll; bis auf eine Kleinigkeit: Homekit ermöglicht die Automatisierung von Aktionen. Gerne würde ich diese nutzen, um z.B. Weckfunktionen entspannt vom iPhone konfigurieren zu können. Leider funktioniert dies aber nicht.
Wenn ich z.B. sage: schalte diesen Aktor um 18 Uhr ein, tut's das einfach nicht. Obgleich die manuelle Schaltung ohne Probleme funktioniert.

Hat jemand selbe Erfahrung gemacht?

Es lässt sich leider so schwer debuggen - ich sehe keinerlei Request o.ä.

Würde mich über Tipps freuen