Homebridge findet config.json nicht

  • Hallo liebe Homekitter,

    langsam werde ich wahnsinnig: Heute bereits die dritte Homebridge nach der Anleitung (von sschuste - vielen Dank dafür erstmal) aufgesetzt (und frisch von der App gewechselt, die nur Probleme gemacht hat) und es hapert nun zu verschiedenen Zeitpunkten, mündet aber zum dritten Mal im selben Fehler.

    Diesmal ist nach vier erfolgreichen Plugin-Installationen Schluss gewesen. Genauer bei der "homebridge-mi-hygrothermograph", die zusätzlich noch einen "bluetooth-hci-socket"-Fehler ausgegeben hat und vermeintlich durch ein Downgrade der Node in den Griff bekommen wurde.

    Schlimmer sieht es mit der Homebridge aus, die nach der Installation des Plugins gar nicht erst starten möchte, da die config.json wohl nicht gefunden wird.

    Das Plugin einfach deinstallieren geht ebenfalls nicht:

    Code
    pi@raspberrypi:~ $ sudo npm uninstall homebridge-mi-hygrothermograph-g
    npm WARN saveError ENOENT: no such file or directory, open '/home/pi/package.json'
    npm WARN enoent ENOENT: no such file or directory, open '/home/pi/package.json'
    npm WARN pi No description
    npm WARN pi No repository field.
    npm WARN pi No README data
    npm WARN pi No license field.
    
    up to date in 0.307s

    Wäre über einen Tipp sehr dankbar! :/

  • pi@raspberrypi:~ $ sudo homebridge

    So klappt das auch nicht. Starten, stoppen und neu starten der Homebridge geht nur mit


    sudo systemctl start homebridge

    sudo systemctl stop homebridge

    sudo systemctl restart homebridge


    So, wie du es versuchst, wird homebridge zwar auch gestartet, aber als root und ohne weitere Angabe, wo sich config.json befindet. Wenn homebridge nicht weiß, wo sich config.json befindet, versucht sie /root/.homebridge/config.json zu laden. Die Datei existiert aber nicht.


    Wenn du unbedingt auf die Startskripte verzichten willst, dann musst du deine Homebridge mit

    sudo homebridge -U /var/homebridge starten, was ich aber nicht empfehle.


    Stefan

  • Besten Dank für die schnellen Antworten.

    Auf Startskripte möchte ich ganz und gar nicht verzichten. Das Ding soll, wenn es dann fertig ist, im Hintergrund laufen. Was ich dann wohl nicht verstehe, Stefan, ist die Systemstruktur, denn die Homebridge funktioniert im Hintergrund tatsächlich weiter und mit den Befehlen von dir werden auch keine Fehler angezeigt. systemctl macht das im Hintergrund mit root-Rechten?

    Kurios ist außerdem bei meinem Problemgemenge (bzw. Verständnisproblem), dass homebridge-config-ui-x über den Browser auf einmal aufgehört hat zu funktionieren. Irgendeine Idee, wie ich das wieder zum laufen bekomme? Eine Neuinstallation des Plugins hat keinen Erfolg gebracht. Eben durch dieses Problem habe ich erst mit meinen vergeblichen

    Code
    sudo homebridge

    Ideen versucht, dem Ursprung auf den Grund zu gehen, was zu noch mehr Verwirrung geführt hat. ?(

  • Solange Homebridge nicht vernünftig mit der config.json startet, solange wird auch config-ui-x nicht funktionieren, logisch, denn die Konfiguration dafür findet sich in der eben erwähnten config.json. Ich verstehe eigentlich dein Problem gar nicht. Wenn du homebridge als root installiert hast, liegt die config.json in /root/.homebridge/config.json, das Startscript liegt unter /etc/systemd/system/ und die Datei mit dem Verweis auf die Config unter /etc/default/.


    Hast du homebridge als root installiert und liegt die config.json tatsächlich unter /root/.homebridge/config.json, so müsste der Inhalt der beiden anderen benötigten Startdateien folgendermaßen aussehen:


    nano /etc/systemd/system/homebridge.service


    nano /etc/default/homebridge


    Code
    # Defaults / Configuration options for homebridge
    # The following settings tells homebridge where to find the config.json file and where to persist the data (i.e. pairing and others)
    HOMEBRIDGE_OPTS=-I -U /root/.homebridge
    
    # If you uncomment the following line, homebridge will log more 
    # You can display this via systemd's journalctl: journalctl -f -u homebridge
    # DEBUG=*


    Danach einfach nur noch den Autostart aktivieren:


    systemctl daemon-reload

    systemctl enable homebridge

    systemctl start homebridge


    Bevor du die letzten 3 Befehle eingibst, öffne ein 2. Terminalfenster und loge den Start und alles drumrum mit:


    journalctl -f -u homebridg

  • Ja, Marco Schmidt lässt seine Homebridge als root laufen, während ich das strikt ablehne. Deshalb unterscheiden sich die beiden Dateien, die er oben gepostet hat, von den meinen in zwei Zeilen:


    In /etc/systemd/system/homebridge.service heißt es bei mir User=homebridge statt User=root, und in /etc/default/homebridge heißt es bei mir HOMEBRIDGE_OPTS=-I -U /var/homebridge statt HOMEBRIDGE_OPTS=-I -U /root/.homebridge


    In den beiden Dateien wird sowohl der User festgelegt, unter dem der Prozess homebridge später laufen soll (bei Marco root und bei mir homebridge) sowie der Ort, an dem config.json liegt. Der Ordnung halber hat Marco hat den Pfad zu config.json festgelegt, tatsächlich wäre das für seine Konfiguration auch der Defaultwert und er könnte sich das sparen. Aber es gehört sich nun mal so ;).


    Diese beiden Dateien werden von systemctl geladen. Da du systemctl als root startest (sudo systemctl ...), wird der ganze Schmonzes auch als root verarbeitet. Durch die User=homebridge-Direktive läuft der Service dann unter dem User homebridge.


    Ob homebridge wie bei Marco unter root-Rechten läuft oder wie bei mir unter Einfach-User-Rechten, spielt für die Funktion keine Rolle. Ich möchte keine Server unter root-Rechten laufen lassen, und das ist alles, was Marcos und meine Konfiguration unterscheidet.


    Stefan

  • Vielen, vielen Dank, dass Ihr euch beide so viel Mühe bei der Lösung meines Problems gebt!


    Ich glaube, das Dilemma so langsam einordnen zu können: Wahrscheinlich bin ich von Anfang an gedanklich Marco Schmidt Ansicht gefolgt, wusste aber nicht, welcher zweite Benutzer (und wieso) dazwischen funkt und sschuste hat das Rätsel netterweise gelöst, der ja auch dafür „verantwortlich“ ist, da ich seiner Anleitung gefolgt bin. ;)


    Daher an dich, Stefan, direkt die beiden Fragen, ob die Fehlermeldungen aus Post #1 so in Ordnung sind, weil der Befehl einfach falsch adressiert ist und wie ich wieder über den Browser in das UI von homebridge-config-ui-x komme, ohne die root-Rechte an die homebridge vergeben zu müssen? :/

    Einmal editiert, zuletzt von sambalo ()

  • Was passiert denn eigentlich, wenn du sudo systemctl restart homebridge; sudo journalctl -fau homebridge eingibst?


    Stefan

  • Genau um den Befehl ging es mir von Anfang an. Danke! Danke! Danke!

    In der Ansicht offenbarte sich mir dann die Ursache. Durch das Downgrade von Node für homebridge-mi-hygrothermograph (mittlerweile deinstalliert) hat sich das Plugin homebridge-config-ui-x daran gestört gefühlt und wollte nicht richtig starten. Daher Node wieder mit der Anleitung von sschuste auf den aktuellen Stand gebracht, neu installiert und voilà, auch das UI funktioniert über den Browser wieder.


    Kurze Nachfrage noch: Alles läuft, aber bekomme beim Starten der Homebridge über sudo systemctl restart homebridge; sudo journalctl -fau homebridge nun folgende Fehlermeldung, die laut Recherche im Forum wohl einfach zu ignorieren ist, richtig?


    Code
    Jan 27 15:30:49 raspberrypi systemd[1]: Stopping Node.js HomeKit Server...
    Jan 27 15:30:49 raspberrypi homebridge[3880]: [1/27/2019, 3:30:49 PM] Got SIGTERM, shutting down Homebridge...
    Jan 27 15:30:54 raspberrypi systemd[1]: homebridge.service: Main process exited, code=exited, status=143/n/a
    Jan 27 15:30:54 raspberrypi systemd[1]: Stopped Node.js HomeKit Server.
    Jan 27 15:30:54 raspberrypi systemd[1]: homebridge.service: Unit entered failed state.
    Jan 27 15:30:54 raspberrypi systemd[1]: homebridge.service: Failed with result 'exit-code'.
    Jan 27 15:30:54 raspberrypi systemd[1]: Started Node.js HomeKit Server.
  • Liebe Homekit, ich hab's nun endlich geschafft mein erstes Plugin einzubauen.

    Dann wollte ich ein zweites Plugin installieren und ab dann startete meine Homebridge nicht mehr. Ich denke, das Problem ist wohl ein ähnliches wie das von sambalo, aber irgendwie bekomm ich meine HB trotz euren tollen Antworten nicht zum Laufen.


    Auch bei mir findet er offensichtlich auf einmal die config.json Datei nicht mehr.

    Code
    [2019-11-24 13:22:08] config.json (/home/pi/.homebridge/config.json) not found.
    [2019-11-24 13:22:08] Loaded plugin: homebridge-config-ui-x
    [2019-11-24 13:22:08] Registering platform 'homebridge-config-ui-x.config'
    [2019-11-24 13:22:08] ---
    [2019-11-24 13:22:09] Loaded plugin: homebridge-wemo
    [2019-11-24 13:22:09] Registering accessory 'homebridge-wemo.WeMo'

    Mir läuchtet aber einfach nicht ein wo da jetzt der Hund begraben liegt.


    Das zeigt mir übrigens das Protokoll an




    Ich würde mich sehr über eure Hilfe freuen.

    DANK!!!!

    Einmal editiert, zuletzt von haasi ()

  • 1. nach welcher Anleitung hast du die homebridge installiert?
    2. laut den log startest du sie wahrscheinlich mit homebridge

    3. ich vermute jetzt mal, dass die korrekte config.json unter /var/homebridge/ liegr welche du mit dem Befehl sudo systemctl start homebridge ueblicherweise starten wuerdest

    4. in deiner config hast du ein sonos Eintrag, jedoch kein solches Plugin installiert.