Harmony mit Homee verknüpfen

:smile:

Alles ist ohne Docker möglich! Kann es nur nach Bastelfreude einfacher machen…

Think: „Apps for servers“…

@hrobbie, @Shining01: Gibt es für das Prozedere vielleicht eine Anleitung für “Dummies”? Ich bin seit kurzem stolzer Besitzer eines NAS (Syno) und einer Harmony samt Hub. Ebenso einem Yamaha AV Receiver. Mit Hilfe des Forums kann mein homee schon mit dem Receiver als auch dem NAS sprechen und das NAS auch mit homee. Jetzt fehlt mir “nur” noch diese Geschichte mit dem Harmony Hub.

Zwar kann ich programmieren, aber davon kann ich bei homee-Themen leider null profitieren. Bin also technisch nicht unbedingt versiert (also bitte nicht steinigen!), möchte aber natürlich dennoch mit den Webhooks und Harmony arbeiten, bis eventuell mal irgendwann Harmony nativ integriert ist.

Was ich hinbekommen habe (falls das überhaupt zielführend ist):

  • Installation vom Docker
  • Installation des o.g. Pakets

Und nun? Auf der von euch verlinkten Seite steht immer etwas von “Befehle ausführen”. Läuft das über putty? Das habe ich auch mal installiert und konnte mich sogar mit meinem Nutzer auf die Maschine einloggen. Von mehr habe ich aber keinen Schimmer. :slight_smile:

Ich hoffe nicht, dass mein Vorhaben aussichtslos scheitern wird.

Ich hab leider keine Synology und auch kein Docker installiert. Hab alles über forever und die Scripte gelöst. Aber eigentlich ist es ganz einfach. Dein Screenshot ist leider sehr bescheiden. Ich kann nicht so viel erkennen. Ich sehe aber dass es bei dem Docker Container ein Terminal gibt. Irgendwo in den Docker Einstellungen in der Synology musst Du die Optionen für den Dockker-Container nämlich den Pfad zur Config Datei angeben.

docker run --name="harmony-api" -v /path/to/your/config:/config \
-p 8282:8282 -d jonmaddox/harmony-api

Den Config Pfad kannst Du ja irgendwo auf Deiner Nas setzten z.B. /opt/harmony-api/config

Nachdem du auf Starten geklickt hast solltest Du im Terminal (Kannst ja beim Container in der Weboberfläche anklicken) die Ausgabe des Programms sehen. Vermute ich zumindest. Hier solltest Du dann sehen welchen Namen Dein Hub hat.

Nach dem Start des Containers sucht er nach allen harmony hubs die er findet (ständig, auch wenn neue dazu kommen). Hier zeigt er auch den Namen der gefundenen Harmony Hubs an.
Diesen Namen musst Du dann in den Link einbauen.

Also:

GET /hubs/:hub_slug/commands

das Wort “:hub_slug” ersetzt Du dann mit dem Harmony Hub Namen der dir im Terminal angezeigt wurde. Wenn der Name für den hub “harmony-hub1” lautet sieht der Link wie folgt aus:

http://<ip-adresse-des-docker-containers>/hubs/harmony-hub1/commands

Mit Putty verbindest Du dich auch nur auf die Console von Deiner NAS. Hier kannst du oben angegebenen Docker Befehl natürlich auch angeben.

Der Webhook sieht dann wie folgt aus (bei mir heist der Hub, harmony-hub2)

Hoffe ich konnte dir ein wenig helfen.

1 „Gefällt mir“

Danke für deine Hilfe @Shining01. Sorry für den Screenshot. Ich beschreibe noch mal genau, was ich gemacht habe.

  • ZIP-Datei vom Link runtergeladen und unter /docker/harmony-api entpackt

  • Im Docker habe ich den nachfolgend gezeigten Punkt “Einstellungen” gefunden.

  • Ich klicke auf “Importieren” und gehe zum o.g. Pfad…aber weiter weiß ich nicht…von der CONFIG.SAMPLE.JSON habe ich eine Kopie CONFIG.JSON mit meinen Daten angelegt (IP vom Hub und meinen Hub-Anmeldeinformaitonen)…als naiver Mensch versuche ich diese zu importieren > Fehlermeldung, dass es ein ungültiges Dateiformat ist

