Hallo Gemeinde,
für mich ein Meilenstein: ich habe jetzt endlich alle relevanten UPNP-Befehle in einem functions-Skript zusammengefasst und suche noch Tester
Alle Befehle zum Steuern und Rückgaben als Statusvariablen sind nach den Schemata:
urn:schemas-upnp-org:service:AVTransport:1
urn:schemas-upnp-org:service:RenderingControl:1
urn:schemas-sony-com:service:Party:1
ausgelesen und implementiert. Besonders glücklich bin ich auf ein funktionierendes Party-Streaming (!) meiner Sony Lautsprecher.
<?
//------------------------------------------------------------------------------
//UPNP_Functions_V1.7.ips.php--------------------------2013 von André Liebmann--
//------------------------------------------------------------------------------
//Skript aller HTTP-Post´s zur Steuerung von UPNP-Geräten:----------------------
//HTTP-Posts nach "urn:schemas-upnp-org:service:AVTransport:1"------------------
//HTTP-Posts nach "urn:schemas-upnp-org:service:RenderingControl:1"-------------
//HTTP-Posts nach "urn:schemas-sony-com:service:Party:1"------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//imlementierte functions:------------------------------------------------------
//------------------------------------------------------------------------------
//function SetAVTransportURI($address, $port, $file, $MetaData)
//-----------------IN: $file (CurrentURI)
//-----------------IN: $MetaData (CurrentURIMetaData)
//function SetNextAVTransportURI($address, $port, $file_next, $MetaData_next)
//-----------------IN: $file_next (NextURI)
//-----------------IN: $MetaData_next (NextURIMetaData)
//------------------------------------------------------------------------------
//function Play_AV($address, $port)
//function Stop_AV($address, $port)
//function Pause_AV($address, $port)
//function Next_AV($address, $port) --> Funktion Next() in PHP vorhanden !!!
//function Previous_AV($address, $port)
//function Seek_AV($address, $port, $position)
//function Rewind_AV($address, $port) --> Funktion Rewind() in PHP vorhanden !!!
//function Playmode_Normal($address, $port)
//function Playmode_Random($address, $port)
//function Playmode_Repeat_One($address, $port)
//function Playmode_Repeat_All($address, $port)
//------------------------------------------------------------------------------
//function SetVolume($address, $port, $DesiredVolume)
//-----------------IN: $DesiredVolume
//function GetVolume($address, $port)
//-----------------OUT: $CurrentVolume
//function SetMute($address, $port, $DesiredMute)
//-----------------IN: $DesiredMute
//function GetMute($address, $port)
//-----------------OUT: $CurrentMute
//function GetDeviceCapabilities($address, $port)
//-----------------OUT: $PlayMedia
//-----------------OUT: $RecMedia
//-----------------OUT: $RecQualityModes
//function GetMediaInfo($address, $port)
//-----------------OUT: $NrTracks
//-----------------OUT: $MediaDuration
//-----------------OUT: $CurrentURI
//-----------------OUT: $CurrentURIMetaData
//-----------------OUT: $NextURI
//-----------------OUT: $NextURIMetaData
//-----------------OUT: $PlayMedium
//-----------------OUT: $RecordMedium
//-----------------OUT: $WriteStatus
//function GetTransportInfo($address, $port)
//-----------------OUT: $CurrentTransportState
//-----------------OUT: $CurrentTransportStatus
//-----------------OUT: $CurrentSpeed
//function GetTransportSettings($address, $port)
//-----------------OUT: $PlayMode
//-----------------OUT: $RecQualityMode
//function GetCurrentTransportActions($address, $port)
//-----------------OUT: $Actions
//function GetPositionInfo($address, $port)
//-----------------OUT: $Track
//-----------------OUT: $TrackDuration
//-----------------OUT: $TrackMetaData
//-----------------OUT: $TrackURI
//-----------------OUT: $RelTime
//-----------------OUT: $AbsTime
//-----------------OUT: $RelCount
//-----------------OUT: $AbsCount
//------------------------------------------------------------------------------
//function Party_X_GetState($address, $port)
//-----------------OUT: $PartyState
//-----------------OUT: $PartyMode
//-----------------OUT: $PartySong
//-----------------OUT: $SessionID
//-----------------OUT: $NumberOfListeners
//-----------------OUT: $ListenerList
//-----------------OUT: $SingerUUID
//-----------------OUT: $SingerSessionID
//function Party_X_Start($address, $port, $PartyMode, $ListenerList)
//-----------------IN: $PartyMode
//-----------------IN: $ListenerList --> Auswahl der Geräte: UUID´s der Listener
//-----------------OUT: $SingerSessionID --> essentiell für X_Entry / X_Abort
//function Party_X_Entry($address, $port, $SingerSessionID, $ListenerList)
//-----------------IN: $SingerSessionID --> aus X-Start: SingerSessionID
//-----------------IN: $ListenerList --> aus X-Start: UUID´s der Listener
//function Party_X_Abort($address, $port, $SingerSessionID)
//-----------------IN: $SingerSessionID --> aus X-Start: SingerSessionID
//function Party_X_Leave($address, $port, $SingerSessionID, $ListenerList)
//-----------------IN: $SingerSessionID --> aus X-Start: UUID´s der Listener
//-----------------IN: $ListenerList
//------------------------------------------------------------------------------
//function send($address, $port, $content)
//-----------------OUT: $return (aus stream_get_contents)
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//Variablen:...............X --> erforderlich
//.........................O --> anzulegen, wenn benötigt
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//zu übergebende Variablen------------------------------------------------------
//------------------------------------------------------------------------------
//$address.................X --> IP des Gerätes ("XXX.XXX.XXX.XXX")
//$port....................X --> Port des UPNP-Service (i.d.R. "8080")
//$file....................X --> Pfad zum MP3 etc.
//$MetaData................O --> MetaData des Files (kann leer bleiben)
//$file_next...............O --> Pfad zum nächsten MP3 etc.
//$MetaData_next...........O --> MetaData des nächsten Files (kann leer bleiben)
//$DesiredVolume...........X --> gewünschte Lautstärke an function SetVolume() übergeben
//$DesiredMute.............X --> gewünschtes Mute an function SetMute() übergeben
//$Target..................O --> für Rewind_AV()
//$Position................O --> für Seek_AV()
//------------------------------------------------------------------------------
//Statusvariablen---------------------------------------------------------------
//------------------------------------------------------------------------------
//$CurrentVolume...........X --> SetValue(49348 /*[Audio\Variablen\CurrentVolume]*/, $CurrentVolume);
//$CurrentMute.............X --> SetValue(35681 /*[Audio\Variablen\CurrentMute]*/, $CurrentMute);
//GetDeviceCapabilities---------------------------------------------------------
//$PlayMedia...............O --> SetValue(41033 /*[Audio\Variablen\GetDeviceCapabilities\PlayMedia]*/, $PlayMedia);
//$RecMedia................O --> SetValue(20844 /*[Audio\Variablen\GetDeviceCapabilities\RecMedia]*/, $RecMedia);
//$RecQualityModes.........O --> SetValue(37254 /*[Audio\Variablen\GetDeviceCapabilities\RecQualityModes]*/, $RecQualityModes);
//GetMediaInfo------------------------------------------------------------------
//$NrTracks................O --> SetValue(25573 /*[Audio\Variablen\GetMediaInfo\NrTracks]*/, $CurrentTransportState);
//$MediaDuration...........O --> SetValue(15324 /*[Audio\Variablen\GetMediaInfo\MediaDuration]*/, $CurrentTransportState);
//$CurrentURI..............O --> SetValue(49130 /*[Audio\Variablen\GetMediaInfo\CurrentURI]*/, $CurrentTransportState);
//$CurrentURIMetaData......O --> SetValue(28566 /*[Audio\Variablen\GetMediaInfo\CurrentURIMetaData]*/, $CurrentTransportState);
//$NextURI.................O --> SetValue(28865 /*[Audio\Variablen\GetMediaInfo\NextURI]*/, $CurrentTransportState);
//$NextURIMetaData.........O --> SetValue(39683 /*[Audio\Variablen\GetMediaInfo\NextURIMetaData]*/, $CurrentTransportState);
//$PlayMedium..............O --> SetValue(43433 /*[Audio\Variablen\GetMediaInfo\PlayMedium]*/, $CurrentTransportState);
//$RecordMedium............O --> SetValue(44923 /*[Audio\Variablen\GetMediaInfo\RecordMedium]*/, $CurrentTransportState);
//$WriteStatus.............O --> SetValue(14394 /*[Audio\Variablen\GetMediaInfo\WriteStatus]*/, $CurrentTransportState);
//GetTransportInfo--------------------------------------------------------------
//$CurrentTransportState...O --> SetValue(28600 /*[Audio\Variablen\GetTransportInfo\CurrentTransportState]*/, $CurrentTransportState);
//$CurrentTransportStatus..O --> SetValue(38643 /*[Audio\Variablen\GetTransportInfo\CurrentTransportStatus]*/, $CurrentTransportStatus);
//$CurrentSpeed............O --> SetValue(28539 /*[Audio\Variablen\GetTransportInfo\CurrentSpeed]*/, $CurrentSpeed);
//GetTransportSettings----------------------------------------------------------
//$PlayMode................O --> SetValue(11327 /*[Audio\Variablen\GetTransportSettings\PlayMode]*/, $PlayMode);
//$RecQualityMode..........O --> SetValue(22324 /*[Audio\Variablen\GetTransportSettings\RecQualityMode]*/, $RecQualityMode);
//GetCurrentTransportActions----------------------------------------------------
//$Actions.................O --> SetValue(34397 /*[Audio\Variablen\GetCurrentTransportActions\Actions]*/, $Actions);
//GetPositionInfo---------------------------------------------------------------
//$Track...................O --> Setvalue(37167 /*[Audio\Variablen\GetPositionInfo\Track]*/, $Track);
//$TrackDuration...........O --> SetValue(19680 /*[Audio\Variablen\GetPositionInfo\TrackDuration]*/, $TrackDuration);
//$TrackMetaData...........O --> SetValue(41870 /*[Audio\Variablen\GetPositionInfo\TrackMetaData]*/, $TrackMetaData);
//$TrackURI................O --> SetValue(52714 /*[Audio\Variablen\GetPositionInfo\TrackURI]*/, $TrackURI);
//$RelTime.................O --> SetValue(13956 /*[Audio\Variablen\GetPositionInfo\RelTime]*/, $RelTime);
//$AbsTime.................O --> SetValue(35614 /*[Audio\Variablen\GetPositionInfo\AbsTime]*/, $AbsTime);
//$RelCount................O --> SetValue(57388 /*[Audio\Variablen\GetPositionInfo\RelCount]*/, $RelCount);
//$AbsCount................O --> SetValue(26780 /*[Audio\Variablen\GetPositionInfo\AbsCount]*/, $AbsCount);
//Party_Mode Sony---------------------------------------------------------------
//$PartyState..............O --> Setvalue(15268 /*[Audio\Variablen\Party_Mode\PartyState]*/);
//$PartyMode...............O --> SetValue(53869 /*[Audio\Variablen\Party_Mode\PartyMode]*/);
//$PartySong...............O --> Setvalue(23773 /*[Audio\Variablen\Party_Mode\PartySong]*/);
//$SessionID...............O --> Setvalue(56331 /*[Audio\Variablen\Party_Mode\SessionID]*/);
//$NumberOfListeners.......O --> Setvalue(36305 /*[Audio\Variablen\Party_Mode\NumberOfListeners]*/);
//$ListenerList............O --> SetValue(49311 /*[Audio\Variablen\Party_Mode\ListenerList]*/);
//$SingerUUID..............O --> Setvalue(24532 /*[Audio\Variablen\Party_Mode\SingerUUID]*/);
//$SingerSessionID.........O --> Setvalue(23791 /*[Audio\Variablen\Party_Mode\SingerSessionID]*/);
//------------------------------------------------------------------------------
//AVTransportURI definieren-----------------------------------------------------
function SetAVTransportURI($address, $port, $file, $MetaData)
{
$content='POST /AVTransport/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
Content-Length: '.(394+strlen(htmlspecialchars($file))).'
Content-Type: text/xml; charset="utf-8"
SOAPAction: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"
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>'.$MetaData.'</CurrentURIMetaData>
</u:SetAVTransportURI>
</s:Body>
</s:Envelope>';
send($address, $port, $content);
}
//NextAVTransportURI definieren-------------------------------------------------
function SetNextAVTransportURI($address, $port, $file_next, $MetaData_next)
{
$content='POST /AVTransport/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
Content-Length: '.(394+strlen(htmlspecialchars($file))).'
Content-Type: text/xml; charset="utf-8"
SOAPAction: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"
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>
<NextURI>'.$file_next.'</NextURI>
<NextURIMetaData>'.$MetaData_next.'</NextURIMetaData>
</u:SetAVTransportURI>
</s:Body>
</s:Envelope>';
send($address, $port, $content);
}
//Play--------------------------------------------------------------------------
function Play_AV($address, $port)
{
$content='POST /AVTransport/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
Content-Length: 320
Content-Type: text/xml; charset="utf-8"
SOAPAction: "urn:schemas-upnp-org:service:AVTransport:1#Play"
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:Play xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
<InstanceID>0</InstanceID>
<Speed>1</Speed>
</u:Play>
</s:Body>
</s:Envelope>';
send($address, $port, $content);
}
//Stop--------------------------------------------------------------------------
function Stop_AV($address, $port)
{
$content='POST /MediaRenderer/AVTransport/Control HTTP/1.1
HOST: '.$address.':'.$port.'
CONTENT-LENGTH: 250
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Stop"
CONNECTION: close
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:Stop xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
<InstanceID>0</InstanceID>
</u:Stop>
</s:Body>
</s:Envelope>';
send($address, $port, $content);
}
//Pause-------------------------------------------------------------------------
function Pause_AV($address, $port)
{
$content='POST /MediaRenderer/AVTransport/Control HTTP/1.1
HOST: '.$address.':'.$port.'
CONTENT-LENGTH: 252
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Pause"
CONNECTION: close
<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>';
send($address, $port, $content);
}
//Next--------------------------------------------------------------------------
function Next_AV($address, $port)
{
$content='POST /MediaRenderer/AVTransport/Control HTTP/1.1
HOST: '.$address.':'.$port.'
CONTENT-LENGTH: 250
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Next"
CONNECTION: close
<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>';
send($address, $port, $content);
}
//Previous----------------------------------------------------------------------
function Previous_AV($address, $port)
{
$content='POST /MediaRenderer/AVTransport/Control HTTP/1.1
HOST: '.$address.':'.$port.'
CONTENT-LENGTH: 258
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Previous"
CONNECTION: close
<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>';
send($address, $port, $content);
}
//Seek--------------------------------------------------------------------------
function Seek_AV($address, $port, $position)
{
$content='POST /MediaRenderer/AVTransport/Control HTTP/1.1
HOST: '.$address.':'.$port.'
CONTENT-LENGTH: 296
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Seek"
CONNECTION: close
<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>'.$position.'</Target>
</u:Seek>
</s:Body>
</s:Envelope>';
send($address, $port, $content);
}
//Rewind------------------------------------------------------------------------
function Rewind_AV($address, $port)
{
$content='POST /MediaRenderer/AVTransport/Control HTTP/1.1
HOST: '.$address.':'.$port.'
CONTENT-LENGTH: 296
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Seek"
CONNECTION: close
<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>'.$Target.'</Target>
</u:Seek>
</s:Body>
</s:Envelope>';
send($address, $port, $content);
}
//Setplaymode/NORMAL------------------------------------------------------------
function Playmode_Normal($address, $port)
{
$content='POST /AVTransport/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
Content-Length: 387
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetPlayMode"
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:SetPlayMode xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
<InstanceID>0</InstanceID>
<NewPlayMode>NORMAL</NewPlayMode>
</u:SetPlayMode>
</s:Body>
</s:Envelope>';
send($address, $port, $content);
}
//Setplaymode/RANDOM------------------------------------------------------------
function Playmode_Random($address, $port)
{
$content='POST /AVTransport/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
Content-Length: 387
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetPlayMode"
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:SetPlayMode xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
<InstanceID>0</InstanceID>
<NewPlayMode>RANDOM</NewPlayMode>
</u:SetPlayMode>
</s:Body>
</s:Envelope>';
send($address, $port, $content);
}
//Setplaymode/REPEAT_ONE--------------------------------------------------------
function Playmode_Repeat_One($address, $port)
{
$content='POST /AVTransport/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
Content-Length: 391
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetPlayMode"
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:SetPlayMode xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
<InstanceID>0</InstanceID>
<NewPlayMode>REPEAT_ONE</NewPlayMode>
</u:SetPlayMode>
</s:Body>
</s:Envelope>';
send($address, $port, $content);
}
//Setplaymode/REPEAT_ALL--------------------------------------------------------
function Playmode_Repeat_All($address, $port)
{
$content='POST /AVTransport/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
Content-Length: 391
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetPlayMode"
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:SetPlayMode xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
<InstanceID>0</InstanceID>
<NewPlayMode>REPEAT_ALL</NewPlayMode>
</u:SetPlayMode>
</s:Body>
</s:Envelope>';
send($address, $port, $content);
}
//SetVolume---------------------------------------------------------------------
function SetVolume($address, $port, $DesiredVolume)
{
$content='POST /MediaRenderer/RenderingControl/Control HTTP/1.1
HOST: '.$address.':'.$port.'
CONTENT-LENGTH: 32'.strlen($DesiredVolume).'
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#SetVolume"
CONNECTION: close
<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>'.$DesiredVolume.'</DesiredVolume>
</u:SetVolume>
</s:Body>
</s:Envelope>';
send($address, $port, $content);
}
//GetVolume---------------------------------------------------------------------
function GetVolume($address, $port)
{
$content_GetVolume='POST /RenderingControl/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
CONTENT-LENGTH: 380
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#GetVolume"
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:GetVolume xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1">
<InstanceID>0</InstanceID>
<Channel>Master</Channel>
</u:GetVolume>
</s:Body>
</s:Envelope>';
//GetVolume Senden--------------------------------------------------------------
$fp = fsockopen ($address, $port, $errno, $errstr, 10);
fputs ($fp, $content_GetVolume);
$buffer = stream_get_contents($fp, -1);
$vars = explode("
", $buffer); //Header abtrennen
$header = $vars[0]; //Header
$message = $vars[1]; //Meassage
echo $message;
$handle = fopen("GetVolume.xml", "w"); //XML schreiben
fwrite($handle, $message);
fclose($handle);
fclose($fp);
//XML cutten und Variablen schreiben--------------------------------------
$vars1 = explode("<CurrentVolume>", $message); //cut vor CurrentVolume
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</CurrentVolume>", $cutted2); //cut nach CurrentVolume
$cutted3 = $vars2[1];
$CurrentVolume = $vars2[0];
echo $CurrentVolume;
SetValue(49348 /*[Audio\Variablen\CurrentVolume]*/, $CurrentVolume); //Buffer
}
//SetMute-----------------------------------------------------------------------
function SetMute($address, $port, $DesiredMute)
{
$content='POST /RenderingControl/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
CONTENT-TYPE: text/xml; charset="utf-8"
Content-Length: 396
SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#SetMute"
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>'.$DesiredMute.'</DesiredMute>
</u:SetMute>
</s:Body>
</s:Envelope>';
send($address, $port, $content);
}
//GetMute-----------------------------------------------------------------------
function GetMute($address, $port)
{
$content_GetMute='POST /RenderingControl/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
CONTENT-LENGTH: 376
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#GetMute"
CONNECTION: close
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:GetMute xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1">
<InstanceID>0</InstanceID>
<Channel>Master</Channel>
</u:GetMute>
</s:Body>
</s:Envelope>';
//GetMute Senden----------------------------------------------------------------
$fp = fsockopen ($address, $port, $errno, $errstr, 10);
fputs ($fp, $content_GetMute);
$buffer = stream_get_contents($fp, -1);
$vars = explode("
", $buffer); //Header abtrennen
$header = $vars[0]; //Header
$message = $vars[1]; //Meassage
echo $message;
$handle = fopen("GetMute.xml", "w"); //XML schreiben
fwrite($handle, $message);
fclose($handle);
fclose($fp);
//XML cutten und Variablen schreiben--------------------------------------
$vars1 = explode("<CurrentMute>", $message); //cut vor CurrentMute
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</CurrentMute>", $cutted2); //cut nach CurrentMute
$cutted3 = $vars2[1];
$CurrentMute = $vars2[0];
echo $CurrentMute;
SetValue(35681 /*[Audio\Variablen\CurrentMute]*/, $CurrentMute); //Buffer
}
//GetDeviceCapabilities---------------------------------------------------------
function GetDeviceCapabilities($address, $port)
{
$content_GetDeviceCapabilities='POST /AVTransport/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
CONTENT-LENGTH: 363
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#GetDeviceCapabilities"
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:GetDeviceCapabilities xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
<InstanceID>0</InstanceID>
</u:GetDeviceCapabilities>
</s:Body>
</s:Envelope>';
//GetDeviceCapabilities Senden---------------------------------------------------
$fp = fsockopen ($address, $port, $errno, $errstr, 10);
fputs ($fp, $content_GetDeviceCapabilities);
$buffer = stream_get_contents($fp, -1);
$vars = explode("
", $buffer); //Header abtrennen
$header = $vars[0]; //Header
$message = $vars[1]; //Meassage
echo $message;
$handle = fopen("GetDeviceCapabilities.xml", "w"); //XML schreiben
fwrite($handle, $message);
fclose($handle);
fclose($fp);
//XML cutten und Variablen schreiben--------------------------------------
$vars1 = explode("<PlayMedia>", $message); //cut vor PlayMedia
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</PlayMedia>", $cutted2); //cut nach PlayMedia
$cutted3 = $vars2[1];
$PlayMedia = $vars2[0];
echo $PlayMedia;
SetValue(41033 /*[Audio\Variablen\GetDeviceCapabilities\PlayMedia]*/, $PlayMedia);
$vars1 = explode("<RecMedia>", $message); //cut vor RecMedia
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</RecMedia>", $cutted2); //cut nach RecMedia
$cutted3 = $vars2[1];
$RecMedia = $vars2[0];
echo $RecMedia;
SetValue(20844 /*[Audio\Variablen\GetDeviceCapabilities\RecMedia]*/, $RecMedia);
$vars1 = explode("<RecQualityModes>", $message); //cut vor RecQualityModes
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</RecQualityModes>", $cutted2); //cut nach RecQualityModes
$cutted3 = $vars2[1];
$RecQualityModes = $vars2[0];
echo $RecQualityModes;
SetValue(37254 /*[Audio\Variablen\GetDeviceCapabilities\RecQualityModes]*/, $RecQualityModes);
}
//GetMediaInfo------------------------------------------------------------------
function GetMediaInfo ($address, $port)
{
$content_GetMediaInfo='POST /AVTransport/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
Content-Length: 345
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#GetMediaInfo"
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:GetMediaInfo xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
<InstanceID>0</InstanceID>
</u:GetMediaInfo>
</s:Body>
</s:Envelope>';
//GetMediaInfo Senden-----------------------------------------------------------
$fp = fsockopen ($address, $port, $errno, $errstr, 10);
fputs ($fp, $content_GetMediaInfo);
$buffer = stream_get_contents($fp, -1);
$vars = explode("
", $buffer); //Header abtrennen
$header = $vars[0]; //Header
$message = $vars[1]; //Meassage
echo $message;
$handle = fopen("GetMediaInfo.xml", "w"); //XML schreiben
fwrite($handle, $message);
fclose($handle);
fclose($fp);
//XML cutten und Variablen schreiben--------------------------------------
$vars1 = explode("<NrTracks>", $message); //cut vor NrTracks
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</NrTracks>", $cutted2); //cut nach NrTracks
$cutted3 = $vars2[1];
$NrTracks = $vars2[0];
echo $NrTracks;
SetValue(25573 /*[Audio\Variablen\GetMediaInfo\NrTracks]*/, $NrTracks);
$vars1 = explode("<MediaDuration>", $message); //cut vor MediaDuration
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</MediaDuration>", $cutted2); //cut nach MediaDuration
$cutted3 = $vars2[1];
$MediaDuration = $vars2[0];
echo $MediaDuration;
SetValue(15324 /*[Audio\Variablen\GetMediaInfo\MediaDuration]*/, $MediaDuration);
$vars1 = explode("<CurrentURI>", $message); //cut vor CurrentURI
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</CurrentURI>", $cutted2); //cut nach CurrentURI
$cutted3 = $vars2[1];
$CurrentURI = $vars2[0];
echo $CurrentURI;
SetValue(49130 /*[Audio\Variablen\GetMediaInfo\CurrentURI]*/, $CurrentURI);
$vars1 = explode("<CurrentURIMetaData>", $message); //cut vor CurrentURIMetaData
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</CurrentURIMetaData>", $cutted2); //cut nach CurrentURIMetaData
$cutted3 = $vars2[1];
$CurrentURIMetaData = $vars2[0];
echo $CurrentURIMetaData;
SetValue(28566 /*[Audio\Variablen\GetMediaInfo\CurrentURIMetaData]*/, $CurrentURIMetaData);
$vars1 = explode("<NextURI>", $message); //cut vor NextURI
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</NextURI>", $cutted2); //cut nach NextURI
$cutted3 = $vars2[1];
$NextURI = $vars2[0];
echo $NextURI;
SetValue(28865 /*[Audio\Variablen\GetMediaInfo\NextURI]*/, $NextURI);
$vars1 = explode("<NextURIMetaData>", $message); //cut vor NextURIMetaData
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</NextURIMetaData>", $cutted2); //cut nach NextURIMetaData
$cutted3 = $vars2[1];
$NextURIMetaData = $vars2[0];
echo $NextURIMetaData;
SetValue(39683 /*[Audio\Variablen\GetMediaInfo\NextURIMetaData]*/, $NextURIMetaData);
$vars1 = explode("<PlayMedium>", $message); //cut vor PlayMedium
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</PlayMedium>", $cutted2); //cut nach PlayMedium
$cutted3 = $vars2[1];
$PlayMedium = $vars2[0];
echo $PlayMedium;
SetValue(43433 /*[Audio\Variablen\GetMediaInfo\PlayMedium]*/, $PlayMedium);
$vars1 = explode("<RecordMedium>", $message); //cut vor RecordMedium
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</RecordMedium>", $cutted2); //cut nach RecordMedium
$cutted3 = $vars2[1];
$RecordMedium = $vars2[0];
echo $RecordMedium;
SetValue(44923 /*[Audio\Variablen\GetMediaInfo\RecordMedium]*/, $RecordMedium);
$vars1 = explode("<WriteStatus>", $message); //cut vor WriteStatus
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</WriteStatus>", $cutted2); //cut nach WriteStatus
$cutted3 = $vars2[1];
$WriteStatus = $vars2[0];
echo $WriteStatus;
SetValue(14394 /*[Audio\Variablen\GetMediaInfo\WriteStatus]*/, $WriteStatus);
}
//GetTransportInfo--------------------------------------------------------------
function GetTransportInfo($address, $port)
{
$content_GetTransportInfo='POST /AVTransport/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
CONTENT-TYPE: text/xml; charset="utf-8"
Content-Length: 353
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#GetTransportInfo"
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:GetTransportInfo xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
<InstanceID>0</InstanceID>
</u:GetTransportInfo>
</s:Body>
</s:Envelope>';
//GetTransportInfo Senden--------------------------------------------------------
$fp = fsockopen ($address, $port, $errno, $errstr, 10);
fputs ($fp, $content_GetTransportInfo);
$buffer = stream_get_contents($fp, -1);
$vars = explode("
", $buffer); //Header abtrennen
$header = $vars[0]; //Header
$message = $vars[1]; //Meassage
echo $message;
$handle = fopen("GetTransportInfo.xml", "w"); //XML schreiben
fwrite($handle, $message);
fclose($handle);
fclose($fp);
//XML cutten und Variablen schreiben--------------------------------------
$vars1 = explode("<CurrentTransportState>", $message); //cut vor CurrentTransportState
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</CurrentTransportState>", $cutted2); //cut nach CurrentTransportState
$cutted3 = $vars2[1];
$CurrentTransportState = $vars2[0];
echo $CurrentTransportState;
SetValue(28600 /*[Audio\Variablen\GetTransportInfo\CurrentTransportState]*/, $CurrentTransportState);
$vars1 = explode("<CurrentTransportStatus>", $message); //cut vor CurrentTransportStatus
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</CurrentTransportStatus>", $cutted2); //cut nach CurrentTransportStatus
$cutted3 = $vars2[1];
$CurrentTransportStatus = $vars2[0];
echo $CurrentTransportStatus;
SetValue(38643 /*[Audio\Variablen\GetTransportInfo\CurrentTransportStatus]*/, $CurrentTransportStatus);
$vars1 = explode("<CurrentSpeed>", $message); //cut vor CurrentSpeed
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</CurrentSpeed>", $cutted2); //cut nach CurrentSpeed
$cutted3 = $vars2[1];
$CurrentSpeed = $vars2[0];
echo $CurrentSpeed;
SetValue(28539 /*[Audio\Variablen\GetTransportInfo\CurrentSpeed]*/, $CurrentSpeed);
}
//GetTransportSettings----------------------------------------------------------
function GetTransportSettings($address, $port)
{
$content_GetTransportSettings='POST /AVTransport/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
Content-Length: 361
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#GetTransportSettings"
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:GetTransportSettings xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
<InstanceID>0</InstanceID>
</u:GetTransportSettings>
</s:Body>
</s:Envelope>';
//GetTransportSettings Senden---------------------------------------------------
$fp = fsockopen ($address, $port, $errno, $errstr, 10);
fputs ($fp, $content_GetTransportSettings);
$buffer = stream_get_contents($fp, -1);
$vars = explode("
", $buffer); //Header abtrennen
$header = $vars[0]; //Header
$message = $vars[1]; //Meassage
echo $message;
$handle = fopen("Party_GetCurrentTransportActions.xml", "w"); //XML schreiben
fwrite($handle, $message);
fclose($handle);
fclose($fp);
//XML cutten und Variablen schreiben--------------------------------------
$vars1 = explode("<PlayMode>", $message); //cut vor PlayMode
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</PlayMode>", $cutted2); //cut nach PlayMode
$cutted3 = $vars2[1];
$PlayMode = $vars2[0];
echo $PlayMode;
SetValue(11327 /*[Audio\Variablen\GetTransportSettings\PlayMode]*/, $PlayMode);
$vars1 = explode("<RecQualityMode>", $message); //cut vor RecQualityMode
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</RecQualityMode>", $cutted2); //cut nach RecQualityMode
$cutted3 = $vars2[1];
$RecQualityMode = $vars2[0];
echo $RecQualityMode;
SetValue(22324 /*[Audio\Variablen\GetTransportSettings\RecQualityMode]*/, $RecQualityMode);
}
//GetCurrentTransportActions----------------------------------------------------
function GetCurrentTransportActions($address, $port)
{
$content_GetCurrentTransportActions='POST /AVTransport/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
Content-Length: 373
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#GetCurrentTransportActions"
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:GetCurrentTransportActions xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
<InstanceID>0</InstanceID>
</u:GetCurrentTransportActions>
</s:Body>
</s:Envelope>';
//GetCurrentTransportActions Senden---------------------------------------------
$fp = fsockopen ($address, $port, $errno, $errstr, 10);
fputs ($fp, $content_GetCurrentTransportActions);
$buffer = stream_get_contents($fp, -1);
$vars = explode("
", $buffer); //Header abtrennen
$header = $vars[0]; //Header
$message = $vars[1]; //Meassage
echo $message;
$handle = fopen("Party_GetCurrentTransportActions.xml", "w"); //XML schreiben
fwrite($handle, $message);
fclose($handle);
fclose($fp);
//XML cutten und Variablen schreiben--------------------------------------
$vars1 = explode("<Actions>", $message); //cut vor Actions
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</Actions>", $cutted2); //cut nach Actions
$cutted3 = $vars2[1];
$Actions = $vars2[0];
echo $Actions;
SetValue(34397 /*[Audio\Variablen\GetCurrentTransportActions\Actions]*/, $Actions);
}
//GetPositionInfo---------------------------------------------------------------
function GetPositionInfo($address, $port)
{
$content_GetPositionInfo='POST /AVTransport/ctrl HTTP/1.1
HOST: '.$address.':'.$port.'
Content-Length: 272
Content-Type: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#GetPositionInfo"
Connection: Close
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<u:GetPositionInfo xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
<InstanceID>0</InstanceID>
</u:GetPositionInfo>
</s:Body>
</s:Envelope>';
//GetPositionInfo Senden--------------------------------------------------------
$fp = fsockopen ($address, $port, $errno, $errstr, 10);
fputs ($fp, $content_GetPositionInfo);
$buffer = stream_get_contents($fp, -1);
$vars = explode("
", $buffer); //Header abtrennen
$header = $vars[0]; //Header
$message = $vars[1]; //Meassage
echo $message;
$handle = fopen("Party_GetPositionInfo.xml", "w"); //XML schreiben
fwrite($handle, $message);
fclose($handle);
fclose($fp);
//XML cutten und Variablen schreiben--------------------------------------
$vars1 = explode("<Track>", $message); //cut vor Track
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</Track>", $cutted2); //cut nach Track
$cutted3 = $vars2[1];
$Track = $vars2[0];
echo $Track;
SetValue(37167 /*[Audio\Variablen\GetPositionInfo\Track]*/, $Track);
$vars1 = explode("<TrackDuration>", $message); //cut vor TrackDuration
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</TrackDuration>", $cutted2); //cut nach TrackDuration
$cutted3 = $vars2[1];
$TrackDuration = $vars2[0];
echo $TrackDuration;
SetValue(19680 /*[Audio\Variablen\GetPositionInfo\TrackDuration]*/, $TrackDuration);
$vars1 = explode("<TrackMetaData>", $message); //cut vor TrackMetaData
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</TrackMetaData>", $cutted2); //cut nach TrackMetaData
$cutted3 = $vars2[1];
$TrackMetaData = $vars2[0];
echo $TrackMetaData;
SetValue(41870 /*[Audio\Variablen\GetPositionInfo\TrackMetaData]*/, $TrackMetaData);
$vars1 = explode("<TrackURI>", $message); //cut vor TrackURI
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</TrackURI>", $cutted2); //cut nach TrackURI
$cutted3 = $vars2[1];
$TrackURI = $vars2[0];
echo $TrackURI;
SetValue(52714 /*[Audio\Variablen\GetPositionInfo\TrackURI]*/, $TrackURI);
$vars1 = explode("<RelTime>", $message); //cut vor RelTime
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</RelTime>", $cutted2); //cut nach RelTime
$cutted3 = $vars2[1];
$RelTime = $vars2[0];
echo $RelTime;
SetValue(13956 /*[Audio\Variablen\GetPositionInfo\RelTime]*/, $RelTime);
$vars1 = explode("<AbsTime>", $message); //cut vor AbsTime
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</AbsTime>", $cutted2); //cut nach AbsTime
$cutted3 = $vars2[1];
$AbsTime = $vars2[0];
echo $AbsTime;
SetValue(35614 /*[Audio\Variablen\GetPositionInfo\AbsTime]*/, $AbsTime);
$vars1 = explode("<RelCount>", $message); //cut vor RelCount
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</RelCount>", $cutted2); //cut nach RelCount
$cutted3 = $vars2[1];
$RelCount = $vars2[0];
echo $RelCount;
SetValue(57388 /*[Audio\Variablen\GetPositionInfo\RelCount]*/, $RelCount);
$vars1 = explode("<AbsCount>", $message); //cut vor AbsCount
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</AbsCount>", $cutted2); //cut nach AbsCount
$cutted3 = $vars2[1];
$AbsCount = $vars2[0];
echo $AbsCount;
SetValue(26780 /*[Audio\Variablen\GetPositionInfo\AbsCount]*/, $AbsCount);
}
//------------------------------------------------------------------------------
//Party_Mode Sony
//------------------------------------------------------------------------------
//Party_X_GetState--------------------------------------------------------------
function Party_X_GetState($address, $port)
{
$content_Party_X_GetState='POST /Party_Control HTTP/1.1
HOST: '.$address.':'.$port.'
Content-Length: 298
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-sony-com:service:Party:1#X_GetState"
CONNECTION: close
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:X_GetState xmlns:u="urn:schemas-sony-com:service:Party:1"></u:X_GetState>
</s:Body>
</s:Envelope>';
//Party_GetState senden und XML schreiben------------------------------------
$fp = fsockopen ($address, $port, $errno, $errstr, 10);
fputs ($fp, $content_Party_X_GetState);
$buffer = stream_get_contents($fp, -1);
$vars = explode("
", $buffer); //Header abtrennen
$header = $vars[0]; //Header
$message = $vars[1]; //Meassage
echo $message;
$handle = fopen("Party_GetState.xml", "w"); //XML schreiben
fwrite($handle, $message);
fclose($handle);
fclose($fp);
//Party_GetState XML cutten und Variablen schreiben--------------------------------------------
$vars1 = explode("<PartyState>", $message); //cut vor PartyState
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</PartyState>", $cutted2); //cut nach PartyState
$cutted3 = $vars2[1];
$PartyState = $vars2[0];
echo $PartyState;
SetValue(15268 /*[Audio\Variablen\Party_Mode\PartyState]*/, $PartyState);
$vars1 = explode("<PartyMode>", $message); //cut vor PartyMode
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</PartyMode>", $cutted2); //cut nach PartyMode
$cutted3 = $vars2[1];
$PartyMode = $vars2[0];
echo $PartyMode;
SetValue(53869 /*[Audio\Variablen\Party_Mode\PartyMode]*/, $PartyMode);
$vars1 = explode("<PartySong>", $message); //cut vor PartySong
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</PartySong>", $cutted2); //cut nach PartySong
$cutted3 = $vars2[1];
$PartySong = $vars2[0];
echo $PartySong;
SetValue(23773 /*[Audio\Variablen\Party_Mode\PartySong]*/, $PartySong);
$vars1 = explode("<SessionID>", $message); //cut vor SessionID
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</SessionID>", $cutted2); //cut nach SessionID
$cutted3 = $vars2[1];
$SessionID = $vars2[0];
echo $SessionID;
SetValue(56331 /*[Audio\Variablen\Party_Mode\SessionID]*/, $SessionID);
$vars1 = explode("<NumberOfListeners>", $message); //cut vor NumberOfListeners
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</NumberOfListeners>", $cutted2); //cut nach NumberOfListeners
$cutted3 = $vars2[1];
$NumberOfListeners = $vars2[0];
echo $NumberOfListeners;
SetValue(36305 /*[Audio\Variablen\Party_Mode\NumberOfListeners]*/, $NumberOfListeners);
$vars1 = explode("<ListenerList>", $message); //cut vor ListenerList
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</ListenerList>", $cutted2); //cut nach ListenerList
$cutted3 = $vars2[1];
$ListenerList = $vars2[0];
echo $ListenerList;
SetValue(49311 /*[Audio\Variablen\Party_Mode\ListenerList]*/, $ListenerList);
$vars1 = explode("<SingerUUID>", $message); //cut vor SingerUUID
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</SingerUUID>", $cutted2); //cut nach SingerUUID
$cutted3 = $vars2[1];
$SingerUUID = $vars2[0];
echo $SingerUUID;
SetValue(24532 /*[Audio\Variablen\Party_Mode\SingerUUID]*/, $SingerUUID);
$vars1 = explode("<SingerSessionID>", $message); //cut vor SingerSessionID
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</SingerSessionID>", $cutted2); //cut nach SingerSessionID
$cutted3 = $vars2[1];
$SingerSessionID = $vars2[0];
echo $SingerSessionID;
SetValue(23791 /*[Audio\Variablen\Party_Mode\SingerSessionID]*/, $SingerSessionID);
}
//Party_X_Start-----------------------------------------------------------------
function Party_X_Start($address, $port, $PartyMode, $ListenerList)
{
$content_Party_X_Start='POST /Party_Control HTTP/1.1
HOST: '.$address.':'.$port.'
Content-Length: 505
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-sony-com:service:Party:1#X_Start"
CONNECTION: close
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:X_Start xmlns:u="urn:schemas-sony-com:service:Party:1">
<PartyMode>'.$PartyMode.'</PartyMode>
<ListenerList>'.$ListenerList.'</ListenerList>
</u:X_Start>
</s:Body>
</s:Envelope>';
//Party_Start Senden------------------------------------------------------------
$fp = fsockopen ($address, $port, $errno, $errstr, 10);
fputs ($fp, $content_Party_X_Start);
$buffer = stream_get_contents($fp, -1);
$vars = explode("
", $buffer); //Header abtrennen
$header = $vars[0]; //Header
$message = $vars[1]; //Meassage
echo $message;
$handle = fopen("Party_Start.xml", "w"); //XML schreiben
fwrite($handle, $message);
fclose($handle);
//Party_Start XML cutten und Variablen schreiben-----------------------------
$vars1 = explode("<SingerSessionID>", $message); //cut vor SingerSessionID
$cutted1 = $vars1[0];
$cutted2 = $vars1[1];
$vars2 = explode("</SingerSessionID>", $cutted2); //cut nach SingerSessionID
$cutted3 = $vars2[1];
$SingerSessionID = $vars2[0];
echo $SingerSessionID;
SetValue (23791 /*[Audio\Variablen\Party_Mode\SingerSessionID]*/, $SingerSessionID);
}
//Party_X_Entry-----------------------------------------------------------------
function Party_X_Entry($address, $port, $SingerSessionID, $ListenerList)
{
$content='POST /Party_Control HTTP/1.1
HOST: '.$address.':'.$port.'
Content-Length: 514
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-sony-com:service:Party:1#X_Entry"
CONNECTION: close
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:X_Entry xmlns:u="urn:schemas-sony-com:service:Party:1">
<SingerSessionID>'.$SingerSessionID.'</SingerSessionID>
<ListenerList>'.$ListenerList.'</ListenerList>
</u:X_Entry>
</s:Body>
</s:Envelope>';
send($address, $port, $content);
}
//Party_X_Abort-----------------------------------------------------------------
function Party_X_Abort($address, $port, $SingerSessionID)
{
$content='POST /Party_Control HTTP/1.1
HOST: '.$address.':'.$port.'
Content-Length: 351
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-sony-com:service:Party:1#X_Abort"
CONNECTION: close
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:X_Abort xmlns:u="urn:schemas-sony-com:service:Party:1">
<SingerSessionID>'.$SingerSessionID.'</SingerSessionID>
</u:X_Abort>
</s:Body>
</s:Envelope>';
send($address, $port, $content);
}
//Party_X_Leave-----------------------------------------------------------------
function Party_X_Leave($address, $port, $SingerSessionID, $ListenerList)
{
$content='POST /Party_Control HTTP/1.1
HOST: '.$address.':'.$port.'
Content-Length: 431
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-sony-com:service:Party:1#X_Leave"
CONNECTION: close
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:X_Leave xmlns:u="urn:schemas-sony-com:service:Party:1">
<SingerSessionID>'.$SingerSessionID.'</SingerSessionID>
<ListenerList>'.$ListenerList.'</ListenerList>
</u:X_Leave>
</s:Body>
</s:Envelope>';
send($address, $port, $content);
}
//Ende Party Mode---------------------------------------------------------------
//Send--------------------------------------------------------------------------
function send($address, $port, $content)
{
$fp = fsockopen($address, $port);
fputs ($fp, $content);
$return = stream_get_contents($fp, -1);
echo $return;
fclose($fp);
}
?>
Zum Testen erstmal SetAVTransportURI und Play_AV aufrufen.
Zu übergebende Variablen sind: $address, $port, $file, $MetaData. $MetaData kann dabei leer bleiben.
Zum Beispiel:
$address = „XXX.XXX.XXX.XXX“;
$port = „8080“;
$file = „http://192.168.178.22:8080/Test.mp3“;
$MetaData = „BlaBlaBla“;
SetAVTransportURI($address, $port, $file, $MetaData);
Play_AV($address, $port);
Die IN und OUT der functions sowie erforderliche (X) oder fakultative (O) Variablen habe ich dokumentiert.
Über Rückmeldungen, Anmerkungen und (möglichst wenig) Bug-Reports würde ich mich freuen
Viele Grüsse
André
UPNP_Functions_V1.7.zip (5.37 KB)