Beiträge von sschuste

    So, ich habe das erneut zum Laufen bekommen, aber es ist tatsächlich eine arge Bastelei. Komischerweise wurde plötzlich keine Werte mehr angezeigt und gleichzeitig konnte auch die Flower Care-App sich auf einmal nicht mehr mit den Sensoren verbinden. Ich musste meinen zwei Sensoren die Batterie entnehmen und neu einsetzen, damit die App sich wieder verbinden konnte. Wie das zustande kommt: keine Ahnung. Weiter beobachten.

    homebridge-mi-flower-care unter Node 10.16.3

    Das Problem liegt im Modul bluetooth-hci-socket. Darin befindet sich irgendein Bug, der den Betrieb unter Node 10 unmöglich macht. Das hat irgendwer repariert und im npmjs-Repository hinterlegt. Der Trick besteht nun darin, dieses Modul zu installieren und homebridge-mi-flower-care unterzuschieben.


    Zuerst muss der ganze Bluetooth-Kram auf den Raspi installiert werden. Ich schätze mal, das hat schon jeder getan, aber der Ordnung halber hier nochmal:

    sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev libcap2-bin

    Es schadet nicht, das Bluetooth-Zeugs noch mal zu installieren, auch wenn es schon drauf ist.


    Den Rest der Installation habe ich als root vorgenommen.

    sudo su -


    Installation der verbesserten Module

    npm install -g --unsafe-perm @abandonware/bluetooth-hci-socket

    npm install -g --unsafe-perm @abandonware/noble


    Auch hier wird der Bildschirm mit Fehlermeldungen und Warnungen überschwemmt, aber jeweils am Ende sieht man, dass was installiert wurde.


    homebridge-mi-flower-care mal anders installieren

    git clone https://github.com/honkmaster/homebridge-mi-flower-care.git

    npm install -g --unsafe-perm ./homebridge-mi-flower-care


    Man beachte bitte den ./ bei der Installation.


    Starten der Bastelarbeiten

    rm -rf /usr/local/lib/node_modules/homebridge-mi-flower-care

    cp -av homebridge-mi-flower-care/ /usr/local/lib/node_modules/


    Während der Laie ungerührt kopiert und pastet, staunt der Fachmann. Erst habe ich mit npm das Plugin installiert, dann mit rm -rf wieder gelöscht und dann manuell mit cp -av wieder hinkopiert. Ich werde zu diesem Vorgang keine Fragen beantworten, weil ich ihn selber nicht verstehe. Aber ohne ging's nicht.


    Da homebridge-mi-flower-care die falsche noble- und bluetooth-hci-socket-Version mitinstalliert hat und diese nutzen will, schiebe ich ihr jetzt die verbesserten Versionen unter:


    cd /usr/local/lib/node_modules/homebridge-mi-flower-care/node_modules/

    rm -rf bluetooth-hci-socket noble

    ln -s ../../@abandonware/noble/ .

    ln -s ../../@abandonware/bluetooth-hci-socket/ .


    Und ganz zum Schluss:

    setcap cap_net_raw+eip $(eval readlink -f `which node`)


    Danach kann man den root-Modus wieder verlassen mit

    exit


    Nun konfiguriert man config.json wie hier beschrieben:

    Code
    {
      "accessory": "mi-flower-care",
      "name": "Golden cane palm",
      "deviceId": "AA:BB:CC:DD:EE:FF",
      "interval": 300
    }

    Die deviceId findet man, indem man sudo hcitool lescan eingibt. Irgendwann wird dann auch die Adresse des Flower Care-Sensors ausgegeben.


    Und dann Homebridge restarten. Mein Log zeigt das folgende:

    Da sieht man meine beiden Planzen: eine Dracaena und eine Fittonia. Und die melden munter:


    Die erste Meldung kam übrigens fünf Minuten nach dem Start von Homebridge, also müsst ihr ein bisschen warten.


    Noch mal: das ist alles fiese Bastelei. Ich bin sicher, dass mir bei einem Update von homebridge-mi-flower-care alles um die Ohren fliegt. Und nach einem Update von node muss der Befehl sudo setcap cap_net_raw+eip $(eval readlink -f `which node`) wieder eingegeben werden.


    Ach ja: das läuft bei mir sowohl auf einem Raspi 3 als auch auf einem Raspi 4.

    Stefan

    Gibt es sowas, oder hat es bewusst einen grund, warum es das nicht gibt?

    Es gibt auf Linux- oder Unix-Systemen nichts, was es nicht geben soll. Das kann man mit sed (kaputt) machen. Also sed -i 's/SUCHBEGRIFF/ERSETZBEGRIFF' dateiname.


    sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin No/' /etc/sshd/sshd_config


    Zitat von vgnsxe

    Moechte ich in diesem File die Zeile: #PermitRootLogin aendern in PermitRootLogin Yes aendern, dann muss ich manuell dorthin navigieren und die Aenderungen vornehmen.

    Möchtest du nicht.


    Stefan

    So ergab das folgende Meldung:

    useradd: Gruppe »bluetooth« existiert nicht.

    useradd: Gruppe »gpio« existiert nicht.


    Nehme ich beide Gruppen raus aus dem obigen Befehl, gibt es keine Fehlermeldung mehr. Sind diese zwei Gruppen sehr wichtig? Wenn ja, wie kann ich sie anlegen?

    Lass sie raus. Sie haben auf Raspberian eine Bedeutung, unter OSMC offenbar nicht. Alternativ könntest du die Gruppen auch anlegen, aber das wird keine weiteren Auswirkungen haben, weder positive noch negative: groupadd bluetooth gpio. Unter Raspberian sind der Gruppe verschiedene Ausführungsrechte von bestimmten Programmen zugeordnet. User, die beispielsweise nicht in der Gruppe bluetooth sind, können dann nicht auf Bluetooth-Programme und -Funktionen zugreifen. Das wird unter OSMC wohl anders gehandhabt und daher spielen wahrscheinlich alle Gruppen keine Rolle.


    Ich nehme an, dass bei dir auch ein einfaches sudo useradd -m -c "Homebridge Service" -s /bin/bash homebridge ausreicht. Aber ich kenne OSMC nicht und kannte es auch nicht bis vor wenigen Minuten.


    Deine Zeile ist eher eine Alternative fuer die, die ein weniger geschuetztes System bevorzugen und mehr Rechte haben wollen. Zudem wird dieser Befehl in der Datei /etc/sudoers.d/homebridge eingetragen und nicht einfach ins Terminal kopiert

    Das wird gelegentlich falsch gemacht, was vor allem bedeutet: die Anleitung muss an dieser Stelle einfach deutlicher werden.


    Aug 18 15:36:42 OSMC homebridge[2848]: Error: EACCES: permission denied, mkdir '/var/homebridge/persist'

    Wie schon @vgnsxe schreibt: hier fehlen wohl die richtigen Rechte für /var/homebridge.


    Stefan

    Ich bräuchte zumindest mal ein Log, das ich lesen kann. So hintereinanderweg in eine Zeile steht das Log ja nicht auf deinem Bildschirm. Wo sind denn die Zeilenumbrüche?

    „Fehler: Aug 15 18:52:04 homebridge-Pi4 systemd[1]: homebridge.service: Failed with result 'exit-code“

    Dieser Fehler steht am Anfang des Logs, nicht wahr?


    Hier wird Homebridge gestoppt. Man erkennt das ganz gut an shutting down Homebridge... und vor allem an Stopping Node.js HomeKit Server...

    Code
    Aug 17 22:53:49 homebridge-Pi4 homebridge[420]: [2019-8-17 22:53:49] Got SIGTERM, shutting down Homebridge...
    Aug 17 22:53:49 homebridge-Pi4 systemd[1]: Stopping Node.js HomeKit Server...
    Aug 17 22:53:49 homebridge-Pi4 homebridge[420]: [2019-8-17 22:53:49] [Hub-Wohnzimmer] INFO - shutdown
    Aug 17 22:53:54 homebridge-Pi4 systemd[1]: homebridge.service: Main process exited, code=exited, status=143/n/a
    Aug 17 22:53:54 homebridge-Pi4 systemd[1]: homebridge.service: Failed with result 'exit-code'.
    Aug 17 22:53:54 homebridge-Pi4 systemd[1]: Stopped Node.js HomeKit Server.

    Dann steht da noch eine Menge anderer Krempel, der zum Stoppen gehört. Und ja, da ist eindeutig eine Fehlermeldung zu sehen, nämlich die berühmte Falschmeldung homebridge.service: Failed with result 'exit-code'. Hier erwartet das Betriebssystem einen exit-code von 15, damit es weiß, dass alles seinen richtigen Weg genommen hat, bekommt aber dummerweise 143 geliefert. Steht eine Zeile dadrüber.


    Trotzdem wurde Homebridge gestoppt (Stopped Node.js HomeKit Server). Ich habe keine Ahnung, ob der falsche exit-code 143 von node kommt oder von Javascript oder von der Homebridge: Fakt ist, dass man das ignorieren kann. Man kann den Fehler auch unterdrücken, dann taucht er nicht mehr auf, und wie das geht, habe ich hier im angehängten PDF auf Seite 17 beschrieben.


    Dann kommt was Merkwürdiges, das ich noch nicht analysiert habe. Es tritt bei mir nur auf meinem Raspi 4 mit dem Betriebssystem Raspberian Buster auf. Den habe ich erst seit gestern, und erst heute morgen habe ich ihn getestet, und ich weiß nicht mal, was mir das sagen soll.

    Code
    Aug 17 22:53:54 homebridge-Pi4 systemd[1]: homebridge.service: Found left-over process 3031 (homebridge-conf) in control group while starting unit. Ignoring.
    Aug 17 22:53:54 homebridge-Pi4 systemd[1]: This usually indicates unclean termination of a previous run, or service implementation deficiencies.

    Gut, mein Raspi brannte nicht ab und verbreitete auch sonst keine schlechte Laune, von daher habe ich das erstmal ignoriert. Sieht trotzdem unschön aus.


    Und dann kommt der Start von Homebridge. Ja, genau, das erkennt man an Started Node.js HomeKit Server.

    Code
    Aug 17 22:53:54 homebridge-Pi4 systemd[1]: Started Node.js HomeKit Server.
    Aug 17 22:53:56 homebridge-Pi4 homebridge[29416]: [2019-8-17 22:53:56] Loaded config.json with 4 accessories and 12 platforms.
    Aug 17 22:53:56 homebridge-Pi4 homebridge[29416]: [2019-8-17 22:53:56] ---
    Aug 17 22:53:56 homebridge-Pi4 homebridge[29416]: [2019-8-17 22:53:56] Loaded plugin: homebridge-camera-ffmpeg

    Und hier taucht ja kein weiterer Fehler mehr auf. Und das ist der wesentliche Punkt: kein Fehler nach dem Starten von Homebridge zaubert zumindest immer mir ein Lächeln ins Gesicht. Du tust dir gut, indem du einfach das gleiche tust ;)


    Stefan

    ich wollte natürlich die datein in /var/homebridge kopieren. aber da erscheint das gleiche.

    Ich nehme an, du machst das als User pi. Der darf nicht /var/homebridge schreiben.


    Entweder kopierst du nach /home/pi oder du änderst die Rechte von /var/homebridge (das bedarf ein paar Überlegungen, sonst killst du deine homebridge). Oder du du nutzt als User homebridge für sftp. (recommended)


    Stefan

    ich kann nichts auf den Pi kopieren

    Du möchtest nach /media kopieren, aber hast dort keine Schreibrechte für den User öhmWieHießDerGleich?. Entweder verschaffst du dem User öhmWieHießDerGleich? Schreibrechte mit


    sudo chown öhmWieHießDerGleich? /media, was ich nicht sonderlich gut finde, aber immerhin eine Lösung ist, oder du schreibst die Datei dorthin, wo öhmWieHießDerGleich? Schreibrechte hat, beispielsweise nach /home/öhmWieHießDerGleich?.


    Stefan

    Ich hab's am Laufen!

    • Raspi 3
    • node 10.16.1
    • noble
    • bluetooth-hci-socket
    • homebridge-mi-flower-care
    • läuft unter User homebridge (und nicht unter root)

    Und seid euch gewiss: es war ein echtes Gefummel. Aber ich habe mir aufgeschrieben, was ich getan habe. Da heute endlich mein Raspi 4 eingetroffen ist, den ich erstmal zum Testen der Forenanleitung nutzen will, werde ich danach darauf versuchen, meine Notizen nachzuverfolgen, und wenn das wieder klappt, schreibe ich hier eine Anleitung. Sieht nach nächster Woche aus.


    Soviel vorab: das Geheimnis liegt darin, nicht noble zu installieren, sondern @abandonware/noble und @abandonware/bluetooth-hci-socket. Diese Versionen hat nämlich eine gute Seele "repariert". Das allein reicht leider noch nicht, ich habe noch eine Anpassung an homebridge-mi-flower-care machen müssen (weiß aber nicht, ob das wirklich nötig war) und anderes krudes Zeugs getrieben. Was dann bestimmt beim nächsten Update dann wieder in die Luft fliegt X/. Egal, erstmal geht's jetzt auch mit Node > 9.


    Stefan

    Nichts. Du kannst das ignorieren. Ich glaube mir zusammenreimen zu können, warum die Meldung auftaucht, aber beantworten kann dir das nur ein Plugin-Programmierer.

    Du hast nicht gelesen, was dort steht. Du hast die Befehle aus der Anleitung genommen und blind in die Shell kopiert. Das wurde falsch gemacht.


    Du hast einen möglichen Inhalt der Datei /etc/hombrigde/sudoers.d, den du nur in ganz bestimmten Fällen dort (also in diese Datei) eintragen sollst, in die Shell gepastet. Das funktioniert genauso gut, als hättest du stattdessen einen Teil deines Lebenslaufs genommen. Das ganze Textkonstrukt steht in einem Kasten mit gelber Farbe, der mit den Worten Ein kleiner Blick in die Zukunft: beginnt und mit Am besten tust du das nur, wenn es sich nicht vermeiden lässt. endet.


    Mit anderen Worten: lass das einfach weg.


    Stefan

    Raspbian Buster Lite.


    Ich sehe gerade, dass die Anleitung etwas outdated ist :rolleyes:


    PS: Ich habe die Anleitung jetzt ein bisschen frisiert. Allerdings ohne auch nur irgendwas ausprobiert zu haben. Ich wollte Buster erst installieren, wenn mein Raspi 4 kommt, aber Reichelt hat ihn mir erst für den 2. September avisiert (nachdem ich ihn am 27. Juni bestellt habe!). Zehn Wochen Wartezeit - das ist schon der Hammer.


    Auch wenn ich es hasse, meine Anleitung nicht wirklich getestet zu haben, heißt meine Strategie "Hoffnung", dass es trotzdem damit funktioniert.


    Stefan

    Hmmm, ich weiß es nicht. Vielleicht geht es besser, wenn man es als root installiert:


    sudo su -

    npm install -g --unsafe-perm homebridge-config-ui-x

    exit


    Vielleicht auch mal ein Update des Raspi machen:

    sudo apt-get update

    sudo apt-get upgrade


    Stefan