[gelöst]Problem Homebridge Startscript

Begonnen von Feinfinger, 31 Juli 2018, 07:53:32

Vorheriges Thema - Nächstes Thema

Feinfinger

Hallo zusammen und mal eine Frage an Linux Experten.

Meine Homebridge läuft und funtioniert einwandfrei mit diesem Startscript:

#!/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"
else
        homebridge -U /home/pi/.homebridge/ > /dev/null 2>&1 &
        echo "Homebridge starting"
fi
;;
stop)
if ! ps -p $PID > /dev/null 2>&1; then
        echo "Homebridge is not running"
else
        kill $PID
        echo "Homebridge closed"
fi
;;
restart)
if ! ps -p $PID > /dev/null 2>&1; then
        homebridge -U /home/pi/.homebridge/ > /dev/null 2>&1 &
        echo "Homebridge starting"
else
        kill $PID
        echo "Homebridge closed"
        homebridge -U /home/pi/.homebridge/ > /dev/null 2>&1 &
        echo "Homebridge starting"
fi
;;
status)
if ps -p $PID > /dev/null 2>&1; then
        echo "Homebridge is running PID $PID"
else
        echo "Homebridge is not running"
fi
;;
*)
echo "Usage: /etc/init.d/homebridge {start|stop|status|restart}"
exit 1
;;
esac
exit 0



Wenn ich jetzt aber das aus den HowTo´s nehme um die Bridge über FHEM zu steuern, startet sie nicht mehr.
#!/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`
homeBridgeUser="pi"
fhemHost=127.0.0.1          #FHEM Server (Masterinstanz)
fhemHostTelnetPort=7072     #TelnetPort der FHEM Instanz
fhemDefine="SYS_Homebridge"

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 "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 "setreading $fhemDefine info Homebridge starting"
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort "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 "setreading $fhemDefine info Homebridge is not running"
else
        kill $PID
        echo "Homebridge stopping"
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort "setreading $fhemDefine info Homebridge stopping"
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort "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 "setreading $fhemDefine info Homebridge running as PID $PID"
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort "set $fhemDefine on"
else
        echo "Homebridge is not running"
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort "setreading $fhemDefine info Homebridge is not running"
        perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort "set $fhemDefine off"
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
exit 0


HomebridgeUser, Port etc. angepasst, Berechtigungen ebenfalls gesetzt.

Sieht jemand den offensichtlichen Fehler?

Gruß Dirk
Proxmox VM - MAPLE-CUL - SIGNALDINO

Wernieman

Der wichtigste Unterschied:
In Deinem Script läuft homebridge als root, in dem anderes (soweit angegeben) als pi ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

MadMax-FHEM

Zusätzlich könnte auch noch sein, dass die perl-Aufrufe um den Dummy in fhem zu setzen fehl schlagen...
(ist auch ein Unterschied)

Du müsstest schon etwas mehr Info liefern, also WAS GENAU nicht geht und stehen irgendwo Fehlermeldungen?

ZitatHomebridgeUser, Port etc. angepasst, Berechtigungen ebenfalls gesetzt.

Ist das gepostete Script nun das welches du verwendest oder hast du "nur" die "Basis" (aus Wiki) gepostet, nicht aber die tatsächlich verwendete Variante?

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)

Feinfinger

Hallo Joachim,

erstmal Danke für die Antwort.

Ich muss sagen, das ich mir das mit root und pi schon gedacht habe, allerdings finde ich nirgends einen Ansatz, wie ich erkenne auf welcher Instanz mein FHEM läuft.

(Ich hatte das seinerzeit aus diversen Internet Anleitungen zum laufen gebracht und kann es jetzt ehrlich nicht mehr nachvollziehen)

An welcher stelle in dem Script wird denn unterschieden, ob root oder pi?

Die Datei hab ich erstmal so übernommen, da Port und IP passen.

Allerdings bin ich mir mit dem HomebridgeUser nicht 100% sicher, da ich auch hier nicht heraus finde, wer mein HomebridgeUser ist.

Muss ich das auf root anpassen?



Gruß Dirk
Proxmox VM - MAPLE-CUL - SIGNALDINO

MadMax-FHEM

Startscripts laufen als root, wird dort bzgl. auszuführender Befehle nichts angegeben werden diese ebenfalls als root ausgeführt, ergo auch der Startbefehl "homebridge"...

Im anderen Script wird auf einen anderen User "geschaltet": su - $homeBridgeUser wobei "oben" eben der User 'pi' als homeBridgeUser "gesetzt" wird...

Und noch mal die Fragen: was genau geht nicht, Fehlermeldungen in Logs (homebridge Log) etc.!?

Weil sonst wird es schwer zu helfen...

EDIT: wenn du den homebridge Startbefehl aus dem Script als pi in der console eingibst funktioniert es dann? Was passiert bei "sudo /etc/init.d/homebridge start" (wenn das Startscript homebridge heißt), vorher eine laufende homebridge nat. stoppen...

Kurz, da 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)

Feinfinger

Hallo Joachim,

Danke für deine Hilfe!

Ich habe es jetzt mit diesem Modulhttps://forum.fhem.de/index.php/topic,79952.0.html gelöst, funktioniert einwandfrei.

Aber durch deine Erklärung hab ich wieder was dazu gelernt ;-)

Kann als gelöst markiert werden!
Proxmox VM - MAPLE-CUL - SIGNALDINO

MadMax-FHEM

Zitat von: Feinfinger am 10 August 2018, 17:40:33
Hallo Joachim,

Danke für deine Hilfe!

Ich habe es jetzt mit diesem Modulhttps://forum.fhem.de/index.php/topic,79952.0.html gelöst, funktioniert einwandfrei.

Aber durch deine Erklärung hab ich wieder was dazu gelernt ;-)

Bitte gerne.

Das Modul verwende ich auch, allerdings erkennt es mit dem Original-Startscript (allerdings alexa-fhem) nicht, wenn beim Start etwas schief geht.
Habe es etwas anpassen müssen...
Aber wenn es geht: wunderbar!

Hast dazu aber dann ja vermutlich "dein Script" (mit root) genommen!?

Solltest noch mal drüber nachdenken, ob homebridge wirklich als root laufen sollte...

Evtl. lag es ja an den zusätzlichen Befehlen zur fhem Steuerung bzw. wie hast du festgestellt, dass homebridge durch das "andere Script" nicht läuft?
Oder Berechtigungen, die dem User pi fehlen...

Aber es ist dein Rechner/deine Umgebung, wenn da root ok ist, dann...
...aber ich würde das noch mal überdenken...


Zitat von: Feinfinger am 10 August 2018, 17:40:33
Kann als gelöst markiert werden!

Darfst du selber tun, einfach z.B. [gelöst] vor den ersten Post...

Gruß und viel Spaß, 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)

Feinfinger

Hallo Joachim,

In der Tat, ich nutze mein ,,Root" script.

Ich hatte vorher nochmal mit dem Script aus dem Wiki experimentiert, allerdings ohne Erfolg.

Die sudoers Datei hatte ich mit Berechtigungen aufgefüllt.

Wenn ich wüsste, was ich anstellen muss, um die Homebridge unter dem User ,,pi" zu installieren, würde ich das tun, aber wie gesagt, bei den Instanzen von Linux blicke ich nicht durch.

Login über SSH mache ich übrigens als User ,,pi". In den Ordnern ist dann auch die Homebridge.

Proxmox VM - MAPLE-CUL - SIGNALDINO

MadMax-FHEM

Was passiert, wenn du als User pi eingeloggt bist (ssh) und folgendes eingibst:

homebridge -U /home/pi/.homebridge/

vorher nat. homebridge beenden.

Mach mal ein:

which homebridge

und dann:

ls -la

wenn du im Verzeichnis bist (cd VerzeichnisVonHomebridge) wo homebridge installiert ist (müsste bei "which homebridge" angezeigt werden, wenn du es nicht eh schon weißt).

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)

Feinfinger

Hallo Joachim,

gebe ich das ein

homebridge -U /home/pi/.homebridge/

startet die Homebridge.

ls -la

gibt das hier aus.

pi@fhem_server:~/.homebridge $ ls -la
insgesamt 28
drwxr-xr-x  5 pi   pi   4096 Aug  2 09:31 .
drwxr-xr-x 12 pi   pi   4096 Aug  2 06:36 ..
drwxr-xr-x  2 pi   pi   4096 Aug  2 09:31 accessories
-rw-r--r--  1 pi   pi   1089 Aug  4 11:35 config.json
drwxr-xr-x  5 root root 4096 Feb 12 23:07 node_modules
-rw-r--r--  1 root root  739 Feb 12 23:07 package-lock.json
drwxr-xr-x  2 pi   pi   4096 Aug  2 10:30 persist



Gruß Dirk
Proxmox VM - MAPLE-CUL - SIGNALDINO

MadMax-FHEM

#10
Also als User pi ausgeführt startet homebridge!?

Dann kannst du (theoretisch) den Startaufruf aus dem "anderen Script" nehmen:

homebridge -U /home/pi/.homebridge/ > /dev/null 2>&1 & -> su - pi -c "homebridge -U /home/pi/.homebridge/ > /dev/null 2>&1 &"

ob die Anführungszeichen notwendig sind kann ich dir grad nicht sagen...

Damit startet dann homebridge (bzw. sollte) als User pi statt als root.

Evtl. würde auch reichen den Pfad zur Config Datei in dem "anderen Startscript" anzugeben (also: -U /home/pi/.homebridge/), evtl. wäre das schon die Lösung gewesen...
...aber jetzt wo du das systemd-Modul nutzt brauchst du ja die Schaltbefehle des Dummy (also die hier: perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort "setreading $fhemDefine info Homebridge starting") nicht mehr...

EDIT: hast du homebridge in ~/.homebridge installiert? was evtl. problematisch sein könnte: drwxr-xr-x  5 root root 4096 Feb 12 23:07 node_modules
-rw-r--r--  1 root root  739 Feb 12 23:07 package-lock.json
Hast du als root installiert? Oder mittels sudo?

EDIT2: aber wenn es tatsächlich von der Console als User pi läuft kann es egal sein ;)

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)

Feinfinger

Hallo Joachim,

Also soweit ich mich entsinnen kann, hab ich alles als ,,sudo" installiert.

Allerdings hatte ich vor ein paar Wochen Probleme mit der Homebridge und habe aus diversen Foren Schnipsel zusammenkopiert und mittels ,,try error" Prinzip das ganze wieder ans laufen gebracht.

Denke daher rührt das.

Aber wenn das egal ist und sie läuft, lass ich sie lieber in Ruhe  :)


Gruß Dirk
Proxmox VM - MAPLE-CUL - SIGNALDINO

MadMax-FHEM

#12
Hi Dirk,

egal ist Ansichtssache...

Ich finde halt, dass auf einem System so wenig wie möglich (und wirklich nur so viel wie wirklich nötig) als root/sudo ausgeführt werden sollte bzw. laufen sollte...

Wenn jemand homebridge "kapert" gehört ihm/ihr halt das ganze System (und vielleicht mehr)...

Ich will jetzt nicht den Teufel an die Wand malen, ist nur meine Meinung zum Thema root...
Wird halt häufig gemacht: einfach (alles) als root oder mittels sudo, dann gibt es keine Probleme/Fehler... Klar es gibt keine Rechte-Probleme weil root "alles kann/darf"... Aber genau da liegt gleichzeitig auch das Problem...

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)

Feinfinger

Hallo Joachim,

Danke für den Hinweis.

Jetzt, wo ich mehr und mehr die Materie verstehe, werde ich mich mal daran machen, das ganze ,,abzusichern"

Gruß Dirk
Proxmox VM - MAPLE-CUL - SIGNALDINO

Wernieman

Zitat von: MadMax-FHEM am 13 August 2018, 21:27:53
homebridge -U /home/pi/.homebridge/ > /dev/null 2>&1 & -> su - pi -c "homebridge -U /home/pi/.homebridge/ > /dev/null 2>&1 &"

ob die Anführungszeichen notwendig sind kann ich dir grad nicht sagen...

Um das mal zu Klären: Ja sie sind es!

Mit "> /dev/null 2>&1" Leitest Du alle Ausgaben zum /dev/null (ins Nirvana). Mit & Schiebst Du es in den hintergrund. Woher soll (ohne ") die Shell wissen, ob dieses zum "su" gehört oder zu homebridge? Erst mit dem " wird es eindeutig.

Hinweis: Auch "su" ist "nur" ein Programm.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html