Logitech Harmony Ultimate & Smart Control Hub library

Es gibt jetzt wohl auch eine API von Logitech im Beta Stadium.
MyHarmony - API
Vielleicht bekommt man ja damit IP Symcon und den Harmony Hub komplett richtig eingebunden.

Danke für die Info. Sieht gut aus. Ich bin gerade mit einem Umzug schwer beschäftigt aber werde mir das in ein paar Tagen ansehen und berichten.

Gruss

Zapp

Bin schon gespannt wie ein Flitzebogen. Habe die Ultimate auch seit ein paar Wochen und bisher bin ich schwer bgeistert. Eine reibungslos funktionierende Einbindung in IPS wäre dabei schon eine tolle Sache!

Hab mich für die Beta-API angemeldet, in kürze wollen sie den Kreis der Tester erweitern (woraus ich lese das ich dann dabei sein könnte).

Ich hab das Tool auch mal installiert und erst mal schien auch alles ganz gut auszusehen. Jetzt hab ich aber gesehen, dass zwar eine Aktivität über die RegVar erkannt wird, das Read Script läuft auch aber es hagelt Fehlermeldungen und die Activity Variable ändert sich nicht.

Und zwar immer in der Form:

07.01.2015 14:59:15.171 | 20640 | MESSAGE | VariableManager      | [Program\IPSLibrary\data\core\IPSLogger\IPSLogger\HtmlOut_MsgId] = 447249
07.01.2015 14:59:15.171 |     0 | CUSTOM  | PHP                  | Error: Notice: Undefined offset: 1
   Error in Script C:\IP-Symcon\scripts\Harmony_XMPP.ips.php on Line 212
  134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
   44 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
  212 in scripts\Harmony_XMPP.ips.php (call IPSLogger_PhpErrorHandler)
   27 in scripts\Harmony_Read.ips.php (call XMPP_getPayload)

Ich denke eingerichtet hat das Init Script alles richtig:

PS:
Ich hab das Init Script mal so gestartet und das Ergebnis ist (wobei unter Available Commands nie was steht):
Wie ich jetzt sehe hat das Init Script auch nur eine Aktion (All Off) angelegt und die anderen gar nicht.

Unbenannt1.jpg

Hab ich was übersehen?

Ich hab auch mal die erzeugte Config Datei angehängt.

Harmony_Config.txt (43.4 KB)

So ich hab noch mal ein wenig geforscht und vermute, dass ich eine andere Firmware auf meiner Harmony habe oder sonst was nicht passt.

Die Prüfung in der „Harmony_formatConfig“ Funktion „if (strlen($id) > 7)“ des XMPP Skripts passt nicht, denn ich habe ausschließlich ID’s mit 8 Zeichen in meiner Konfiguration gefunden.

Wenn ich die Prüfung weg lasse und direkt die Activities auslese bekomme ich auch eine passende Auflistung und es wird die aktuell verwendete Activty angezeigt. Außerdem werden jetzt keine Fehlermeldungen mehr geworfen. Allerdings konnte ich nicht testen, was passiert, wenn eine andere Aktion auf der FB gewählt wird, ich bin remote verbunden und kann nicht schalten und will auch erst mal keine Aktion von IPS aus anstoßen.

Die aufgelisteten Activities sind übrigens genau die Elemente, die im Post hiervor als Devices angezeigt wurden und die keine Available Commands aufgelistet hatten.

Ich werde es mal beobachten.

PS:
Ich habe mit diesem Skript jetzt aber keinerlei Devices. Ich schätze der Aufbau der Arrays hat sich geändert und die müssen jetzt anders rausgesucht werden.

Welches Tool hast du denn da vewendet… sieht alles ganz anders aus als bei den Scripten aus diesem Thread die ich damals installiert hatte. Oder gab es bei den Scripten ein Update?

Ich hab die im Moment aktuelle Version 06 installiert, so wie sie im 1. Post steht.

Kann es auch sein, dass der Stream, der von der Harmony kommt nicht in die Variable passt? Ich hab mir das JSON das da geliefert wird noch mal genauer angeschaut und das Ganze sieht so aus als würde irgendwann abgeschnitten.

Übrigens, die Devices kommen dann doch noch in dem String, der ist nur wegen der Escape Zeichen etwas krude und man muss das Teil erst mal richtig formatieren. Bin noch nicht ganz durch aber es wird langsam.

PS:
Scheinbar hat meine Holde grade Fernseher und BluRay aus gemacht und die Activity steht jetzt auf „All Off“. Scheint also soweit grundsätzlich zu funktionieren.

PPS:
Es werden aber trotzdem noch die Offset Fehler geworfen. Scheint also noch nicht ganz OK zu sein.

Hier mal meine JSON Datei, schön aufbereitet und formatiert, damit man auch was erkennen kann.

JSON.txt (89.2 KB)

Das wäre prima wenn so die Möglichkeit bestünde das mehr an die API anzupassen, drücke die Daumen das das klappt.

Die Funktion formatConfig funktioniert bei mir zur Zeit nicht ich bekomme zwar die Aktivitäten ausgelesen aber die Befehle nicht angezeigt. Wenn ich in den Inhalt der Variable schaue ist aber alles vorhanden. Ich habe jetzt mal die Befehle per Hand rausgeschrieben und getestet Befehle abzusetzen, dabei ist mir aufgefallen das ich z.B. bei Menünavigation der Cursor nicht eins weiterbewegt sondern gleich zwei oder mehrmals. Bei der Harmony App von Logitech wird ein Befehl jeweils aus einem Befehl status=press gefolgt von dem status=release abgesendet, im Script wird nur ein status=press gesendet.

