Logitech Harmony Ultimate & Smart Control Hub library

Ja das Einrichten ist schon sehr einfach über die Software und selbst mit einem Fire TV kommt das Teil super klar.

Ein Anfänger brauch mal wieder Hilfe…
Hier an diesem Punkt hänge ich gerade? Wie muss ich da jetzt weiter vorgehen…

  • Register-Variable anlegen und auf den Client Socket verbinden. Harmony_Read Skript als Target ID setzen.

z.B. Rechtsklick auf den Ordner „Harmony“ > Objekt hinzufügen > Variable hinzufügen und dann wie weiter ??

Vielen Dank schon einmal

Hallo marcbroe,

Du musst nicht „Variable hinzufügen“, sondern eine „Instanz“ namens „Register Variable“.

CU,
Golo

Ich kriege es bei mir nur schwerlich zum Laufen, der Disconnect ist auch nicht ganz ohne. Ich warte und hoffe das es irgendwann mal über die API geht.

Habe die für mich nötigen Funktionen (All OFF und einzelne Aktivitäten AN) nun über IFTTT gelöst, welches über IPS getriggert wird.

Habe so ein sauberes Abwesenheitsszenario gestaltet bekommen, was mit dem aussenden eines HTTP Posts seinen Zweck erfüllt.

Ich Check die ip des TVs die ist nur Ping bar wenn er an ist
So steuere ich die Jalousie

Gruss Roman

Hallo,

mir geht es leider genauso wie Fonzo 2014 mit Ausnahme der Tatsache, dass ich das Script V 0.7 benutze :slight_smile: Da ich keine Antwort auf seine Frage gefunden habe aber davon ausgehe, dass Fonzo eine Lösung gefunden hat, wäre ich für Aufklärung dankbar.

Gruß
Hans

Moin,

nach einigen Tagen Abstand - als Anfänger hat man eh genug Baustellen :slight_smile: - habe ich mir das nochmals angeschaut. Und siehe da es ist ein trivialer Fehler gewesen. Ich hatte die Register Variable Harmony XMPP Output zwar dem Script Harmony_Read zugewiesen, jedoch vergessen den Harmony Socket als übergeordnete Instanz einzutragen. Irgendwie ging der Blick nur nach oben und nicht nach unten :mad:

Vielleicht hilft die Erklärung ja dem einen oder anderen Anwender falls der ebenfalls auf dieses Problem trifft :wink:

An zapp vielen Dank für dieses tolle Script. Wenn alles funktioniert werde ich mein Mediola Gateway nicht mehr benötigen :cool:

Gruß
Hans

wo gibt es denn 0.7?

Den Logitech Ultimate Harmony Hub gibts heute übrigens für schmale 39,99 EUR bei Am****.

Schöne Grüße
Stephan

Moin,

wo gibt es denn 0.7?

sorry, das musste 0.6 heißen :slight_smile:

Gruß
Hans

Hallo,

ich habe ein kleines Problem mit dem Script: Bei mir wird die Variable „Harmony Config“ mit der gesamten Konfiguration gefüllt. Wenn ich mir den Inhalt anschaue, bekomme ich im Log einen Fehler „End of line“. Ich vermute gemäß der Dokumentation, dass hier das Limit von 1 MB pro String greift. Meine Harmony Config ist ziemlich groß, viele Geräte und Aktionen.

Ich setze IP-Symcon 4.00, 03.03.2016, 5fb1222b8508 auf einem Raspi ein.

Hat jemand eine Idee, wie sich dies lösen lässt? Vielleicht kann der Inhalt in eine Datei geschrieben werden statt in eine Variable, oder kann ich das 1 MB Limit verändern?

Danke,
Golo

Nachtrag: Die Config-Datei wird erzegt und ist nur ~100 KB groß. Dafür bekomme ich noch haufenweise „Undefined offset: 1“, was sich auf den Switch in der Harmony_Read zu beziehen scheint…

Nachtrag 2: Der erste Fehler (End of file) ist wohl ein Socket Problem, das sei mal hinten angestellt. Um dem zweiten Fehler auf die Pelle zu rücken, habe ich mir mal das Ergebnis angesehen, was vom Hub zurückgesendet wird. Hier vermute ich einen Syntaxfehler. Ich habe mal meine Harmony_Config.txt angehangen, wenn ich hier reinschaue, scheint diese fehlerhaft zu sein, am Ende hängt nochwas an, was ich nach JSON Notation nicht erwarten würde: ]]></oa></iq>

Vielleicht ist es aber auch ein allgemeines Parser-Thema. Ich habe mal die Funktion Harmony_getCurrentActivity() laufen lassen und ganz oben in der Harmony_Read ein print_r($xml) eingefügt. Danach bekomme ich folgendes is Log, was meiner Meinung nach erstmal korrekt aussieht:

24.03.2016 00:35:30*| Register Variable*| <iq id=„2320426445“ to="" type=„get“><oa xmlns=‚connect.logitech.com‘ mime=‚vnd.logitech.harmony/vnd.logitech.harmony.engine?getCurrentActivity‘ errorcode=‚200‘ errorstring=‚OK‘><![CDATA[result=17478424]]></oa></iq><br />
<b>Notice</b>: Undefined offset: 1 in <b>/var/lib/symcon/scripts/21297.ips.php</b> on line <b>209</b><br />
<br />
<b>Notice</b>: Undefined index: identity in <b>/var/lib/symcon/scripts/21297.ips.php</b> on line <b>607</b><br />

