HM Aktoren mit Mediola per Ereignis steuern?

Hallo,

ich habe das mediola Gate V4+ und die Harmony Elite.
Alle sind ja in IPS aufgenommen. Meine Idee:

wenn ich unter Mediola ein IR-Singal anlege, lasse ich das Auslösen dieses Singals überwachen und kann damit Hm Aktoren wie z.B. Rollläden steuern.
Beim anlernen einen IR Befehls in IPS erhalte ich jedoch ein Fehlerfenster mit dem passenden IR-Code. Leider aktualisiert sich der Wert in IPS nicht, wenn ich die Taste der Fernbedienung drücke.

Hat jemd einen Lösungsansatz?

Gruß oekomat

An sich musst Du nichts anlegen. Das AIO Gateway sollte eigentlich eine Message schicken sobald es ein IR Signal von der Harmony Eilte empfängt. Kannst Du mal unter I/O Instanzen die AIO Gateway UDP Instanz öffnen und dort das Debug Fenster (Grüner Käfer) anklicken. Im Debug Fenster sollte eigentlich eine Message auftauchen in der Art


{XC_EVT}{"type":"IR","data":"190826000001000000"}

Unter Splitter Instanzen AIO Splitter solltest Du theoretisch unter der Variable letzter IR Befehl den letzten IR Befehl finden den das AIO Gateway registriert hat. Steht da bei Dir irgendwas drinnen oder bleibt die Variable stets unverändert?

Ansonsten kannst Du auf einen Spezifischen Code der in der Variable letzer IR Code auftaucht etwas in IP-Symcon auslösen indem Du ein Event da drauf legst was ein Skript ausführt das das schaltet was Du willst.

ich habe mir die Sache jetzt nochmal angeschaut.

Unter I/O Instanzen steht bei mir „AIO Gateway“ Typ „UDP Socket“. Wenn ich darin den Debug öffne, ist der total leer.

Unter dem AIO Splitter -> Statusvariablen -> finde ich u.a. IRIN - letzter IR Befehl. Sieht so aus:

Ich komme da irgendwie nicht hinter, was da falsch läuft.

Auf welchem Rechner bzw. Betriebssystem läuft denn IP-Symcon? Im Debug Fenster sollte eigentlich etwas auftauchen wenn z.B. ein Funksignal oder IR Signal empfangen wird.

Falls IP-Symcon auf einem Raspberry läuft kann es notwendig sein einmal ein Skript auszuführen das der UDP Socket richtig funktioniert. Ich habe das nicht mehr verfolgt ob das inzwischen durch IP-Symcon behoben wurde oder ob es nach wie vor notwendig ist das Skript einmal auszuführen.

Ja genau, läuft auf einem Raspberry 2. Also ist das die Lösung, dass Skript wie von Nall-chan mitgeteilt laufen zu lassen?

Ja das musst Du aber nicht laufen lassen sondern lediglich ein einziges mal ausführen das reicht, die Objekt ID musst Du logischerweise an die des UDP Socket in deinem IP-Symcon anpassen. Gibt dann mal Rückmeldung ob sich was geändert hat.

eben gemacht. Jetzt kommt unter dem UDP Socket wo vorher die IP des Raspi stand: aktueller Wert „255.255.255.255“ ist nicht verfügbar

Ja das ist ok. Entscheidend ist das im Debug Fenster was ankommt, bzw. die Variable unterhalb des Splitters aktualisiert wird.

Also unter AIO Splitter stehen jetzt auch Meldungen wie „ReceiveDate AIO Gateway“ und im Debug stehen jetzt alle 20-40 sek auch Meldungen „Received“ drin.

ich drücke aber aktuell keine Tasten :eek:

Meine Vorstellung war so: ich lerne am mediola Gateway einen IR-Befehl (von ner alten Fernbedienung) an, den meine Harmony auch lernt. Dann lasse ich in IPS den IR code des AIO Gateways überwachen und knüpfe einen Skript dran (z.B. alle Rollläden runter).

In IPS sind aber kaum (bis auf ein paar Steckdosen und ein paar Power-Tasten von 3 IR-Geräten) IR- oder Funk-Befehle übernommen worden. Deswegen auch meine ursprüngliche Meinung, ich müsse Geräte neu anlernen.

Verstehst du mein Pr:confused:blem?

Das ist normal auch wenn ich selber nicht weis was das AIO Gateway da alles empfängt. Das AIO Gateway ist sozusagen ein Funk und IR Sniffer der Dir über alles was das AIO Gateway empfängt eine Mitteilung an IP-Symcon schickt.

Du musst nichts extra anlernen da Dir das AIO Gateway grundsätzlich eine Mitteilung schicken sollte wenn eine Aktivität erkannt wurde. Du müsstest also mal testen wenn Du auf der Harmony Remote einen IR Befehl absetzt und das AIO Gateway einen Befehl empfängt sollte im Debug Fenster der IR Code zu sehen sein und auch in der Variable geloggt werden. Ist das bei Dir der Fall?

Eigentlich sollte alles was in NEO an IR Geräten existiert auch ordnungsgemäß bei einem Import angelegt worden sein. Wenn das nicht der Fall sein sollte muss man sich das noch mal separat anschauen.

einen Schritt weiter bin ich jetzt. es kommen (denke ich) alle IR-signale die ich ans Gateway sende in IPS unter an und sind unter debug sichtbar als

{XC_EVT}{"type":"IR","data":"190826000006001004026400840139008500A4008400A4121100010201010202010101010201010103"}

Jetzt habe ich ein Gerät angelegt Hersteller „mediola“ „IR Device“, habe den o.g. IR code 19…0102 eingefügt. Dann ein Ereignis erstellt, in dem die Aktualisierung der Variable dieses Gerätes überwacht wird und ein Skript ausführt. problem: Die Variable ändert sich nicht sichtbar und somit wird der Skript nicht ausgeführt.
Mir fehlt also die Verarbeitung des IR-Signals.

Jetzt bin ich noch einen Schritt weiter.
Wenn ich einen IR Befehl sende, taucht unter „letzter IR Befehl“ unter Splitter instanzen - AIO Splitter ein Variablen Wert auf, der sich vom eigentlichen IR-Code und dem unter dem Debug unterscheidet. Ich hoffe bzw gehe davon aus, dass jeder IR-Befehl einen anderen Wert hat und lasse den überwachen und meinen Skript auslösen. Hat beim Test schon mal funktioniert.

Ah jetzt versteh ich. Momentan sendet ein IR Device nur aus IP-Symcon. Eine Aktualisierung unterhalb der Geräteinstanz findet momentan nicht statt, das müsste ich noch einbauen falls das Sinn machen sollte.

Die einzige Variable die sich ändert ist die Variable Letzter IR Befehl. Auf diese Variable kannst Du ein Ereignis legen bei Variablenaktualisierung und dann ein Skript ausführen.

z.B.


<?
$ircode = GetValue(52928 /*[AIOSplitter\Letzter IR Befehl]*/);
 $triggercode = "190826000006001004026400840139008500A4008400A4121100010201010202010101010201010103";
 if($ircode == $triggercode)
 {
 	// Irgendwas schalten
 }
?>

Du musst mal testen ob beim Senden des Harmony Hub jeweils der exakt gleich IR Code erkannt wird ansonsten müsste man da mehrere Varianten prüfen bzw. auf gemeinsame Merkmale prüfen wenn der Code sich leicht unterschieden sollte z.B. weil das IR Signal länger anlag als sonst.

Das muss ich auf jeden Fall testen. so wie es jetzt aussieht, muss ich ja nicht mal ein Mediola Gerät angelegt haben, solange es im Mediola Gateway angelegt ist. Hab mal den Test mit einem angelernten IR Befehl gemacht, der IPS als Gerät nicht bekannst ist, sondern nur als Testtaste in Mediola. Die Variable in IPS unter letzter IR-Befehl ändert sich trotzdem. so dass IPS bei erkennen dieses Wertes ein Ereignis ausführen kann. So wie ich das sehe, sind das die letzten ca 33 Zeichen aus dem IR Code, den mediola kennt und der auch im debug erkannt wird.

Hm das muss ich mir noch mal genauer anschauen, dachte eigentlich er schreibt den gesamten Inhalt in die Variable. Ich melde mich.

So ist schon so lange her habe jetzt noch mal geschaut was da eigentlich passiert.

Zwei Möglichkeiten gibt es entweder ich schreibe den gesamten Code in die Variable oder nur den Data Code was eigentlich sinnvoller wäre.

Ich muss mal schauen ob ich da einen sinnvolle Lösung finde ansonsten habe ich mal hier um Hilfe gebeten.
Alternativ kann ich auch den gesamten Code in die Var schreiben wenn Dir das was hilft. Was hältst Du für sinnvoller?

Momentan lese ich den IR code mit


$irdatacode = strstr($data, '00010');

aus ich bin mir aber nicht sicher ob das immer zum richtigen Ergebnis führt.

ich würde das einfach mal mit all meinen bekannten IR-Befehlen testen, ob es immer ein eindeutiges Ergebnis gibt. Sollte dem so sein, wüsste ich nicht, was dagegen spricht, es so zu belassen. Ich sag bescheid, wenn ich durch bin.

Hallo Fonzo,
ich habe mir mal eine alte IR-FB genommen und einen IR Befehl in mediola angelernt, dann den ankommenden eigenen Code in IPS mit einem Skript verknüpft. Komischerweise kam der Code ca zur Hälfte immer verändert in IPS an, nur die letzten Stellen waren identisch.
Dann hab ich mal alle 25 Tasten dieser FB ohne bei Mediola anzulernen auf das Gateway abgefeuert. In IPS kamen im Debug verschiedene Codes an. Die letzten 27 Zeichen haben sich von Taste zu Taste durch Stellung von 0 und 1 immer unterschieden. Der Anfang war selbst bei mehrmaligen drücken einer Taste unterschiedlich. Da unter „letzter IR Befehl“ aber mehr zeichen ankommen als die 27, bekommt IPS nicht mit, welche Taste gedrückt wurde, weil der Anfang etwas abweicht.
Bei einer anderen FB sind er mehr als die letzten 27 Stellen, die bei gleicher Taste auch gleich - es sind aber genug Tasten, dass unter „letzter IR befehl“ immer die gleichen zu sehen sind.
nach aktuellem Stand könnte ich die alte IR nicht wirklich nutzen, weil unterschiedliche Codes unter „Letzer IR befehl“ ankommen.
Ich hoffe, dass hilft dir.

NallChan hat hier zumindest den DataBlock isoliert. Ich habe das mal im Modul umgestellt. Mache mal ein Update dann sollte nur noch der Data Block in der Variable abgelegt werden ob dieser dann in jedem Fall eindeutig zu identifizieren ist kann ich nicht sagen das musst Du mal ausprobieren und Rückmeldung geben.

Den Data Block den Du vom angelernten Befehl vergleichst kannst Du berechnen über


<?
$payload = '{XC_EVT}{"type":"IR","data":"19082600000300220408D40464008C01A0008C0088008C27C700010102020202020101020102010201020102020201020201020101010201010203"}'; // hier den Code hinterlegen aus dem der Data Block ausgerechnet werden soll.
 $json = substr($payload, 8, strlen($payload)); 

  $payload = json_decode($json); 
         
  $type = $payload->type; 
  $data = $payload->data; 
  $num_of_timing = hexdec(substr($data,16, 2)); 
  $start = $num_of_timing*8+17; 
  $irdatacode = substr($data, $start);   
  var_dump($irdatacode);  
?>

klappt nicht ganz. hab das Modul nochmals installiert und das alte gelöscht. das neue war ja erst 9 min als :slight_smile:

Hier mal ein Beispiel. Ich habe jeweils die gleiche Taste gedrückt. ein Teil in der Mitte variiert, wie du siehst.

shootUnbenannt.JPG