Homebridge Autostart Problem

  • Hi,


    Möchte unter Raspbian (piVCCU und homebridge) die homebridge mit "homebridge -I" beim Booten starten lassen.


    Folgendes Skript verwende ich dazu:

    Ich habe zuvor "forever" installiert und anschließend ausgeführt:

    sudo chmod 755 /etc/init.d/homebridge

    sudo update-rc.d homebridge defaults

    sudo reboot


    Doch die homebridge startet nicht beim Booten, im Terminal manuell allerdings problemlos (das beendet sich aber automatisch, wenn ich das Terminal schließe).


    Ich hatte mit "sudo systemctl status homebridge -l" geschaut, was los ist:

    Mir war aufgefallen, dass ich als root und als pi-User bereits nicht via "

    sudo nano /usr/lib/node_modules/homebridge-homematic/HomeMaticRPC.js" auf diese Datei zugriffen darf, mangels Rechten wohl. Es öffnete sich eine leere Datei, obwohl es diese Datei geben müsste...


    Es wäre klasse, wenn jemand hilft... homebridge -I soll einfach beim Booten starten.

  • Was passiert, wenn du eingibst:


    sudo /etc/init.d/homebridge start


    Was passiert, wenn du eingibst:


    sudo systemctl start homebridge


    Du bist augenblicklich führend, was das Durcheinander von Start-Scripten und Systemen angeht. Von forever hab ich vorher nie gehört.


    Stefan

  • sudo /etc/init.d/homebridge start:


    Code
    1. Wi-Fi is disabled because the country is not set.
    2. Use raspi-config to set the country before use.
    3. -su: amp: Mehrdeutige Umlenkung.
    4. -su: amp: Kommando nicht gefunden.
    5. -su: 1: Kommando nicht gefunden.
    6. Homebridge starting
    7. Homebridge is not running

    sudo systemctl start homebridge

    keine weitere Meldung...


    sudo systemctl status homebridge -l:

    Code
    1. Dez 21 18:58:31 piVCCU su[659]: + ??? root:pi
    2. Dez 21 18:58:31 piVCCU su[659]: pam_unix(su:session): session opened for user pi by (uid=0)
    3. Dez 21 18:58:31 piVCCU homebridge[649]: Wi-Fi is disabled because the country is not set.
    4. Dez 21 18:58:31 piVCCU homebridge[649]: Use raspi-config to set the country before use.
    5. Dez 21 18:58:31 piVCCU homebridge[649]: -su: amp: Mehrdeutige Umlenkung.
    6. Dez 21 18:58:31 piVCCU homebridge[649]: -su: amp: Kommando nicht gefunden.
    7. Dez 21 18:58:31 piVCCU homebridge[649]: -su: 1: Kommando nicht gefunden.
    8. Dez 21 18:58:31 piVCCU homebridge[649]: Homebridge starting
    9. Dez 21 18:58:31 piVCCU homebridge[649]: Homebridge is not running
    10. Dez 21 18:58:31 piVCCU systemd[1]: Started LSB: Start daemon at boot time for homebridge.


    Wie bekomme ich homebridge denn beim Booten gestartet ?


    Homebridge starting... homebridge not running... merkwürdig.

  • Ich möchte den WLAN-Chip nicht aktivieren... der RPi hängt am Ethernetport.


    Ich habe nun folgendes gemacht, wo man mir vielleicht besser helfen kann:

    1) Habe editiert "sudo nano /etc/init.d/homebridge" und folgendes eingefügt:

    Lasse ich mir nun den Status anzeigen, so erhalte ich folgendes:

    Das klappt aber nur, weil in init.d/homebridge steht "

    Code
    1. cmd="homebridge"

    Ich muss homebridge aber mit dem Parameter "-I" starten.

    Ändere ich es auf "cmd=homebridge -I", so erhalte ich bei der Statusanzeige folgenden Fehler:

    Ich weiß also nicht genau, wie ich dem homebridge-Aufruf lediglich noch den Parameter "-I" mitgeben kann, ohne in einen Fehler dadurch hinein zu laufen.


    Daher: Wie gebe ich bei obigem init.d/homebridge den Parameter mit ?


    Hinweis: homebridge liegt scheinbar unter home/pi/.homebridge... der Aufruf scheint aber zu funktionieren.

  • Nein, die Homebridge liegt bestimmt in /usr/local/bin/homebridge. Bitte zeige mir den Inhalt von /etc/hosts. Dein Pi heißt doch piVCCU, oder?


    Wo liegt homebridge?

    which homebridge


    hosts-Datei anzeigen lassen:

    cat /etc/hosts


    Danke, Stefan

  • Hilft nur ein bisschen. Verändere die hosts-Datei, dass sie so aussieht:


    sudo nano /etc/hosts

    Zitat

    127.0.0.1 Homebridge piVCCU


    Das macht schon mal einen Fehler weg. Allerdings bin ich der Ansicht, dass dein ganzes Startkonstrukt einer dringenden Überarbeitung bedarf. Ich helf dir. Lass mir bis morgen Zeit, ich bin etwas im Stress momentan.


    Stefan

  • Das sind sie.


    Es gibt tatsächlich mehrere Möglichkeiten. Eine ist die, wie man es früher gemacht hat, per init. Du hast da ein Startscript liegen in /etc/init.d/homebridge, das mit dem Aufruf /etc/init.d/homebridge start oder ... stop oder ... status oder ... restart funktioniert. Es gibt nur einen einzigen Standard bei diesen Startscripten, nämlich keinen. Das Startscript, das man oben in deinem Beitrag sehen kann, hätte ich anders geschrieben, mein Kollege Ingo hätte es noch anders gemacht, und die drei Typen in Kansas, Taiwan und Wallawalla haben es anders gemacht. Von 150 weiteren Hansels ganz zu schweigen.


    Eine andere Möglichkeit ist viel standardisierter und moderner, nämlich das Starten und Stoppen per systemd. Da wird kein Script aufgerufen, dass man so oder anders schreiben kann, sondern eine standardisierte Konfigurationsdatei geschrieben, und das Starten oder Stoppen übernimmt dann der Systemdienst systemd. Der macht dann das alles und man muss es nicht mehr selber scripten wie bei init. Zum systemd gehört auch das Programm journalctl.


    Irgendein Dummchen hat sich dann aber leider gedacht, dass der systemd ja auch die Startscripte in /etc/init.d starten könnte, was eine saublöde Idee ist, und jetzt beginnt die Sache durcheinander zu kommen. Das ist bei dir der Fall, und es ist nicht deine Schuld, aber weil's gerade so schön unübersichtlich ist, schmierst du noch forever drauf, um mal richtig Randale zu machen.


    Jetzt haben wir also ein schönes Auto mit drei Lenkrädern, die sich gegenseitig beeinflussen. Sieht zwar mordsmäßig aus, aber die Karre fährt leider nicht mehr dahin, wo wir hin wollen. Ich schlage vor, wir schrauben zwei Lenkräder wieder ab.


    Ich empfehle den Start mit systemd. Du loggst dich jetzt als User pi ein und machst folgendes:


    Alles irgendwie anhalten:

    sudo systemctl stop homebridge

    sudo /etc/init.d/homebridge stop


    forever wegmachen:

    sudo npm uninstall forever -g


    Das init-startskript entfernen:

    sudo mv /etc/init.d/homebridge . (der Punkt muss da ans Ende)


    Eine systemd-Konfiguration erstellen:

    sudo nano /etc/systemd/system/homebridge.service


    Ein leerer Editor öffnet sich - hoffentlich. Dort einfügen:

    Abspeichern und dann:

    sudo systemctl daemon-reload

    sudo systemd enable homebridge


    Jetzt kommt der Augenblick der Wahrheit. Homebridge starten und gleichzeitig das Log anzeigen:


    sudo systemctl restart homebridge; sudo journalctl -fau homebridge


    Das sind zwei Befehle, die durch ein Semikolon getrennt sind. Man kann die auch einzeln und hintereinander eingeben. Die Anzeige des Logs wird mit ctrl-c abgebrochen.


    Was passiert jetzt?


    Stefan

  • Hi,


    vielen Dank erstmal für Deine Erklärung... ich poste mal, was auf die Befehle folgte:


    Zitat

    [email protected]:~ $ sudo systemd enable homebridge

    Excess arguments.

    Das sieht wirklich gut aus, meine ich... nur 2 Dinge verwundern mich:


    Zitat

    Dez 23 13:36:17 piVCCU homebridge[22000]: [23.12.2018, 13:36:17] Warning: skipping plugin found at '/usr/lib/node_modules/homebridge-homematic' since we already loaded the same plugin from '/usr/local/lib/node_modules/homebridge-homematic'.

    Wie kann das sein ?


    Zitat

    Dez 23 13:36:19 piVCCU homebridge[22000]: [23.12.2018, 13:36:19] Loading 0 accessories...

    Dez 23 13:36:19 piVCCU homebridge[22000]: Failed to find plugin to handle accessory HubiWZ

    Das Homebridge-harmony-Plugin habe ich mit npm uninstall versucht zu deinstallieren und auch gar nicht in der config.json eingebunden. Er ruft es wohl trotzdem auf.

  • [email protected]:~ $ sudo systemd enable homebridge

    Excess arguments.

    Zehnmal gelesen und immer noch falsch. Es muss heißen:

    sudo systemctl enable homebridge


    Ich mach das hier immer aus dem Kopf, und dann passieren mir solche Fehler.


    Das andere Problem ist ärgerlich. Die Plugins werden eigentlich nach /usr/local/lib/node_modules installiert. Bei dir sind aber auch welche in /usr/lib/node_modules. Das sollte nicht so sein, die Plugins sollten sich nur an einem Ort befinden.


    Das Dumme ist, das node an beiden Stellen sucht und an beiden Stellen fündig wird. Beim Deinstallieren des Harmony-Plugins verschwindet das auch, nur nicht an beiden Stellen. Also wird es von der anderen Stelle geladen. Versuch mal folgendes:


    (schwerer Vorschlaghammer raus, um die Fliege im Geschirrschrank zu erschlagen)


    cd /usr/lib

    sudo tar -cvf node_modules.tar node_modules/* && sudo rm -rf node_modules (schwere Action auf dem Bildschirm)

    sudo systemctl restart homebridge; sudo journalctl -fau homebridge


    Entweder zerfetzt das deine Homebridge oder es klappt. Möglicherweise musst du alle Plugins neu installieren.


    Im Gegensatz zum Geschirrschrank kann man das auch wieder rückgängig machen:


    cd /usr/lib

    sudo tar -xvf node_modules.tar && sudo rm -f node_modules.tar

    sudo systemctl restart homebridge; sudo journalctl -fau homebridge


    Wenn aber funktioniert, dann noch schnell aufräumen:

    sudo rm -f /usr/lib/node_modules.tar


    Stefan

  • Ich fürchte, es hat nicht funktioniert...



    Gibt es noch eine Möglichkeit ?


    Hatte zur Installation von homebridge folgendes Skript verwendet:

    https://raw.githubusercontent.…omebridge/xmlrpc/setup.sh | bash -


    Ich versuche, es jetzt mal rückgängig zu machen.

  • Ich glaube eher, das liegt an den Plugins. Die Homebridge startet, aber das netatmo-Plugin scheint nicht zu gehen.


    Stefan

  • Moin,


    Der Autostart funktioniert top.


    Das Weitere rückgängig gemacht, sodass homebridge wieder top läuft. Jetzt schlägt homebridge aber ja noch beim Harmony?Plugin trotz Deinstallation fehl. Das Plugin ist scheinbar in 2 Verzeichnissen installiert. Netatmo läuft prima. Homebridge ui x zeigt harmony nicht als installiert an. Es lässt sich auch nicht neu installieren.


    Kann man npm nicht sagen, es soll harmony in beiden Verzeichnissen deinstallieren?


    Ich würde sonst die config.json sichern und homebridge ggf. neu aufsetzen... nur, wie setze ich es völlig korrekt mit einem Verzeichnis auf? Hatte zuvor, wie iben erwähnt, ein Installationsskript gewählt, was scheinbar diesen Doppelverzeichnisfehler verursacht hat.


    Das ist derzeit das einzig verbliebene Homebridgeproblem.

  • Normalerweise wird nur ein einziges Verzeichnis angelegt.


    Was ich nie getestet habe, ist den Pfad zu node_modules zu verbiegen. Vielleicht hilft dir das ja. Ich würde das als User root versuchen:


    sudo su - (damit wirst du root)

    export NODE_PATH=/usr/lib/node_modules (das setzt den Pfad zu den node_modules, bis root sich wieder ausloggt)

    npm uninstall -g homebridge-harmony (hier den richtigen Pluginnamen angeben)

    exit (root loggt sich wieder aus)

    sudo systemctl restart homebridge (pi startet die homebridge)


    Klappt das?


    Stefan

  • Leider nein:


    Kann es eigentlich sein, dass mehrere homebridge-Instanzen laufen ?


    Könnte das homebridge deinstallieren, die beiden laufenden Plugins installieren und die jetzige Config.json einspielen.

    Nur, wie kann ich sicher sein, dass das System alle node_modules-Verzeichnisse löscht und welches Installationsskript kann man für homebridge bedenkenlos nutzen ?

  • Oha, füge ich harmony der config.json hinzu, startet homebridge auch nicht mehr...


    Dann plötzlich gibt es eine Kollision mit dem homematic-plugin. Lösche ich harmony aus der config.json, läuft alles prima. Ist das nicht verkorkst ?

  • Lies das: https://smartapfel.de/homebridge/homebridge-installieren/


    Mehrere Homebridge würden nicht starten können und mit einer Fehlermeldung abbrechen (EADDRINUSE, address in use).


    Du kannst natürlich die Verzeichnisse /usr/lib/node_modules und /usr/local/lib/node_modules löschen und dann node neu installieren und danach homebridge. Das würde sicherlich auch helfen.


    Achtung: diese Aktion lässt sich nicht rückgängig machen:

    sudo rm -rf  /usr/lib/node_modules

    sudo rm -rf  /usr/local/lib/node_modules


    Oder eine Neuinstallation auf einer frischen SD-Card.


    Stefan

  • Ich kann leider nicht die gesamte SD-Karte löschen, da sich dort nich piVCCU3 und pihole befinden.

    Würde lediglich homebridge neu aufsetzen wollen, was mir aber nicht ohne Weiteres möglich ist, da scheinbar manches quer installiert wurde.


    Was verwunderlich ist:

    Zitat

    [email protected]:/usr/lib/node_modules $ ls

    homebridge homebridge-config-ui-x homebridge-homematic npm

    [email protected]:/usr/lib/node_modules $ cd /usr/local/lib/node_modules

    [email protected]:/usr/local/lib/node_modules $ ls

    homebridge homebridge-homematic homebridge-netatmo npm

    Manches liegt im /usr/lib..., anderes im /usr/local/lib... alles davon funktioniert. Nur, das ominöse harmony-plugin liegt dort gar nicht... Und das steht auch nicht in der config.json. Verstehe nicht, wieso homebridge es bei jedem Start versucht zu laden.


    Gibt es Hoffnung, dass man homebridge sauber entfernen und neu aufsetzen kann im laufenden System ?


    Kann es eigentlich mehrere npm-Installationen geben ? Habe dort einen Verdacht.