Erstellung eines Homebridge Plugins für HomeKit

Jede Konfiguration ist ein wenig anders. Normalerweise sollte es zwei Logfiles geben, die sich mit sudo /var/log/homebridge.log und sudo /var/log/homebridge.err aufrufen lassen. Der Speicherort kann aber auch je nach Setup schon mal variieren.

Das wichtigste ist aber, dass du den Fehler bereits siehst. Siehe Nr. 2. Das bedeutet unterm Strich, dass du eine zu alte Version von NodeJS (das ist die Basis Software) nutzt. Ich habe allerdings keine Ahnung, ob du mit der Homebridge App ein Update machen kannst. Die bei dir installierte NodeJS Version lässt sich mit node -v rausfinden. Aktuell ist die 8.1.4. Ich vermute, du hast eine deutlich ältere Version. Es sollte mindestens eine 6.x.x sein.

Wenn sich NodeJS nicht über die App updaten lässt gibt es zwei Möglichkeiten: Den Entwickler anschreiben ob er das in die App implementieren kann oder selbst tätig werden. Letzteres ist aber recht aufwendig und wie ich zuletzt feststellen musste, nicht immer direkt von Erfolg gekrönt. Leider scheint die App das manuelle Update zu erschweren.

Sobald ich etwas mehr Zeit habe, kann ich aber auch ein fertiges Image mit Homebridge bereitstellen, welches nur noch auf die SD Karte übertragen werden muss. Das wird aber vermutlich noch mindestens 2 Wochen dauern.

4 „Gefällt mir“

Hallo @stfnhmplr,

vielen Dank für deine Rückmeldung.
Es liegt tatsächlich an der alten NodeJS.
Bevor ich hier ein “Upgrade” wage, erstelle ich mir erst einmal ein Image.
Zumindest weiß ich, woran es liegt.
Und die Logfiles bin ich noch am suchen. Müssen woanders liegen :cry:

Vielen Dank für deine Hilfe.

@CaptainL

Kann es sein, das Du die homebridge als Service Startest?
dann musst Du die Datei ändern
sudo nano /etc/init.d/homebridge

und zwar die Zeile
su - pi -c “homebridge > /dev/null 2>&1 &”
nach
su - pi -c “homebridge >> /var/log/homebridge.log 2>> /var/log/homebridge.err &”

dann werden da auch die LOG Dateien geschrieben.

Nach bearbeiten der Datei noch ein Update des Service machen

sudo update-rc.d homebridge defaults

Läuft das Plugin jetzt durch oder muß man noch individuelle Anpassungen vornehmen?

  1. Frage: wie erstellt man ein Image/Backup vom Pi?

@Sofasportler

bei mir läuft es Super…

Backup vom Pi kannst Du mit ApplePi-Baker auf dem MAC machen.
Bei Windows weiß ich es leider nicht genau… Aber Google hilft da bestimmt…

Bei mir läuft es jetzt auch, aber folgendes ist mir aufgefallen:

  1. Falls du den Pi mit der App aufgesetzt hast, bekommt man mit der NODEJS Version Probleme, bzw. das Plugin wird nicht ausgeführt. Auch nach update von NODEJS.
    Ich habe nur das Image von smartapfel.de genommen und dann alles nach dieser Anleitung installiert.
    Verknüpfung Homee + Apple Homekit über Raspberrypi + Homebridge
  2. Weiter ist mir aufgefallen, das die verschiedenen Sensoren verschiedene Bezeichnungen benötigen. Bei meiner Tochter waren Name für Dimmer und Fenstersensor identisch. Das bringt das Plugin dann durcheinander.
  3. Außerdem hatte ich noch ein Lampensymbol vor dem Namen, allerdings kann die Home app damit nicht umgehen.

Ich hoffe ich konnte auch noch einen kleinen Teil dazu beitragen.
Viele Grüße

Daniel

@Daniel Danke für dein Feedback. Welche Version hast du installiert? Inzwischen ist die 0.0.8 draußen, damit sollten auch gleiche Gerätebezeichnungen möglich sein. Oder bist du bereits auf der aktuellen Version?

ich habe die 0.0.8 installiert. War jetzt aber nicht weiter schlimm Lampe oder Licht vor die Bezeichnung zu setzen.

Noch einige Rückfragen, bevor ich es auch wage:
Wie kontrolliere ich die Version von NODEJS vor der Installation?
Ich würde versuchen nur das Plugin zu installieren. Muß ich dafür die alte Homebridge Version vorher deinstallieren oder einfach drüber?
Muß ich in der Homekit App noch irgend etwas vorbereiten/löschen?

node -v auf der commandline

1 „Gefällt mir“

Cooles Projekt! Ich habe mal direkt meine Geräte getestet und alle funktionierenden der Liste auf Github hinzugefügt. Für alle anderen, die momentan noch nicht funktionieren, werde ich den Code entsprechend anpassen und einreichen! :slight_smile:

1 „Gefällt mir“

@anon21150642 Idee aufnehmend: Wie wäre es, wenn Du während der Entwicklung (optional) mal abgreifst was die einzelnen Leute so (erfolgreich oder nicht) an Geräten einsetzen um damit einen Überblick zu bekommen wo die Schwerpunkte sind?

Halte ich für eine gute Idee! Am besten wäre natürlich diese Liste in einem Github Issue zu pflegen, damit hier im Thread nichts untergeht. Ich habe gestern noch einen Bug beim Schalten in der Home App gefunden und behoben. Zuvor hat der Button beim Drücken geflackert (Beim Anschalten: An -> Aus -> An). Heute Abend schaue ich mal, ob ich meine anderen Geräte noch integrieren kann.

Update npm

sudo npm i npm@latest -g

  • Installiert die letzte Version von npm

npm -v

  • Versionsnummer überprüfen

Update Node.js

Variante I:

  1. sudo /etc/init.d/homebridge stop
    oder
    sudo systemctl stop homebridge
    (je nachdem wie Homebridge Installiert ist)

  2. sudo npm i npm@latest -g (Optional: Empfohlen bei älteren NPM Versionen)

  3. sudo npm cache clean -f

  4. sudo npm install -g n

  5. sudo n stable (alternativ: latest oder Versionsnummer einsetzen)

  6. sudo npm install -g --unsafe-perm homebridge@latest

  7. sudo reboot

  8. node -v (Versionsnummer überprüfen)

Variante II:

  1. sudo /etc/init.d/homebridge stop
    oder
    sudo systemctl stop homebridge
    (je nachdem wie Homebridge Installiert ist)

  2. sudo npm i npm@latest -g (Optional: Empfohlen bei älteren NPM Versionen)

  3. wget https://nodejs.org/dist/v6.9.5…6.9.5-linux-armv7l.tar.gz (Versionsnummer anpassen nach Bedarf)

  4. tar -xvf node-v6.9.5-linux-armv7l.tar.gz (Versionsnummer anpassen nach Bedarf)

  5. cd node-v6.9.5-linux-armv7l (Versionsnummer anpassen nach Bedarf)

  6. sudo cp -R * /usr/local/

  7. cd

  8. sudo npm install -g --unsafe-perm homebridge@latest

  9. sudo reboot

  10. node -v (Versionsnummer überprüfen)

Backup vorher machen!

3 „Gefällt mir“

So liebe Harmonyhub Besitzer,

ich konnte seit einiger Zeit das Harmonyhub plugin in der Homebridge nicht mehr installieren. Jetzt habe ich es geschafft. Es liegt an den Rechten vom user pi bei npm.

Zuerst den Pfad zum npm Verzeichnis finden:

npm config get prefix

falls es /usr/local ist könnt ihr die Rechte mit folgender Zeile neu vergeben:

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

danach das Harmonyhub plugin OHNE sudo installieren.

Ich empfehle die Version 0.1.1 da mit dieser Version die Homebridge nicht nach einer geraumen Zeit abstürzt.

also:

npm install -g homebridge-harmonyhub@0.1.1

sudo reboot

und dann sollte es laufen.

Falls es nicht der Pfad /usr/local sondern /usr ist kann man die 2. Option von folgendem Link benutzen:

https://docs.npmjs.com/getting-started/fixing-npm-permissions

Bei mir läuft es jetzt :slight_smile:
Viel Spaß!

Ach ja die config.json muss noch angepasst werden.

Hallo @Sofasportler,

benutzt du auch die Homebrige-App?! Welche Variante hast du für das node.js Update von @Einstein77 gewählt.

Variante 1 ist bei mir schon schief gegangen… Gut dass ich ein Image gemacht habe…

Danke und Gruß

Nein, nutze ich noch nicht.
Mein PI läuft zur Zeit nur für das Logfile und da ich Alexa nutze, warte ich auf die “Ready-to-run”-Image Lösung :wink:

Aber ich finde die Lösung bis jetzt super und deshalb versuche ich immer auf dem Laufenden zu bleiben, falls ich es doch einmal installiere.

Schade, aber danke für deine schnelle Rückmeldung.

Sonst jemand ne Idee?

Guck mal hier unter Major Version Upgrades: http://thisdavej.com/upgrading-to-more-recent-versions-of-node-js-on-the-raspberry-pi/

Danach dann mit sudo npm install --unsafe-perm homebridge die aktuelle Version installieren und Homebridge bzw. alternativ den Raspberry neu starten.

Danke für die Tipps. Ich glaube es scheitert daran, dass die App mit diversen Plungins arbeitet, die nur die alte Node-Version unterstützen. Also entweder alles selbst aufgesetzt oder auf dein Plugin verzichten. Die Entscheidung ist eigentlich einfach, ich scheue mich aber vor der Arbeit, die damit einhergeht :scream: