Hallo,
ich habe in den letzten Tagen mit sehr viel und guter Unterstützung von MadMax-FHEM die Homebridge Installation und das INIT Skript für den automatischen Service erstellt und zum Laufen gebracht. Vielen Dank nochmals an Madmax.
Unterlagen waren weiterhin:
Wiki: Homebridge einrichten & Wiki Homebridge_Start_und_Status_in_FHEM.
ZitatMeine Ausstattung ist:
Hardware und Software:
1. Hardware Raspberry 3
2. FHEM 5.9 auf neuestem Stand
3. Distributor ID: Raspbian, Description: Raspbian GNU/Linux 9.6 (stretch), Release: 9.6, Codename: stretch
4. IOS 12 auf den Zielgeräte für Homebridge
Ich starte auf dem Raspberry die homebridge mit dem user pi.
Folgenden Stand habe ich heute.
1. Homebridge starte ich mit sudo /etc/init.d/homebridge start. Ich kann stoppen und status machen. Alles soweit ok.
Logfile ist unten angehängt. Homebridge sieht meinen SYS_Dummy im Raum Homekit in FHEM.
2. Aus FHEM heraus kann ich homebridge nicht starten, stoppen, etc. Ich sehe im Event-Monitor:
2018-12-27 10:50:11 dummy SYS_Homebridge start
2018-12-27 10:50:11 dummy SYS_Homebridge OnStateChange: -1
Im Logile sehe ich:
sudo: no tty present and no askpass program specified
Kann leider diese Nachricht nicht deuten..
Die Installation war ein für mich schwieriger Prozess mit Rückschlägen. Zwischenzeitlich gab es auch einen Stand, bei dem ich nach manueller Start von homebridge über die IOS-Geräte einen Zugriff bekam und auch mein SYS_Dummy per SIRI starten konnte. Dies ist aber heute nicht mehr möglich.
ZitatStand der Siri Geräte heute, auch nach Löschung der "Home" und "EVE" Apps, wenn ich versuche die IOS anzumelden:
1. Beim Scanen: Gerät bereits hinzugefügt. Um dieses Gerät zu deinem Zuhause hinzuzufügen, musst du es zuerst zurücksetzen..
2. Über den Code: Wähle ein Gerät zum Hinzufügen zu "home" aus..
Wie gesagt, es tats schon mal. Habe APPS gelöscht, Code geändert, mehrere IOS Geräte verwendet.
Hier die Details:
config.json:
pi@raspberrypi:~/homebridge/log $ cat ~/.homebridge/config.json
{
"bridge":{
"name": "Homebridge",
"username":"CC:22:3D:E3:CE:30",
"port":51826,
"pin":"123-12-123"
},
"platforms":[
{
"platform":"FHEM",
"name":"FHEM",
"server":"127.0.0.1",
"port":"8085",
"auth": {"user": "", "pass": ""},
"filter":"room=Homekit"
}
],
"accessories":[]
}
Pass und User geixxt.
Hombridge Service Datei :
pi@raspberrypi:~/homebridge/log $ cat /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 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
# export LOGPATH="/etc/init.d/.homebridge/log"
export LOGPATH="/home/pi/homebridge/log"
PID=`pidof homebridge`
homeBridgeUser="pi"
fhemHost=127.0.0.1
fhemHostTelnetPort=7072
fhemDefine="SYS_Homebridge"
case "$1" in
start)
if ps -p $PID > /dev/null 2>&1; then
echo "Homebridge is already running"
else
# su - "pi" -c "homebridge > /dev/null 2>&1 &"
# su - "fhem" -c "homebridge > $LOGPATH/homebridge-`date +%Y-%m`.log 2>&1 &"
su - "pi" -c "homebridge > $LOGPATH/homebridge-`date +%Y-%m`.log 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"
else
kill $PID
echo "Homebridge closed"
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"
else
echo "Homebridge is not running"
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
exit 0
LOG Datei nach Start sudo /etc/init.d/homebridge unter PI:
pi@raspberrypi:~/homebridge/log $ nano homebridge-2018-12.log
GNU nano 2.7.4 File: homebridge-2018-12.log
[12/27/2018, 9:37:28 AM] Loaded config.json with 0 accessories and 1 platforms.
[12/27/2018, 9:37:28 AM] ---
[12/27/2018, 9:37:28 AM] Loaded plugin: homebridge-fhem
homebridge API version: 2.2
this is homebridge-fhem 0.4.5
[12/27/2018, 9:37:28 AM] Registering platform 'homebridge-fhem.FHEM'
[12/27/2018, 9:37:28 AM] ---
[12/27/2018, 9:37:28 AM] Loading 1 platforms...
[12/27/2018, 9:37:28 AM] [FHEM] Initializing FHEM platform...
starting longpoll: http://127.0.0.1:8085/fhem?XHR=1&inform=type=status;addglobal=1;filter=.*;since=null;fmt=JSON×tamp=15$
[12/27/2018, 9:37:29 AM] [FHEM] Fetching FHEM devices...
[12/27/2018, 9:37:29 AM] Loading 0 accessories...
Server listening on: http://<ip>:8282
[12/27/2018, 9:37:29 AM] [FHEM] Checking devices and attributes...
[12/27/2018, 9:37:29 AM] [FHEM] executing: http://127.0.0.1:8085/fhem?cmd=%7BAttrVal(%22global%22,%22userattr%22,%22%22)%7D$
[12/27/2018, 9:37:29 AM] [FHEM] executing: http://127.0.0.1:8085/fhem?cmd=jsonlist2%20TYPE=siri&fwcsrf=csrf_192894397093198$
[12/27/2018, 9:37:29 AM] [FHEM] siri device is siri
[12/27/2018, 9:37:29 AM] [FHEM] executing: http://127.0.0.1:8085/fhem?cmd=%7B$defs%7Bsiri%7D-%3E%7B%22homebridge-fhem%20ver$
[12/27/2018, 9:37:29 AM] [FHEM] Fetching FHEM devices...
[12/27/2018, 9:37:29 AM] [FHEM] fetching: http://127.0.0.1:8085/fhem?cmd=jsonlist2%20room=Homekit&fwcsrf=csrf_192894397093198$
[12/27/2018, 9:37:29 AM] [FHEM] got: 1 results
[12/27/2018, 9:37:29 AM] [FHEM] SYS_Dummy is switch
[12/27/2018, 9:37:29 AM] [FHEM] SYS_Dummy has
[12/27/2018, 9:37:29 AM] [FHEM] On [state;on,off]
2018-12-27 09:37:29 caching: SYS_Dummy-state: off
[12/27/2018, 9:37:29 AM] [FHEM] caching: On: false (as boolean; from 'off')
[12/27/2018, 9:37:29 AM] [FHEM] Initializing platform accessory 'SYS_Dummy'...
[12/27/2018, 9:37:29 AM] [FHEM] creating services for SYS_Dummy
[12/27/2018, 9:37:29 AM] [FHEM] information service for SYS_Dummy
[12/27/2018, 9:37:29 AM] [FHEM] manufacturer, model and serial number characteristics for SYS_Dummy
[12/27/2018, 9:37:29 AM] [FHEM] Switch service for SYS_Dummy
[12/27/2018, 9:37:29 AM] [FHEM] On characteristic for SYS_Dummy:state
Setup Payload:
X-HM://0023O9G6Z54MJ
Scan this code with your HomeKit app on your iOS device to pair with Homebridge:
Kann ich von euch um Unterstützung bitten?
askpass klingt nach Abfrage von Passwort bzgl. sudo...
Also den User fhem in die sudoers für den Service-Aufruf beim Dummy (nehme ich an) ohne Passwort eintragen...
Sollte evtl. in dem im anderen Thread verlinkten Thread zu finden sein...
Oder suchen nach sudoers sudo ohne Passwort...
Neuerdings ist allerdings besser für jeden User eine Datei unter /etc/sudoers.d/ anlegen.
Dort sollte bereits eine Datei für den User "pi" liegen...
...die kann (sudo cp DateinameAktuell DateinameNeu) kopiert werden und als Basis für den User "fhem" dienen...
Bin dann mal unterwegs...
...daher nicht alles gelesen und nur kurz geantwortet...
EDIT: nicht wieder rätseln, wenn du auf den Dummy drückst wird der Startbefehl (mit sudo notwendig) vom User "fhem" ausgeführt. Keine Angst da im Startscript (das wird auch benutzt) der User "pi" eingetragen ist bleibt alles wie gewohnt. (den sudoers Eintrag bräuchtest du auch selbst wenn im Startscript "fhem" stünde)... Leider kann ich das jetzt nicht ausführlicher erläutern...
EDIT2: und wie immer im Verzeichnis /etc vorsichtig sein! ;)
Viel Erfolg, Joachim
Ich glaube mich zu erinnern, dass es geholfen hat, beim username in der config hinten die 30 durch eine 31 zu ersetzen. Dann erkennt Home deine Bridge als neues Gerät.
Kurz, weil mobil
Hallo @ Joachim, du bist unglaublich , Merci.. Schaue ich mir gleich an. Aber das Schwierigere habe ich ans Ende gestellt.
@ KernSani: Tool, das war die Lösung (30 auf 31 setzen). Home konnte sich problemlos anmelden und Siri spricht mit FHEM, bisher fehlerlos, ganz zum Unterschied mit mir. Aber sag mal, wie soll da ein "verklemmter" Anwender drauf kommen?
Jetzt muss ich noch das Theme mit der Kopplung FHEM mit Homebridge lösen, aber Joachim gab ja schon einen Tip. Damit werde ich mich jetzt rum"schlagen".
Merci
Uwe
Zitat von: UweUwe am 27 Dezember 2018, 13:16:50
Aber sag mal, wie soll da ein "verklemmter" Anwender drauf kommen?
Steht im Wiki ;)
Kurz, weil mobil
Erwischt ;), immer diese ,,verklemmten" Analphabeten .. ;) :)
Hallo Joachim,
ich hab die Änderung der sudoers Datei gemäss Wiki durchgeführt. bzw. richtig gehabt.
Es gibt auch Forum Beiträge, die dasselbe Thema als ich haben, mit dem Willi-sudoers jedoch die Lösung gefunden haben.
Der Hinweis im Wiki sieht folgendermassen aus:
ZitatDamit aus FHEM das Script ausgeführt werden kann benötigt dieser Benutzer entsprechende Berechtigungen. Dazu ist in der sudoers ein Eintrag zu ergänzen. Dazu wird die sudoers Datei im Nano Editor geöffnet
Mein FHEM user sollte aber fhem sein, deshalb benötige ich keine Anpassung.
Mein sudoers sieht folgendermassen aus, ich weiss, dass ich wieder mal was übersehen habe:
pi@raspberrypi:~ $ sudo nano /etc/sudoers
GNU nano 2.7.4 File: /etc/sudoers
# User alias specification
# Cmnd alias specification
# User privilege specificationroot ALL=(ALL:ALL) ALL
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge
#pi ALL=(ALL) NOPASSWD:/etc/init.d/homebridge
# 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
Auch dies gibt mir das Gefühl, dass ich nicht unbedingt ganz schlecht liege:
Zitatich habe jetzt auch nach der Anleitung im Wiki "Homebridge Start und Status in FHEM" die Homebridge zum Laufen bekommen, FHEM und Homebridge laufen jetzt auf 2 verschiedenen Rpi.
Ich hatte auch noch im Logfile von FHEM folgende Meldung...
Code: [Auswählen]
sudo: no tty present and no askpass program specified
die ich durch folgende Anpassung/ Ergänzung der /etc/sudoers gelöst bekommen habe..
Code: [Auswählen]
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
fhem ALL=(ALL) NOPASSWD: ALL
Jetzt klappt es perfekt, vielen Dank an alle, auch an den Ersteller des Wiki und der Lösung... :)
Dies steht hier: https://forum.fhem.de/index.php?topic=66841.0
Könntest du nochmals draufschauen, bitte.
Uwe
Poste doch mal ein list von dem dummy für den Start/Restart aus fhem...
Und wie geschrieben: eigentlich wird neuerdings (Stretch) nicht mehr die sudoers Datei angepasst sondern eine Datei (pro User) unter /etc/sudoers.d/ angelegt...
Dort müsste eigentlich eine für den User "pi" liegen...
Der Grund: bei einem System-Update kann nicht ausgeschlossen werden, dass die sudoers nicht "überschrieben" wird...
Einträge unter /etc/sudoers.d/ sind davon nicht betroffen...
Hat aber nichts mit dem Problem zu tun...
Hast du mal den Thread welcher im anderen Thread verlinkt wurde (homebridge für unerfahrenen oder so) angesehen?
Dort steht glaube ich auch einiges bzgl. starten aus fhem...
Gruß, Joachim
Hi Joachim,
hier ist das list SYS-Homebridge
Internals:
NAME SYS_Homebridge
NR 122
STATE start
TYPE dummy
READINGS:
2018-12-27 22:00:33 OnStateChange -1
2018-12-27 22:00:33 state start
Attributes:
DbLogExclude .*
devStateIcon .*on:general_an .*off:general_aus .*:audio_rec
eventMap status:status start:start stop:stop restart:restart
icon it_router
room GERAETE
userReadings OnStateChange:(start|stop|restart|status) { system ("sudo service homebridge ".ReadingsVal($NAME,"state","restart")." &" ); }
webCmd status:start:stop:restart
Den Thread Homebridge für Unbegabte hab ich schon gelesen.
https://forum.fhem.de/index.php/topic,93540.msg865627.html#msg865627
Kann es ein, dass mir dieses Modul fehlt?
Thema: Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
https://forum.fhem.de/index.php/topic,79952.msg719659.html#msg719659
Und wie geschrieben: eigentlich wird neuerdings (Stretch) nicht mehr die sudoers Datei angepasst sondern eine Datei (pro User) unter /etc/sudoers.d/ angelegt...
Das gehe ich morgen als Beispiel in meinem Linux Kurs an..
Zitat
Dort müsste eigentlich eine für den User "pi" liegen...
Der Grund: bei einem System-Update kann nicht ausgeschlossen werden, dass die sudoers nicht "überschrieben" wird...
Einträge unter /etc/sudoers.d/ sind davon nicht betroffen...
Hat aber nichts mit dem Problem zu tun.
..
Merci für die Unterstützung.
Uwe
Der Befehl der beim Dummy Start fhem benutzt wird ist "sudo service homebridge start" etc.
Daher musst du nat. das in sudoers erlauben...
...also "Ausführung" des "Programms" service ohne Passwort...
...oder beim Dummy "sudo /etc/init.d/homebridge start" etc. eintragen...
Sonst wird (trotz [eingeschränktem: nur auf /etc/init.d/homebridge] sudoers Eintrag) nach einem Passwort gefragt... ;)
EDIT: wird Zeit für den Linux-Kurs ;) Wobei fraglich, ob du hiernach noch was lernen kannst... ;)
EDIT2: hier noch ein Link bzgl. sudo und fhem etc. https://heinz-otto.blogspot.com/2017/08/raspberry-ausschalten-mit-fhem.html?m=1. Dank an Otto!
Gruß, Joachim
Hallo,
das mit Otto123 werde ich auch implementieren. Aber eines nach dem anderen.
Aktuell kämpfe ich noch mit dem
sudo: no tty present and no askpass program specified
Ich meine aber doch dem user fhem die Rechte gegeben zu haben:
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge
in meinem /etc/sudoers:
pi@raspberrypi:~ $ sudo nano /etc/sudoers
GNU nano 2.7.4 File: /etc/sudoers
# 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:/etc/init.d/homebridge
*pi ALL=(ALL) NOPASSWD:/etc/init.d/homebridge
Hier sudo einzufügen.. Syntaxthemen ??
Ich könnt mir vorstellen, dass dies so geht:
su - "pi" -c "sudo /etc/init.d/homebridge > $LOGPATH/homebridge-`date +%Y-%m`.log 2>&1 &"
korrekt?
Ich hoffe, dass ich mit meinen Fragen bald erlösen kann. Linux Kurs ist bei meinem Sohn. Er programmiert beruflich auf Linux aund ist admin .. Er wohnt aber zu weit weg und die Jugend..
Noch mal: der Befehl im Dummy lautet:
sudo service homebridge start etc.
Dein Eintrag in der sudoers ermöglicht fhem die Ausführung von sudo /etc/init.d/homebridge
das passt ja nicht zusammen...
Lesen, vergleichen, lernen, ...
Genauer kann ich's nicht mehr beschreiben...
Der Link zu Otto sollte nur dem Verständnis von sudo/sudoers etc. dienen...
Gruß, Joachim
Hallo Joachim:
ich habe das folgende Verständnis, besser gesagt folgende Vremutung:
aufgrund des List SYS_Hombridge
Internals:
NAME SYS_Homebridge
NR 122
STATE stop
TYPE dummy
READINGS:
2018-12-28 12:13:22 OnStateChange -1
2018-12-28 12:13:22 state stop
Attributes:
DbLogExclude .*
devStateIcon .*on:general_an .*off:general_aus .*:audio_rec
eventMap status:status start:start stop:stop restart:restart
icon it_router
room GERAETE
userReadings OnStateChange:(start|stop|restart|status) { system ("sudo service homebridge ".ReadingsVal($NAME,"state","restart")." &" ); }
webCmd status:start:stop:restart
setzt das Modul folgenden Befehl ab:
sudo service homebridge ".ReadingsVal($NAME,"state","restart")." &
wie wir wissen, bringt dieser Befehl folgende Fehlermeldung bei mir :
pi@raspberrypi:~ $ sudo service homebridge start
Warning: homebridge.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Job for homebridge.service failed because the control process exited with error code.
See "systemctl status homebridge.service" and "journalctl -xe" for details.
Damit brauche ich diesen Befehl auch nicht im sudoers abfangen, da er eh nichts bei mir bringt, sondern sollte den Befehl in dem SYS_Homebridge ändern.
Alles andere ist doch nicht zielführend? Ankommen am Raspberry muss doch : /etc/init.d/homebridge start (..stop) (.. restart).. (..status), oder irre ich mich wieder?
Wie gesagt, Vermutung. Ist ja Neuland für mich.
Uwe
Es ist beides das selbe (letztendlich):
die Datei die ausgführt wird (letzten Endes) ist immer:
/etc/init.d/homebridge
Welche start|stop|restart|status kann...
Die Datei liegt im Startverzeichnis für Services...
Daher (wenn registriert: update-rc.d) kann auch das "Service-Programm" zur "Kontrolle" verwendet werden (was der Dummy tut).
Wenn du für fhem sudo ohne Passwort für /etc/init.d/homebridge einträgst muss auch der abgesetzte Befehl vom Dummy so lauten...
Also entweder fhem erlauben (dazu ist sudo notwendig -> Eintrag sudoers) Services zu steuern und da das Ganze ohne interaktion (Passworteingabe) passieren soll/muss auch den Eintrag in der sudoers ohne Passwort erlauben.
Oder eben den /etc/init.d/homebridge Aufruf in den Dummy einbauen...
Ansonsten mal bzgl. Services lesen und dabei vielleicht auch die beiden Varianten "studieren": initd (was du nutzt) und systemd ("neu")...
Gruß, Joachim
Hi Joachim,
ich glaube, jetzt hab ich was angerichtet:
pi@raspberrypi:~ $ sudo shutdown -r 0
>>> /etc/sudoers: syntax error near line 21 <<<
sudo: parse error in /etc/sudoers near line 21
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
pi@raspberrypi:~ $ vi /etc/sudoers
pi@raspberrypi:~ $ sudo vi /etc/sudoers
>>> /etc/sudoers: syntax error near line 21 <<<
sudo: parse error in /etc/sudoers near line 21
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
Ja vermutlich...
Hast du einen anderen Rechner mit Linux? ;)
Oder zumindest die Möglichkeit ein Linux-Live-Sytem zu booten (von USB oder DVD/CD)?
Dann das machen und die Karte dann da rein und dann mal nach einer guten, frischen sudoers Datei im Internet suchen und dann "drüberbügeln"...
Vermutlich geht auch den Inhalt mit einer sudoers die du hier gepostet hast (und noch funktioniert hat !?) eintragen...
Dazu herausfinden, wo die Karte gemountet wurde.
Bei Ubuntu z.B. /media
Also mal
ls -la /media
hier posten...
Dann machen wir weiter...
EDIT: drum soll man ja visudo nehmen, der macht syntax-check...
EDIT2: hier noch ein Link bzgl. Linux-Live-Sytem und Dateizugriff: https://forum.fhem.de/index.php/topic,94896.msg876905/topicseen.html#new. Aber nur mal zum Lesen/als "Unterstützung" vermutlich nicht direkt zum "Nachturnen", da klein wenig andere Problematik...
Gruß, Joachim
Bin wieder da,
Neuinstallation durchgeführt, von der Console läuft
sudo service homebridge status /stop/ start etc. und ich habe auch über IOS Zugriff.
fhem@raspberrypi:~$ sudo update-rc.d homebridge defaults
fhem@raspberrypi:~$ sudo service homebridge start
fhem@raspberrypi:~$ sudo service homebridge status
● homebridge.service - LSB: Start daemon at boot time for homebridge
Loaded: loaded (/etc/init.d/homebridge; generated; vendor preset: enabled)
Active: active (exited) since Sun 2018-12-30 17:23:45 CET; 26s ago
Docs: man:systemd-sysv-generator(8)
Dec 30 17:23:45 raspberrypi systemd[1]: Starting SYSV: Enable service provided by daemon....
Dec 30 17:23:45 raspberrypi homebridge[1436]: Homebridge is already running
Dec 30 17:23:45 raspberrypi systemd[1]: Started SYSV: Enable service provided by daemon..
fhem@raspberrypi:~$ sudo service homebridge status
● homebridge.service - LSB: Start daemon at boot time for homebridge
Loaded: loaded (/etc/init.d/homebridge; generated; vendor preset: enabled)
Active: active (exited) since Sun 2018-12-30 17:23:45 CET; 40s ago
Docs: man:systemd-sysv-generator(8)
Dec 30 17:23:45 raspberrypi systemd[1]: Starting SYSV: Enable service provided by daemon....
Dec 30 17:23:45 raspberrypi homebridge[1436]: Homebridge is already running
Dec 30 17:23:45 raspberrypi systemd[1]: Started SYSV: Enable service provided by daemon..
fhem@raspberrypi:~$ sudo service homebridge status
● homebridge.service - LSB: Start daemon at boot time for homebridge
Loaded: loaded (/etc/init.d/homebridge; generated; vendor preset: enabled)
Active: active (exited) since Sun 2018-12-30 17:23:45 CET; 2min 10s ago
Docs: man:systemd-sysv-generator(8)
Dec 30 17:23:45 raspberrypi systemd[1]: Starting SYSV: Enable service provided by daemon....
Dec 30 17:23:45 raspberrypi homebridge[1436]: Homebridge is already running
Dec 30 17:23:45 raspberrypi systemd[1]: Started SYSV: Enable service provided by daemon.
.
Aber mit der SYS-Homebridge werde ich nicht warm.
Der Versuch, die Homebridge von FHEM aus zu starten, etop etc.. läuft im Logfile auf folgende Fehler:
018.12.30 17:19:51 3: Login denied via TELNETPORT_127.0.0.1_36122
2018.12.30 17:19:51 3: Login denied via TELNETPORT_127.0.0.1_36124
2018.12.30 17:19:51 3: Login denied via TELNETPORT_127.0.0.1_36126
2018.12.30 17:20:07 3: Login denied via TELNETPORT_127.0.0.1_36130
2018.12.30 17:20:07 3: Login denied via TELNETPORT_127.0.0.1_36132
2018.12.30 17:20:07 3: Login denied via TELNETPORT_127.0.0.1_36134
2018.12.30 17:23:45 3: Login denied via TELNETPORT_127.0.0.1_36180
sudo: no tty present and no askpass program specified
sudo: no tty present and no askpass program specified
sudo: no tty present and no askpass program specified
sudo: no tty present and no askpass program specified
sudo: no tty present and no askpass program specified
sudo: no tty present and no askpass program specified
sudo: no tty present and no askpass program specified
sudo: no tty present and no askpass program specified
sudo: no tty present and no askpass program specified
sudo: no tty present and no askpass program specified
2018.12.30 17:27:02 3: Login denied via TELNETPORT_127.0.0.1_36218
2018.12.30 17:27:02 3: Login denied via TELNETPORT_127.0.0.1_36220
2018.12.30 17:27:05 3: Login denied via TELNETPORT_127.0.0.1_36222
2018.12.30 17:27:05 3: Login denied via TELNETPORT_127.0.0.1_36224
List TELNETPORT bringt:
CONNECTS 11
DEF 7072
FD 37
NAME TELNETPORT
NR 123
PORT 7072
STATE Initialized
TYPE telnet
READINGS:
2018-12-30 16:59:24 state Initialized
Attributes:
DbLogExclude .*
room GERAETE
und die //etc/init.d/homebridge sieht so aus:
fhem@raspberrypi:~$ cat /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 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
export LOGPATH="/home/pi/homebridge/log"
PID=`pidof homebridge`
homeBridgeUser="fhem"
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 &"
su - "fhem" -c "homebridge > $LOGPATH/homebridge-`date +%Y-%m`.log 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
nur zur Vorsicht:
die sudoers sieht so aus:
#
# 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:/etc/init.d/homebridge
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge start
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge stop
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge restart
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge status
# 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
%admin ALL=(ALL) ALL
Mal sehen was du jetzt dazu sagst.. ich vermute ein Zugriffsproblem über Telnet..
Uwe
Wie hast du die sudoers bearbeitet?
visudo?
Würde mich (fast) wundern, da die Einträge so (zumindest finde ich) nicht passen.
Und ich kann's auch noch mal schreiben:
Der Dummy nutzt das "Programm" service in der sudoers steht aber immer noch das "Programm" /etc/init.d/homebridge
Wird (neben dem dass die sudoers Einträge generell eigenartig sind) nicht funktionieren...
Oder hast du den Befehl im Dummy angepasst/geändert?
Hast du ein allowed für telnet?
Hast du mal überlegt (statt Dummy) das Modul serviced zu verwenden?
Oft genug verlinkt bzw. angemerkt...
...unter anderem im im anderen Thread verlinkten Thread ("homebrige für unerfahrenen" oder so)...
EDIT: ich poste nachher mal mein umgearbeitetes initd-Script (ist zwar alexa-fhem aber ist im Prinzip ja ähnlich, ich passe es auch mal für "dein" homebridge an) welches ich zusammen mit dem serviced-Modul (statt dummy/DOIF nutze)... Und auch (noch mal) den Link zu dem Modul-Thread...
Warum startet der User "fhem" (/etc/init.d/homebridge Script) die Logdatei liegt aber unter /home/pi/himebridge/log ?
Nur ein "Schönheitsfehler" aber so ein "User-Durcheinander" führt (wegen Unübersichtlichkeit) später oft zu Problemen...
Ansonsten (erneut): Linux lernen und lesen und verstehen...
Irgendwie drehen wir uns (die letzten Einträge lang) immer um das Selbe bzw. schreibe ich quasi immer das Selbe...
Gruß, Joachim
Den Hinweis/Anmerkung bzgl. /etc/sudoers.d (der auch in der sudoers Datei selbst steht) hast du mal bewusst nicht gewählt? ;)
Zitat
# 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.
#
Dazu sollte auch was im in diesem Thread verlinkten Thread (bzgl. sudoers) was stehen...EDIT: aber daran liegt es nicht. Ist nur als Anregung zu verstehen...
Gruß, Joachim
So hier wie versprochen die Angaben bzgl. Nutzung des Moduls serviced (statt Dummy).
Wobei die Einstellungen bzgl. sudoers auch für den Dummy passen sollten (vielleicht fällt dir jetzt der Unterschied auf ;) ).
Also zunächst (noch) mal der Link zum Thread bzgl. des serviced-Moduls:
https://forum.fhem.de/index.php/topic,79952.0.html
Das Modul musst du (noch) "manuell" instalieren, soll heißen aus dem Thread runter laden und dann nach /opt/fhem/FHEM kopieren.
Ich mache das immer nach dem Runterladen aus der Linux-Console meines Notebooks mittels "scp":
scp Dateiname pi@IP-Des-RasPi:/home/pi/
und dann per ssh auf den RasPi und dort dann:
sudo cp Dateiname /opt/fhem/FHEM
(sudo weil der User "pi" in /opt/fhem/FHEM nicht schreiben darf / und "nur" Dateiname weil normalerweise befindet man sich nach dem Einloggen auf dem RasPi als User "pi" eben schon in /home/pi/ wo die Datei ja nach dem "scp" liegen sollte, ein sudo cp /home/pi/Dateiname ist somit eigentlich unnötig ABER: nicht falsch... Bzw. funktioniert immer egal in welchem Verzeichnis man "steht"...)
dann noch die Zugehörigkeit anpassen:
sudo chown fhem:dialout /opt/fhem/FHEM/Dateiname
Alle Befehle bzgl. "Dateiname" anpassen!
Und die Pfade etc. sind für eine "Standard-fhem-Installation" gültig.
Wenn du anders installiert hast, dann auch das anpassen...
Dann entweder fhem neu starten oder ein "reload" der Datei über FHEM-Web-cmd...
Damit das Modul (oder dein Dummy) services starten/stoppen etc. kann/darf braucht es den Eintrag in der sudoers OHNE Passwort (ist ja keiner da eins einzugeben)...
Wie bereits geschrieben habe ich dazu (was auch in der sudoers Datei geraten wird) für fhem eine unter /etc/sudoers.d/ eigene Datei angelegt.
Hier der Inhalt meies /etc/sudoers.d/
pi@MadMax-PI-FHEM:/etc/sudoers.d $ ls -la
total 20
drwxr-xr-x 2 root root 4096 Dez 8 2017 .
drwxr-xr-x 84 root root 4096 Nov 19 19:06 ..
-r--r----- 1 root root 27 Okt 18 2016 010_pi-nopasswd
-r--r----- 1 root root 29 Sep 16 2017 020_fhem-nopasswd
-r--r----- 1 root root 958 Jun 5 2017 README
Ich habe als "Vorlage" die Datei vom User "pi" genommen:
sudo cp /etc/sudoers.d/010_pi-nopasswd /etc/sudoers.d/020_fhem-nopasswd
Inhalt dann wie im serviced-Thread angegeben:
fhem ALL=(ALL) NOPASSWD:/usr/sbin/service
Vorher mittels:
which service
Den Pfad noch mal prüfen...
Besser natürlich mittels "visudo" bearbeiten:
sudo visudo -f /etc/sudoers.d/020_fhem-nopasswd
Das sollte auch für den Dummy passen...
Solltest du umsteigen auf systemd, dann eben die Einträge in der sudoers anpassen und auch das Startscript, nachzulesen hier:
https://forum.fhem.de/index.php/topic,93540.msg861872.html#msg861872
Wenn du das serviced-Modul statt dem Dummy nehmen willst, wirst du vermutlich noch das Startscript anpassen müssen.
Weil die Aufrufe per Telnet brauchst du nicht und ich habe festgestellt, dass nur das Rausnehmen der Aufrufe zwar reicht den Dienst zu starten/stoppen aber Fehler beim Starten etc. nicht "bemerkt" werden...
Hier mal mein (für dein homebridge angepasstes) 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
export LOGPATH="/home/pi/homebridge/log"
PID=`pidof homebridge`
case "$1" in
start)
if ps -p $PID > /dev/null 2>&1; then
echo "homebridge is already running"
else
su - "fhem" -c "homebridge > $LOGPATH/homebridge-`date +%Y-%m`.log 2>&1 &"
echo "homebridge starting"
sleep 5
PID=`pidof homebridge`
if ! ps -p $PID > /dev/null 2>&1; then
echo "homebridge not started!"
exit 7
fi
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
$0 start
else
$0 stop
$0 start
fi
;;
status)
if ps -p $PID > /dev/null 2>&1; then
echo "homebridge is running PID $PID"
else
echo "homebridge is not running"
exit 3
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
echo "script done"
exit 0
Wie immer:
ohne Gewähr! ;)
Bei Aufrufen mit "sudo" IMMER genau prüfen! Nachlesen WAS das tut und WOZU das notwendig ist (oder auch nicht, dann weglassen)!
EDIT: den Dummy brauchst du dann natürlich nicht mehr (also bei Nutzung des serviced-Moduls). Und nach dem Anpassen der Startdatei /etc/init.d/homebridge immer das update-rc.d ausführen...
Viel Erfolg, Joachim
Hallo Joachim,
erstmal vielen Dank für die die Ausarbeitung. Hab mich intensiv in den letzten Stunden damit beschäftigt.
Toll, Toll, Toll der support.
Mein Stand: Ich habe die sudoers immer mit Visudo bearbeitet, aus root, immer, immer, seit dem Absturz.
su
visudo
konsequent, ohne Fehlermeldung. Ich habe auch dann gleich mal
fhem ALL=(ALL) NOPASSWD:/usr/sbin/service
eingefügt, was keine Änderung gebracht hat. Neustart, sudo update-rc.d homebridge defaults. Den Pfad habe ich geprüft. Wohl habe ich keine zusätzlichen Dateien erzeugt, sondern alles in einer Datei gehalten. Dies weiss ich wie geht und es führt nicht zu zusätzlichen Fehlern.
Wenn ich den Dummy (habe ich auch nochmals gelöscht und aufgebaut) bediene, so sehe ich im Logfile kosequent weiterhin
sudo: no tty present and no askpass program specified
sudo: no tty present and no askpass program specified
Die von dir angepasste homebridge Datei habe ich getestet. Ich habe verstanden, dass dort über Perl der Status jetzt nicht an FHEM weitergegeben wird. Trotz allem bringe ich die Datei nicht zum Laufen. Bricht ab mit
Zitatpi@raspberrypi:~ $ sudo service homebridge start
Job for homebridge.service failed because the control process exited with error code.
See "systemctl status homebridge.service" and "journalctl -xe" for details.
Sorry, fand ich keine Lösung.
Hab dann an meiner ursprünglichen homebridge service Datei weitergarbeitet:
Der Perl Befehl aus der Homebridge Datei an Telnet bringt auch den/die Fehler:
Zitat018.12.31 18:09:42 3: Login denied via TELNETPORT_127.0.0.1_51938
2018.12.31 18:09:48 3: Login denied via TELNETPORT_127.0.0.1_51942
2018.12.31 18:09:48 3: Login denied via TELNETPORT_127.0.0.1_51944
2018.12.31 18:09:51 3: Login denied via TELNETPORT_127.0.0.1_51946
Das konnte ich nachweisen, ich habe die entsprechenden Zeilen maskiert, dann war es weg.
Auch Telnet habe ich gelöscht, auch allowedTelnet gelöscht, habe es mit Passwort und ohne Passowort versucht, kein Thema immer gleich,
Login denied..immer Fehler.
Auch das "serviced Modul" sollte nicht die Lösung sein, bringt nur noch weitere Hürden mit sich. Bin ich falsch, wenn ich sage: das Passwortthema ist ein grundsätzliches Thema und auch das Telnet Thema ist ein grundsätzliches Thema. Ich sehe hier 2 Themen, die nichts miteinander zu tun haben. Telnet könnte man lösen, indem man keine Rückmeldung gibt, aber Passwort ist schlecht, dann ist die eigentliche Funktion des dummies weg. Ich kann weder von der Console auf FHEM Mitteilungen senden, noch von FHEM an den Raspberry Commandos absetzen. Solange dies nicht funktioniert, sind alles andere Scheingefechte.
Liege ich falsch?
"Homebridge" läuft, und "start service hombridge Start/stop/status funktioniert weiterhin von der Konsole. Nur diese Kommando Kommunikation mit FHEM hängt. Die Device Informationen laufen auch von FHEM über homebridge nach IOS.
Merci nochmals. Ideen?
Dass mein Script nicht läuft mag sein, hab es zwar noch mal durchgesehen und konnte jetzt nichts finden aber ich habe es ja auch umgebaut auf homebridge da kann schon mal was schief gehen...
Aber es sollte was (hoffentlich) im Log stehen/gestanden haben.
Ansonsten:
das mit dem Dummy ist (wie bereits geschrieben) "nur" Bequemlichkeit.
Also sofern homebridge bei Systemstart automatisch gestartet wird und läuft dient der Dummy lediglich dazu, wenn etwas homebridge-relevantes geändert wird, dass es aus fhem heraus nachgestartet werden kann...
Lässt sich aber auch tun, wenn man kurz in die Linux-Console wechselt und es dort tut...
Kommt am Anfang sicher öfter mal vor...
...später wohl kaum noch.
Wie hast du den Eintrag in die sudoers vorgenommen?
Extra Datei?
In die vorhandene sudoers eingetragen?
Die alten Einträge gelöscht?!
Den Eintrag für fhem ans Ende der Datei (falls in die sudoers-Datei)?
Was kommt, wenn du die telnet-Aufrufe direkt auf der Linux-Console eingibst?
Was passiert, wenn du folgendes direkt in die fhem-Web-cmd eingibst:
"sudo service homebridge stop"
"sudo service homebridge start"
Die Anführungszeichen mit eingeben!
EDIT: welches System hast du? Raspbian lite!? (also OHNE grafische Oberfläche) Wie hast du fhem installiert: https://debian.fhem.de/ und dann "the easy way"? Oder anders?
EDIT2: sudo visudo ist sicherer als su visudo. Weil: nach dem Kommando su bist du "root". Wenn du dann kein "exit" ausführst bleibst du auch root! Beim "Befehl" sudo wird eben nur das darauf folgende Kommando als "root" ausgeführt, danach wird automatisch zum aufrufenden User zurück geschaltet...
EDIT3: poste doch noch mal den Inhalt deiner sudoers: sudo cat /etc/sudoers und falls extra Datei auch von der für den User "fhem"...
Gruß und guten Rutsch, Joachim
Hallo,
ein Frohes Fest wünsche ich allen , ganz besodners Joachim, die mich die gesamte Zeit so unterstützt hat.
Zuerst mal die gute Nachricht:
Die Ursache für die Zugriffsproblematik Telnetport habe ich wohl gefunden:
2019.01.01 09:48:57 3: Login denied via TELNETPORT_127.0.0.1_57258
2019.01.01 09:48:58 3: Login denied via TELNETPORT_127.0.0.1_57260
2019.01.01 09:49:00 3: Login denied via TELNETPORT_127.0.0.1_57262
2019.01.01 09:49:00 3: Login denied via TELNETPORT_127.0.0.1_57264
Nachdem ich das "allowed" auf den Telnetport gelöscht habe, funktioniert der Zugriff von der Hombridge auf das SYS_Homebridge device in FHEM:
OnStateChange -1 2 018-12-31 18:08:25
info Homebridge running as PID 10423 2019-01-01 10:45:29
state on 2019-01-01 10:45:29
Das Reading info in der SYS-Homebridge ist neu entstanden, und die PID wird auch beim start der homebridge mit "sudo service hombridge start" von der consule richtig in das reading Info (siehe oben)
Dies ist auch so ok.
Ein kleiner Schönheitsfehler ist noch da: Gibt man sudo service hombridge stop ein, so wird dies auch richtig in das device übertragen, also homebridge gestopt, nach wenigen Augenblicken springen die readings dann aber wieder zurück auf den ursprünglichen Wert. Ich bekomme diesen Zwischenstand nicht kopiert und "hier" dargestellt. Auch die obere Anzeige "AN" , "AUS" springt bei "homebridge stop" immer kurz nach "Aus" und wieder zurück nach "AN".
ZitatDann blieb nur noch ein Thema, und für mich die Erklärung, warum das "allowed" den Zugriff verhindert hat.?
Un das 2. Thema ist davon, wie vermutet, unabhängig..
sudo: no tty present and no askpass program specified
sudo: no tty present and no askpass program specified
Weiterhin kommt diese Fehlermeldung in das Logfile konstant nach jedem Kommando aus FHEM aus der SYS_Homebridge.
Immer eine Zeile bei jedem neuen "set sys_homebridge Start bzw Stop".
Diese Meldung kommt auch , wenn man die folgende Kommandos in FHEM direkt eingibt:
"sudo service homebridge start"
"sudo service homebridge stop"
jeweils einmal. Immer konstant. Immer zuverlässig.
Meine "PI" Ausstattung ist:
ZitatMeine Ausstattung ist:
Hardware und Software:
1. Hardware Raspberry 3
2. FHEM 5.9 auf neuestem Stand
3. Distributor ID: Raspbian, Description: Raspbian GNU/Linux 9.6 (stretch), Release: 9.6, Codename: stretch
4. IOS 12 auf den Zielgeräte für Homebridge
ZitatWie habe ich installiert?
Bin dieser Anleitung nachgegangen:
https://www.meintechblog.de/2016/05/fhem-server-auf-dem-raspberry-pi-in-weniger-als-einer-stunde-einrichten/
Hier die sudoers:
pi@raspberrypi:~ $ sudo cat /etc/sudoers
#
# 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:/usr/sbin/service
fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge
# 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
%admin ALL=(ALL) ALL
Es gibt noch eine directory /etc/sudoers.d $ mit folgendem Inhalt:
drwxr-xr-x 2 root root 4096 Dec 14 11:43 .
drwxr-xr-x 92 root root 4096 Dec 31 18:06 ..
-r--r----- 1 root root 36 Nov 26 11:28 010_at-export
-r--r----- 1 root root 27 Oct 18 2016 010_pi-nopasswd
-r--r----- 1 root root 958 Jun 5 2017 README
Zitatpi@raspberrypi:/etc/sudoers.d $ sudo cat 010_at-export
Defaults env_keep += "NO_AT_BRIDGE"
und
pi@raspberrypi:/etc/sudoers.d $ sudo cat 010_pi-nopasswd
pi ALL=(ALL) NOPASSWD: ALL
Ist vielleicht die zusätzliche directory sudoers.d und die darin enthaltenen Dateien die Ursache. Überschreiben diese den Status?
Damit sollten auch die Fragen zu sudoers beantwortet sein.
Mir ist schon bewusst, dass das Dummy nur Bequemlichkeit ist, aber ich vermute irgendwo einen nachhaltigen Fehler, der mir irgendwann später dann wiedre in die Quere kommt. Lieber jetzt weg, als immer mitschleppen.
Vielen Dank
Uwe
Kein Ding! :)
Gut dass das mit dem Status nun (halb) funktioniert...
Daher ja die Frage nach allowed bzgl. Telnet (schon einige Antworten zuvor ;) )...
Poste doch mal ein list des Dummy und noch mal das aktuelle Startscript (/etc/init.d/homebridge).
Dann schaue ich mal, ob ich was finde...
Sudoers-Problematik:
die Einträge bzgl. fhem würde ich entweder ganz ans Ende der sudoers setzen oder eben eine eigene Datei unter /etc/sudoers.d/ anlegen wie geschrieben:
sudo visudo -f /etc/sudoers.d/020_fhem-nopasswd
und dort dann entweder mal (zum Test):
fhem ALL=(ALL) NOPASSWD: ALL
oder den Eintrag nur bzgl. "service"...
Wozu dient 010_at-export?
Woher kommt das?
Auch sieht deine sudoers schon "ungewöhnlich" aus, auch ohne die Einträge bzgl. fhem.
Hier mal meine:
#
# 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
# 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
Woher stammt bei dir der Eintrag "admin"!?
Und der Eintrag für fhem muss auf jeden Fall ans Ende, besser eigene Datei...
Bzgl. Installation von fhem:
nimm lieber (auch zukünftig) "offizielle" Quellen.
Also fhem-Forum oder fhem-Wiki.
Leichter und schneller ist die automatische Installation hierüber (auch schon mal genannt): https://debian.fhem.de/
-> the easy way...
Weil: hast du schon mal auf das Datum geschaut von wann der Artikel ist!?
Meine allererste Installation vor so 2-3 Jahren habe ich danach gemacht aber seither hat sich doch einiges geändert...
Welches Raspbian Image hast du denn verwendet?
Sicher ein "lite"!?
Wenn nicht, dann spätestens nächstes mal ein lite nehmen!
Gruß, Joachim
Hallo Joachim,
danke mal für die schnelle Antwort. Das sudoers werde ich mir gleich mal zu Gemüte führen. Da brauch ich mehr Zeit.
Zuerst die anderen Dinge:
ZitatGut dass das mit dem Status nun (halb) funktioniert...
Daher ja die Frage nach allowed bzgl. Telnet (schon einige Antworten zuvor ;) )...
Verstehe ich "allowed" so richtig, dass mit allowed_Telnet impliziet der Zugang nur mit Passwort möglich ist, auch wenn ich kein Passwort vergeben habe?
Was mache ich dann mit dem homebridge-Service, wenn ich auf Telnet ein Passwort vergeben habe. Wo hinterlege ich dieses Passwort für homebridge.
FHEM meckert jetzt bei mir ja an, dass ich Telnet nicht mit einem Passwort versehen habe.
so sieht list SYS-Homebridge heute aus:
NAME SYS_Homebridge
NR 125
STATE on
TYPE dummy
READINGS:
2019-01-01 11:09:29 OnStateChange -1
2019-01-01 11:42:22 info Homebridge running as PID 11412
2019-01-01 11:42:22 state on
Attributes:
DbLogExclude .*
devStateIcon .*on:general_an .*off:general_aus .*:audio_rec
eventMap status:status start:start stop:stop restart:restart
icon it_router
room GERAETE
userReadings OnStateChange:(start|stop|restart|status) { system ("sudo service homebridge ".ReadingsVal($NAME,"state","restart")." &" ); }
webCmd status:start:stop:restart
So sieht der service homebridge heute aus:
pi@raspberrypi:/etc $ sudo cat /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 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="fhem"
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 7072 "setreading $fhemDefine info Homebridge starting"
# perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort "setreading $fhemDefine info Homebridge starting"
perl /opt/fhem/fhem.pl 7072 "set $fhemDefine on"
# 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
pi@raspberrypi:/etc $
ZitatWelches Raspbian Image hast du denn verwendet?
Sicher ein "lite"!?
Wenn nicht, dann spätestens nächstes mal ein lite nehmen!
Ich weiss nicht, was ich benutzt habe.
ZitatWenn nicht, dann spätestens nächstes mal ein lite nehmen!
Ich muss für das Haus meiner Mutter direkt noch eine Installation machen, sobald diese hier steht. Ende Februar muss alles fertig sein mit Alarmanlage. Seit 4 Jahren gibt es dort eine Installation für Heizung und Rolläden. Sehr sehr wichtig für mich. Ich bin da FHEM sehr grossen Dank verpflichtet. Ohne FHEM ging das alles nicht und ich könnte das Haus so nicht halten.
Uwe
Klar nimm dir Zeit!
Ich laufe nicht weg ;)
Dummy-Start-Stop-Problematik:
Was ich sehe ist, dass nach dem stop ein sleep von 2s und dann status aufgerufen wird (also innerhalb des Scripts).
Die 2s sollten eigentlich reichen nach einem kill...
Du kannst entweder den status-Aufruf mal rausnehmen oder die Zeit vergrößern...
Bzw. einfach nach einem stop per Dummy mal noch ein wenig warten und dann mal:
sudo service homebridge status
in die Linux-Console eingeben.
Wenn danach der Status passt, dann ist die Zeit zu kurz...
Wenn es dann immer noch nicht passt, dann weiß ich grad auch nicht so recht...
Ansonsten sehe ich halt einen Mix bei den "telnet-Aufrufen", ist aber nur "Schönheit"... ;)
Bzgl. Passwortschutz bei Telnet:
https://fhem.de/HOWTO_DE.html#security
https://fhem.de/commandref_DE.html#telnet
und dann sollte folgendes funktionieren:
perl /opt/fhem/fhem.pl 127.0.0.1:7072 passwort "set Test off"
bzw.
perl /opt/fhem/fhem.pl 7072 passwort "set Test off"
Gruß, Joachim
Hi Joachim,
das wars. :) :) Ich kann aus FHEM hombridge starten und stoppen, die Problematik mit dem umspringen der "aus" nach "an" ist hier auch vorhanden, ich lese gleich deine neue Mail.
Was habe ich gemacht: Ich habe jetzt mein sudoers bearbeitet, bzw. die "schwierigen Zeilen rausgenommen", auskommentiert.
Die sudoers sieht jetzt so aus: (jetzt identisch mit deiner sudoers)
pi@raspberrypi:~ $ sudo cat /etc/sudoers
#
# 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 [u]#### [u] :Pdies habe auskommentiert [/u]
[/u]
#fhem ALL=(ALL) NOPASSWD:/usr/sbin/service [u]#### :Pdies habe auskommentiert [/u]
#fhem ALL=(ALL) NOPASSWD:/etc/init.d/homebridge [u]#### :Pdies habe auskommentiert
[/u]
# Allow members of group sudo to execute any command
#%sudo ALL=(ALL:ALL) ALL #### :Pdies habe auskommentiert
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
#%admin ALL=(ALL) ALL [u] #### :Pdies habe auskommentiert [/u]
und ich habe die extra Datei angelegt:
ZitatSudoers-Problematik:
die Einträge bzgl. fhem würde ich entweder ganz ans Ende der sudoers setzen oder eben eine eigene Datei unter /etc/sudoers.d/ anlegen wie geschrieben:
Code: [Auswählen]
sudo visudo -f /etc/sudoers.d/020_fhem-nopasswd
und dort dann entweder mal (zum Test):
Code: [Auswählen]
fhem ALL=(ALL) NOPASSWD: ALL
oder den Eintrag nur bzgl. "service"...
woher das kommt weiss ich nicht, hab ich mal gelassen.
Wozu dient 010_at-export?
Woher kommt das?
Jetzt habe ich wohl unter root keine sudo Rechte mehr.. Sollte aber kein Thema sein. Oder?
Vielen Dank 8) 8) 8) 8)
Uwe
Warum hast du auskommentiert?
In "code-Tags" sind die "Hervorhebungen" nicht wirklich lesbar/hilfreich...
...sehe nicht so genau wie die sudoers jetzt aussieht. ;)
Warum nicht einfach meine (ist eine unbehandelte "Original-sudoers-Datei" von Raspbian Stretch lite) genommen!?
In der fhem-sudoers-Datei steht da nun "fhem ALL=(ALL) NOPASSWD: ALL" oder die auf "service beschränkte" Variante?
EDIT: das nur interessehalber... ;)
Gruß, Joachim
Hallo Joachim,
habe die sleep Zeit auf 5 sec erhöht, dies war wohl das Thema. Der Status in der SYS-Homebridge springt jetzt nicht mehr um, sondern bleibt richtig erhalten.
Es ist die Funktion vollständig da.
Zur Vervollständigung stellt ich die wichtigsten Informationen nochmals dar.
Auch für eine Dokumention für die nächsten Hilfesuchenden . Falls gewünscht, so kann ich auch an den wikis entwas ergänzen. Dazu müsstet ihr euch aber melden.
Die endgültig funktionierende Homebridge-Service Datei dar:
pi@raspberrypi:~ $ cat nano /etc/init.d/homebridge
cat: nano: No such file or directory
#!/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="fhem"
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 7072 "setreading $fhemDefine info Homebridge starting"
# perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort "setreading $fhemDefine info Homebridge starting"
perl /opt/fhem/fhem.pl 7072 "set $fhemDefine on"
# perl /opt/fhem/fhem.pl $fhemHost:$fhemHostTelnetPort "set $fhemDefine on"
sleep 5
$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 5
$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
Die sudoers sieht jetzt so aus , die von mir auskommentierten Zeilen habe ich gelöscht:
pi@raspberrypi:~ $ sudo cat /etc/sudoers
#
# 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
# 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
Im directory /etc/sudoers steht jetzt:
pi@raspberrypi:/etc/sudoers.d $ sudo cat 20_fhem-nopasswd
fhem ALL=(ALL) NOPASSWD: ALL
die config.json sieht bei mir folgendermassen aus:
fhem@raspberrypi:/etc/sudoers.d$ cat ~/.homebridge/config.json
{
"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": "8085",
"auth": {"user": "xxxxxxxx", "pass": "xxxxxxxxxx"},
"filter": "room=Homekit"
}
],
"accessories": []
}
Womit habe ich gekämpft:
1. Es gibt 2 wikis zu dem Thema, der Übergang zwischen den beiden Papieren ist für mich etwas schwierig gewesen. Es war für mich auch aus der wiki nicht wirklich ersichtlich, welche Einzelschritte es gibt und wie man die Einzelschritte dann auch einzeln überprüfen kann. Auch sah ich nicht wirklich, ob es so ok war.
2. Der Hinweis , dass man bei einer nicht funktionierenden Anmeldung der IOS Geräte an homebridge durch die Abänderung des "username" an den letzten beiden Stellen von "30" auf "31" das Thema lösen kann. steht aber so klar im Wiki (homebridge_einrichten)
3. meine sudoers war nicht ok, ich denke, die Lösung war nur dich einen Linix Freak (Joachim 8) 8)) machbar.
4. Nei Telnetport hatte "allowed_ " und hatte den Zugang von Homebridge nach FHEM blockiert
5. Im Service Homebridge ist die sleep Zeit mit 2 sec etwas langsam. Habe diese auf 5 sec erhöht.
Wer war die Lösung zu meinen Themen: Joachim.. 8) 8). Ohne ihn , kein Erfolg möglich.
Meine Kenntnisse reichen für solche Installationen nicht aus, habe aber viel dazugelernt. Das war meine Erkenntns. Heute Abend mach ich mir eine Sicherung der Flash-Karte komplett.
Joachim, man muss ja nach vorne schauen, wie schwierig ist eine Alexa Installation im Vergleich zu homebridge?
Status setze ich auf gelöst, dieses Theats, nicht Alexa :D :D
Merci nochmals
Bitte gerne!
Evtl. nächstes Mal früher auf die Tipps hören ;)
(das mit sudoers und wie man das macht stand schon ein paar mal ;) )
Wenn du was gelernt hast: prima!
Das soll ja Sinn der Sache sein (neben dem, dass es funktioniert)...
Bzgl. Wiki überarbeiten: ist immer eine gute Idee von jemandem, der das gerade durchgemacht hat ;)
Bevor du "Code" von dir postest: noch mal ein wenig "aufräumen" ;)
Eventuell zunächst mal "nur" Anmerkungen die du denkst dass sie helfen, wenn du dir bzgl. anderer Dinge unsicher bist...
Oder am Ende einen "Fehlerbehebungs-Teil" wo du einfach schilderst was passieren kann, also Fehlerbeschreibung und dann die Lösung oder mögliche Lösungen/Ursachen beschreibst.
Bzgl. alexa-fhem Installation:
ist im Prinzip auf Seiten des PI "identisch".
Wie erwähnt ist/war homebridge die Basis.
Allerdings ist es auf Seiten Amazon (noch) etwas sehr kompliziert!
Du kannst ja mal einen Blick ins Wiki werfen: https://wiki.fhem.de/wiki/Alexa-Fhem
Und auch mal durch den Problem-Thread querpflügen: https://forum.fhem.de/index.php/topic,81324.msg733986.html#msg733986 bzw. https://forum.fhem.de/index.php/topic,60452.msg518412.html#msg518412
Allerdings ist Licht am Horizont: https://forum.fhem.de/index.php/topic,82860.msg749944.html#msg749944 bzw. https://forum.fhem.de/index.php/topic,94817.0.html
Alternativ, wenn es "nur" um Ein-/Ausschalten von Geräten geht (vergleichbar mit dem Smart Home Skill), dann evtl. mal die ha-bridge anschauen. Deutlich einfacher... https://forum.fhem.de/index.php/topic,66920.msg582889.html#msg582889
Wenn du aber mehr mit Alexa willst (wobei mittlerweile über Routinen echt viel geht und dann reicht am Ende ein "schaltbares Gerät" egal ob per alexa-fhem oder ha-bridge) brauchst du den Custom Skill und das geht nur mit alexa-fhem.
Ich habe beides laufen (also alexa-fhem und ha-bridge) und nutze den Custom Skill kaum und für das Wenige könnte ich auch mittels Routinen drauf verzichten.
Ich werde mir die neue Möglichkeit der Skillanbindung (die gerade aufgebaut wird) mal ansehen oder dann evtl. ganz auf ha-bridge gehen...
ha-bridge läuft bei meiner Freundin seit längerem ohne Probleme...
...ohne Portfreigabe/-weiterleitung etc. (war mir wichtig, weil ich dort nicht so oft bin und nicht so schnell handeln kann [wie bei mir])...
Und Geräte Ein-/Ausschalten reicht dort ;)
Gruß, Joachim