Beiträge von sschuste

    Was ich n un benötige, wäre ein Plugin, mit dem ich eben C bzw. C++ Scripte die ich bereits geschrieben habe ausführen kann. Ich bin vorhin beim durchsuchen des Forums auf einen älteren Beitrag aus dem Jahr 2017 gestoßen. Bash Script in Homebridge ausführen. Habe mir das auch mal angeschaut. Allerdings laut Beschreibung ist es nicht das richtige.

    Doch, das ist es. Damit kann man alles aufrufen, was man sonst manuell auf der Shell aufrufen kann.


    Stefan

    Wer seiner Weboberfläche ein Terminal verpassen will, tut folgendes:


    sudo nano /etc/default/homebridge


    und hängt unten zwei Zeilen dran:

    # To enable web terminals via homebridge-config-ui-x uncomment the following line

    HOMEBRIDGE_CONFIG_UI_TERMINAL=1


    Sieht dann so aus (Achtung: meine Datei weicht von derjenigen, die die Forenanleitung vorgibt, ab. Ich hab sie für meine Installation noch ein wenig erweitert, für das Terminal sind nur die beiden untersten Zeilen wichtig):


    Abspeichern und dann das Plugin homebridge-config-ui-x neu starten. Wer es standalone laufen hat mit: sudo systemctl restart homebridge-config-ui-x. Alle anderen: sudo systemctl restart homebridge.


    Wenn man sich dann in die Weboberfläche einloggt, findet man ganz rechts im Menü mit den drei vertikalen Punkten den Menüpunkt "Terminal". Ich sag's gleich: viel kann man damit nicht anfangen, aber für die Verspielten unter uns ist es natürlich ein Muss 8o


    Stefan

    Interessant, das wusste ich noch nicht. Du hast recht: homebridge-config-ui-x setzt die Rechte zurück auf den User, unter dem homebridge läuft.


    Wer seine Homebridge nach der Forenanleitung installiert hat, findet die config.json in /var/homebridge:


    ls -l /var/homebridge/config.json

    -rw-r--r-- 1 homebridge homebridge 13092 Apr 19 20:21 config.json


    Hier kann man sehen, dass die Datei dem User homebridge gehört, und ganz links sieht man die Zugriffsrechte:

    - rw- r-- r--. Das Minus ganz links bedeutet, dass hier eine Datei zu sehen ist (bei einem Verzeichnis stünde dort ein d). Die Dreiergruppe danach (rw-) bedeutet, dass der User homebridge die Datei lesen (r) und schreiben (w) darf, aber nicht ausführen (was man mit einer Datei ja eh nicht machen kann, aber ansonsten stünde dort anstatt des Minuszeichens ein x). Die nächste Dreiergruppe (r--) besagt, dass Mitglieder der Gruppe homebridge die Datei lesen, aber nicht schreiben und nicht ausführen können (normalerweise wurscht, weil die Gruppe homebridge hat nur ein Mitglied, und das ist der User homebridge). Die letzte Dreiergruppe rechts (r--) sagt, dass alle anderen User auf dem Computer die Datei lesen, aber nicht schreiben und nicht ausführen können.


    So. Der User pi darf daher die Datei /var/homebridge/config.json nur lesen, aber nicht schreiben. Wenn er das will, muss er das mit Rootrechten tun, auf der Shell also ein sudo vor den Schreibbefehl setzen. Das geht mit FileZilla leider nicht.


    Ändert man den Besitzer der Datei von User homebridge auf pi, dann kann man mit FileZilla schreiben, aber leider setzt homebridge-config-ui-x alles wieder zurück, was ich außerordentlich löblich finde. Guter Programmierstil, aber schlecht für dich.


    Ich würde jetzt den User pi der Gruppe homebridge hinzuzufügen und die Schreibrechte von /var/homebridge/config.json so ändern, dass die Gruppe homebridge auch dahin schreiben darf, also auf von -rw-r--r-- auf -rw-rw-r--. Ja, sieht aus wie ein Morsecode.


    Den User pi der Gruppe homebridge hinzufügen:

    sudo usermod -a -G homebridge pi


    Die Datei /var/homebridge/config.json für die Gruppe homebridge schreibbar machen:

    sudo chmod g+w /var/homebridge/config.json


    ls -l /var/homebridge/config.json

    -rw-rw-r-- 1 homebridge homebridge 13092 Apr 19 20:22 config.json


    Jetzt sollte funktionieren, was du gern machen möchtest. Theoretisch, ich hab's nicht ausprobiert. Zumindest habe ich beim Testen gesehen, dass homebridge-config-ui-x diese Änderung nicht rückgängig macht.


    Stefan

    Die Verwaltung der IP-Adressen wird auf dem DHCP-Server vorgenommen. Der läuft nahezu immer auf dem Router, kann aber auch einem Pi-Hole oder sonstwo eingerichtet sein. Aber wahrscheinlich ist es der Router. Dort müsste man die Adresse löschen, falls so etwas überhaupt geht.


    Stefan

    Die auth.json ist eine leere Datei mit 0 kb. ?? weiß nicht mehr weiter.

    Mach was rein. Dann passt's wieder. Entweder den Inhalt einer anderen auth.json oder du löscht sie einfach und setzt damit homebridge-config-ui-x auf den Start zurück. Soll heißen, der Login in die Weboberfläche geht dann wieder mit Username admin und Passwort admin.


    Löschen (Achtung: es gibt keinen Undo-Button!):

    sudo rm /var/homebridge-cal/auth.json


    Kopieren (Achtung: es gibt keinen Undo-Button!):

    sudo cp /var/homebridge-andererInstanzName/auth.json /var/homebridge-cal/auth.json


    Stefan

    wenn die HB nach deiner Anleitung aufgesetzt wurde - müsste Sie ja ala "Crownjob" nach einen Absturz etc. sich selber wieder neu starten

    Das sollte sie tun. Wenn dir aber der ganze Rechner einfriert, dann hilft dir das auch nicht mehr.


    Wenn es ein HW Problem ist muss ich das Ding zurückschicken, nur wie stelle ich das fest ?

    gibt es ein Prüfprogramm für die Platinen ?

    Mit Hardware kenne ich mich dahingehend aus, dass ich weiß, wie man sie ein- und wieder ausschaltet. Möglicherweise findest du Hinweise in den Logs /var/log/message, /var/log/syslog oder mit dem Befehl dmesg. Und schau mal hier rein: https://www.gieseke-buch.de/ra…g-zur-ueberwachung-nutzen


    Stefan

    gibt es einen Linux Befehl womit ich das umgehen kann? so das die Banane sich nicht von allein ausschalten darf ?

    Offenbar schmiert dein Raspi ab komplett ab und bleibt stehen. Passiert bei kaputter Hardware, vollem Speicher, heißgelaufenem Prozessor und bei weiteren 287 Problemen. Mir ist kein Befehl bekannt, der das verhindern würde. Wär mal nett, wenn das jemand programmieren würde:


    run-forever --even-if-it-burns --ignore-system-crashs --without-electrical-power oder so.


    Stefan

    Das geht irgendwie nur bei Google. Bei mir jedenfalls geht's nicht. Was dagegen sehr gut funktionierte, war die Deinstallation von homebridge-wol.


    sudo npm uninstall -g --unsafe-perm homebridge-wol (ein Träumchen!)


    Ich habe meine Homebridge nach der Forenanleitung installiert. Daher bezieht sich die folgende Vorgehensweise auf die User und Pfade, die dort verwendet werden.


    Ich habe mir so beholfen: der Befehl pmset sleepnow bringt einen Mac zum Schlafen. Der Befehl caffeinate -u -t 1 weckt ihn wieder auf. Beide Befehle müssen auf dem Mac ausgeführt werden. Zumindest den ersten kannst du ausprobieren: gibst du ihn im Terminal auf dem Mac ein, wird der Bildschirm schwarz. Den zweiten kannst du nicht eingeben, weil der Bildschirm des Mac - nun ja - schwarz ist.


    Nach der Wiedererweckung des Macs habe ich einen neuen User auf dem Mac angelegt, den ich homebridge genannt habe (mittels Systemeinstellungen - Benutzer & Gruppen). Dann habe ich im Terminal den Befehl sudo su - homebridge eingegeben, um unter seinem Namen zwei Shellskripte anzulegen.


    Das erste: nano sleepmac.sh

    Bash
    #!/bin/bash
    pmset sleepnow


    und das zweite: nano wakemac.sh

    Bash
    #!/bin/bash
    echo "Waking up..."
    caffeinate -u -t 1


    Die Skripte habe ich ausführbar gemacht: chmod +x sleepmac.sh wakemac.sh. Dann habe ich mich wieder ausgeloggt mit exit.


    Da der homebridge-User von mir keine Adminrechte bekommen hat (der hat sogar die Kindersicherung eingeschaltet und darf nicht mal seinen Kalender aufrufen), darf er den Mac nicht schlafen legen. Also habe ich eine sudoers-Datei angelegt, die ihm genau das und nur das erlaubt: sudo visudo -f /etc/sudoers.d/homebrigde mit diesem Inhalt:


    Code
    homebridge ALL = NOPASSWD: /Users/homebridge/sleepmac.sh


    Dann habe ich das getestet, in dem ich mich auf dem Raspi eingeloggt habe und dort zum User homebridge gewechselt habe: sudo su - homebridge. Von dort aus habe ich dann die beiden Shellskripte auf dem Mac (192.168.1.20) ausgeführt:


    ssh [email protected] sudo -n /Users/homebridge/sleepmac.sh && sleep 5 && ssh [email protected] /Users/homebridge/wakemac.sh


    Das sind drei Befehle: der erste legt den Mac schlafen, der zweite wartet 5 Sekunden und der dritte weckt den Mac wieder auf. Danach habe ich mich um das Problem gekümmert, dass ich ja immer noch ein Passwort eingeben muss, um die Befehle auf dem Mac auszuführen (deshalb ist der Mac nämlich nicht wieder nach 5 Sekunden aufgewacht). Dazu habe ich ein ssh-Schlüsselpaar erstellt: ssh-keygen und habe alle Fragen einfach mit der Entertaste beantwortet. Einen der beiden Schlüssel habe ich auf den Mac kopiert: ssh-copy-id [email protected] und die Befehle erneut ausgeführt. Diesmal wollte niemand ein Passwort von mir wissen und der Mac wachte wieder auf.


    So, dann zum Finale: mittels des Plugins homebridge-cmd kann man nun die Befehle in homebridge ausführen:

    Code
    "accessories": [
      {
        "accessory": "CMD",
        "name": "iMac sleep",
        "on_cmd": "ssh [email protected] sudo -n /Users/homebridge/sleepmac.sh",
        "off_cmd": "ssh [email protected] /Users/homebridge/wakemac.sh"
      }
    ]


    Die obige Konfiguration in config.json ist nur ein Beispiel. Ich selbst verwende das Plugin gar nicht, sondern homebridge-cmdtrigger. Und es gibt noch unzählige andere Command-Plugins. Es soll nur verdeutlichen, wie die Befehle in homebridge ausgeführt werden können. Welches Plugin du am Ende benutzt, bleibt dann dir überlassen.


    Du siehst, das war alles ganz einfach X/. Nur mal so als sachdienlicher Hinweis.


    Disclaimer: ich habe diese Anleitung aus dem Kopf geschrieben und den größten Teil beim Schreiben hier nicht ausprobiert. Möglicherweise funktioniert es nicht so wie beschrieben, aber es kommt der Sache schon sehr, sehr nah.


    Stefan

    Der Fehler ist keiner:

    Apr 17 18:46:52 raspberrypi systemd[1]: homebridge.service: Main process exited, code=exited, status=143/n/a


    wird immer angezeigt beim Restart von Homebridge. Für mich sieht das alles gut aus.


    Stefan