Raspberry

Projekt Raspberry Pi: Siri-Proxy und Steuerung des Denon X1000 – Part 3

Wie ich in meinem ersten Beitrag angekündigt habe, möchte ich gerne all meine Änderungen per Siri-Proxy steuern können. Nun nenne ich aktuell ein iPhone 5 mein eigen und habe natürlich iOS 7 installiert. Leider wird die Version aktuell noch nicht unterstützt und so bin ich mir nicht sicher, ob der Punkt auf meiner Liste abgehakt werden kann. Das wäre natürlich sehr schade, da ein Siri-Proxy schließlich den maximalen Komfort bieten würde.

Aber die Hoffnung stirbt ja bekanntlich zuletzt – so kann man im GitHub-Projekt lesen, dass die Entwicklung weiter geht. Es ist also hoffentlich nur eine Frage der Zeit, bis iOS 7 dann doch voll unterstützt wird – teilweise läuft sie sogar wohl schon. Also habe ich an dieser Stelle nur die Nachricht, dass ich die Installation des Siri-Proxy in einen späteren Step verschiebe, um bestmöglichen Support von iOS 7 zu gewährleisten und keine bösen Überraschungen zu erfahren. Falls das Ganze läuft, reizt mich auch folgendes PluIn für XMBC: SiriProxy-XBMC.

Denon AVR-X1000

Bleibt für diesen Beitrag noch die Ansteuerung meines AV-Receivers. Ich besitze erst seit kurzem einen Denon AVR-X1000. Bisher habe ich gedacht, dass die Schnittstelle nicht öffentlich ist und man daher nur mit sehr viel Aufwand an die möglichen Befehle kommt – doch dem ist zum Glück nicht so. Die Dokumentation der Netzwerk-Schnittstelle des Denon AVR-X1000 findet man hier zum Download als PDF.

Da ich den Funktionsumfang der Denon App ja bereits kenne, weiß ich schon was alles möglich ist und möchte mir daher den Aufwand machen, ein Schnittstelle zu Entwickeln, welche ich über die Shell auf dem Raspberry Pi nutzen kann. Nutzen werde ich:

  • An-/Ausschalten
  • Eingangsquelle wählen
  • Lauter und leiser

Zum rumspielen habe ich ein Tool namens AVRConsole (für Mac OS X – XCode benötigt) gefunden (wird leider nicht mehr weiterentwickelt). Damit ist es relativ einfach die einzelnen Befehle und deren Auswirkung zu testen. Man muss einfach nur im Code die IP-Adresse des Receivers anpassen und schon kann man damit starten ein paar Befehle zu versenden und die Ergebnisse zu betrachten.

AVRConsole

Nach ein paar Minuten hatte ich mit der Dokumentation der Schnittstelle schon die ersten Ergebnisse mit PHP erzielt. Nun, ich gebe natürlich zu, dass PHP nicht die beste Sprache für diesen Anwendungsfall ist. Aber es ist eben meine „Alltagssprache“ und ich wusste genau was ich machen muss.

<?php
error_reporting(E_ALL);

$ip = '192.168.1.100';
$cmd = 'PWON';

$errNo = 0;
$errStr = '';
$fp = fsockopen($ip, 23, $errNo, $errStr, 1);

if ($fp !== false && $errNo == 0) {

    $command = iconv('UTF-8', 'ASCII//TRANSLIT', $cmd."\r");
    if (mb_detect_encoding($command) == 'ASCII') {
        if (stream_set_timeout($fp, 1)) {
            fwrite($fp, $command, strlen($command));
            sleep(300);
            echo fread($fp, 135);
        } else {
            echo 'Timeout not set ...';
        }
    } else {
        echo 'Wrong charset ...';
    }

    fclose($fp);
} else {
    echo 'Connection failed ... '.$errNo.' - '.$errStr;
}

So einfach kann es manchmal sein. Wirklich sehr cool insgesamt! Leider bringt das Ganze per PHP-Script noch nicht so wirklich viel, da ich ja kein Webinterface für den Receiver schreiben möchte. Schön wäre es eben, wenn die Kombination zusammen mit dem Siri-Proxy laufen würde. Dann macht es auch richtig Spaß!

Bei Gelegenheit werde ich das Script natürlich noch erweitern und auf GitHub schieben.

Leider habe ich noch nicht rausgefunden, wie man eine Geräteliste aller Receiver bekommt. Das macht ja beispielsweise die Remote-App von Denon so. Hier bin ich aktuell dabei den Netzwerktraffic zu analysieren. Das muss ja in jedem Fall über Broadcast-Messages laufen.


Beitrag veröffentlicht

in

, , , , ,

von

Schlagwörter: