Beiträge von sschuste

    Es hilft uns ungemein zu verstehen, was du da treibst, wenn du uns beschreibst, was du da treibst. Womit hast du Homebridge installiert? Mit welchen Mitteln hast du Homebridge konfiguriert? Was hast du getan, bevor die Homebridge unerreichbar wurde?


    Stefan

    Das arbeiten auf der co fig.jon. Fällt mir mit meinen Augen recht schwer, da ja alles stimmen muss.

    Das fällt wohl jedem schwer. Meine Tipps zum unbeschwerten JSON hacken:


    • Immer schön Ordnung halten mit Einrücken und Ausrücken. Das macht das ganze übersichtlicher und du findest Fehler leichter.
    • Einen guten Editor nehmen. Auf dem Raspi findest du nur nano oder meinen Liebling vim, aber die können auch ordentlich nerven. Tatsächlich benutze ich inzwischen den Editor von homebridge-config-ui-x für die Konfiguration. Der ist gut gemacht, stellt config.json übersichtlich dar und mault bei Fehlern.
    • Die Konfiguration bei jsonlint.com checken, wenn's mal richtig hakt.
    • Die Konfiguration von Firefox darstellen lassen.


    Viel Spaß,

    Stefan

    Bei mir läuft's so ähnlich - Hue-Zeugs und ein paar EVE Energy. Letztere sind auch nicht Alexa-fähig und sie schalten langsam. Ich habe eine von den Energys wie beschrieben an Alexa angeschlossen und das funktioniert ganz wunderbar. Wenn du einen ganz einfachen Schalter ohne weitere Funktionen benötigst, dann versuch's doch mal mit homebridge-fakebulb.


    Probleme gehen meist nicht von der Homebridge aus. Die Homebridge bekommt ja von sich selber ein Signal, nämlich: homebridge-alexa schaltet homebridge-automation-switch oder was auch immer. Das geht immer schnell. Ein Plugin triggert ein anderes Plugin. Das passiert alles auf deinem Raspi. Auch schaltet der Raspi keinesfalls deine Flare an. Das tut HomeKit von irgendeinem deiner Apple-Geräte. Es kann also keine Verzögerungsprobleme zwischen der Flare und der Homebridge auf dem Raspi geben.


    Geschaltet wird deine Flare immer von HomeKit. Mal versucht, mit der Alexa-App deinen Dummy zu schalten? Was passiert dann?


    Stefan

    Den homebridge-delay-switch habe ich noch nicht probiert. aber wieso sollte ich den switch delayen?

    Nee, das wäre der homebridge-delayed-switch :D


    Der Delay-Switch genau wie der Automation-Switch sind Schalter, die nach dem Einschalten wieder ausgehen. Ich brauche das für für Szenen wie diese: wenn ich aus der Wohnung gehe, werfe ich Alexa ein "ich verlasse das Haus" zu. Damit wird das Licht ausgeschaltet und die Heizung heruntergestellt. Dazu stellt Alexa den Schalter Niemand zuhause auf ein. Ich frage diese Statusänderung ab: wenn der Schalter Niemand zuhause auf ein gestellt wird, dann soll HomeKit die Szene "Haus verlassen" aufrufen. Das klappt bei mir immer.


    Leider gehöre ich zu der Gruppe von Zerstreuten, die immer etwas vergessen und immer noch mal in die Wohnung zurück müssen. Brille vergessen, Handy vergessen, Kopf vergessen, denk dir was aus: ich vergesse es dann ab sofort. Ich husch also rein, schalte das Licht im Wohnzimmer ein, schnapp mir, was ich brauche, und wiederhole den Kampfruf "Alexa, ich verlasse das Haus", denn ich will ja, dass das Licht, das ich gerade eingeschaltet habe, wieder ausgeschaltet wird.


    Das funktioniert aber nicht mehr. Der Schalter, den Alexa beim ersten Verlassen der Wohnung eingeschaltet hat, steht immer noch auf ein. Meine Automation reagiert aber nur auf die Statusänderung des Schalters von aus zu ein. Der Schalter wird von Alexa also noch mal auf ein gesetzt. Eine Statusänderung findet nicht statt. Die Automation läuft nicht ab. Also habe ich einen Schalter gebraucht, der nach dem Einschalten gleich wieder ausgeht, sozusagen auf den Default-Wert gesetzt wird.


    Sieht so aus:

    Code
    {
       "accessory": "DelaySwitch",
       "name": "Niemand zuhause",
       "delay": 100,
       "disableSensor": true
    },

    Stefan

    Code
    Error when trying to open pin 12
    gpio-admin: could not flush data to /sys/class/gpio/export: Device or resource busy

    Damit kenne ich mich gar nicht aus. Aber Google weiß was. Ich habe hier https://github.com/dubocr/homebridge-gpio-device etwas gefunden:


    This message is related to a bug in the quick2wire-gpio-admin library, where if you attempt to export something that's already exported, gpio-admin crashed.

    The simplest solution is to reboot.


    Mal ins Blaue. Versuchs mal mit sudo reboot. Aber was weiß ich. Mit dem GPIO-Kram hab ich mich noch nicht auseinandergesetzt.


    Stefan

    Zwischenfrage: Wie kann ich die Rechte so vergeben das es immer root ist?

    Editiere /etc/systemd/system/homebridge.service:


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


    Suche die Zeile User=homebridge und ersetze sie durch die ZeileUser=root


    Abspeichern mit ctrl-x. Dann:


    sudo systemctl daemon-reload

    sudo systemctl restart homebridge


    Ab jetzt wird die Homebridge immer mit root-Rechten gestartet, auch nach einem Reboot.


    Stefan

    Habe die Befehel soweit eingegeben, es erscheint nun aber eine andere Fehlermeldung (siehe unten)

    Ja, das liegt an meiner Schläue, dir wesentliche Informationen vorzuenthalten. EADDRINUSE :::51826 heißt nichts anderes, als das homebridge schon läuft und du willst sie noch mal starten: address in use on Port 51826. Und, ja, natürlich läuft da schon eine Homebridge, nämlich deine normale. Die musst du erstmal anhalten mit


    sudo systemctl stop homebridge


    und dann kannst du das Experiment fortsetzen. Nachdem du zu Erkenntnissen gelangt bist, kannst du deine normale Homebridge wieder starten mit


    sudo systemctl start homebridge


    Sorry für mein Versäumnis, das zu erwähnen.


    Nebenbeies Partywissen, um im nächsten Club die Homebridge-Admins zu verblüffen: Man kann schon mehrere Homebridges auf einem einzigen Computer gleichzeitig laufen lassen, aber dann müssen sie auf unterschiedlichen Ports laufen, beispielsweise die eine auf Port 51826 und die andere auf Port 23009. Konfiguriert wird das in config.json. Dort findest du bei dir auch die ominöse Zahl 51826 und dort müsste sie geändert werden. Hat aber jetzt nix mit deinem Problem zu tun und schon klar, dass du das jetzt auch nicht tun musst.


    Stefan

    Habe mich jetzt mal bei meiner Icloud abgemeldet und neu angemeldet. Ich mag mich täuschen aber es reagiert jetzt in der Home schneller und flüssiger. hmm mag das sein? Temperatur wird auch angezeigt. Hat geklappt

    Das mag sein. Die Geheimnisse von HomeKit sind unergründlich. Dass du das mit der Temperatur hinbekommen hast, war jetzt ja eh ein Klacks für dich. Ich meine, du hast gleich mit heavy shit angefangen und bist da nun weiter als ich: Bluetooth hab ich jedenfalls auf dem Raspi noch nicht im Griff.


    Stefan

    Meine Anleitung sieht etwas striktere Rechte für den User homebridge vor. Möglicherweise ist das das Problem.


    Das Geheimnis liegt möglicherweise in /etc/sudoers/homebridge. Dort habe ich festgelegt, dass der User homebridge nur sehr wenige Befehle mit root-Rechten ausführen darf. Laut meiner Anleitung darf der nur die Befehle /usr/local/bin/npm, /bin/systemctl restart homebridge, /bin/journalctl und /usr/local/bin/node mit erweiterten Rechten aufrufen. Die Fehlermeldung sagt aber aus: gpio-admin: Permission denied, und gpio-admin gehört nicht zu der Liste der "erlaubten" Programme.


    Liegt es also daran? Das kann man testen, indem man nicht die Homebridge nicht vom User homebridge starten lässt, sondern vom User root.


    Als erstes würde ich das "manuell" testen. Und zwar mit:

    sudo -i(wechselt in den root-Modus)

    homebridge -U /var/homebridge(startet homebridge mit der korrekten config.json in /var/homebridge)


    Die Homebridge wird nun im Vordergrund gestartet. Das bedeutet, wenn man das Terminalfenster schließt, wird auch der Prozess homebridge beendet. Dafür spuckt einem homebridge das Log gleich ins Terminalfenster aus. Zum Testen reicht das aber: besteht der Fehler weiterhin? Der User root darf ja alles, und ein Permission denied sollte nicht auftauchen.


    Stefan

    Aber so auf den allerersten Blick würde ich behaupten DU hast lediglich den user "$USER" als user hinzugefügt, oder?! ^^

    Wie so oft täuscht der erste Blick :D


    Linux, Unix und sogar Windows arbeiten mit sogenannten Environment-Variablen. In diesen Variablen stehen Werte drin, die das Betriebssystem oder Programme oder auch der Anwender benötigen oder benötigen könnten.


    Diese Variablen kann man sich mit dem Befehl env anzeigen lassen. Da kommt dann unter anderem so illustres Zeugs wie


    Code
    USER=pi
    PWD=/var/homebridge
    HOME=/home/pi
    SSH_CLIENT=192.168.1.20 55195 22
    MAIL=/var/mail/pi
    TERM=xterm-256color
    SHELL=/bin/bash


    heraus. Hier kann man beispielsweise sehen, dass der login name des aktuell eingeloggten Users pi lautet, dass sein Homeverzeichnis /home/pi ist, das der Befehl env im processing working directory PWD /var/homebridge aufgerufen wurde und noch ganz andere Sachen.


    Mit dem Befehl echo kann man sich die Inhalte auch einzeln zeigen lassen. Um den Wert einer Variablen abfragen zu können, muss dem Variablennamen ein $ vorangestellt werden.


    Code
    pi@raspberrypi:~ $ echo $USER
    pi


    Wenn man also als pi eingeloggt ist, ist deshalb ein sudo adduser pi gpio das gleiche wie ein sudo adduser $USER gpio und ein sudo adduser $pi gpio erzeugt nur eine Fehlermeldung, weil die es die Variable $pi nicht gibt und daher ein NULL-Wert zurückgegeben wird.


    Man kann auch eigene Werte in das Environment setzen:


    export JESUS_MARIA_UND=Josefund mit

    echo $JESUS_MARIA_UNDwieder abfragen.


    Damit kann man auch vorhandene Werte überschreiben, was im Allgemeinen ein ganz saublöde Idee ist. Aber egal, das werden wohl nur die wenigsten unter uns je brauchen.


    Alle Werte sind flüchtig und verschwinden wieder, wenn man sich ausloggt. Bein nächsten Login ist der Josef also verschwunden.


    Stefan

    Ach ja, eine Frage hätte ich noch. Wie ist es möglich dem Raspi ein paar Informationen zu entlocken und auch in der Home App anzeigen zu lassen? Temperatur und so..

    Das kann ich dir nicht sagen, weil ich das nicht einsetze. Für mich sind diese Daten nicht so interessant. Ich kann daraus keine brauchbare Automation erstellen à la "wenn Raspi-Temperatur zu hoch, dann stelle meine Dusche auf kalt" (nein, ich habe leider keine so tolle Dusche) oder „wenn SD-Card voll, dann bestelle bei Amazon eine neue".


    Daher frage ich diese Daten nicht ab, beispielsweise mit homebridge-raspberrypi-temperature oder homebridge-broadband. Klar, ich könnte, wenn der Raspi kurz vor der Kernelschmelze steht, im Schrank ein Lüfterchen anschmeißen und dazu irgendein 70€-Konstrukt aus Relais, Kabeln, Platinen, Lüfter, Blut, Schweiß, Tränen und Gelöte einsetzen. Ich könnte aber auch für 34,99 einen neuen Raspi kaufen, wenn der alte hin ist, oder noch besser: ich könnte dafür sorgen, dass der von Anfang an gut belüftet ist.


    Ich könnte mit Fakegato eine Temperatur-Historie aufzeichnen, der ich dann irgendwann entnehmen kann, dass der Raspi im Sommer viel heißer war als im Winter. Ob ich für diesen ungeheuren Erkenntnisgewinn unbedingt HomeKit brauche, ist mir noch nicht so ganz klar.


    Was dich absolut nicht davon abhalten soll, das in deinem nun erwachten, ja nahezu fiebrigen Bastelwahn zu verwirklichen und darüber zu berichten. Möglicherweise macht’s dann ja klick in irgendeiner meiner Gehirnhälften. Ich kann nur halt jetzt nichts dazu beitragen. Versuch's mal mit der Suchfunktion des Forums, ich bin mir sicher, dass dieses Thema hier bereits mundgerecht geschnitten und dann durchgekaut wurde.


    Stefan