Alternativer, kläglicher Versuch: Wenn ich in dem zuerst gezeigten “Terminal” etwas eintrage und enter drücke, passiert…nüscht. :slight_smile:

Kann doch keine Raketenwissenschaft sein, so ein blödes Tool zum Laufen zu bringen.

Edit:

Ich habe jetzt mal über putty versucht, den “docker run” Befehl einzutragen (permission denied):

die config.json brauchst Du nicht anzupassen. Kann man, muss man aber nicht. Lösch die mal wieder. Starte einfach den Docker Container und verbinde dich mit dem Terminal.

Ich denke mal hier sollte eine Ausgabe erscheinen.

Danach probierst Du einfach folgenden Befehl im Browser aus:

http://<ip-adresse-docker>:8282/hubs/harmony-hub/activities

Statt harmony-hub musst du halt die Bezeichnung von deinem Hub nehmen. Kannst auch bei der Anmeldung in der Harmony-App sehen wie dieser heißt. Somit sollte der Browser eine Liste als Rückgabewert anzeigen. Mehr kann ich Dir leider auch nicht sagen, da ich keine Docker Umgebung habe. Viel kann es allerdings nicht sein. Die Harmony-API funktioniert absolut stabil.

OK. Hab die ZIP-Datei noch mal komplett neu entpackt.

“ip-adresse-docker” ist identisch mit der NAS-Adresse? Oder kriegt jeder container ne eigene? Wenn ja, hab ich natürlich keinen Schimmer, wo die steht (bzw. hab keine gesehen). Bei der IP-Adresse vom NAS erscheint “No Hubs available”.

Ich habe jetzt auch noch mal eine offizielle Hilfe https://www.synology.com/de-de/knowledgebase/DSM/help/Docker/docker_container zu Rate gezogen, um überhaupt mit dem Docker etwas vertrauter zu werden.

In meinen ersten Versuchen hatte ich dort nix weiter eingetragen (weder bei Volume noch bei “Umwelt”). Aber da steht etwas von PATH. Meinst du, dass ich da was reinschreiben muss? Wenn ja, was für ein Pfad?

Das Terminal ist einfach ein dummes, schwarzes Fenster…wobei mir klar ist, dass “der Dumme” etwa 30 cm mit hochgelegten Beinen vorm Rechner sitzt.

Muss jetzt aber auch erstmal Fußballfanpflichten nachkommen und die zweite Liga spielt freitags früh. :slight_smile: Bin für jede Hilfe dankbar, damit ich am Ende “stumpf” Webhooks zu Harmony schicken kann.

Hi,

ich glaube, ihr seid schon zu kompliziert unterwegs.

