Logitech Harmony Ultimate & Smart Control Hub library

Also das Read-Script muss man nicht von Hand ausführen, das macht die Register Variable, dann funktioniert es auch.
Aber geh bitte nochmal alle Installationsschritte von Seite 1 durch, mir scheint du hast dort etwas vergessen.

Hallo zusammen,

Habe es nun seit dem Post von Hagbard235 insgesamt 3 Mal nochmal so wie im ersten Post dieses Threads probiert. Leider komme ich nicht weiter, bzw. immer noch das gleiche Problem.

Die Verbindungsdaten sind doch die, die ich bei dem Windows Konfigurationsprogramm „MyHarmony“ im Login eingegeben habe, oder ??? (Email + Passwort)

Im Skript „Harmony_XMPP.ips.php“ muss auch wirklich nur das MyHarmony Passwort, die Email und die ID des HarmonyHub Client Socket eingegeben werden?

Genau dies habe ich auch getan. Danach müsste das Init doch ohne weitere Anpassungen schonmal funktionieren, oder?

Vielen Dank für Eure Geduld.

Hallo DoktorD,

Genau wie Hagbard235 geschrieben hat. Du musst nur das Init Skript ausführen.

Siehe post #5 und #6. Das ist nur eine Warnung (Notice). Das Skript wird trotzdem korrekt ausgeführt .

Das liegt an der Trennung des Sockets (siehe post #7). Der XMPP Server mag es irgendwie nicht, vom IPS Skript angesprochen zu werden und trennt danach kurz die Verbindung. Es läuft aber trotzdem.

Also Du machst hier nichts falsch. Init ist nur für die Authentifizierung zuständig und ich sehe hier keinen Fehler. Dein Token hat er auch richtig in die Variable geschrieben.
Jetzt musst Du entweder Befehle senden (zB mit Harmony_startActivity) oder prüfen, ob die Befehle der Harmony in IPS ankommen.

Gruß
Zapp

Weisst du etwas was ich noch nicht weiß? Die Harmony-Befehle im IPS empfangen wäre mir neu (und sehr wünschenswert!).

Sorry. War nicht präzis genug. Die einzigen Befehle, die vom Hub weitergeleitet werden sind Start und Ende einer Aktivität.
Das ist bei mir aber ausreichend, da ich unterschiedliche Szenarien nur abhängig von den Aktivitäten starte. Alle Befehle zu empfangen wäre natürlich besser…

Gruß
Zapp

Selbst das habe ich bei mir nicht drin, wie machst du das? Oder fragst du nur ab welche Aktivität „aktuell“ ist?

Das ist alles schon im Harmony_Read Skript drin und sollte direkt laufen.
Hast Du denn das Harmony_Read Skript als Target ID in der Konfiguration der Register Variable eingegeben? Sonnst mach mal ein Debug deiner Register Variable und prüfe, ob da etwas ankommt. Beim starten oder stoppen einer Aktivität mit der Harmony sollten solche Daten ankommen:


<message content-length="238"/>
<message from="HarmonyOne_Pop@qa1.com" to="xxxxxxx-yyyy-zzzzz-aaaa-bbbbbbbbb">
<event xmlns="connect.logitech.com" type="harmony.engine?startActivityFinished"><![CDATA[activityId=5367092:errorCode=200:errorString=OK]]>
</event>
</message>

Daraus liest das Skript die Aktivitäts ID raus. Im folgenden Teil im Skript kannst Du Befehle angeben, die beim starten/stoppen der Aktivitäten reagieren. Als Default gibt es da ein einfaches IPS_LogMessage.


case 'message':
      $content = XMPP_getPayload($xml);
      if ($content['type'] == "startActivityFinished") {
         $activity = Harmony_getActivityFromId($content['activityId']);
         // Beim Starten / Stoppen der Aktivität ausführen. $activity ist der Name der Aktivität.
      }
      break;

Gruß
Zapp

Hi Zapp,

Erstmal vielen Dank. Muss mich auch erstmal dafür entschuldigen, dass ich das nicht selber gemerkt hatte, denn ich hatte mir den kompletten Thread im Vorfeld erst durchgelesen. Leider habe ich die ersten Posts nicht mit meinen Ausgaben kombiniert.

Leider habe ich aber immer noch keinen Erfolg. Wenn ich folgendes Skript …


<?


include("Harmony_XMPP.ips.php");

$ID= 58818 /*[HarmonyHub]*/ ;
CSCK_SetOpen($ID/*[Client Socket Hub]*/, true);
IPS_ApplyChanges($ID/*[Client Socket Hub]*/);
Harmony_sendCommand("ID", "Befehl");
CSCK_SetOpen($ID/*[Client Socket Hub]*/, true);
IPS_ApplyChanges($ID/*[Client Socket Hub]*/);

Harmony_startActivity(-1);	// Switch all devices from current activity off ("off" button)


?>

… ausführe, tut sich garnichts (Geräte sind zu dem Zeitpunkt eingeschaltet und sollen mit dem Skript ausgeschaltet werden).
Ich habe mal mit meiner Smartphone Kamera kontrolliert, ob die IR Dioden leuchten. Aber da ist nichts.

Kann mir jemand sagen warum ich keinen Befehl senden kann, obwohl die Einrichtung des Hub in Ordnung ist?

Ich frag mal, weil manchmal sind die unwahrscheinlichsten Sachen doch das Problem:

Harmony_sendCommand(„ID“, „Befehl“);

Du hast ID und Befehl schon durch echte Werte ausgetauscht?

Es kann in der Tat sein, dass ein falscher sendCommand Befehl den Server dazu bringt, die Verbindung zu trennen. Der startActivity Befehl geht dann ins Lehre. Ersetze mal sendCommand durch startActivity.

Wie sieht es im Debug der Register Variable aus? Kommt da was vom Sever an, wenn Du den Befehl sendest?

Sent from my Surface Pro 3 using Tapatalk

Hi,

Also mit …

Harmony_sendCommand("ID", "Befehl"); 

funktioniert es (Fernseher an/aus usw.). Also mein Hub sendet den jeweiligen gewünschten einzelnen Befehl.

Mit geht es aktuell darum, dass …

Harmony_startActivity(-1);    // Switch all devices from current activity off ("off" button) 

nichts sendet. Egal wie ich mein Skript strukturiere (startActivity nicht an genau der Stelle im oben aufgeführten Skript).

Ich habe es so verstanden, dass der Parameter 0 in startActivity meine Aktivität mit der Kennung 0 im Config startet, oder?
Mit -1 sollte es dann möglich sein, alles auszuschalten. Aber auch wenn ich alles manuell einschalte und startActivity mit -1 sende tut sich nichts.

Habt Ihr ne Ahnung woran das liegen könnte.

Vielen Dank.

OK. Dann funktioniert es ja. Ich dachte, nichts läuft. Dann sollte eigentlich alles gehen können.

Versuche mal Harmony_startActivity(-1) nicht gleich nach Harmony_sendCommand zu senden. 2 Befehle kurz hintereinander akzeptiert der Server anscheinend nicht. Du könntest da zum Beispiel ein IPS_Sleep zum testen dazwischen einbauen. Du könntest auch prüfen, ob das Socket noch verbunden ist, wenn du Harmony_startActivity(-1) sendest.

Das geht nicht. startActivity mit -1 macht das gleiche wie der „Off“ button und schaltet alle Geräte der laufenden Aktivität ab. Wenn Du vorher alles manuell also ohne der Harmony eingeschaltet hast, weiß die Harmony ja nicht welche Geräte ausgeschaltet werden sollen und sendet nichts.

Gruß
Zapp

Habe meinen Fehler gefunden (Copy/Paste Fehler). Habe mir nämlich das Konfig File in Excel importiert. beim Trennen der Spalten ist wurde es anscheinend verschoben, so dass ich bei den Aktivitäten die falsche ID verwendet hatte.
Dummer Fehler von mir.

Danke für Euren Support. Ihr habt mit bis hier hin auf jeden Fall geholfen.

Danke.

Inhalt.txt (32.6 KB)

Hallo zusammen,
habe alles gemacht wie beschrieben, leider bekomme ich beim Ausführen des Init-scripts folgende Fehlermeldung:

Fatal error: Call to undefined function curl_init() in C:\IP-Symcon\scripts\Harmony_XMPP.ips.php on line 234

die Variablen User Auth Token wurde erstellt aber ist sonst unangetastet.

Hat vielleicht jemand ne Idee ?

Hast Du die php_curl DLL im ext Verzeichnis?
Sonnst kann Dir das vielleicht helfen:
http://www.ip-symcon.de/forum/threads/24116-call-to-undfined-function-curl_init

Gruß

Zapp

Hallo zusammen,

ich habe die Skripte soweit zu laufen bekommen - und ich kann auc Geräte/Aktionen ansteuern.

Was mich aber irritiert ist folgenden:

Ich bekomme nicht die komplette Konfiguration der Harmony in die entsprechende Variable ausgelesen. Es ist nur ein Bruchteil der Geräte und Aktionen hinterlegt.

Um auf Nummer Sicher zu gehen habe ich den Inhalt der ausgelesenen Konfiguration einmal komplett gelöscht und neu angefordert. Danach sind die bekannten (aber unvollständigen) Geräte und Aktionen wieder gespeichert. Damit kann ich also davon ausgehen, dass die Daten auch wirklich frisch vom Hub gelesen und nach IPS importiert werden.

Hatte jmd. aus dem Forum schon einmal ein ähnliches Problem? Ich komme irgendwie nicht dahinter…

VG Christian

Hallo,

Ich habe endlich eine neue Version hoch laden können. v0.6 findet Ihr im ersten Post.

Ich habe die Authentifizierung etwas angepasst und es wird jetzt direkt bei der Ausführung eines Befehls geprüft, ob das Socket geöffnet ist. Ihr brauchst also nicht mehr vor und nach dem sendCommand das Socket mit CSCK_SetOpen bzw. IPS_SetProperty zu öffnen/schließen.

Bei einem Firmware Update des Hubs im März wurde das Format für die Kodierung der Aktivitäten geändert. Mit dieser Version sollte das Skript nun die Aktivitäten richtig raus lesen. Es wird auch eine String Variable für die laufende Aktivität angelegt.

Es müssen Harmony_getConfig(); und Harmony_formatConfig(); noch einmal ausgeführt werden, damit die korrekten Aktivitäten in die IPS Variable geschrieben werden können. Das könnt Ihr z.B. im Initialisierungs-Skript machen.

Danke an frankrdm für das Testen.

Gruß

Zapp

Hallo, ich verfolge seit einiger Zeit das Harmony Thema.

Der Invest von ca. 220,00 € hält mich im Moment davon ab es zu kaufen, da mir noch nicht ganz genau klar ist,

Ob ich bei Einbindung in IPS mit der FB bzw. dem HUB Funktionen in IPS Steuern kann.

Beispiel: ich habe eine schaltbare Steckdose in IPS, welche ich über das WebFront schalten kann.

Kann dies auch nun die FB übernehmen?

Oder gibt es nur den andren Weg, die programmierten Befehle der FB, bzw. HUB über IPS zu steuern, also den Fernseher ein/ausschalten.

Merci!

Ich habe mir mal das Script Version 0.6 installiert und bin entsprechend der Anleitung im ersten Post vorgegangen. Der Socket funktioniert und ich habe einen User Auth Token. Ich habe jetzt nacheinander getConfig und dann formatConfig durchgeführt. Ich stehe jetzt auf dem Schlauch wo die Abfrage eigentlich gespeichert wird. Ich habe im IP-Symcon Verzeichnis eine Text Datei mit dem Namen Harmony_Config.txt sowie eine String Variable angelegt mit dem Namen Harmony Config. Irgendwie wird aber weder was in die Text Datei noch in die String Variable geschrieben. Was mache ich denn falsch bzw. was muss ich denn noch anpassen?

Hi, also so wie ich das Verstanden habe, kann man hiermit nur über IPS die Harmony (Geräte) Steuern und nicht umgekehrt (les mal Seite 2) bzw. „nur“ die Aktivitäten auslesen siehe Post #45. Was mich wiederum dazu bewegt hat, neben dem 220€ Invest, auch noch IR Trans zu implementieren. Eine sau teure Angelegenheit, aber … es funzt und macht Spaß :smiley: