WICHTIG:
Durch ein automatisches Firmware Update auf 4.15.206 wird der Zugang von externen Systemen, wie auch IP-Symcon, zu einem Logitech Hub durch Logitech selber geblockt.
[i]Nähere Infos zum Update auf 4.15.206[/i]
Ab Firmware 4.15.250 ist es notwenig explizit Enable XMPP zu aktivieren damit der Logitech Hub extern durch Ip-Symcon gesteuert werden kann.
Siehe auch
[b][i]Update to accessing Harmony Hub’s local API via XMPP[/i][/b]
Ich benutzte schon seit längerer Zeit die Skripte von Zapp für das Anzeigen von Aktivitäten des Logitech Harmony Hub und das Senden von Befehlen.
Auf Grundlage der Arbeit und der Scripte von Zapp sowie der Diskussionen aus diesem Thread
Logitech Harmony Ultimate & Smart Control Hub library
habe ich mir mal die Skripte so angepasst und erweitert um ein Modul für den Logitech Harmony Hub zu erstellen.
Das ganze ist sicher noch ausbau fähig, in Zukunft wird hoffentlich mit Anpassungen der Logitech API dann noch mehr möglich sein.
Installation
Voraussetzung:
- IP-Symcon 4.x
- Logitech Harmony Hub im gleichen Netzwerk wie IP-Symcon
- Konfigurierter Logitech Harmony Hub mit angelegten Aktionen und Geräten
- Zugangsdaten für MyHarmony
Das Modul unter Kern Instanzen Modules mit der URL
https://github.com/Wolbolar/IPSymconHarmony
hinzufügen.
Danach IP-Symcon 4.x eine Instanz hinzufügen (CTRL+1).
Hier nun als Hersteller Logitech eingeben und Logitech Harmony Hub auswählen.
Im dem sich öffnenden Fenster zunächst bei Erstinstallation folgende Dinge auswählen:

1
Haken bei Öffnen setzten. Dies ist notwendig damit der I/O Instanz später aktiv ist.
2
IP Adresse des Logitech Harmony Hub eintragen
3
Port bleibt unverändert auf 5222
4
Email Adresse (entspricht Anmeldename) für MyHarmony
5
Passwort für MyHarmony
6
Vorher ist in IP Symcon eine Kategorie anlegen. Diese ist hier auszuwählen. Unter dieser Kategorie werden die Geräte Instanzen angelegt.
7
Hier einen Haken setzten. Wird in einer späteren Version entfernt. Die Variablen CommandOut und IOIN zeigen die ein- und ausgehenden Daten an.
8
Optional Wenn diese Option gewählt wird werden für jede Befehlsgruppe eines Logitech Harmony Geräts eine Variable zum Schalten aus dem Webfront angelegt. VORSICHT: Diese Option sollte nur gewählt werden wenn noch ausreichend Variablen in IP-Symcon verfügbar sind oder die Variablenanzahl unbegrenzt ist, da eine hohe Anzahl an Variablen je nach angelernten Geräten im Harmony Hub verbraucht werden kann.
9
Optional Dies Option kann gewählt werden als Alternative oder Ergänzung zu 8. Es werden für jedes Gerät im Harmony Hub ein Skript zum schalten des Befehls angelegt.
Nach dem Druck auf Übernehmen wird zunächst der User Auth Token für den Logitech Harmony Hub abgefragt und in IP-Symcon abgelegt. Wenn das Abrufen des User Auth Token erfolgreich war kann mit Schritt 10 und 11 vorgefahren werden.
10
Nachdem der User Auth Token vorhanden ist kann auf Konfiguration auslesen geklickt werden. Es dauert einen Moment nach vollständigem Empfang vom Logitech Harmony Hub wird die Konfiguration in IP-Symcon in der Variable Harmony Config abgespeichert. Wenn sich etwas an den Geräten im Logitech Harmony Hub ändert ist die Konfiguration erneut auszulesen.
11
Sobald die Konfiguration ausgelesen wurde kann auf Setup Harmony gedrückt werden.
Abhängig von der optionalen Auswahl 8 und 9 werden nun die Instanzen, Skripte und Variablen angelegt.
Im Webfront sieht das z.B. dann so aus:
Es lassen sich über das Webfront oder die Skripte dann Befehle absetzten. Die Aktivität wird im Webfront angezeigt.
Sobald ein Gerät oder Harmony Fernbedienung eine Harmony Aktivität auslöst wird diese auch in IP-Symcon aktualisiert.
Die aktuelle Aktivität wird in der Variable Harmony Activity, diese liegt unter dem Logitech Harmony Splitter, angezeigt. Es wird automatisch ein Link unter der oben gewählten Kategorie zu dieser Variable angelegt.
Die Variablennamen und die Bezeichnung der Befehle werden so angelegt wie diese von der Bezeichnung im Harmony Hub hinterlegt sind. Für jede angelegte Variable wird auch das Beschreibungsfeld genutzt, hier steht der eigentliche Befehl drinnen der an den Harmony Hub gesendet wird. Daher darf das Beschreibungsfeld der Variable nicht geändert werden. Die Bezeichnung der Variable sowie die Befehlsnamen die im Variablenprofile der Variable hinterlegt sind können individuell vom Nutzer angepasst werden. Dabei darf nur nicht die Reihenfolge im Variablenprofil verändert werden.
Wem die vorgebende Anordnung durch den Harmony Hub nicht gefällt, der kann auch den Haken bei 8 weglassen. Es werden dann keine Variablen angelegt. Diese können dann später individuell von Hand angelegt werden. Dabei ich dann zunächst mit der Funktion
LHD_GetCommands(integer $InstanceID);
zu schauen welche Befehle für das Gerät zur Verfügung stehen. Dies Befehle können dann nach Belieben auf Variablen mit dem entsprechenden Variablenprofil verteilt werden. Das Variablenprofil muss für den Typ Integer sein, die Namen der Befehle im Variablenprofil können individuell gewählt werden. Wichtig ist das Beschreibungsfeld der Variable entsprechend der Reihenfolge im Variablenprofil mit den tatsächlichen Befehlsnamen, die von der Funktion LDH_GetCommands ausgegeben wurde, zu befüllen. Wenn das Profil erstellt wurde kann dann die Variable angelegt werden.
$InsID = 44015 /*[Geräte\Heimkino\Harmony\Harmony Geräte\Amazon Fire TV]*/; // ObjektID des Harmony Geräts
$VarIdent = "Navigation"; //Ident
$VarName = "Navigation"; //Name
$profiledevicename = "FireTV"; // Gerätename
$profilegroupname = "Navigation"; //Commandogruppe
$Profilname = "LogitechHarmony.".$profiledevicename.".".$profilegroupname;
$descriptionjson = '["DirectionDown","DirectionLeft","DirectionRight","DirectionUp","OK"]' ;
$varid = LHD_SetupVariable($InsID, $VarIdent, $VarName, $Profilname); //Letzter Parameter ist der vergebene Profilname
IPS_SetInfo($varid, $descriptionjson);
In dem Beispiel würde eine Variable angelegt die den Namen Navigation hat und die Befehle „DirectionDown“,„DirectionLeft“,„DirectionRight“,„DirectionUp“,„OK“ enthält. Diese sind in der gleichen Reihenfolge im selbst erstellten Variablenprofil beginnend bei 0 (DirectionDown) bis 4 (Ok) hinterlegt. Die Beschreibung $descriptionjson ist im JSON Format anzugeben.
Zusätzliche Funktionen:
HarmonyHub_getCurrentActivity(integer $InstanceID);
Parameter $InstanceID ObjektID des Harmony Hub Splitters
Fordert eine manuelle Aktualisierung der Aktivität in IP-Symcon an. Die Aktivität wird in der Variable Harmony Activity abgelegt.
Liest alle verfügbaren Aktivitäten des Logitech Harmony Hub aus und gibt einen Array zurück.
HarmonyHub_GetAvailableAcitivities(integer $InstanceID);
Parameter $InstanceID ObjektID des Harmony Hub Splitters
Beispiel:
$activities = HarmonyHub_GetAvailableAcitivities(44523 /*[Logitech Harmony Hub]*/);
print_r($activities);
Liest alle verfügbaren Device IDs des Logitech Harmony Hub aus und gibt einen Array zurück.
HarmonyHub_GetHarmonyDeviceIDs(integer $InstanceID);
Parameter $InstanceID ObjektID des Harmony Hub Splitters
Beispiel:
$devices = HarmonyHub_GetHarmonyDeviceIDs(44523 /*[Logitech Harmony Hub]*/);
print_r($devices);
Schaltet auf die gewünschte Logitech Harmony Hub Aktivität
HarmonyHub_startActivity(integer $InstanceID, integer $activityID);
Parameter $InstanceID ObjektID des Harmony Hub Splitters Parameter $activityID ID der Harmony Aktivität, verfügbare IDs können über HarmonyHub_GetAvailableAcitivities ausgelesen werden
Liest die verfügbaren Funktionen des Geräts aus und gibt diese als Array aus
LHD_GetCommands(integer $InstanceID);
Parameter $InstanceID ObjektID des Harmony Hub Geräts
Beispiel:
$commands = LHD_GetCommands(44015 /*[Geräte\Heimkino\Harmony\Harmony Geräte\Amazon Fire TV]*/);
print_r($commands);
Hier wird auf die Instanz verwiesen von der man die Befehle auslesen will hier Amazon Fire TV.
Sendet einen Befehl an den Logitech Harmony Hub
LHD_Send(integer $InstanceID, string $Command);
Parameter $InstanceID ObjektID des Harmony Hub Geräts
Parameter $Command Befehl der gesendet werden soll, verfügbare Befehle werden über LHD_GetCommands ausgelesen.
Wer einzelne Tastendrücke einer Harmony Remote nutzen will um damit Aktionen in IP-Symcon auszulösen kann dies unter Hinzunahme von FHEM lösen. Eine Anleitung wie dies geht findet man hier:
Logitech Harmony Hub Modul [Testversion] - Seite 7
Da es ab IP-Symcon 4.1 auch einen Multicast Socket gibt könnt man diesen Umweg über FHEM wohl in Zukunft nicht mehr brauchen. Eine Umstellung des Moduls auf Funktionen die erst ab 4.1 verfügbar sind wird es aber erst in Zukunft geben.