DLNA Control Point/Renderer

Moin,

Ich betreibe die Funktion Internet Radio mittlerweile über ein Touch Panel, welches über IPS einen Onkyo Verstärker via LAN steuert.
Wünschenswert wäre eine Funktion wie ich sie hier gefunden haben:
Willkommen bei b.a.b technologie GmbH um in das Webfront einen DLNA/UPNP Controller zu integrieren, der es ermöglicht von Content Servern Inhalte auf DLNA Renderern auszugeben, mein Onkyo ist auch so ein DLNA Audio Renderer, über diverse Windows Applicationen, iPod Apps ist das möglich Audio und auch Video und Live TV an die Renderer zu schicken, gibt es eine Lösung oder einen Ansatz für IPS?

Sabl

so was brauch ich auch, ich hab einen Phillips Streamium den ich gern über IPS mit music versorgen will

Hi Sabl,

Ich verwende derzeit zur Ansteuerung meines Yamaha RXV-771 die entsprechende App dazu. Jetzt würde ich aber gerne, so wie du, den Receiver über ein Touch per IPS-WFE steuern. Soweit ich herausgefunden habe kann man per IPS über Ethernet problemlos die Quelle des AVRs umschalten. So wie du es zur Zeit auch machst. Aber wie schaltest du zwischen den Sendern um?

Die Geschichte mit dem DLNA Control Point/Renderer gefällt mir sehr gut. So könnte man dann per WFE die Quelle des AVRs auf „PC“ umschalten und z.B. Playlists eines DLNA-Servers auswählen und auf einen DLNA-Renderer (AVR) abspielen lassen.

Ich denke das dies eine enormen WAF hätte :wink: zumindest bei mir zu Hause :slight_smile: Wäre ja ne nette Entwicklungsidee für die IPS Library. Ich werds mal bei Gelegenheit im entsprechenden Thread einbringen.

Okay, dann mach ich es jetzt offiziell…

Ich baue seit längerer Zeit an so einem IPS-Control Point. Ich hab die Idee damals mit jwka ausgebrütet aber sie verlief dann doch weitgehend nur im Sand weil Investitionen notwendig waren, die keiner von uns tätigen wollte.

Ich hab noch nicht viel aber entwickle schon seit geraumer Zeit an den Basics immer mal wieder ein wenig vor mich hin. Das Hauptproblem liegt darin, dass die vielen verschiedenen Hard- und Softwarehersteller am Protokoll herum fummeln und ich mir schon rein aus Kostengründen nicht mehrere DLNA Server und Clients hinstellen kann. Auch hab ich momentan nicht so die richtige Testumgebung.

Wenn ernsthaftes Interesse besteht würd ich das Thema aufgreifen und mit einer geschlossenen Benutzerguppe einen Testlauf starten.

Toni

Hi Toni,

Also Interesse besteht von meiner Seite auf alle Fälle und bei manch anderen Usern auch. Würde mich sehr gerne als Tester zur Verfügung stellen, da ich auch einige DLNA Geräte im Haushalt habe :smiley: Nachdem ich diesen Beitrag hier eingestellt habe, ist mir noch ein anderer, aktuellerer Thread, aufgefallen

http://www.ip-symcon.de/forum/threads/17889-Sony-AV-Einbindung-in-IPS?p=159086#post159086

Das Thema DLNA/UPNP ist, vor allem im Multimedia Bereich schon sehr stark vertreten und wird, meiner Meinung nach, immer stärker. In Zeiten von Smartphones und Apps gibt es auch eine Vielzahl dieser kleinen Anwendungen um seine Gerätschaften im Hause zu steuern. Aus diesem Grund wäre es sehr komfortabel seine DLNA Geräte zentral über IPS ansteuern zu können.

Und wie schon kurz erwähnt … der WAF würde hiermit mit Sicherheit um einiges gehoben werden :smiley:

Währ auch als „Testobject“ am Start :smiley:

Ich möchte die Leistung von DigiHouse ja nicht schmälern, aber das Script ist vermutlich zu kompliziert für die meissten User, zu statisch für die meissten Server/Renderer und nicht gut übertragbar. Ist hat ne Maßarbeit für seine Umgebung. Hab mich schon einige Monate über UPnP/DLNA geärgert und glaub ich weiss wovon ich rede. :smiley:

In diesem bereich ein Test-User zu sein bedeutet u.U. viel Zeit da rein zu stecken. Evtl mit viel Zeit im Chat oder am Telefon. Vielleicht muss man auch Geld in die Hand nehmen um einen gemeinsamen Hardware-Bestand zu schaffen um eine gemeinsame Basis zu haben von der aus man entwickeln kann. UPnP (Universal Plug and Play) ist in Wirklichkeit nämlich leider weder Universal noch Plug’n’Play. :mad:

Das schreckt mich nicht ab :smiley:
wie gesagt bin sehr gerne dabei… da schon sehr sehr lange nach so einer möglichkeit suche.

Hallo zusammen,

sehr intersantes Thema!

Ich würde mich auch gerne einbringen da ich ebenfalls so etwas für zuhause brauchen würde.

Auch auf die Gefahr hin das ihr das schon kennt:

http://opentools.homeip.net/dev-tools-for-upnp

Grüße soundman33

Klar, ohne die gehts nicht :wink:

Aber exzellenter Link!!

Wir könnten ja mal versuchen eine „Standard-Hardware“ zu finden, die billig bei ebay zu finden ist. Ich hab BubbleUPnP auf meinem Android und meine Hardware kann damit keine Lautstärkeregelung und suchen im Titel. Vielleicht liegts auch an BubbleUPnP. Weiss da jemand was besseres?

Die PS3 soll sehr gut sein, ist mir aber zu teuer. XBMC auf der XBox (die Originale, nicht die 360) ist bei mir im test durchgefallen.

Wenn man ein Geräte-Software Kombination hätte die gut funktioniert und an der man sich entwicklerisch entlang hangeln könnte, dann hätte man eine Basis von der aus man sich der Exoten annehmen könnte. Vor Allem sollte die Hardware billig sein, weil sich wohl jeder (oder viele) der Testgruppe so ein Teil anschffen müssten.

Meine „Ausrüstung“:
Fritz Repeater N/G ca 90 Euro
Zyxel DMA-1000 ca. 20 Euro Ebay (gibts auch als W-Version mit WLAN)
Server: miniDLNA Freeware (Linux)

Hi Tonic,

Folgende Kombination funktioniert bei mir recht gut:

DLNA Server: QNAP NAS TS-219P mit Twonkey 6.0.39
DLNA Renderer: Yamaha RXV-771
Android App: BubbleUPnP

Ich kann per BubbleUPnP auf meinem NAS die Musikverzeichnisse durchsuchen und dem Renderer (AVR) zum Abspielen anwählen. Er findet sogar Playlists. Die Lautstärkenregelung funktioniert, soweit ich mich erinnern kann, auch. Werde aber heut Abend nochmal nachkucken.

Hallo Gemeinde und insbesondere Tonic,

es freut mich ungemein, daß UPNP wesentlich mehr Interesse trifft, als ich annahm. Ich würde mich auf jeden Fall dafür interessieren. Meine letzten Threads

gingen ins Leere. Aber ich glaube jetzt bin ich an der richtigen Stelle.

Ich schaffe es mittlerweile mit Standard-Transportprotokoll „urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI“ bestimmte Files abzuspielen, deren Pfad/Port ich mit WireShark mitgeschnitten habe. Die UPNP-Tools von Intel haben initial auch sehr weitergeholfen.

Da ich PHP-Anfänger bin, fällt es mir schwer die vielen Baustellen zu bearbeiten. Vorallem einen gezielten Zugriff auf eine Datenbank vorzunehmen, diesen zu übergeben, so dass das Gerät die Datei auch findet, konnte ich nicht lösen. Im Verdacht habe ich da vorallem die Netzwerk-Freigaben von Windows 7 bzw. 8, welche mir gelinde gesagt über die Hutschnur gehen :mad:

Als Server kann ich Asset-UPNP oder Twonky empfehlen. Mit beiden kann ich prima auf meine Netzwerk-Lautsprecher (3xSony SA-NS400, 1x Sony SA-NS300, 1xAV-Receiver Sony STR-DN2010) streamen. Sie alle beherrschen das Standard-Transportprotokoll. Auf Fernseher oder PS3 könnte man das auch erweitern. Als Control-Point habe ich getestet die Twonky-App für Android, Sony Media Player (Android-Tablet), Sony Network Audio Remote (Android) oder aus Windows 8 heraus Arcsoft Link+. Kinsky ist für Touch-Screens am Besten, hängt aber manchmal etwas (nicht sauber programmiert ?).

Hier nochmal das angepasste Script mit Basis-Befehlen, welches ursprünglich von Paresy (Grundstein der PHPSonos-Klasse) stammt. Damit habe ich in letzter Zeit experimentiert und es anpasst.

<?

//------------------------------------------------------------------------------
//UPNP Test Script 11/2012 V018
//------------------------------------------------------------------------------

//IPAdresse und Port
$address = "192.168.178.151";
$port = "8080";

$volume = 30; // SetVolume 0 - 100
$mute = 0; // 0 > Musik / 1 > kein Ton

//------------------------------------------------------------------------------
//Datei laden
//Kommentar: Absolute Dateipfade einbinden ? / Datenbank einbinden ? Twonky ?
//------------------------------------------------------------------------------


//$file = "http://192.168.178.128:26125/content/c2/b16/f44100/d14037-co659.mp3";
//$file = "http://192.168.178.128:26125/content/c2/b16/f44100/d6450-co659.mp3";
$file = "http://192.168.178.128:26125/content/c2/b16/f44100/d5015-co1851.mp3";

//UPNP-Befehle------------------------------------------------------------------

//URI definieren----------------------------------------------------------------

$content_uri='POST /AVTransport/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
SOAPAction: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"
Content-Length: '.(394+strlen(htmlspecialchars($file))).'
Content-Type: text/xml; charset="utf-8"
CONNECTION: close

<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <s:Body>
    <u:SetAVTransportURI xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
      <InstanceID>0</InstanceID>
      <CurrentURI>'.$file.'</CurrentURI>
      <CurrentURIMetaData></CurrentURIMetaData>
    </u:SetAVTransportURI>
  </s:Body>
</s:Envelope>';

//URI-Senden--------------------------------------------------------------------

$fp = fsockopen ($address, $port, $errno, $errstr);

if (!$fp)
{
    echo "$errstr ($errno)<br />
";
}
    else
{
    fputs ($fp, $content_uri);

    $ret = "";

while (!feof($fp))
{
    $ret.= fgets($fp,128);
}
fclose($fp);
}

//Rückgabe----------------------------------------------------------------------

if(strpos($ret, "200 OK") === false)
{
echo $ret;
}
else
{
echo "OK";
}

//Aktion wählen-----------------------------------------------------------------

$action = "Play"; // Titel, Play, Pause, Stop, Next, Previous, SetVolume, SetMute

//Play--------------------------------------------------------------------------

$content_play='POST /AVTransport/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Play"
CONTENT-TYPE: text/xml; charset="utf-8"
Content-Length: 340
CONNECTION: close

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <u:Play xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
         <InstanceID>0</InstanceID>
         <Speed>1</Speed>
      </u:Play>
   </s:Body>
</s:Envelope>';

//Pause-------------------------------------------------------------------------

$content_pause='POST /AVTransport/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Pause"
CONTENT-TYPE: text/xml; charset="utf-8"
Content-Length: 317
CONNECTION: close

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <u:Pause xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
         <InstanceID>0</InstanceID>
      </u:Pause>
   </s:Body>
</s:Envelope>';

//Stop--------------------------------------------------------------------------

$content_stop='POST /AVTransport/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Stop"
CONTENT-TYPE: text/xml; charset="utf-8"
Content-Length: 315
CONNECTION: close

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <u:Stop xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
         <InstanceID>0</InstanceID>
      </u:Stop>
   </s:Body>
</s:Envelope>';

//Next--------------------------------------------------------------------------

$content_next='POST /AVTransport/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Next"
CONTENT-TYPE: text/xml; charset="utf-8"
Content-Length: 315
CONNECTION: close

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <u:Next xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
         <InstanceID>0</InstanceID>
      </u:Next>
   </s:Body>
</s:Envelope>';

//Previous----------------------------------------------------------------------

$content_previous='POST /AVTransport/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Previous"
CONTENT-TYPE: text/xml; charset="utf-8"
Content-Length: 323
CONNECTION: close

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <u:Previous xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
         <InstanceID>0</InstanceID>
      </u:Previous>
   </s:Body>
</s:Envelope>';

//Setvolume---------------------------------------------------------------------

$content_setvolume='POST /RenderingControl/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#SetVolume"
CONTENT-TYPE: text/xml; charset="utf-8"
Content-Length: '.(404+(strlen($volume))).'
CONNECTION: close

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <u:SetVolume xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1">
         <InstanceID>0</InstanceID>
         <Channel>Master</Channel>
         <DesiredVolume>'.$volume.'</DesiredVolume>
      </u:SetVolume>
   </s:Body>
</s:Envelope>';

//SetMute-----------------------------------------------------------------------

$content_setmute='POST /RenderingControl/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#SetMute"
CONTENT-TYPE: text/xml; charset="utf-8"
Content-Length: 396
CONNECTION: close

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <u:SetMute xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1">
         <InstanceID>0</InstanceID>
         <Channel>Master</Channel>
         <DesiredMute>'.$mute.'</DesiredMute>
      </u:SetMute>
   </s:Body>
</s:Envelope>';

//------------------------------------------------------------------------------
//weitere Befehle ergänzen / Switch nicht vergessen-----------------------------
//------------------------------------------------------------------------------

//Switch definieren-------------------------------------------------------------

switch($action)
{
  case "Play":
      $content = $content_play;
    break;
  case "Pause":
      $content = $content_pause;
    break;
  case "Stop":
      $content = $content_stop;
    break;
  case "Next":
      $content = $content_next;
    break;
  case "Previous":
      $content = $content_previous;
    break;
  case "SetVolume":
      $content = $content_setvolume;
    break;
  case "SetMute":
      $content = $content_setmute;
    break;
}

//Senden------------------------------------------------------------------------

$fp = fsockopen ($address, $port, $errno, $errstr);

if (!$fp)
{
    echo "$errstr ($errno)<br />
";
}
    else
{
    fputs ($fp, $content);

    $ret = "";

while (!feof($fp))
{
    $ret.= fgets($fp,128);
}
fclose($fp);
}

//Rückgabe----------------------------------------------------------------------

if(strpos($ret, "200 OK") === false)
{
echo $ret;
}
else
{
echo "OK";
}

?>

Das Ganze habe ich aufgegriffen nachdem ich feststellte, dass die Sonos offenbar auch über UPNP kommunizieren. Die geänderten Befehle sind mit WireShark mitgeschnitten (Kinsky, WMP, Link+), verglichen und sollten allgemein gültig sein.

Eine prima Grundlage, welche Befehle das Gerät versteht ist auch die UPNP-Database. Leider sind aber einige Hersteller äußerst eigen mit Dokumentationen von Schnittstellen.

Eine Befehlsreferenz ist auch:

AVTransport:1 Service Template Version 1.01 - UPnP Forum (einfach mal bei Google eingeben)

Also Viele Grüsse

André

Hab grad mal eben Kisky installiert und getestet.

Es ist wohl so, dass sowohl Kinsky als auch Bubble die selben Probleme mit meiner Hardware haben. Ich brauche wohl erstmal einen verlässlichen und vor allem billigen Renderer.

@Tonic

Was benutzt Du denn ?

Hatte ich schon geschrieben. Noch mal ausführlich:

Zyxel DMA 1000 -> ca 20 Euro bei ebay -> ist unzuverlässig in der Lautstärkeregelung und beim suchlauf.
Fritz Repeater N/G -> ca 100 euro neu -> Keine Lautstärkeregelung, kein Mute, kein Suchlauf
XBox1 mit XBMC -> 30 Euro ebay -> Vollkommen unbrauchbar. Stürzt ab, muss dann rebootet werden.
Fritz Media 8040 -> 30 Euro bei ebay -> Völliger Fehlkauf. Spätestens seit Maxdome wesendliche Funktionen eingestellt hat.
intel Media-Renderer (UPnP Tools) -> Freeware -> Funktioniert gut zum testen. Aber sonst nicht brauchbar.
miniDLNA Server -> Freeware -> Bisher sehr zufrieden damit.

Toni

Ich brauche jetzt keine Steuerung über IPS aber vielleicht ist das hier was für Euch:

TEAC AR-100 den hab günstig in der Bucht neu bekommen und er funktioniert mit meinem Mezzmo Server (kostet zwar ein paar Euro aber ist der einzige Server der meinen Panasonic Plasma direkt beliefern kann und ich hab einige durch probiert) und BubbleUPnP sehr gut. Lediglich für die Wiedergabe von Internetradio muss ich die MyWAP App nehmen.

PS: Kann man den Zyxel auch ohne ei Display verwenden also nur über BubbleUPnP? Der Teac ist mir nämlich fast schon zu groß im Wohnzimmer.

Ja, „Headless Jukebox“ ist genau mein Ziel. Ich will ein Gerät, dass Ich hinter oder in eine Lautsprecherbox schrauben kann und dann sofort funktioniert, wenn der Strom an geht (okay, nach dem booten ;)). Supporten muss das Ding ansich nur mp3. Die Zyxel macht das.

Allerdings ist sie in der Bedienung zäh. Kinsky braucht für 1 „Prozent“ Lautstärkeänderung 3 Sekunden. Doof, wenn man nur + und - Buttons hat. Ausserdem geht die Lautstärkeregelung von 0 - 50 (50 = 100%). Ein Slider auf 60% eingestellt, wie bei BubbleUPnP, wirft den Fehler 501 raus. Der Intel Controlpoint funktioniert offenbar ganz gut.

Die Regelung bräuchte ich nicht. Ich hab immer nen Verstärker da stehen wo so eine Box hin kommt. Dann werde ich die wohl auch mal in die engere Wahl nehmen. Ich hab grad nen Fritz Repeater geordert und da die Teile nur an sind wenn man sie auch braucht hofe ich, dass die hier an und zu beschriebenen Probleme nicht auftauchen.

Dann schau dir die Box „Western Digital TV Live“ an. Ich ärgere mich, dass ich nicht die genommen hab. Stehen beide auch immer wieder bei ebay drin.

Ja genau … sowas suche ich gerade. Einen kleinen Verstärker der DLNA kann. Dann kann man in jedem Raum so nen Verstärker platzieren und dahinter seine Boxen anschließen. In etwa so wie bei AudioMax:

http://www.ip-symcon.de/wiki/AudioMax

Abgewandelt in etwa so:

Könnte so etwas funktionieren?