Erstmal 2 Worte zu Docker:

  • Docker ist eine definierte “Run-Time-Umgebung” für (Server-) Applikationen. Im Endeffekt vergleichbar mit einer virtuellen Maschine (z.B. VMWare, qEmu), allerdings eben schlanker ausgeführt und mittlerweile von allen (wichtigen) (Consumer-) Betriebssystemen auch (nativ) unterstützt.

  • Im Bild der virtuellen Maschine bleibend: Man startet also den Hypervisor (hier: die Applikation “Docker”) und anschließend eine virtuelle Maschine (hier: einen Docker-Container). Im Container fährt dann z.B. ein Linux-Betriebssystem hoch und anschließend wird dann (wie bei Linux üblich) die Applikation als Daemon oder im Userspace (aber innerhalb des Containers) gestartet.

  • Wenn man also z.B. einen Rechner übrig hat, spricht nichts dagegen, die jeweilige Applikation direkt selbst zu installieren (ohne den Umweg über Docker). Allerdings: Da Docker-Container mittlerweile fast wie “Apps” verteilt werden, spart man sich mit der Methode eben sehr viel Installations- und vor allem auch Konfigurationsaufwand; bezahlt das aber natürlich mit einem erhöhten Ressourcenverbrauch (was zu Hause für einzelne Anwendungen aber meistens ignoriert werden kann!).

  • Ebenfalls wie bei virtuellen Maschinen werden Container als Sandbox-System behandelt, man kann den Ressourcenverbrauch zumindest einschränken (auf Kosten der Performance der Applikation(en) im Container, was meistens aber kein Problem darstellen sollte) und einstellen, ob das Netzwerk des Hosts gebridged, masqueraded oder geshared wird.

  • Da innerhalb des Containers ein Linux gestartet wird, kann man sich ggf. auch über eine entsprechende Remote-Verbindung über das o.g. Netzwerk per telnet, ssh, whateveronelikes,… verbinden.

Dann nochmal 2 Worte zur Docker-Implementierung durch Synology:

  • Je nach verwendetem NAS können aufgrund des von Synology antizipierten Ressourcenverbrauchs durch Docker-Container (und dem -nachvollziehbaren- Wunsch des Synology-Vertriebs, im Zweifel nochmal eine weitere, höherwertigere, Kiste verkaufen zu können) möglicherweise nur eine bestimmte Anzahl an Containern gleichzeitig gestartet werden. Oder auch gar keiner (vgl. https://www.synology.com/en-us/dsm/packages/Docker).

  • Unter “Registrierung” [das ist die falsche Übersetzung von “Registry”. “Katalog” wärs gewesen…] gibt es die Möglichkeit, Docker-“App-Stores” [der allwissende Admin möge mir verzeihen und mich auch weiterhin vor J2ME oder Postscript selbst programmieren müssen bewahren :innocent:] durchsuchen.

  • Das “Terminal” bei Synology zeigt erstmal nur die Screen-7 Ausgaben aus Linux an. Wenn man eine Shell starten möchte, muss man das durch einen Klick auf “Erstellen” tun. Und ja: “erstellen” ist hier richtig, weil aus Synology-Sicht eine Terminal-Emulation mit einer Shell in einer HTML5 Umgebung eben “erstellt” werden muss.

  • Starten und Stoppen des Containers geht über die DiskStationManager Oberfläche in der Docker-Applikation (dort kann man auch Auto-(Re-)Start einstellen). [ja, geht auch alles über shell, aber wir bleiben mal bei der einfachsten Lösung :wink: ]

Nun zu HarmonyHub als Synology-Docker-Container Installation:

  • Da muss man keine ZIP entpacken und Container selbst erstellen.

==> Einfach nach harmony in der “Registrierung” suchen und sich per Doppelklick den entsprechenden Container installieren.

  • Da muss man sich nicht in eine Shell einloggen.
  • Oder eine Config-Datei erstellen.

==> Das Geheimnis ist, dass der Container das Host-Network sharen muss. Kann man unter “Bearbeiten” einstellen, wenn der Container nicht gestartet ist.

  • dann kann man sich, wie oben erklärt, mal einige Dinge im Browser anzeigen lassen (und im “Terminal” wird auch einiges angezeigt):

http://<ip-adresse-des-Docker-Hosts>:8282

  • von hier aus einfach - wie oben erklärt - weitermachen.

Einige Prämissen:

  • Synology NAS und Harmony-Hub sind im selben Netzwerk oder die Netzwerke sind sauber gebridged (ersteres sollte der Standard- Fall sein, zweiteres wird man sich im Falle des Besitzes einer Sonos Anlage und dem Versuch verschiedene Sub-Netze anzulegen für IOT und personal Devices sicherlich mittlerweile einfach einrichten können [#soooovielestundenaergern, #einfachmusstrotzdemsichersein@sonos :rage:, #ARRRRGHHH, #tutauchhiernixzursache_mussteabermalirgendwogesagtwerden].

Ich hoffe das hilft (und man verzeihe mir die durch tagelangen Weihnachtsfeierei-bedingten Schlafmangel ausgelöste Schärfe in manchen Formulierungen… Love|Peace| :evergreen_tree:).

4 „Gefällt mir“

@hrobbie: Fetten Dank. VMWare kenne ich und auf einem recht abstrakten Niveau habe ich mir so etwas auch gedacht. Aber wenn man nicht weiß, was man da anklickt, dann hilft diese Einsicht noch nicht allzu viel weiter. ABER:

Der Nutzer vorm Bildschirm hat das entscheidende Flag nicht gesehen:

Anschließend hat alles funktioniert (und auch im “Terminal” des Containers steht nun Text).

Besten Dank nochmals!

Hallo, leider hat meine aktuelle QNAP TS-269L keine Container Station! Also müsste ich ein NAS Upgrade machen :slight_smile: Wenn ich aber nur meine Harmony mit in Homee einbinden möchte könnte ich es ja auch über IFTTT machen! Oder ist diese Lösung soviel schlechter das es sich auf jedenfall lohnt ne neue QNAP zu kaufen?

LG

Ich bevorzuge eine interne Steuerung möglichst ohne Webdienste. Bei IFTTT habe ich zwar einen Account, aber wirklich viel nutzen tue ich da nicht. Gefühlt sind die Webhooks von homee sogar noch etwas schneller als über die Fernbedienung. Ich vermute, IFTTT wird da nicht mithalten können. Und wenn IFTTT mal nicht verfügbar ist, klappt nix. Gilt natürlich genauso, wenn dein NAS nicht verfügbar ist…

Hi - wie startest und beendest Du eine Aktivität genau? Steht da noch mehr hinter “Fernsehen”?

bei einem Webhook mit

POST
http://ip-der-harmony-api:8282/hubs/wohnzimmer/activities/fernsehen

passiert leider nix :frowning:

Hast du den Link mal im Browser eingetragen?

Das sollte so eigentlich funktionieren. Wenn du Chrome als Browser nutzt solltest du dir mal die Erweiterung Postman anschauen. Hier kannst du deine POST und GET testen…

meinst du “get postman” als Erweiterung?

Diese hier ist die Chrome Erweiterung:

oder du nimmst eine von diesen hier:

1 „Gefällt mir“

danke dir - rennt nun 1a :slight_smile:

(war etwas zu einfach ;))

Ja gerne. Viel Spaß damit…

1 „Gefällt mir“

Ich bin neu hier. Kann mir jemand eine Schritt für Schritt Erklärung zur Einrichtung der HarmonyAPI gehen? wenn ich den Befehl http://ip-Adresse-Harmony Hub:8282/hubs/harmony-hub/activities/poweroff als Homeegramm mit Post eingebe passiert leider nichts.

Hi,

die IP Adresse ist nicht die des Hubs, sondern die des Containers…

VG

soviel kann ich schon sagen - es nicht klicki klicki fertig :wink:

Du musst dich ein wenig reinarbeiten in das Thema

Diese Seite hier sollte dir schon einen kleinen Überblick über deine Hubs geben

http://deindockercontainer:8282/

ermittel dir am besten mit der o.g. Postman App für Chrome die korrekte Aufrufe - ich habe hier auch einige Zeit “frickeln” müssen, um ans Ziel zu kommen.

Hier ein Beispielaufruf, der dich einen enormen Schritt weiter in die richtige Richtung bringen wird:

http://deindockercontainer:8282/hubs/wohnzimmer/activities/musik-horen?command=on

Diesen etwas an deine Umgebung anpassen und per POST absetzen in einem HG als Webhook

Viel Erfolg und ein frohes Fest :slight_smile: