Beiträge von sschuste

    Die Nachbarn glauben eh, Alexa wär meine Freundin. Die hören ja bislang immer nur "Alexa, mach mal die Musik lauter" oder "Och Alexa, jetzt zick hier nicht wieder rum". Wenn dann noch der Schlachtruf ALEXA MACHMA AUUUUF JETZT kommt, halten die das wahrscheinlich nur für ein Zeichen einer gesunden Beziehung ^^


    Stefan

    Hintergrund ist das mein Haustürschloss via Zwave in die Homebridge eingebunden ist und entsprechend ein laut genuger Schrei durch die Haustüre demnach reichen würde diese zu entsperren.

    homebridge-alexa macht immer ein komplettes Discovery. Aber ich kann dir nicht sagen, wie sich das mit Schlössern verhält. Ich hab nämlich keins. Ich glaube nicht, dass ein lauter Schrei reicht, aber ich weiß es auch nicht.


    Stefan

    || ich verzweifle noch..

    Liegt nicht an dir :D Ich hab vergessen zu erwähnen, dass man den laufenden homebridge-Prozess anhalten muss, denn das System versucht ihn ja per systemd alle 10 Sekunden automatisch zu starten.


    sudo systemctl homebridge stop


    Und dann die Experimente machen. Ansonsten kommt sich deine Testerei und der Automatikstart von homebridge ins Gehege. Meine Schuld, sorry.


    Auch wenn ich es mir nicht vorstellen kann will: liegt's vielleicht an meiner Anleitung? Möglicherweise versuchst du es mal mit einer anderen. Aber um ehrlich zu sein: im Großen und Ganzen ist es immer dasselbe.


    bluetoothctl: sudo nicht vergessen.


    Ich mache nichts mit Bluetooth und habe auch keine Avea, von daher fehlt mir da jegliche Erfahrung.


    Und das mal ausgeführt?

    sudo setcap cap_net_raw+eip $(eval readlink -f /usr/local/bin/node) (von https://www.npmjs.com/package/homebridge-avea-bulb)


    Stefan

    Ja, das geht. Ich mach das, aber es ist aufwändig. Du kannst dann Routinen in Alexa hinterlegen, die du aufrufst und die lösen dann ein Homekit-Szene aus.


    Aufwändig ist es auch, das genau zu beschreiben. Jetzt erstmal auf die Schnelle:


    • homebridge-alexa installieren
    • In Homebridge etwas installieren wie homebridge-delay-switch oder homebridge-automation-switches und damit einen Switch anlegen
    • Dem Switch einen Namen geben wie wasndas
    • Homebridge neu starten, Alexa auffordern neue Geräte zu finden. Die findet den Schalter wasndas.
    • Die Szene brumbelbrum anlegen in Homekit und dort definieren: schalte EVE Energy ein und zwei HUE-Birnen
    • Eine Automation in Homekit anlegen: immer wenn der Schalter wasndas eingeschaltet wird, dann die Szene brumblbrum auslösen.
    • Alexa sagen: schalte wasndas ein.


    Versucht's mal, bei Fragen fragen.


    Stefan

    Würde die Homebridge funktionieren, wenn nicht der User homebridge sie startet, sondern der User pi oder der User root?


    Führe als User pi das Kommando

    homebridge -U /var/homebridge

    aus und beobachte das Verhalten.


    Führe das Kommando aus

    sudo -i

    und dann als User root, der du ja jetzt bist:

    homebridge -U /var/homebridge

    und beobachte das Verhalten.


    Abbrechen jeweils mit ctrl-c.


    Wenn es jetzt besser läuft, dann liegt es an den etwas strikteren Sicherheitseinstellungen, die ich meiner Anleitung verpasst habe. Die solltest du mal weich machen, indem du die sudoers-Einstellungen veränderst.


    Gehe dann so vor:


    sudo nano /etc/sudoers.d/homebridge

    Dort sollte es jetzt so aussehen:


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


    Ersetze das alles durch:


    Code
    homebridge ALL=(ALL:ALL) ALL


    Diese neue Einstellung hat keine Auswirkungen auf die bisherige Installation. Sie bewirkt nur, dass der User homebridge alle Befehle des Systems als root ausführen darf. Du kannst das also dann auch so lassen.


    Ich habe es nicht getestet.


    Error: listen EADDRINUSE :::51826 bedeutet nur, dass Port 51826 schon in Gebrauch ist, und er ist immer dann in Gebrauch, wenn die Homebridge läuft. Du versuchst also, zwei Homebridges parallel laufen zu lassen, was nur geht, wenn die Porteinstellungen unterschiedlich wären. Ein sudo pkill -u homebridge beendet alle Prozesse, die vom User homebridge aufgerufen wurden. Der systemd startet die Homebridge dann nach 10 Sekunden automatisch neu.


    Stefan

    Ok, danke für die Info. Habe es nun mit $USER eingegeben und die Meldung

    "Der Benutzer "pi" ist bereits Mitglied der Gruppe "gpio"

    Ist das gut oder schlecht? :)

    Tja, was könnte bloß sudo adduser $USER gpio bedeuten;)? Ich verrate es mal: "Liebstes Betriebssystem, füge doch bitte den aktuell eingeloggten Benutzer der Gruppe gpio hinzu, falls möglich." Und das Betriebssystem antwortet: "Tut mir leid Schatz, das würde ich ja gern tun, aber der aktuell eingeloggte Benutzer ist bereits Mitglied der Gruppe gpio, also füge ich ihn jetzt nicht nochmal hinzu."


    Tja, ist das jetzt gut oder schlecht? Es ist natürlich immer schlecht, wenn dein Raspi Widerworte gib statt in gewohnt devoter Erwartungshaltung den Cursor blinken zu lassen. Aber es sind freundliche Widerworte, denn gemeint hat er eigentlich: "Dein Kommando war an Überflüssigkeit nicht überbieten". Aber Linux ist ja user-friendly, und es würde dich nie so anranzen.


    Nimm's also wie ein Mann und gleichzeitig einfach zur Kenntnis und mache fröhlich pfeifend weiter. :thumbup:


    Stefan

    Bekomme das Plugin nicht installiert.


    Code
    ../libusb/libusb/os/linux_udev.c:40:21: fatal error: libudev.h: Datei oder Verzeichnis nicht gefunden
     #include <libudev.h>
                         ^
    compilation terminated.

    Hier geht's schief. Es fehlt fehlt libudev.h :huh: Ich hab's nicht ausprobiert, würde aber nun versuchen:


    sudo apt-get install libudev-dev


    und danach noch mal:

    sudo npm install --unsafe-perm homebridge-automation-bluetooth-presence -g


    Stefan

    Mein ATV steht in einem geschlossenen Schrank 4 cm über dem Fußboden und macht an dieser Stelle seinen Job. Ich lebe in einer Dreizimmer-Wohnung mit etwa 75 qm. Alle Räume werden erreicht, sowohl über WLAN als auch über Bluetooth. Ich hab mir nicht mal Gedanken darüber gemacht, dass das vielleicht nicht funktionieren könnte.


    Ich finde auch weder WLAN- noch Bluetooth-Spezifikation, die eine Tischhöhe erwähnen ^^


    Stefan

    Es gibt nur eine Konfiguration, und die heißt Homebridge-Konfig. Die fängt oben an und hört unten auf, und dazwischen muss sie halt richtig sein. Nuki ist ja nur ein Teil davon.

    Ich habe jetzt das folgende getan:


    In den Root-Modus gegangen:sudo su -

    Die Installation aufgerufen: npm install -g --unsafe-perm homebridge-avea-bulb


    Dann hat es eine Menge Fehler und Warnings gehagelt, aber ganz am Ende steht:

    Code
    + [email protected]
    added 15 packages from 15 contributors in 53.463s


    So wie bei dir. Das sieht für mich absolut richtig aus. Starten tut es trotzdem nicht. Ein sudo journalctl -fau homebridge zeigt mir

    Code
    Sep 09 14:39:25 raspberrypi homebridge[4319]: [2018-9-9 14:39:25] ERROR LOADING PLUGIN homebridge-avea-bulb:
    Sep 09 14:39:25 raspberrypi homebridge[4319]: [2018-9-9 14:39:25] Error: Cannot find module 'bluetooth-hci-socket'


    Das Modul bluetooth-hci-socket lässt sich nicht installieren, nur leider wird es gebraucht. Ich hab so einiges versucht, nur verstehe ich die npm-Fehlermeldungen während der Installation von bluetooth-hci-socket auch nicht wirklich :/


    Wenn du die Konfiguration für homebridge-avea-bulb in /var/homebridge/config.json wieder entfernst, sollte homebridge wieder starten. Alles neu zu installieren wird eher nicht nötig sein. Diese Zeilen müssen raus:


    Code
    {
        "accessory": "AveaBulb",
        "name": "Avea Bulb"
    },

    Falls du mehr als eine so magere Konfiguration der homebridge-avea-bulb erstellt hast, muss das "Mehr" natürlich auch raus.


    Stefan

    Könntest du evtl noch ein wenig die Fehler bei JSONLint erläutern anhand eines beispiels? Ich muss zugeben das ich es oft nicht deuten kann. Und dann einfach auf gut Glück irgendwie die Kommas setze.

    Das ist oft auch nicht einfach zu deuten. Es macht die Sache oftmals einfacher, wenn man seinen JSON-Code sehr ordentlich verfasst und mit Einrückungen arbeitet. Also etwa so:

    Das gibt dem ganze eine Struktur und man versteht schneller, was wohin gehört. Ich hab da jetzt einen Fehler eingebaut, und der erzeugt bei jsonlint die folgende Ausgabe:




    Die Fehlermeldung unten zeigt, das jsonlint das alles irgendwie als eine Zeile liest, und wenn es richtig ist, formatiert ausgibt. Durch den Fehler im Code weiß jsonlint nichts damit anzufangen und sagt: hier ist ein Fehler bei "priority": "1" } { "id": "yyyyyyy". Dazu malt jsonlint einen Pfeil dazu (----------------------^), der genau auf die kaputte die Stelle zeigen soll. Das ist leider nicht ganz korrekt programmiert und der Pfeil zeigt ins Leere.


    Dann steht dort, was von jsonlint statt des Fehlers erwartet worden ist. Da sollte entweder die Datei zu Ende sein (EOF = end of file, ist aber Quatsch) oder da sollte entweder ein } oder ein Komma oder ein ] stehen, aber gekommen ist ein {. Lässt sich wirklich kaum lesen :/


    Klar, ich hab das Komma weggelassen. Das kann man eigentlich ganz gut im Code sehen, dass die beiden Lock-Definitionen durch ein Komma getrennt sein sollten. Und man sieht das ganz gut, weil ich ihn formatiert habe, damit ich ihn besser lesen kann.


    Mehr kann ich dazu leider auch nicht sagen. Ordnung ist das halbe Leben, behaupte ich mal, auch wenn ein Blick in meine Küche zeigt, dass ich es offenbar damit auch nicht so genau nehme ^^


    Stefan

    Ich hab's mal bei jsonlint reingeworfen. Sieh genau hin:




    Nach "accessories": kommt die öffnende eckige Klammer [. Gut. Danach kommt in geschweiften Klammern die Accessory-Definition. Auch gut.


    Wenn diese Accessory-Definition die einzige ist, dann kommt hinter die schließende geschweifte Klammer (also nach "delay": 5000, in rot markiert) wieder eine eckige schließende Klammer ].


    Wenn sie nicht die einzige ist, dann kommt stattdessen an diese Stelle ein die schließende Klammer, dann ein Komma und danach die nächste Accessory-Definition. Bei dir kommt aber noch eine schließende Klammer. Eine muss weg. Dann könnte es schon klappen. Wird es aber nicht.


    Nochmal: "accessories":-Definitionen beginnen mit einer eckigen Klammer und hören mit einer auf. Das passiert bei dir aber nicht. Es kommt irgendeine Plattform anstatt eines Accessories. Das Harmony Hub-Zeugs hat an dieser Stelle nicht verloren! Es muss weiter nach oben zu den anderen platforms. Und in Zeile 29 muss dann eine ] hin. Und ganz ans Ende, wenn nichts weiter mehr kommt, muss die Konfiguration mit } abgeschlossen werden - weil sie beginnt ja ganz oben mit {.


    Stefan