Ich hab meine Harmony jetzt auch fertig. Ich hab aber ordentlich an der Harmony_XMPP.ips.php rum schrauben müssen. Wundert mich, dass sonst keiner das Problem hatte. Oder nutzt ihr den IPSLogger nicht, dann würden die Meldungen nämlich unter gehen.

Für mich läuft es jetzt aber ohne Fehlermeldungen und funktioniert super. Ich benutze aber nur die Erkennung der Actions um meine Anlage bzw. den Subwoofer ein oder aus zu schalten.

Was hast Du denn alles geändert in der Harmony_XMPP um die Fehler auszuschalten?

Meine ganze Elektronik inklusive IPS Server und Harmony liegt noch beim Spediteur und es wird leider wohl noch etwas dauern, bis ich wieder testen kann.

Die Länge der IDs wurde schon im Firmware Update letzten März geändert. Kann sein, dass es noch mal geändert wurde. Bei mir lief es noch vor einer Woche mit der letzten Firmware gut. Ich habe die Länge der ID benutzt, um die Aktivitäten von den Commands zu unterscheiden. Die Ausgabe der Commands ist aber nur zur Info da. Es können zwar Commands von IPS aus gesendet werden aber IPS bekommt mit der inoffiziellen API leider nur die aktuelle Aktivität vom Hub Server und nicht die Commands. Daher werden die IDs der Commands eigentlich nicht gebraucht.

Das nur eine Variable für die Aktivitäten erzeugt wird (Activity) ist normal. Die Variable sollte jedoch immer die laufende Aktivität anzeigen.

Ich nutzte den IPSLogger nicht…

Gruss,
Zapp

Ich hab die Regular Expression entsprechend geändert und in einer Routine noch eine Kleinigkeit angepasst und jetzt läuft alles super.

PS: Wenn die neue Datei jemand braucht einfach melden.

Hallo,

nutzt schon irgendjemand die Skripte auf einem IP-Symcon auf einem Raspberry? Bekomme beim Aufruf der Skripte Fehlermeldungen, weil die „alte“ Syntax auf dem Raspberry wohl nicht mehr unterstützt wird. Habe aber leider noch keine Zeit gefunden, um mir mal im Detail alle Befehle anzuschauen, die auf dem Raspberry nicht ausgeführt werden können. Aber vielleicht hat sich ja schonmal jemand die Mühe gemacht und das auf dem Raspberry ans Laufen bekommen?

Schöne Grüße,

Olaf.

Nein, mein IPS läuft auf einem Windows Server aber vielleicht hast Du die gleichen Fehler wie ich, dann kann ich dir mal mein geänderten Skript schicken.

Gesendet von meinem Nexus 5 mit Tapatalk

Das stimmt nicht ganz die Remote kann durchaus aktuelle Informationen auch anzeigen. Wenn man z.B. Sonos zusammen mit der Remote benutzt wird im Display ja auch das aktuelle Lied, Sender, Titel angezeigt. Grundsätzlich kann die Remote wohl auch angezeigte Informationen im laufenden Betrieb aktualisieren, das Problem ist nur, dass dafür eine von Logitech angepasste Ansicht zur Verfügung gestellt werden muss, wie bei HUE oder Sonos sonst besteht keine Möglichkeit diese Informationen anzuzeigen.
Vielleicht lässt sich da ja was in Zukunft machen falls doch noch Zugang zur API von Logitech gewährt werden sollte, dann könnten auch Infos von IP Symcon auf das Display der Remote gesendet werden. Dies setzt aber wohl den Willen von Logitech voraus eine Anzeige zu erstellen, in die dann z.B. auch Temperatur Werte oder ähnliches übertragen werden können.

HarmonyDisplay.jpg

Kannst Du mal beschreiben wie Du das Ereignis zum Schalten des Subwoofer angelegt hast? Der Wert der Integer Variable für Alles aus ist ja -1. Ich habe das Problem das ich kein Ereignis anlegen kann mit Auslöser Bei bestimmten Wert -1, da ich nur 0 aber nicht -1 eintagen kann. Wie hast Du das gelöst?

Also ich hab ein Skript:

   include 'SetHMStatus.inc.php';

	IPSUtils_Include ("IPSLogger.inc.php", "IPSLibrary::app::core::IPSLogger");

	$Subwoofer_Status = 22830 ;
	$Endstufe_Status = 24041;
	
	$Status = getValue(53732 /*[Program\MyHarmony\Activity]*/);
	
	echo $Status;
	if ($Status == - 1)
	{
	   SetHMStatusOff("Subwoofer", $Subwoofer_Status);
	   SetHMStatusOff("Endstufe", $Endstufe_Status);
       IPSLogger_Inf (__file__, "Subwoofer und Endstufe ausgeschaltet durch Fernbedienung");
	}
	else
	{
	   SetHMStatusOn("Subwoofer", $Subwoofer_Status);
		SetHMStatusOn("Endstufe", $Endstufe_Status);
	   IPSLogger_Inf (__file__, "Subwoofer und Endstufe eingeschaltet durch Fernbedienung");
	}

Das wird ausgelöst bei Änderung der Variable „Activity“ die das Harmony Skript erzeugt hat und wo das Harmony_Read.ips.php Skript die aktuelle Activity einträgt.