Homebridge geht einfach nicht

  • Du interpretierst Zeile 12 völlig richtig. Wie startest du denn homebridge?


    sudo systemctl restart homebridge; sudo journalctl -fau homebridge


    Alles richtig in /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 /var/homebridge
    
    # If you uncomment the following line, homebridge will log more
    # You can display this via systemd's journalctl: journalctl -f -u homebridge
    # DEBUG=*

    Stefan

  • Es schien mir so als Lag es daran, hab einfach nochmal neu reinkopiert, ich glaube das beim Kopieren das richige format des Textes nicht beibehlten wird, daran liegt es.

    Jedenfals hat sich jetzt der Schalter auf m IPhone aktualisiert nachdem ich den Code nochmal gescannt hatte. Es kommen abter trotzdem noch Fehlermeldungen

    a) Bei homebridge selbst

    Code
    -- Logs begin at Fri 2018-09-28 15:06:52 CEST. --
    Sep 28 22:07:12 raspberrypi homebridge[4345]:     ??????????????
    Sep 28 22:07:12 raspberrypi homebridge[4345]:
    Sep 28 22:07:12 raspberrypi homebridge[4345]: [2018-9-28 22:07:12] Homebridge is running on port 38309.
    Sep 29 17:56:28 raspberrypi homebridge[4345]: [2018-9-29 17:56:28] Got SIGTERM, shutting down Homebridge...
    Sep 29 17:56:28 raspberrypi systemd[1]: Stopping Node.js HomeKit Server...
    Sep 29 17:56:33 raspberrypi systemd[1]: homebridge.service: Main process exited, code=exited, status=143/n/a
    Sep 29 17:56:33 raspberrypi systemd[1]: Stopped Node.js HomeKit Server.
    Sep 29 17:56:33 raspberrypi systemd[1]: homebridge.service: Unit entered failed state.
    Sep 29 17:56:33 raspberrypi systemd[1]: homebridge.service: Failed with result 'exit-code'.

    und b) beim auslösen des Schalters also quasi durch das Plugin (der Schalter hat den Namen HTCP und ich habe den Befehl für on_cmd auf "sudo reboot" gesetzt, nur testhalber wie schonmal gesagt)

    Sieht so aus als hatte dann der User "Homebridge" nicht die Rechte um einen Reboot auszuführen. Reicht es da aus die Befehle aus deinem Beitrag, den du schonmal geteilt hast zu nutzen? und eine weitere Frage da es mich interresiert, was bedeutet "Kein TTY vorhanden und kein »askpass«-Programm angegeben" für was steht da TTY? LG Nils

  • Auf die Schnelle, weil ich weg muss: erweitere /etc/sudoers.d/homebridge und den Befehl /sbin/reboot, so dass die Datei dann so aussieht:


    Code
    homebridge ALL=(root) SETENV:NOPASSWD: /usr/local/bin/npm, /bin/systemctl restart homebridge, /bin/journalctl, /usr/local/bin/node, /sbin/reboot
  • danke für die schnelle Antwort noch. Es geht jetzt, allerdings ist das Problem das das homebridge-gpio-ledstrip plugin nicht zu instalieren geht nicht weg. Ich habe es 2 mal probiert, nix ändert sich. Falls da jmd eine Idee oder Lösung hat wäre ich sehr dankbar, da ich dieses Plugin mehr oder weniger als einziges benötige!

    Lg

  • Ich habe mal recherchiert und in einem anderen Forum noch Hife bekommen

    Zuerst muss man

    Code
     sudo apt install pigpio

    installieren

    Danach folgendes noch

    Code
       npm install pigpio

    da ich das ganze nach der Anleitung von sschuste gemacht habe, habe ich ja den extra Homebridge benutzer erstellt. Meine Frage nun

    wie ich das ganz in den (wenn ich den Fehler richtig verstehe) "package.json" Ordner bekommen. Falls ich das richtig verstanden habe, wenn nicht dann helft mir gerne!


    LG

  • wie ich das ganz in den (wenn ich den Fehler richtig verstehe) "package.json" Ordner bekommen. Falls ich das richtig verstanden habe, wenn nicht dann helft mir gerne!


    LG

    Da ist kein Fehler. Nur ein paar lästige Warnungen so wie "Schatz, es ist kalt, zieh dir einen Schal an". Hässlich ist ERROR oder FATAL. Aber WARN, pah!


    Aber da ist eine sehr geile Meldung auf dem Bildschirm: + [email protected]


    Stefan

  • Das Modul wurde installiert.

  • Das hört sich ja gut an, aber bei sudo npm install -g --unsafe-perm homebridge-gpio-ledstrip

    kommt immer noch diese Fehlermeldung...

  • Ich habe es jetzt nach nochmaligen neuaufsetzten und ein bisschen probieren zum laufen bekommen! :) Habe auch wie du schonmal sagtest

    das gemacht und trotzdem kommt immer dieser Fehler

    Dieses "Sorry, you don't have permission to run this program. Try running as root, e.g. precede the command with sudo. " macht mich ein bisschen stutzig... Hast du sschuste oder jmd anderes eine Idee was jetzt falsch ist?

    LG

  • Du hast den User homebridge der Gruppe gpio hinzugefügt und trotzdem geht's nicht. Ok, dass der jetzt dieser Gruppe angehört, soll uns egal sein. Lass ihn einfach mal, wo er ist.


    Dann gibt's jetzt nur noch wenige Optionen. Du solltest mal testen, was passiert, wenn die Homebridge nicht mehr mit eingeschränkten Rechten läuft. Viel mehr Rechte hätte die Bridge, wenn sie unter dem User pi gestartet wird und noch mehr, wenn sie unter dem User root gestartet wird. Diese Einstellung machst du in /etc/systemd/system/homebridge.service.


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


    Du erhältst folgende Konfiguration:

    Suche die Zeile User=homebridge und ersetze sie durch User=root. Dann speichere die Datei ab, indem du ctrl-x, dann y und dann die Entertaste drückst.


    Jetzt muss der systemd die Änderung lernen:


    sudo systemctl daemon-reload


    Und dann startest du die Homebridge erneut:


    sudo systemctl restart homebridge; sudo journalctl -fau homebridge


    Jetzt läuft die Homebridge mit root-Rechten. Klappt's damit? Wenn ja, klappt's auch, wenn du in /etc/systemd/system/homebridge.service die Einstellung User=pi verwendest? Falls du das testest, dann ändere erst die Schreib- und Leserechte für /var/homebridge, damit der User pi damit arbeiten kann, bevor du die Bridge neu startest: sudo chown -R pi /var/homebridge.


    Heiteres Raten von meiner Seite. Das ganze Leben ist ein Quiz.

    Gruß, Stefan

  • Vielen Danke, es läuft jetzt super!

    Ich habe das ganze mit

    ersetze sie durch User=root

    gemacht. Es bringt doch keinen Wirklichen unterschied ob root oder pi als Benutzer? Falls nicht dann werde ich nix verändern denn, Never touch a running system ;)

    LG

  • Dann mach es so. Wir müssen ja auch mal endlich weiterkommen hier ;). Dem gemeinen Linux-Administrator rollen sich derweil die Fußnägel auf: der Service läuft mit root-Rechten.


    Warum ist das so? Warum will der eine Linux-Administrator (ich) den Service nicht als root laufen lassen und der andere (du) doch? Das liegt am ewigen Spiel zwischen Sicherheit und Bequemlichkeit. Es ist immer sicherer, einen Service nicht mit root-Rechten zu versehen, und die hat er immer dann, wenn root ihn startet. Admins haben immer das Szenario vor Augen, das ein Service schlecht programmiert ist, und dass Mr. Evil Hacker das herausbekommen hat. Was passiert eigentlich, wenn man an den Homebridge-Port ein Word-Dokument schickt? Schmiert dann die Homebridge ab? Was passiert, wenn man die Homebridge so geschickt abstürzen lässt, dass sich dabei eine Shell auf dem Rechner von Mr. Evil Hacker öffnet?


    Ja, Mr. Evil Hacker hätte dann ein nettes Fenster auf deinem Rechner mit root-Rechten offen. Ein Fensterchen mit root-Rechten ist schon was Geiles. Man kann schicke Sniffer installieren, die den Traffic auf deinem Netzwerk protokollieren. Man kann den Raspi überhitzen. Man kann einfach mal alles löschen. Der Fantasie sind keine Grenzen gesetzt. Mr. Evil Hacker kann so etwas.


    Ok, aber wie kommt Mr. Evil Hacker in dein Netzwerk? Denn da müsste er schon sein, um überhaupt den Raspi angreifen zu können. Auch hier sind verschiedene Szenarios denkbar. Beispielsweise ist dein WLAN-Passwort eine Katastrophe. Sowas wie 123456 oder geheim (das ist übrigens das am öftesten benutzte Passwort in deutschsprachigen Ländern). Oder du hast eine Cam, auf die du von außen zugreifen willst. Dazu musst du deine Firewall öffnen. Es gibt so viele Berichte über kaputte Cam-Software. Von der Cam zum Raspi ist es nur ein Katzensprung.


    Ich bin jetzt seit fast 30 Jahren Unix-Admin und ja, ich hatte schon Gäste, und ja, die haben auch ordentlichen Schaden verursacht, und ja, die waren hundertmal besser als ich und ja, ich war zu doof. Und was hab ich schon Passwörter geklaut, weil andere zu doof waren. Naja, lange her, da gab's noch keinen echten Cyber-Crime und schon gar keine Cyber-Polizei und über Cyber-Anwälte schweigen wir mal ganz. Die hätten nur lange Gesichter gemacht und kein Wort kapiert.


    Dem gegenüber steht die Bequemlichkeit. Hey, das funzt jetzt! Das lassen wir so. Du kannst mir glauben, wie sehr ich das nachvollziehen kann. Wenn also Mr. Evil Hacker nicht in dein Netzwerk eindringen kann, dann wird's schon unmöglich für ihn, deine Homebridge zu attackieren. Also immer schön täglich die WLAN-Passwörter wechseln... warte mal, das ist viel zu unbequem. Das lassen wir lieber. Aber sicher wär's schon. Wer macht das schon. Ich jedenfalls nicht.


    Inzwischen ist es ja möglich, WLAN-Passwörter von einem zum nächsten Handy weiterzugeben, ohne sie zu kennen. Lass mich einmal in dein Netzwerk, und wenige Minuten später können das auch meine Kumpels. Du wirst dabei gar nicht gefragt. OK, du hast jetzt verstanden, dass du mich besser nicht in dein Netzwerk lässt, sondern nur deine Kinder, die ihre Handys seit Jahren besser bedienen kann als du es jemals könntest. Dann kommen eben deren Kumpels in dein Netz.


    Gut, genug der Schreckensverbreitung. Es ist immer eine Frage der Abwägung. Jetzt lass dein Setup erstmal so und frustfrei laufen. Ich versuche irgendwann mal, mich mit GPIO zu beschäftigen und vielleicht bekomme ich es ja hin, dass die Rechte wieder eingeschränkt werden können. Ich hab in der Diskussion mit dir jedenfalls viel gelernt. Merci dafür :thumbup:.


    Stefan

  • AHA. Ja das macht Sinn, ich dachte das jmd, der solche Fähigkeiten hat sich nicht für ein einfachen Raspi interessiert. Ich werde die Tage nochmal auf einer anderen SD-Karte das ganze probieren mit dem User Pi.


    Eine Frage habe ich noch...

    Wenn ich das richtig verstehe, läuft homebridge als Dienst welcher sich von selbst startet. Ist es möglich, eine LED direkt beim beginn eines reboot/normalen boot leuchten zu lassen, bis Homebridge komplett gestartet hat bzw. auf dem IPhone sichtbar ist? Wenn ja kannst du mir ein Tipp geben oder erklären wie ich das realisieren kann?

    LG



    (also eine LED am GPIO nicht die die schon auf dem Pi drauf sind)

  • Wenn ich das richtig verstehe, läuft homebridge als Dienst welcher sich von selbst startet.

    Das verstehst du völlig richtig.


    Deine Frage kann ich nicht beantworten. Von Hardware weiß ich immer nur, dass es nächstes Jahr bessere gibt. Wenn ich wissen will, wieviel RAM mein Mac hat, dann rufe ich bei Apple an und die sagen dann: "ausreichend".


    Wenn es ein Programm auf dem Raspi gäbe, mit dem man die LED ein und ausschalten kann, dann könnte man in der systemd-Konfiguration in /etc/systemd/system/homebridge.service mit ExecStartPre= und ExecStartPost= vielleicht was reißen. Würde dann so aussehen, wenn es so etwas wie ein Programm namens /usr/local/bin/led gäbe:

    Stefan

  • Ok ich glaube zu verstehen wie das gemeint ist.



    Programm namens /usr/local/bin/led

    was muss das dann für ein Programm sein? Um mal mit meinen Laienhaften worten zu fragen, kann das ein Pythonscript sein, welches dann die LED aktiviert oder wie muss ich das sehen?

    LG

  • Jetzt läuft die Homebridge mit root-Rechten. Klappt's damit? Wenn ja, klappt's auch, wenn du in /etc/systemd/system/homebridge.service die Einstellung User=pi verwendest? Falls du das testest, dann ändere erst die Schreib- und Leserechte für /var/homebridge, damit der User pi damit arbeiten kann, bevor du die Bridge neu startest: sudo chown -R pi /var/homebridge.

    Ok habe es probiert, allerdings kam dann wieder die Meldung, dass die root rechte fehlten. Ich werde es jetzt mit root lasse, auch wenn du mir erklärt hast warum man das nicht söllte, aber für meine Anwendung mit LED an aus und bisschen Farbe ändern(nix mit Cam außerhlab des Netzwerkes etc. ) ist mir das Risiko nicht zu hoch und wenn doch dann muss ich wohl damit leben.

  • Ok habe es probiert, allerdings kam dann wieder die Meldung, dass die root rechte fehlten. Ich werde es jetzt mit root lasse, auch wenn du mir erklärt hast warum man das nicht söllte, aber für meine Anwendung mit LED an aus und bisschen Farbe ändern(nix mit Cam außerhlab des Netzwerkes etc. ) ist mir das Risiko nicht zu hoch und wenn doch dann muss ich wohl damit leben.

    Genau. Lass es unter root laufen, unser Homebridge-Gebastel soll ja keinem Selbstzweck dienen. Pragmatismus geht jetzt mal vor :thumbup:. Danke für den Test mit pi.


    Stefan

  • Keine Ursache. Leider geht es mit den Fehlern weiter.

    Ich habe schonmal nach" homebridge same UUID" etc. gesucht. Da stand etwas mit einem Ordner löschen, das klang aber alles noch schwammig und unsicher. Wie muss ich es richtig machen?



    Der Fehler ist erst entstanden, als ich ein weiteres Plugin hinzugefügt habe. Lösche ich das Plugin von der /var/homebridge/config.json Datei, so geht die Bridge wieder. Wie kann ich das Problem lösen? LG

  • Wahrscheinlich war die Rede vom persist-Verzeichnis. Bei dir ist das /var/homebridge/persist.


    Achtung: Löschen von irgendeinem Zeugs kann einem den ganzen Tag versauen. Daher immer an ein Backup denken. Und daher erstmal die folgenden Gedanken lesen und dann handeln. Bitte beachte, dass du nur dann etwas löschen solltest, wenn die Homebridge nicht läuft, also muss sie vorher angehalten werden:


    sudo systemctl stop homebridge


    Löschen würdest du das Verzeichnis /var/homebridge/persist normalerweise mit dem Befehl

    sudo rm -rf /var/homebridge/persist


    Dann ist es weg. Weg wäre es aber auch, wenn du es nicht löscht, sondern einfach umbenennst. Das ist die sichere Methode, denn dann existiert es und sein Inhalt immer noch, halt unter einem anderen Namen (und das ist dann dein Backup).


    Das Verzeichnis /var/homebridge/persist umbenennen in /var/homebridge/persist.bak

    sudo mv /var/homebridge/persist /var/homebridge/persist.bak


    Beim Start von Homebridge wird das fehlende Verzeichnis und etwaiger Inhalt erneut angelegt. Läuft alles wie gewünscht, dann bist du an dieser Stelle fertig. Wenn nicht, solltest du den Urzustand wieder herstellen:


    sudo systemctl stop homebridge

    sudo rm -rf /var/homebridge/persist

    sudo mv /var/homebridge/persist.bak  /var/homebridge/persist


    Das Ganze würde ich erstmal versuchen ohne das neue Plugin.


    Stefan