homebridge-raspberrypi-remote

  • Ich hab folgenden Plugin installiert.


    config:




    Wenn Homebridge gestartet wird:

  • Ein bekannter Fehler des Plugins. Es sucht im Ordner /usr/lib/node_modules/homebridge-raspberrypi-remote/ nach dem Skript current_remote.sh innerhalb des Plugin-Ordners - dieses liegt (auch bei dir) aber wahrscheinlich hier: /usr/local/lib/node_modules/homebridge-raspberrypi-remote/current_temperature.sh.


    Leider ist der Pfad im Plugin fest vergeben. Ein Workaround wäre, die Datei current_temperature.sh dahin zu verschieben, wo das Plugin sie sucht. Aber vielleicht hat hier jemand noch ein bessere Idee…


    Gruß,

    Gerrit

  • Habe es selber nicht in Nutzung daher auch nicht getestet aber ändert den Pfad des gesuchten Skript doch einfach in der Index Datei des Plugins und ergänzt das /local dann sollte es passen.



    Zitat

    Ein bekannter Fehler des Plugins. Es sucht im Ordner /usr/lib/node_modules/homebridge-raspberrypi-remote/ nach dem Skript current_remote.sh innerhalb des Plugin-Ordners - dieses liegt (auch bei dir) aber wahrscheinlich hier: /usr/local/lib/node_modules/homebridge-raspberrypi-remote/current_temperature.sh.

    Fehler ist es eigentlich nicht, der Entwickler hat nur seine HB in usr/lib/node_modules installiert statt in usr/local/lib......;)

  • Ich würde es tatsächlich im Plugin-Code ändern. Dazu bearbeitet man die Datei /usr/lib/node_modules/homebridge-raspberrypi-remote/index.js.


    sudo nano /usr/local/lib/node_modules/homebridge-raspberrypi-remote/index.js


    In der Datei sucht man nach der Zeile exec('/usr/lib/node_modules/homebridge-raspberrypi-remote/current_temperature.sh', function (error, stdout, stderr) {. Sie kommt nur einmal darin vor, ziemlich am Ende des Scripts. Hier baut man nun den Pfad so um, dass er stimmt. Das sieht dann so aus:


    exec('/usr/local/lib/node_modules/homebridge-raspberrypi-remote/current_temperature.sh', function (error, stdout, stderr) {


    Nachteil dieser Vorgehensweise ist, dass beim nächsten Update des Plugins dieser Vorgang wiederholt werden muss.


    Der Vorschlag von Gerrit ist auch eine Lösung, allerdings würde ich es verlinken und nicht verschieben oder kopieren. Und zwar so:


    sudo mkdir /usr/lib/node_modules/

    cd /usr/lib/node_modules/

    sudo ln -s /usr/local/lib/node_modules/homebridge-raspberrypi-remote .

    cd


    Das ist stabiler und führt dazu, dass auch ein Update des Plugins nichts zerhämmert. Allerdings würde ich befürchten, dass homebridge das Plugin nun zweimal findet. Ich habe nichts von alldem, was ich hier beschrieben habe, ausprobiert und deshalb weiß ich es nicht genau.

  • Nastra "Fehler" war etwas plump formuliert. Nennen wir es einfach eine Schwäche?! 8o Die entsprechende Zeile direkt im Plugin zu ändern kam mir auch in den Sinn. Allerdings war ich heute morgen noch etwas schreibfaul. Schande über mein Haupt! :S


    sschuste Sehr elegant, der Lösungsansatz mit dem verlinken! 8):thumbup:


    Guten Rutsch euch allen,

    Gerrit

  • Ich habe es wie folgt gemacht:

    jedoch erscheint jetzt die Fehlermeldung:

  • /usr/lib/node_modules/homebridge-raspberrypi-remote/current_temperature.sh: Permission denied

    Ein sudo chmod +x /usr/lib/node_modules/homebridge-raspberrypi-remote/current_temperature.sh hilft vielleicht.

  • Das ist nur ein Hinweis.

  • Tach zusammen,


    habt ihr auch einen Lösungsansatz für folgenden Fehler? Geht dabei um den Rebootschalter

    der bei mir nicht funktioniert.


  • Failed to reboot system via logind: Interactive authentication required.
    Jan 09 15:03:33 HomebridgeOne homebridge[30961]: Failed to open initctl fifo: Keine Berechtigung

    Offenbar versucht ein User den Raspi zu rebooten und darf das nicht. Nach welcher Anleitung hast du homebridge installiert?

  • Offenbar versucht ein User den Raspi zu rebooten und darf das nicht. Nach welcher Anleitung hast du homebridge installiert?

    nach der von Smartapfel natürlich ;):thumbup:

  • nach der von Smartapfel natürlich

    Dann wird das so ersma nix. Der Homebridge-User darf aus Sicherheitsgründen nur sehr wenig, und ein Reboot des Raspis gehört schon mal gar nicht dazu. Dazu müssen die Berechtigungen aufgebohrt werden.


    Bevor ich das hier beschreibe, möchte ich doch zu gern wissen, wozu man einen Rebootschalter benötigt. Wahrscheinlich, um den Raspi zu rebooten, also muss die Frage lauten: warum will man eine Linux-Maschine rebooten? Mir fällt dazu nur ein einziger Grund ein, den ich hier mal in den eckigen Klammern angebe: [ ].


    Es gibt einen schönen Satz aus der Linux-Welt, der beschreibt Problemlösungen auf verschiedenen Betriebssystemen: On Linux, be root. On Windows, reboot. Und ich kenne nicht wenige Linux-Admins, die verdammt stolz auf die Uptime ihres Rechners sind. Mein Raspi sagt beispielsweise:



    Mein persönlicher, beruflicher Rekord lag bei 2001 Tagen auf einer Maschine in einem Rechenzentrum. Das ist exakt so gelaufen: Rechner gekauft, installiert, gebootet, knapp fünfeinhalb Jahre laufen lassen, ausgeschaltet, weggeworfen. Der Rechner wurde in seiner gesamten Laufzeit nicht einmal neu gestartet. Tat schon ein bisschen weh, ihn abzuschalten.


    Also, dann bauen wir mal einen schönen Rebootschalter, den wir mit unseren dicken, klebrigen Fingern immer dann versehentlich auslösen, wenn's grad am schönsten ist. Die Berechtigungen werden in /etc/sudoers.d/homebridge gesetzt.


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


    Im Editor steht schon was drin, nämlich

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


    Das muss erweitert werden durch den reboot-Befehl /sbin/reboot. Der wird hinten einfach angehängt, mit einem Komma vom Rest getrennt, so dass die Datei nun so aussieht:

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


    Das ist eine einzige Zeile! Abspeichern mit ctrl-x oder, wenn man einen Rechner der anderen benutzt, mit strg-x. Das Abspeichern gelingt nur dann, wenn die Datei korrekt ist. Dann testen: kann der homebridge-User den Raspi rebooten? Dazu muss man erstmal homebridge-User sein und man wird es mit:


    sudo su - homebridge


    Und dann: reboot.


    Klappt das, so wird es dann wohl auch per HomeKit gehen.

    Einmal editiert, zuletzt von sschuste ()

  • Danke für deine ausführliche Erklärung. Du hast mich dabei auf die Idee gebracht, dass ich auch nur die Homebridge mit dem Schalter neu starten kann und hab daher die Index.js dahingehend bearbeitet, dass nur der Service neu gestartet wird.

    Danke für deine Hilfe.

  • Hallo.


    Ich bin auch irrtümlicherweise bei der Installation von "Homebridge Raspberrypi Remote" davon ausgegangen, dass ich damit Homebridge aus der Ferne neu starten kann und nicht den ganzen RaspPI. Ja ich weiß lesen können hilft. Steht ja da.


    Natürlich möchte ich nur Homebridge neu starten können. Kannst du @Bananajoe86 hier beschreiben wie du die Index.js Datei dazu eingerichtet hast? Muss ich dennoch dazu immer noch, wie @sschuste in Beitrag 13 beschrieben hat, die Berechtigungen ändern?

  • Das ist schon soo lange her, woher soll man da noch wissen was man gemacht hat ;-).

    Aber wir kommen bestimmt ans Ziel.

    Die Index.js muss geändert werden. Darin kommt irgendwo folgende Zeile.


    exec('reboot', function (error, stdout, stderr) {


    exec('sudo systemctl restart homebridge', function (error, stdout, stderr) {


    die ich ersetzt habe durch meinen Reboot-Befehl (Homebridge-Anleitung von Smartapfel).


    Da du vermutlich mit deinem Homebridge-User kein sudo ausführen kannst musst du noch SSchustes Beitrag13 ausführen.


    Viel Glück beim ausprobieren :)

  • Ok danke. :)


    1 Stunde später. Nix ok.

    Ich habe die Index Datei NICHT geändert. Das war mir zu unübersichtlich, wo ich was zu was ändern sollte. Kann man auch als Angst beschreiben. Dann sollte es eben ein voller Reboot sein. Nicht UNIX like aber ok für mich.


    Dann der Anleitung von @sschuste gefolgt und den verlinkten Ordner angelegt.


    Dann die Reboot Berechtigungen erweitert wie beschrieben. Alles ok denke ich.


    Trotzdem massig Fehlermeldungen im Log file. Dann Temperaturausgabe auf "false" gesetzt. Dann hörten die Fehlermeldungen diesbezüglich auf. BTW: Natürlich warf das Logfile auch eine Beschwerde raus, dass das Remote PlugIn 2 mal installiert sei. Auch nicht schön. Wie vorher gesagt @sschuste.


    Aber weiterhin funktionierten seit der Remote PlugIn Installation alle meine anderen PlugIns nicht mehr bzw. wurden nicht mehr in Homekit erkannt.


    Das ist mir diese PlugIn nicht wert und so habe ich gelernt, wie man ein installiertes PlugIn wieder los wird. Auch was wert. Nun funktioniert alles wie vorher. :)

    2 Mal editiert, zuletzt von Rome ()