homeean (Skriptsammlung für Webhook-APIs für homee und einen RaspBerry Pi)

Hier ist die erste ungetestete Version auf GitHub

Falls jemand die Muße hat es auf einem jungfräulichem Raspian zu testen, ist er herzlich willkommen.

Ich komme erst die Tage dazu.

Danke an @DenisW und @stfnhmplr für die Unterstützung.

7 „Gefällt mir“

Ich pack heute Abend mal eine leere SD in einen meiner PIs und teste es aus. Feedback/Fehlermeldungen via GitHub?

Ich glaube hier sind die Resonanzen und Ideen besser.

Edit: Mit einer leeren SD meinst du bestimmt ein frisches Raspian.

1 „Gefällt mir“

Nur eine Kleinigkeit vorab:
Ich würde in einem der nächsten Releases mit Verzeichnisstrukturen arbeiten, also separate Verzeichnisse für die die .service (services) und die individuellen Install-Skripte (install), so dass im Root nur das setup-file (zukünftig ggf. homeean-setup?) liegt. Das Skript wird zwangsläufig wachsen und sollte von vonherein “aufgeräumt” sein.

2 „Gefällt mir“

Ich gebe zu es ist aufgrund der kurzen Zeit von der Geburt deiner Idee und der Umsetzung ein wenig zusammengeschustert.

Ich habe auch gerade zum ersten Mal ein GitHub Repo erstellt.

Ich gelobe Besserung.

2 „Gefällt mir“

Das ist auf jeden Fall schon mal eine gute Basis.

Für Node-RED dann schon mal einige Gedanken:

  • Zur Installation würde ich evtl. die offizielle Route gehen:
    https://nodered.org/docs/hardware/raspberrypi
    Die Node-RED Version in den raspbian Standardrepos ist leider stark veraltet.

  • Die o. g. Version bringt auch einen Daemon mit, wodurch man sich das Erstellen des eigenen Services sparen kann.
    Dann reicht ein
    sudo systemctl enable nodered.service
    zum Starten des Dienstes bzw.
    node-red-start u. node-red-stop
    zum manuellen Starten/Stoppen.

  • Das Script oben beinhaltet ebenfalls einen Node.js/nmp Installer, keine Ahnung ob das Vor-/Nachteile ggü. der apt-Installation hat.
    Und… es ermöglicht ein sehr leichtes Updaten von Node-RED u. NodeJS aus aktuellen Repos (update-nodejs-and-nodered)

Falls gewünscht unterstütze ich gern mit Pull-Requests auf GitHub. :slight_smile:

1 „Gefällt mir“

Node-Red wird im Script direkt von NPM installiert. Es ist also tagesaktuell.

Trotzdem schaue ich mir den link mal an.

Ich weiß zwar noch nicht was Pull Request sind, aber ich google mal :grin:.

Stimmt, da hab ich nicht genau genug hingesehen. Ich nehme alles zurück :smiley:

Pull Requests erlauben es anderen Leuten und dir selbst Code-Änderungen vorzuschlagen, die dann diskutiert, geprüft und ggf. in den Code integriert werden können (“merge”).

1 „Gefällt mir“

Ich habs mal ausprobiert. Sieht für den ersten Versuch schonmal gut aus!

Die homebridge Installation funktioniert fehlerfrei. Bei Node-RED muss aber noch was angepasst werden. Da kann man meine Anleitung nicht 1:1 übernehmen. Ich würde aber auch nicht das Node-RED Script verwenden wegen dem Node update. Der Service sollte kein Hinderungsgrund sein. Der wird bei homebridge ja auch erstellt. Man müsste eigentlich den gleichen nehmen können.

Dann würde ich bei den apt-get Befehlen immer ein -y ergänzen, damit die Nachfrage “wollen sie wirklich” nicht kommt.

Was ich noch nicht beurteilen kann: Wie sieht das Menu aus wenn mal 15 Optionen eingebaut sind?

1 „Gefällt mir“

Konnte doch nicht widerstehen.

Homebridge läuft fehlerfrei durch. Füge noch die config.json hinzu. Das hatte ich vergessen.

Bei Node-Red kommt es zum Fehler. Das fixe ich noch.

@stfnhmplr Ups. du warst schneller. Werde die Änderungen einfließen lassen. Vielen Dank.

Muss dann für die nächsten Stunden erst einmal pausieren. Auch wenn Finger jucken.

3 „Gefällt mir“

Die Frage ist auch… Ist es besser feste Pakete zu schnüren oder den Nutzer die Pakete selbst zusammenstellen zu lassen? Oder beides? Pakete+“Expertenmodus”?

Gerade bei den einzelnen Nodes hat ja jeder eigene Vorstellungen.

Die Installation würde es schon erleichtern, wenn ich nur einmal anklicke, was ich möchte und alles andere passiert automatisch.

1 „Gefällt mir“

Vielen Dank für die Idee!
Klingt superspannend… wenn ich die Zeit hätte… :smirk:

Was nicht schlecht wäre: Lametric API für homee-Benachrichtigungen auf der LED-Uhr… oder falls man die nicht hat aber eine LED-Matrix für die Raspberry ala Adafruit RGB Matrix HAT [ https://www.adafruit.com/product/2345 ], es gibt auch eine RGB-LED-Matrix-Bibliothek auf github: https://github.com/hzeller/rpi-rgb-led-matrix

2 „Gefällt mir“

OK, dann muss ich ja heute Abend nicht mehr (ich hab eh keine leere SD-Karte mehr - Nachschub ist schon geordert). Dann dokumentiere ich hier mal die Installation der Sonos-HTTP-API mit PM2 und ggf. noch der Harmony-HTTP-API und lasse Sie Dir zukommen.

Die Idee von @DenisW (Submenüs und Subpaketauwahl) schoss mir heute Nachmittag auch durch den Kopf - auch im Zusammenhang mit der Frage was passiert wenn es zu viele Pakete werden (wie es @stfnhmplr ja auch aufgeworfen hat).

Evtl. kann man ja auch “sachlich” gruppieren: Sprich: Alle NodeJS-Pakete in eigenes Submenü, darunter noch mal die Detailauswahl der Zusatzpakete.

1 „Gefällt mir“

Wie wäre es denn wenn man die Harmony API von maddox noch mit in das Menü mit aufnehmen würde:

https://github.com/maddox/harmony-api

1 „Gefällt mir“

Installation Sonos-HTTP-API

_wie in den anderen skripten Dir=“/home/pi“
ins Verzeichnis springen

cd /home/pi

git clone https://github.com/jishi/node-sonos-http-api

wird nun runtergeladen in node-sonos-http-api

cd node-sonos-http-api/

npm install --production

npm start

Nachfolgendes wird für den Autostart benötigt (könnte aber sicher auch mit einem systemctl-Service-Eintrag gelöst werden (die meisten Leute empfehlen komischerweise den PM2-Ansatz)

npm install pm2
pm2 startup
pm2 start server.js -x --name “sonos-api”
pm2 dump

Das sollte es gewesen sein…

Kann das jemand bestätigen? (Ich hab keine SD-Karte mehr und will mir heute nix mehr zerschiessen)

Generell: Evtl. sollte man nach der Installation der Dienste dann am Ende noch eine kurze Infoseite zeigen auf der die URL des Dienstes Lokal (inkl. IP) gezeigt wird und auf die Projektseiten verwiesen wird. Bei nicht webbasierten Diensten wie Homebridge eine kurze Info wie es funktioniert (wie man z.B. die Bridge in die Home App bekommt, usw.).

…und jetzt mal zur Harmony-API…

@chrisLE : Teste selber oder warte auf positive Rückmeldung…

1 „Gefällt mir“

Installation Harmony-HTTP-API

wie in den anderen skripten Dir=“/home/pi“
ins Verzeichnis springen

cd /home/pi

git clone https://github.com/maddox/harmony-api

wird runtergeladen in harmony-api

cd harmony-api

sudo script/bootstrap

sudo script/install-linux

—> Das neue Linux-Install-Skript (gerade mal 9 Tage alt) installiert den Dienst aber in /var/lib/harmony-api und die Konfig in etc/harmony-api - das könnte man aus Konsistenzgründen wieder aufs home-verzeichnis ändern… das müsste dann aber auch wieder im Service File (config/harmony-api-server.service) entsprechend umgebogen werden. Ich würde es so lassen, damit bleibt man Release-fähig, wenn da noch mal was umgebogen wird und man muss die Files nicht parsen/Inhalte ersetzen…

Das sollte es gewesen sein…

Kann das jemand bestätigen? (Ich hab keine SD-Karte mehr und will mir nix zerschiessen)

@chrisLE: Teste selber oder warte auf positive Rückmeldung…

Ein Punkt noch (bevor ich für heute Schluss mache): Wie sieht es mit Fehlerbehandlung aus? Was passiert wenn ein User den Installer für ein Paket ein zweites Mal aufruft… Geht das immer gut? Evtl. ein Dot-Verzeichnis anlegen in dem via Files (eindeutige Namen pro Paket) vorher erfolgte Installationen festgehalten werden inkl. Fehlermeldung “Wirklich noch mal installieren und ggf. die bestehende Installation zerschiessen”, wenn ein solches File schon existiert…

Edit: Für Homebridge könnte der Homebridge-Server noch eine gute Ergänzung für Newbies sein:
https://www.npmjs.com/package/homebridge-server
–> Braucht dann halt eine separate Infoseite wie er aufgerufen wird…

2 „Gefällt mir“

Ich versuche das morgen mal alles sinnvoll zu implementieren.

Guts Nächtle.

3 „Gefällt mir“

Airsonos wäre auch noch spitze.

Und das Plugin homebridge-config-ui zur Verwaltung der Plugins und config.json im Browser.

Deckt sich das mit der UI nicht hiermit?