Beiträge von sschuste

    Theoretisch kann es auch noch ein /home/pi/node_modules geben. Plugins langen dort, wenn man ein sudo npm install homebridge-plugin eingibt anstatt eines sudo npm install -g homebridge-plugin.


    Du kannst mal den Raspi durchsuchen mit:

    sudo find / -name "*harmony*"


    Stefan

    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 glaube, die langlebigste Linux-Schüssel, die ich je betrieben habe, hatte eine Uptime von 2000 Tagen. Das heißt, sie ist fast fünfeinhalb Jahre nicht neu gestartet worden. Natürlich ist es am einfachsten, die Kiste neu zu booten, um die darauf laufende Software neu zu starten :D


    Stefan

    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

    Das ist einfach. Nach der Anleitung ist dem User homebridge der reboot nicht erlaubt. Trage hier ein:


    sudo visudo -f /etc/sudoers.d/homebridge


    Code
    homebridge ALL=(root) SETENV:NOPASSWD: /usr/local/bin/npm, /bin/systemctl restart homebridge, /bin/journalctl, /usr/local/bin/node, /sbin/reboot

    (einfach hinten anhängen, Vorsicht, das ist nur eine Zeile) und starte homebridge neu.


    Stefan

    pi@piVCCU:~ $ 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

    Nein, das ist nicht normal. Du kannst es wahrscheinlich so lassen, aber es ist ziemlich unschön. Du hast völlig recht mit der Angst, 80% der Plugins zu löschen. Wäre ich an deiner Stelle, würde ich 100% der Plugins löschen und die, die ich benötige, neu installieren.


    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

    Das weiß ich nicht. Ich setze nur eine Instanz bei mir ein. Ich kann mir nicht vorstellen, dass man mehrere Pins angeben kann. Ich glaube daher, dass jede Instanz ein eigenes alexa-homebridge benötigt.


    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

    Danke für die Zusammenfassung :thumbup:


    Ich brauche eine Fernbedienung, die Rolling Codes kann, weil ich damit meinen Philips Screeneo HDP2510 steuern könnte. Die Harmony-Datenbank enthält ihn zwar, aber funktioniert hat das nicht, was meinen Frustlevel extrem gehoben hat. Dazu kam die App, deren Bedienung ich überhaupt nicht kapiert habe. Seitdem verwende ich den Harmony Hub nur noch als Türstopper.


    Der Preis des Neeo Brain ist allerdings völlig indiskutabel, auch wenn die behaupten, meinen Projektor steuern zu können.


    Stefan

    Meine gut funktionierende Konfiguration sieht so aus:


    Die beiden Pins müssen die gleichen sein, ansonsten sieht das gut aus bei dir.


    Bitte beachte, dass homebridge mit dem Parameter -I (großes i) gestartet werden muss, damit homebridge-alexa funktioniert.


    Stefan

    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

    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