Zurück   IP-Symcon Community Forum > IP-Symcon Hardware > Audio & Video, TK-Anlagen, ISDN

Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
  #1 (permalink)  
Alt 29.07.07, 18:56
Benutzerbild von paresy
Administrator
 
Registriert seit: Feb 2005
Ort: Sarkwitz
Beiträge: 4,300
Wink Einzelne Sonos Player ansteuern

Eine verbesserte Version gibt es hier:
http://www.ip-symcon.de/forum/f52/ph...676/#post63772

Da das Sonos Modul noch in der Pipeline hängt, habe ich ein kleines Script gebaut, welches die Grundfunktionen erlaubt.

Wichtig ist zu Wissen, dass das Script Fehlermeldungen wirft, wenn eine Zone verknüpft ist und nicht der Master angesteuert wird oder wenn eine unsinnige Aktion ausgeführt wird (z.B. Play, wenn keine Musik in der Playlist ist)

Die IP eures Players bekommt ihr über den Sonos Desktop Controller. Hilfe -> Über Sonos Desktop Controller

PHP-Code:
<?

//Sonos ZP IPAdresse
$address "192.168.3.183";

if(
$IPS_SENDER == "Designer")
{
 
$action $IPS_COMPONENT//IPSYMID Feld verwenden
}
else if(
$IPS_SENDER == "Variable")
{
 
$action $IPS_VALUE//Per Variable getriggert
}
else 
//Aktion über Execute gestartet. Festgelegte Aktion starten
{
 
$action "Play"//Pause, Play, Next, Previous, Rewind, SetVolume, SetPlayMode, SetMute, SetRadio, ClearQueue, AddToQueue, RemoveFromQueue, SetTrack
}

$volume 25//Nur bei SetVolume
$mute 0//Nur bei SetMute / 0 > Musik / 1 > kein Ton
$mode "NORMAL"//Nur Bei SetPlayMode / REPEAT_ALL, SHUFFLE, NORMAL
$track 4//Track Nummer zum ausählen/löschen

//Klassik Radio
$radio "x-rincon-mp3radio://players.creacast.com/creacast/klassik/playlist.pls";
//NDR2
//$radio = "x-rincon-mp3radio://lsd.newmedia.tiscali-business.com/bb/redirect.lsc?content=live&media=ms&stream=ndr/live/ndr2.wma";

//Datei laden
$file "x-file-cifs://ipsserver/Public/test.mp3";

//--- Nix verändern ab hier
$content_pause='POST /MediaRenderer/AVTransport/Control HTTP/1.1
CONNECTION: close
HOST: '
.$address.':1400
CONTENT-LENGTH: 252
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Pause"

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

$content_play='POST /MediaRenderer/AVTransport/Control HTTP/1.1
CONNECTION: close
HOST: '
.$address.':1400
CONTENT-LENGTH: 266
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Play"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><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>'
;

$content_next='POST /MediaRenderer/AVTransport/Control HTTP/1.1
CONNECTION: close
HOST: '
.$address.':1400
CONTENT-LENGTH: 250
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Next"

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

$content_previous='POST /MediaRenderer/AVTransport/Control HTTP/1.1
CONNECTION: close
HOST: '
.$address.':1400
CONTENT-LENGTH: 258
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Previous"

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

$content_rewind='POST /MediaRenderer/AVTransport/Control HTTP/1.1
CONNECTION: close
HOST: '
.$address.':1400
CONTENT-LENGTH: 296
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Seek"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:Seek xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><Unit>REL_TIME</Unit><Target>00:00:00</Target></u:Seek></s:Body></s:Envelope>'
;

$content_setvolume='POST /MediaRenderer/RenderingControl/Control HTTP/1.1
CONNECTION: close
HOST: '
.$address.':1400
CONTENT-LENGTH: 32'
.strlen($volume).'
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#SetVolume"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><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>';

$content_setmute='POST /MediaRenderer/RenderingControl/Control HTTP/1.1
CONNECTION: close
HOST: '
.$address.':1400
CONTENT-LENGTH: 314
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#SetMute"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><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>';

$content_setplaymode='POST /MediaRenderer/AVTransport/Control HTTP/1.1
CONNECTION: close
HOST: '
.$address.':1400
CONTENT-LENGTH: '
.(291+strlen($mode)).'
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetPlayMode"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetPlayMode xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><NewPlayMode>'
.$mode.'</NewPlayMode></u:SetPlayMode></s:Body></s:Envelope>';

$content_setradio='POST /MediaRenderer/AVTransport/Control HTTP/1.1
CONNECTION: close
HOST: '
.$address.':1400
CONTENT-LENGTH: '
.(974+strlen(htmlspecialchars($radio))).'
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"

<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>'
.htmlspecialchars($radio).'</CurrentURI><CurrentURIMetaData>&lt;DIDL-Lite xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:upnp=&quot;urn:schemas-upnp-org:metadata-1-0/upnp/&quot; xmlns:r=&quot;urn:schemas-rinconnetworks-com:metadata-1-0/&quot; xmlns=&quot;urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/&quot;&gt;&lt;item id=&quot;R:0/0/0&quot; parentID=&quot;R:0/0&quot; restricted=&quot;true&quot;&gt;&lt;dc:title&gt;IP-Symcon Radio&lt;/dc:title&gt;&lt;upnp:class&gt;object.item.audioItem.audioBroadcast&lt;/upnp:class&gt;&lt;desc id=&quot;cdudn&quot; nameSpace=&quot;urn:schemas-rinconnetworks-com:metadata-1-0/&quot;&gt;SA_RINCON65031_&lt;/desc&gt;&lt;/item&gt;&lt;/DIDL-Lite&gt;</CurrentURIMetaData></u:SetAVTransportURI></s:Body></s:Envelope>';

$content_clearqueue='POST /MediaRenderer/AVTransport/Control HTTP/1.1
CONNECTION: close
HOST: '
.$address.':1400
CONTENT-LENGTH: 290
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#RemoveAllTracksFromQueue"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:RemoveAllTracksFromQueue xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID></u:RemoveAllTracksFromQueue></s:Body></s:Envelope>'
;

$content_addtoqueue='POST /MediaRenderer/AVTransport/Control HTTP/1.1
CONNECTION: close
HOST: '
.$address.':1400
CONTENT-LENGTH: '
.(438+strlen(htmlspecialchars($file))).'
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#AddURIToQueue"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:AddURIToQueue xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><EnqueuedURI>'
.$file.'</EnqueuedURI><EnqueuedURIMetaData></EnqueuedURIMetaData><DesiredFirstTrackNumberEnqueued>0</DesiredFirstTrackNumberEnqueued><EnqueueAsNext>1</EnqueueAsNext></u:AddURIToQueue></s:Body></s:Envelope>';

$content_removefromqueue='POST /MediaRenderer/AVTransport/Control HTTP/1.1
CONNECTION: close
HOST: '
.$address.':1400
CONTENT-LENGTH: '
.(307+strlen($track)).'
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#RemoveTrackFromQueue"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:RemoveTrackFromQueue xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><ObjectID>Q:0/'
.$track.'</ObjectID></u:RemoveTrackFromQueue></s:Body></s:Envelope>';

$content_settrack='POST /MediaRenderer/AVTransport/Control HTTP/1.1
CONNECTION: close
HOST: '
.$address.':1400
CONTENT-LENGTH: '
.(288+strlen($track)).'
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Seek"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:Seek xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><Unit>TRACK_NR</Unit><Target>'
.$track.'</Target></u:Seek></s:Body></s:Envelope>';

//send via socket
$port 1400;

switch(
$action)
{
   case 
"Pause":
    
$content $content_pause;
    break;
   case 
"Play":
    
$content $content_play;
    break;
   case 
"Next":
    
$content $content_next;
    break;
   case 
"Previous":
    
$content $content_previous;
    break;
   case 
"Rewind":
    
$content $content_rewind;
    break;
   case 
"SetVolume":
    
$content $content_setvolume;
    break;
   case 
"SetMute":
    
$content $content_setmute;
    break;
   case 
"SetPlayMode":
    
$content $content_setplaymode;
    break;
   case 
"SetRadio":
    
$content $content_setradio;
    break;
   case 
"ClearQueue":
    
$content $content_clearqueue;
    break;
   case 
"AddToQueue":
    
$content $content_addtoqueue;
    break;
   case 
"RemoveFromQueue":
    
$content $content_removefromqueue;
    break;
   case 
"SetTrack":
    
$content $content_settrack;
    break;
}

$fp fsockopen ($address$port$errno$errstr10);
if (!
$fp) {
    echo 
"$errstr ($errno)<br />\n";
} 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";
}

?>
viel Spaß, paresy

Geändert von paresy (09.07.09 um 16:24 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 18.11.07, 17:57
Member
 
Registriert seit: Dec 2005
Ort: Bremen
Beiträge: 91
Standard

Hallo paresy,

ich habe gerade mal dein Script für die Sonosplayer ausprobiert.
Funktioniert soweit perfekt. Aber kann man die MUTE Funktion auch noch über das Interface erreichen ? Ich weiß man kann die Lautstärke auf null stellen, dann ist aber leider die LED für MUTE nicht an. Ich benutze das als pseudo Ausschalter.


Gruß Sven
Mit Zitat antworten
  #3 (permalink)  
Alt 18.11.07, 18:12
Administrator
 
Registriert seit: Feb 2005
Ort: Sarkwitz
Beiträge: 3,084
Standard

... wir haben ja am Sonntag Abend nichts anderes zu tun.
Wir schauen uns das sofort mal an ...

MST
Mit Zitat antworten
  #4 (permalink)  
Alt 18.11.07, 19:08
Administrator
 
Registriert seit: Feb 2005
Ort: Sarkwitz
Beiträge: 3,084
Standard

... so $action = "SetMute" / $domute = 0; ist neu hinzugekommen.

Viel Spaß

MST
Mit Zitat antworten
  #5 (permalink)  
Alt 18.11.07, 19:49
Benutzerbild von Ferengi-Master
Super Moderator
 
Registriert seit: Feb 2007
Ort: Zwickau
Beiträge: 2,697
Standard

Immer wieder faszinierend:

PHP-Code:
$Differenz $Uhrzeit_Problem_gepostet-$Uhrzeit_Problem_behoben;
echo 
$Differenz
Resultat = 0

MfG Thomas
Mit Zitat antworten
  #6 (permalink)  
Alt 18.11.07, 19:49
Member
 
Registriert seit: Dec 2005
Ort: Bremen
Beiträge: 91
Standard

OH man, das ging aber fix, und das am Sonntag.

Werd es gleich mal einbauen

Danke Sven
Mit Zitat antworten
  #7 (permalink)  
Alt 29.04.08, 11:22
Member
 
Registriert seit: Dec 2005
Ort: Bremen
Beiträge: 91
Standard neue Radiostation

Moin,

ich möchte folgenden stream ( http://www.radiobremen.de/stream/liv...nvier&media=ms ) über einen Taster starteten können, weil die Sonosteile anscheinende die Verbindung nicht neu aufbauen, wenn das DSL zwangsgetrennt wird. Aussdem macht der Controller in letzer Zeit öfter zicken.
Es gibt ja den Befehl StartRadio der "Welle Nord" einschaltet. ich habe jetzt auch schon versucht an entsprechender Stelle meine Stream-Quelle einzutragen, aber es hat nicht funktioniert.

Hat jemand einen Tip für mich.

Gruß Sven
Mit Zitat antworten
  #8 (permalink)  
Alt 29.04.08, 12:38
Administrator
 
Registriert seit: Feb 2005
Ort: Sarkwitz
Beiträge: 3,084
Standard

... o.g. Stream (Radio Bremen) läuft ohne Probleme und läßt sich so aus IPS starten:

PHP-Code:
//Sonos ZP IPAdresse
$address "192.168.2.100"// Bad  > alt 102
//$action = "Play"; //Pause, Play, SetVolume, Next, Previous, Rewind
$action "Play";
$volume 25// nur bei SetVolume

//--- Nix verändern ab hier 
MST
Mit Zitat antworten
  #9 (permalink)  
Alt 04.05.08, 11:22
Member
 
Registriert seit: Dec 2005
Ort: Bremen
Beiträge: 91
Standard Danke für die schelle Antwort

Ich komme leider erst heute dazu mich zu melden, da mein Internetprovider in den letzten Tage Probleme hatte .

Mit der Play Funktion geht es, der Stream wird neu aufgebaut. Ich hatte mich total auf die Startradio Funktion versteift.
Kann man den mit der Startradio Funktion einzelne Funktion-Tasten für ein FS20-Taster erstellen ( Radiosender wechseln ) ??


Gruss Sven
Mit Zitat antworten
  #10 (permalink)  
Alt 04.05.08, 13:13
Administrator
 
Registriert seit: Feb 2005
Ort: Sarkwitz
Beiträge: 3,084
Standard

... nein (zur Zeit) - Funktionen siehe:

//$action = "Play"; //Pause, Play, SetVolume, Next, Previous, Rewind

MST
Mit Zitat antworten
Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Sonos Multiroom Plugin roadsterhh Audio & Video, TK-Anlagen, ISDN 33 22.06.07 14:19


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:19 Uhr.


Powered by vBulletin® Version 3.8.4 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.5.0