+ Antworten
Seite 1 von 5 1 2 3 ... LetzteLetzte
Ergebnis 1 bis 10 von 44
  1. #1
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    21,436

    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 15:24 Uhr)

  2. #2
    Registriert seit
    Dec 2005
    Ort
    Bremen
    Beiträge
    204

    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

  3. #3
    Registriert seit
    Feb 2005
    Ort
    Sarkwitz
    Beiträge
    3,673

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

    MST

  4. #4
    Registriert seit
    Feb 2005
    Ort
    Sarkwitz
    Beiträge
    3,673

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

    Viel Spaß

    MST

  5. #5
    Registriert seit
    Feb 2007
    Ort
    Zwickau
    Beiträge
    5,483

    Immer wieder faszinierend:

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

    MfG Thomas

  6. #6
    Registriert seit
    Dec 2005
    Ort
    Bremen
    Beiträge
    204

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

    Werd es gleich mal einbauen

    Danke Sven

  7. #7
    Registriert seit
    Dec 2005
    Ort
    Bremen
    Beiträge
    204

    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

  8. #8
    Registriert seit
    Feb 2005
    Ort
    Sarkwitz
    Beiträge
    3,673

    ... 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

  9. #9
    Registriert seit
    Dec 2005
    Ort
    Bremen
    Beiträge
    204

    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

  10. #10
    Registriert seit
    Feb 2005
    Ort
    Sarkwitz
    Beiträge
    3,673

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

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

    MST

Ähnliche Themen

  1. Sonos Multiroom Plugin
    Von roadsterhh im Forum Audio & Video, TK-Anlagen, ISDN
    Antworten: 33
    Letzter Beitrag: 22.06.07, 13:19