Roku Emulator per Docker

Hallo,
Fonzo hatte mich vor einigen Jahren mit seinen Modulen für Logitech Harmony, Roku und Neeo zu IPS getrieben. Danke dafür. Der Roku-Emulator hatte bei mir als AV-Fan leider die Eigenschaft das er nicht von allen meinen Hubs erkannt wurde. Auf der Suche nach einer Lösung kam ich als Docker-Fan auf ein Docker-Image das eine Roku emuliert und die Tasten per MQTT weiterleitet. Dieser Emu wurde sofort von allen meinen Hubs erkannt. Hier möchte ich „kurz“ erklären wie man ihn in IPS benutzen kann.

Das von mir verwendete Docker-Image heißt: mukowman/roku_dummy

Bei mir laufen der einfachheithalber, und aus Faulheit, sowohl IPS als auch Roku mit der Einstellung Network=host, d.h. beide Docker besitzen die selbe IP-Adresse wie die von mir benutzte Synology Diskstation. Wenn nicht Netzwerk=host benutzt wird müssen die entsprechenden Ports bei den Docker-Images nach außen geführt werden.

Beim Start von Roku müssen die nötigen Einstellungen in Umgebungsvariablen vorgenommen werden. Die Einstellungen sehen bei mir so aus:

Host-IP muss die IP vom Docker sein, bei mir die selbe wie Synology. Host-Port dient zur Erkennung des Emus von einer Harmony. MQTT_HOST IP-Adresse vom MQTT-Server auf IPS, bei mir die selbe wie Synology. MQTT_PORT Port des MQTT-Servers auf IPS. Ich benutze für jeden Klienten einen eigenen MQTT-Server deswegen hier 1888. MQTT_USER und MQTT_PASSWORD hier gehören die Daten rein die man in IPS beim MQTT-Server angegeben hat. Das Volume Backup habe ich eigerichtet um Daten mit dem Docker-Image austauschen zu können.

In IPS muss der MQTT-Splitter wie folgt eingerichtet werden:

und der MQTT-IO

MQTT IO

Wenn alles geklappt hat sollte es im MQTT Konfigurator ähnlich wie bei mir aussehen

Hier muss ich noch etwas zu sagen. Das Original Docker-Image verwendet nur das Topic roku/keypress. Hier würden alle Hubs, wenn mehrere vorhanden sind, die selben Meldungen verschicken. Ich habe im Docker 2 Python-Dateien verändert so das meine Topics roku-IP vom Hub/keypress sind. Hierfür ist das Backup-Volume nötig. Bei Interesse an den Änderungen bitte melden.
Mit dem Konfigurator kann jetzt die/eine Roku-Instanz erstellt werden. Sobald Roku-Tasten simuliert werden sieht es dann in IPS so aus:

In Value steht einer von 14 Strings der einer simulierten Taste entspricht. Um mit diesem String arbeiten zu können habe ich ein kleines Script Handle-Roku geschrieben:

<?php
$key = GetValue(ID der variablen Value);
$DeviceID = ID einer Android Streaming Box;
$isFireTV = true = Fire-TV,  false=Android-TV;
switch ($key){
    case 'Down':
        FireTV_Waipu($DeviceID, $isFireTV);
        break;
    case 'Left':
        FireTV_PrimeVideo($DeviceID, $isFireTV);
        break;
    case 'Right':
        FireTV_Netflix($DeviceID, $isFireTV);
        break;
    case 'Up':
        FireTV_Kodi($DeviceID, $isFireTV);
        break;
    case 'Search':
        SetValue(40199, hk-tv);
        break;
    case 'InstantReplay':
        FireTV_Sat($DeviceID, $isFireTV);
        break;
    case 'Info':
        break;
    case 'Select':
        break;
    case 'PowerOff':
        break;
    case 'Play':
        IPS_RunScript(57482);
        break;
    case 'Back':
        RequestAction(29473, true);
        break;
    case 'Rev':
        $Brightness = GetValue(55532) - 10;
        if ($Brightness < 0) $Brightness = 0;
        RequestAction(55532, $Brightness);
        break;
    case 'Fwd':
        $Brightness = GetValue(55532) + 10;
        if ($Brightness > 100) $Brightness = 100;
        RequestAction(55532, $Brightness);
        break;
    case 'Home':
        if (GetValue(32822)) RequestAction(32822, false);
        else  RequestAction(32822, true);
        break;
}

In diesem Script starte ich u.a. diverse Apps und regele die Helligkeit. Was bei den Tasten geschehen soll bestimmen nur die eigenen Bedürfnisse.

Diese Konfiguration läuft bei mir seit einigen Monaten ohne Ausfälle. Eine Einschränkung habe ich bisher. Meine Sofabaton X1 erkennt den Emu leider (noch) nicht.

Da das Harmony-Modul bei mir immer mal wieder mehrere Sekunden nicht mehr auf Tasten reagiert hat habe ich auch hier eine Docker-Lösung für mich gefunden. Ich schätze die Probleme kommen von XMPP und Docker benutzt wohl WebSockets. Bei Interesse bitte auch melden. Genau wie der Roku Ersatz ist mein Harmony Ersatz leider nicht so benutzerfreundlich wie die Module von Fonzo.

Ralf

2 „Gefällt mir“

Hallo Ralf,
vielen Dank für die gute Anleitung.
Ich habe es jetzt erst einmal alles eingerichtet und werde es sicherlich für andere Dinge später gut gebrauchen können.
Derzeit bin ich mit deiner LMAIR Lösung erstmal zufrieden :ok_hand:

P.S. Wenn die Sofabaton dies unterstützt, wäre es schön, wenn du dies mitteilen könntest. Bis dahin hält meine Harmony hoffentlich noch lange :innocent: