In einem meiner Artikel hatte ich über meine Universalfernbedienung mit einem Arduino UNO/MEGA oder ESP8266 berichtet.

Mit dieser steuere ich neben meinem AV Receiver und TV auch den Unitymedia Horizon. Durch Zufall habe ich heute gesehen, dass man den Horizon auch über openHAB steuern kann. Das Add-on verwendet dafür eine Netzwerk API, welche vom Horizon bereitgestellt wird. Das hat mich interessiert, ob ich da auch irgendwie rankomme.

Der Vorteil, ich muss keine Infrarot-Codes mehr an das Gerät senden, sondern kann alles über das Netzwerk steuern. So benötige ich keinen Sichtkontakt mehr zum Gerät, ähnlich wie die originale Fernbedienung.

Fertige Implementierungen

Mit entwas Geduld, habe ich im Internet zwei Implementierungen gefunden.

Die erste ist von OrangeTux - einder und ist in Python geschrieben.

Die Zweite ist von kuijp - horizoncontrol in Java.

Ich habe mich dazu entschieden, die Python Version einfach in PHP nachzubauen.

PHP Implementierungen

Meinen PHP Quelltext findet ihr auf GitHub: https://github.com/nook24/php-horizon-remote

Dort werden alle Standardaktionen wie das Wechseln des Kanals, oder das Eingeben von Zahlen abgedeckt.

Beispiel

<?php
require 'Connection.php';
require 'Keys.php';

use nook24\Horizon\Connection;
use nook24\Horizon\Keys;

//Setzt hier die IP Adresse eurer Horizon Box!
$Connection = new Connection('192.168.1.232', 5900);
$Keys = new Keys();

$Connection->connect();

//Kanal +
$Connection->sendKey($Keys->chanUp());

sleep(5);

//Kanal -
$Connection->sendKey($Keys->chanDown());

sleep(5);

// Wechsel zu Programm Nummer 5
$Connection->sendKey($Keys->number5());

sleep(5);

// Wechsel zu Programm Nummer 201
$Connection->sendKey($Keys->number2());
$Connection->sendKey($Keys->number0());
$Connection->sendKey($Keys->number1());

sleep(5);

// Zeige Informationen zur aktuellen Sendung
$Connection->sendKey($Keys->showInfo());

sleep(5);

// Informationen schließen
$Connection->sendKey($Keys->back());

// Verbindung trennen
$Connection->disconnect();
Benutzen auf eigene Gefahr! Ich hafte nicht für eventuelle Schäden!