Hi,
interessant aber es sind 3+1 User du hast mich vergessen 
Du benutzt die Core-API WS oder? Ich curl. Ich habe im Prinzip schon alles als Script was man braucht, d.h. Aktivitäten inkl. der vorhandenen Befehle und Entities inkl. der vorhanden Befehle auslesen sowie Befehle absetzen.
Für mich sieht es so aus das sich die Innereien der R2/3 nicht so sehr von der Harmony unterscheiden. Harmony hat den Aktivitäten und Geräten auch eine Nummer verpasst aber als Integer die R2 benutzt UIDs also Strings.
Mit meinen Scripten und dem Harmony-Modul könnte sich schon was basteln. Da ich mich noch nicht an Module rantraue und auch keine Zeit habe ist es für mich verschoben.
Btw. Mein Liebling ist die Requests Integration. In der R2 konfiguriere ich
url="http://192.168.178.2:3777/hook/SZ2-UC",json="{'cmd':'licht-power'}"
und schon wird ein web-Hook in IPS aufgerufen mit einer json-Strunktur. Hier ein abgekürztes Beispiel:
<?php
// array aus json machen
$Command = json_decode(file_get_contents("php://input"), true);
// wenn kein cmd nix machen
if (!isset($Command['cmd'])) return;
// damit ich meine beiden R2 unterscheiden kann je nachdem welche es war benutze ich in einigen Befehlen andere IP und Key
$UserAgent = $_SERVER['HTTP_USER_AGENT'];
if ($UserAgent == 'Remote1'){
$Key = GetValue(17539);
$IP = '192.168.178.228';
}
else if ($UserAgent == 'Remote2'){
$Key = GetValue(22717);
$IP = '192.168.178.227';
}
else return;
$kommando = $Command['cmd'];
// Start/Ende speziell behandeln Script wird nur ausgeführt wenn die Variable 10091 false ist
// Ich benutze diese Routinen um meine beiden R2s zu synchronisieren, d.h. R2-1 startet Aktivität XYZ dann wird die auch auf R2-2 gestartet
if ((GetValue(10091)) && ((stristr($kommando, 'activity.on') !== false) || (stristr($kommando, 'activity.off') !== false))){
SetValue(10091, false);
return;
}
// hier kann man sich jetzt austoben. Wenn man möchte kann man so ALLES mit IPS steuern
switch ($kommando){
case "licht-an":
$brightness = GetValue(11082) + 10;
if ($brightness > 100) $brightness = 100;
SetValue(11082, $brightness);
IPS_RunScript(26798);
break;
case "licht-aus":
$brightness = GetValue(11082) - 10;
if ($brightness < 0) $brightness = 0;
SetValue(11082, $brightness);
IPS_RunScript(26798);
break;
case "licht-power":
$power = GetValue(39712);
if ($power) RequestAction(39712, false);
else RequestAction(39712, true);
break;
case "luefter-power":
if (GetValue(41643)) RequestAction(10444, !GetValue(10444));
break;
case "luefter-speed":
if (GetValue(41643)) RequestAction(29783, (GetValue(29783) %3) + 1);
break;
case "luefter-osci":
if (GetValue(41643)) RequestAction(11897, !GetValue(11897));
break;
// für mein Philips Eingänge umschalten weil es da keine Direktbefehle gibt. Dazu benutze ich das FireTV-Modul
case "HDMI1":
FireTV_Send_String(13812, "shell am start -a android.intent.action.VIEW -d content://android.media.tv/passthrough/com.mediatek.tvinput%2F.hdmi.HDMIInputService%2FHW5 -n org.droidtv.playtv/.PlayTvActivity -f 0x10000000");
break;
case "HDMI2":
FireTV_Send_String(13812, "shell am start -a android.intent.action.VIEW -d content://android.media.tv/passthrough/com.mediatek.tvinput%2F.hdmi.HDMIInputService%2FHW6 -n org.droidtv.playtv/.PlayTvActivity -f 0x10000000");
break;
case "HDMI3":
FireTV_Send_String(13812, "shell am start -a android.intent.action.VIEW -d content://android.media.tv/passthrough/com.mediatek.tvinput%2F.hdmi.HDMIInputService%2FHW7 -n org.droidtv.playtv/.PlayTvActivity -f 0x10000000");
break;
case "HDMI4":
FireTV_Send_String(13812, "shell am start -a android.intent.action.VIEW -d content://android.media.tv/passthrough/com.mediatek.tvinput%2F.hdmi.HDMIInputService%2FHW8 -n org.droidtv.playtv/.PlayTvActivity -f 0x10000000");
break;
// Aktivität Dune-HD (Android TV) wurde gestartet
case "StartDune":
// Eingang umschalten
FireTV_Send_String(13812, "shell am start -a android.intent.action.VIEW -d content://android.media.tv/passthrough/com.mediatek.tvinput%2F.hdmi.HDMIInputService%2FHW5 -n org.droidtv.playtv/.PlayTvActivity -f 0x10000000");
sleep(5);
// MagentaTV starten
FireTV_MagentaTV(47980, false);
sleep(2);
// Auf Kanal 1 schalten
RequestAction(36984, 1);
// wenn die 2. R2 nicht online ist war es das hier
if (!GetValue(44614)) return;
// 2. R2 ist online also auf dieser die selbe Aktivität starten
$UID = $Command['UID'];
IPS_RunScriptEx(19294 , Array("SENDER" => "R2", "IP" => $IP, "Key" => $Key, "UID" => $UID, "Kommando" => 'activity.on'));
break;
// Aktivität Dune-HD (Android TV) wurde beendet
case "EndDune":
if (!GetValue(44614)) return;
// 2. R2 ist online also auf dieser die selbe Aktivität beenden
$UID = $Command['UID'];
IPS_RunScriptEx(19294 , Array("SENDER" => "R2", "IP" => $IP, "Key" => $Key, "UID" => $UID, "Kommando" => 'activity.off'));
break;
}
?>
Wie Du siehst kann ich schon nur mit IPS machen was ich will. Vielleicht nicht immer so schön wie mit HA aber ich habe die volle Kontrolle. Ich weiß das HA sehr umfangreich und beliebt ist aber ich mag es nicht weil es in der Discord-Gruppe von Unfolded Circle für gefühlte 90% der Fragen und Probleme sorgt. Auch wollte ich neben IPS und IOBroker keine 3. Automation.
Ralf