Ist vielleicht die RegEx Syntax unter Linux anders als unter Windows? Läuft das ganze bei jemandem unter Linux (Raspi)? Für heute erst einmal Feierabend, ich hoffe ich finde demnächst Zeit, hier weiter zu forschen. Ansonsten freue ich mich natürlich, falls sich ein/eine Leidensgenosse/In findet, der/die hier auch Lust hat, weiter zu forschen :slight_smile:

Hallo,

Anhand deiner Beschreibung sehe Ich hier nicht unbedingt kritische Fehler. Warum „Undefined offset: 1“ vom RegEx Match raus kommt ist mir zwar nicht ganz klar, aber das muss nicht unbedingt einen Einfluss auf das Resultat haben. Deine Harmony_Config.txt sieht auch auf den ersten Blick korrekt aus.

Könntest Du mal ein Harmony_formatConfig() laufen lassen und prüfen, ob die richtigen Geräte und Aktivitäten, die Du in deiner Harmony eingestellt hast, angezeigt werden?

Die Tags am Ende sind XMPP „Stanzen“. Das ist kein Fehler und wird beim Parsen ignoriert.

Gruss

Zapp

Hallo Zapp,

der Output der Harmony_formatConfig() ist unvollständig. Hier bekomme ich dieses Resultat. Darin sind von 9 Geräten nur von 5 die Commands zu finden, die Aktivitäten fehlen ganz. Warum, ist mir noch nicht ganz klar.

CU,
Golo

Hallo,

Ich habe eine neue Version hochgeladen. v0.7 findet Ihr im ersten Post.
Wer die V0.6 hat, muss nur die Harmony_XMPP.ips.php ersetzen.

Irgendwie sind jetzt die IDs der Aktivitäten anders. Leider wohl wieder eine Änderung des Herstellers, wahrscheinlich nur für die neusten Geräte. Ohne offizielle API ist die Aktualisierung der Skripte schwierig.

Danke Golo für den ausführlichen Fehlerbericht. Die Aktivitäten und Devices deiner Harmony sollten jetzt richtig erkannt werden.

Gruss

Zapp

Hallo Zapp,

vielen Dank!! Jetzt funktioniert es gut. DerSocket geht zwar immer zu, wie bekannt, aber das stört nicht. Ich musste die beiden Zeilen 170 und 186 auskommentieren, da die Funktion CSCK_SetOpen in der 4er und auf Raspi gar nicht mehr unterstützt wird.

Jetzt gehts ans Multimedia-Ereignisse scripten :slight_smile:

Noch eine kleine Frage: Wenn ich auf eine Zustandsveränderung in der Harmony reagieren will, also z.B. Raum-Beleuchtung anpassen wenn eine bestimmte Aktion gestartet wurde, wie bekomme ich das am besten mit? Ich vermute mal, dass ich die Harmony nicht so einstellen kann, dass sie ihre Änderungen direkt ins IPS liefert - ich denke ich werde wohl regelmäßig den Status über Harmony_getCurrentActivity abfragen müssen, oder?

Danke,
Golo

PS: Hast Du ein „Spendenkonto“/Paypal?

Es wird doch in eine Variable der aktuelle Status geschrieben. Da einfach ein Ereignis drauf legen und das Value auswerten.

Klar, wenn der Wert in der Variable ankommt, kann ich reagieren. Die Frage ist, wann der Wert geschrieben wird, bzw. ob ich den Wert aktiv pollen muss oder ob ich die Harmony dazu bewegen kann, mir den Wert zu pushen.

Das passiert doch automatisch sobald sich die Activity ändert

Also bei mir nicht. Die Activity Variable ändert sich weder beim Ausführen einer Aktion wie Harmony_startActivity() noch weniger beim Ausführen von Aktionen oder Befehlen von der Harmony direkt. Ich muss immer erst ein Harmony_getCurrentActivity() ausführen um den aktuellen Status zu bekommen.

Hier liegt aber wohl noch ein Fehler, ich bekomme auch mit der 0.7 noch nicht das richtige Ergebnis. Im Debug des Sockets sehe ich dies:

Transmit:

<iq type='get' id='2320426445' from=''><CR><LF>      <oa xmlns='connect.logitech.com' mime='vnd.logitech.harmony/vnd.logitech.harmony.engine?getCurrentActivity'><CR><LF>      </oa><CR><LF>    </iq>

Received:

<iq id="2320426445" to="" type="get"><oa xmlns='connect.logitech.com' mime='vnd.logitech.harmony/vnd.logitech.harmony.engine?getCurrentActivity' errorcode='200' errorstring='OK'><![CDATA[result=17478420]]></oa></iq>

Ich hatte noch keine Zeit hier weiter zu forschen, da ich jetzt einige Stunden mit Android, IPSView und den Apps terremote, tasker und motion detector beschäftigt war - glücklicherweise voll erfolgreich nach vielen Hürden :slight_smile:

LG,
Golo