Philips 55PUS7303 – Android Smart TV per REST steuern

Bisher hatte ich meine Fernseher hauptsächlich als reines Anzeigegerät genutzt und „smarte Funktionen“ auf externe Geräte (wie meinen Apple TV oder einen Raspberry Pi) ausgelagert. Dieses Konzept hat die letzten Jahre gut funktioniert.

Da nun aber mein alter Fernseher vor einigen Monaten seinen Dienst aufgegeben hat (und er damit verdient in seine Rente gehen durfte), war ich auf der Suche nach einem neuen TV Gerät.

Die Wahl ist nach langer Überlegung letztlich auf einen Philips 55PUS7303 gefallen – ein Android TV. Meine Hoffnung durch Android ist eine längere Unterstützung von Firmware Updates vom Hersteller, bzw. später ggf. auch die Möglichkeit für eine Custom Firmware.

Einbindung in die Home Automatisierung.
Mit einem vollständigen Android ausgestattet war ich nun auf der Suche nach einer Lösung diesen Fernseher auch komplett in die Home Automatisierung einzubinden.

  • Gerät ein- und ausschalten
  • Lautstärke anpassen
  • Kanäle und Eingänge wechseln
  • Steuerung der Hintergrundbeleuchtung (Ambilights)

Die erste Überlegung in Sachen Android war das ganze über ADB (die Android Debug Bridge) zu lösen. Also ein passendes USB Kabel bestellt, den Entwickler Modus in den Einstellungen aktiviert und die ADB Kopplung gestartet. Am Ende konnte ich zumindest die Lautstärke problemlos regeln. Glücklich war ich mit dieser Lösung allerdings nicht, zumal ich auch gerne auf das Android SDK auf meiner Steuerzentrale verzichten wollen würde.

Nach weiterer Recherche bin ich auf ein Bash Script zur Steuerung von Philips TVs bei GitHub gestoßen.
Dieses Tool nutzt die sogenannte Jointspace API, mit der Philips TVs ausgestattet sind. Darüber kann nahezu jede Funktion ausgeführt werden, die sich auch mit der normalen Fernbedienung steuern lässt. Die API ist unter den folgenden TCP Ports auf dem Fernseher erreichbar.

  • Port 1925 – JointSpace HTTP
  • Port 1926 – JointSpace HTTPS

Authentifizierung über die API
Die API benötigt (ab der bei mir eingesetzten Version 6) für gewisse Funktionen eine gültige Authentifizierung. Dabei handelt es sich um eine Device ID als Benutzernamen sowie einem zugehörigen Kennwort. Das Kennwort erhält man durch den Kopplungsprozess der Device ID, bei dem man lediglich den PIN vom Display des Fernseher ablesen muss. Das Bash Script übernimmt diesen Job und schreibt die Credentials dabei direkt in die Datei im aktuellen Verzeichnisses.

.credentials.tv

Diese Credentials kann man dann nutzen um sich mit der API zu verbinden. Einige Beispiele für die Verwendung findet man direkt im Script.

Um zum Beispiel die Lautstärke auf Mute zu stellen kann man folgenden cURL Aufruf verwenden.

-bash# curl -XPOST -u $DEVICEID:$PASSWORD https://10.0.0.34:1926/6/input/key -d "{'key': 'Mute'}" -k --digest -v

Wichtig ist das die Credentials im Digest Format übertragen werden müssen.

Eine API Dokumentation mit möglichen Kommandos findet man hier.

Anschalten des Geräts
Es gibt zwar auch die Möglichkeit den Fernseher über die API anzuschalten, allerdings schaltet der Fernseher nach einiger Zeit im Standby die Netzwerkfunktion ab. Dies ist für meinen Einsatz allerdings kein Problem. Der Fernseher hängt bei mir stromtechnisch an einer schaltbaren Homematic Funksteckdose und wird ohnehin nur bei Bedarf eingeschaltet. Sobald das Gerät Strom bekommt startet es automatisch und stellt den zuletzt bekannten Status bzw. Kanal wieder her.

Einen Kommentar hinterlassen

Du musst eingeloggt sein um einen Kommentar schreiben zu können.