Autostart Homebridge, nur wie?

Begonnen von MaxStyle, 20 August 2018, 19:15:36

Vorheriges Thema - Nächstes Thema

MaxStyle

Hallo zusammen,

ich haben mich nun dazu entschieden die Homebridge auf meinem Pi2B zu installieren.

Wenn ich die Homebridge manuell starte funktioniert diese auch. Nur das mit dem Autostart funktioniert überhaupt nicht.

Ich habe jetzt zu ziemlich alle Anleitungen durch und bin ratlos.

Ich bin nach der Anleitung im Wiki vorgegangen: https://wiki.fhem.de/wiki/Homebridge_einrichten
den Autostart habe ich über https://wiki.fhem.de/wiki/Homebridge_Start_und_Status_in_FHEM#Status-_und_Kontroll-Dummy eingerichtet. Auch bin ich nach dem http://forum.fhem.de/index.php/topic,32652.msg419325.html#msg419325 vorgegangen.

Nun wenn ich versuche den Autostart manuell durchzuführen mit

sudo service homebridge start

Erhalte ich immer folgendes Feedback:

Zitathomebridge.service - LSB: Start daemon at boot time for homebridge
   Loaded: loaded (/etc/init.d/homebridge)
   Active: active (exited) since Mon 2018-08-20 18:44:57 CEST; 12min ago
  Process: 632 ExecStart=/etc/init.d/homebridge start (code=exited, status=0/SUCCESS)

Aug 20 18:44:10 raspberrypi systemd[1]: Starting LSB: Start daemon at boot t....
Aug 20 18:44:11 raspberrypi su[699]: Successful su for fhem by root
Aug 20 18:44:11 raspberrypi su[699]: + ??? root:fhem
Aug 20 18:44:11 raspberrypi su[699]: pam_unix(su:session): session opened f...0)
Aug 20 18:44:11 raspberrypi su[699]: pam_unix(su:session): session closed f...em
Aug 20 18:44:11 raspberrypi homebridge[632]: Homebridge starting
Aug 20 18:44:12 raspberrypi homebridge[632]: Can't connect to 127.0.0.1:7072

Aug 20 18:44:54 raspberrypi homebridge[632]: Homebridge is not running
Aug 20 18:44:57 raspberrypi systemd[1]: Started LSB: Start daemon at boot ti....
Hint: Some lines were ellipsized, use -l to show in full.

Ein $ node -v && npm -v gibt mir folgendes Ergebnis:

Zitat
v10.9.0
6.2.0


Meine  /etc/init.d/homebridge  Datei sieht wie folgt aus:

#!/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
dir="/home/pi"
PID=`pidof homebridge`
homeBridgeUser="fhem"                 #Homebridge-User
fhemHost=127.0.0.1                    #FHEM-Server (Masterinstanz)
fhemHostTelnetPort=7072               #Telnet-Port der FHEM Instanz
fhemHostTelnetPassword="meinPW"     #Telnet-Passwort der FHEM Instanz
fhemDefine="SYS_Homebridge"           #Homebridge Device in FHEM

case "$1" in
start)
if ps -p $PID > /dev/null 2>&1; then
        echo "Homebridge is already running"
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort $fhemHostTelnetPassword "setreading $fhemDefine info Homebridge is already running"
else
        su - $homeBridgeUser -c "homebridge > /dev/null 2>&1 &"
        echo "Homebridge starting"
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort $fhemHostTelnetPassword "setreading $fhemDefine info Homebridge starting"
perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort $fhemHostTelnetPassword "set $fhemDefine on"
        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 $fhemHost:$fhemHostTelnetPort $fhemHostTelnetPassword "setreading $fhemDefine info Homebridge is not running"
else
        kill $PID
        echo "Homebridge stopping"
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort $fhemHostTelnetPassword "setreading $fhemDefine info Homebridge stopping"
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort $fhemHostTelnetPassword "set $fhemDefine off"
        sleep 2
$0 status
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 $fhemHost:$fhemHostTelnetPort $fhemHostTelnetPassword "setreading $fhemDefine info Homebridge running as PID $PID"
else
        echo "Homebridge is not running"
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort $fhemHostTelnetPassword "setreading $fhemDefine info Homebridge is not running"
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
exit 0



Meine config.json wie folgt:

{
    "bridge": {
        "name": "Homebridge",
        "username": "CC:22:3D:E3:CE:30",
        "port": 51826,
       "pin": "031-45-154"
    },

    "platforms": [
        {
            "platform": "FHEM",
            "name": "FHEM",
            "server": "127.0.0.1",
            "port": "8083",
            "filter": "room=Homekit"
        }
     ],

    "accessories": []
}


Wie gesagt, wenn ich die homebridge mit

homebridge

starte, läuft sie auch richtig los.  ich weiß echt nicht mehr weiter.
Hat jemand einen Rat?

MadMax-FHEM

#1
Hi,

habe zwar keine homebridge aber homebridge und alexa-fhem haben gleich Wurzeln bzw. "stammt" alexa-fhem von homebridge "ab" ;)

Aufrufe wie dieser in deinem Startscript sind wohl das Problem:


perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort $fhemHostTelnetPassword "setreading $fhemDefine info Homebridge is already running"


Damit versucht das Script per Telnet in fhem Werte in einen oder zwei Dummy zu schreiben (bei alexa-fhem sind es zwei bei homebridge glaube ich nur einer aber das ist egal ;)  ).
Das wird benötigt, damit das DOIF funktioniert und auch der Status im Dummy angezeigt wird.

Ist bei dir Telnet auf Port 7072 in fhem eingerichtet?
Hast du User/Passwort für Telnet eingerichtet?
Läuft fhem auf dem selben Rechner (PI) wie homebridge?


Ansonsten kannst du auch wie in diesem Thread (https://forum.fhem.de/index.php/topic,89823.msg822965.html#msg822965) beschrieben ein anderes Modul (das hier: https://forum.fhem.de/index.php/topic,79952.0.html) zum Steuern von homebridge aus fhem heraus nutzen...

...und dann einfach die "problematschen Aufrufe" (alle die so ähnlich lauten wie mein genannter oben) aus dem Startscript rausnehmen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MaxStyle

Zitat von: MadMax-FHEM am 20 August 2018, 19:45:31
Ist bei dir Telnet auf Port 7072 in fhem eingerichtet?
Hast du User/Passwort für Telnet eingerichtet?
Läuft fhem auf dem selben Rechner (PI) wie homebridge?

Hallo Joachim,

ja telnet ist im Fhem eingerichtet:


define telnetPort telnet 7072 global
define allowed_telnetPort allowed
attr allowed_telnetPort password meinPasswort
attr allowed_telnetPort validFor telnetPort


Einen User?  Im Fhem oder auf dem Raspberry?

Im Raspberry logge ich per Terminal am Mac ein.
Sprich ich habe einen User und ein Passwort.

Aber in Fhem selbst?  Dort habe ich für Telnet nur ein Passwort festgelegt (siehe Oben)

Ja Fhem und Homebridge laufen auf dem selben Raspberry Pi


MadMax-FHEM

#3
Ah, offenbar gibt es bei Telnet nur Passwort!?

Da du ein allowed für Telnet hast, musst du das dann auch bei den Aufrufen im Script mitgeben.

Oder temporär einen weiteren Telnet-Port ohne Passwort und dann eben diesen Port als telnet-Port im Script angeben...
...um zu sehen, ob es prizipiell geht...

Wenn es so dann geht, dann liegt es wohl an dem "Zuschnüren" des telnet-Ports (Passwort)...
...wenn es so auch nicht geht, an was anderem ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MaxStyle

Zitat von: MadMax-FHEM am 20 August 2018, 20:48:58
Ah, offenbar gibt es bei Telnet nur Passwort!?

Da du ein allowed für Telnet hast, musst du das dann auch bei den Aufrufen im Script mitgeben.

Oder temporär einen weiteren Telnet-Port ohne Passwort und dann eben diesen Port als telnet-Port im Script angeben...
...um zu sehen, ob es prizipiell geht...

Wenn es so dann geht, dann liegt es wohl an dem "Zuschnüren" des telnet-Ports (Passwort)...
...wenn es so auch nicht geht, an was anderem ;)

Gruß, Joachim

Hallo Joachim,

ich habe gestern versucht in Fhem einen zweiten Telnetport zu definieren, dass hat nicht geklappt. Die Meldung war Telnet Port allready defined.

Was meinst du mit Allowed muss ich im Script mitgeben? Wie mache ich das?

Gestern habe ich noch viel rum probiert, habe eine Lösung gefunden, die die Homebridge mit Systemstart scheinbar startet, allerdings erkennt die Home-App die Bridge nicht und sagt "Keine Antwort"

#!/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"


Dieses habe ich auf https://github.com/nfarina/homebridge/wiki/Running-HomeBridge-on-a-Raspberry-Pi#running-homebridge-on-bootup gefunden.

Allerdings habe ich dann keine Möglichkeit den Status selbst in Fhem einzusehen.

MaxStyle

Heute wieder eine menge rumgetestet.

Das komische ist, wenn ich diesen Code

perl /opt/fhem/fhem.pl 127.0.0.1:7021TelnetPassword "Set Switch1 Off"

eingebe funktioniert alles einwandfrei und der Switch1 wird geschaltet.

Ich verstehe nicht, warum das Script einfach nicht funktionieren will.

MadMax-FHEM

Hast du Port und Passwort auch im Script angepasst!?

Sorry, kurz da unterwegs und nur Handy grad...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MaxStyle

oops sorry, meinte natürlich

perl /opt/fhem/fhem.pl 127.0.0.1:7072 raspberry "set SW.Sonos.SZ off"
perl /opt/fhem/fhem.pl 127.0.0.1:7072 raspberry "set SW.Sonos.SZ on"

also der Port, der auch im Fhem konfiguriert ist.

MadMax-FHEM

Beantwortet nicht ganz die Frage:

hast du den Aufruf im Script genau so angepasst!?

Dort sind ja zu Beginn einige Variablen definiert, u.a. eben auch TelnetPasswort...

Weiterer Unterschied: Script wird als root ausgeführt...

Hast du einen PI (ich nehme mal an), dann mal "sudo su" (damit solltest du dann root sein) und auch da mal probieren, ob der Aufruf klappt...

Immer noch unterwegs und nur Handy, sorry...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)