OK. Der Motor ist die UPNP_Functions_V2.5.ips.php alles andere ist nur Chassis. Frag, wenn Du nicht weiterkommst.
Wichtig ist aus der Device-Description unter Services die richtige ControlURL herauszufinden.
Hier ein Sony-Netzwerklautsprecher (z.B. http://192.168.178.154:8080/description.xml): da ist unter anderem zu finden
<service>
<serviceType>urn:schemas-upnp-org:service:AVTransport:1</serviceType>
<serviceId>urn:upnp-org:serviceId:AVTransport</serviceId>
<SCPDURL>/AVTransport/desc.xml</SCPDURL>
<controlURL>/AVTransport/ctrl</controlURL>
<eventSubURL>/AVTransport/evt</eventSubURL>
</service>
also: „/AVTransport/ctrl“
In der UPNP_Functions enthalten:
//------------------------------------------------------------------------------
//UPNP_Functions_V2.5.ips.php--------------------------2013 von André Liebmann--
//------------------------------------------------------------------------------
//PHP Function-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($controlURL, $DeviceIP, $DevicePort, $file, $MetaData)
//-----------------IN: $file (CurrentURI)
//-----------------IN: $MetaData (CurrentURIMetaData)
//function SetNextAVTransportURI($controlURL, $DeviceIP, $DevicePort, $file_next, $MetaData_next)
//-----------------IN: $file_next (NextURI)
//-----------------IN: $MetaData_next (NextURIMetaData)
//------------------------------------------------------------------------------
//function Play_AV($controlURL, $DeviceIP, $DevicePort)
//function Stop_AV($controlURL, $DeviceIP, $DevicePort)
//function Pause_AV($controlURL, $DeviceIP, $DevicePort)
//function Next_AV($controlURL, $DeviceIP, $DevicePort) --> Funktion Next() in PHP vorhanden !!!
//function Previous_AV($controlURL, $DeviceIP, $DevicePort)
//function Seek_AV($controlURL, $DeviceIP, $DevicePort, $position)
//function Rewind_AV($controlURL, $DeviceIP, $DevicePort) --> Funktion Rewind() in PHP vorhanden !!!
//function Playmode_Normal($controlURL, $DeviceIP, $DevicePort)
//function Playmode_Random($controlURL, $DeviceIP, $DevicePort)
//function Playmode_Repeat_One($controlURL, $DeviceIP, $DevicePort)
//function Playmode_Repeat_All($controlURL, $DeviceIP, $DevicePort)
//------------------------------------------------------------------------------
//function SetVolume($renderingcontrolURL, $DeviceIP, $DevicePort, $DesiredVolume)
//-----------------IN: $DesiredVolume
//function GetVolume($renderingcontrolURL, $DeviceIP, $DevicePort)
//-----------------OUT: $CurrentVolume
//function SetMute($renderingcontrolURL, $DeviceIP, $DevicePort, $DesiredMute)
//-----------------IN: $DesiredMute
//function GetMute($renderingcontrolURL, $DeviceIP, $DevicePort)
//-----------------OUT: $CurrentMute
//function GetDeviceCapabilities($controlURL, $DeviceIP, $DevicePort)
//-----------------OUT: $PlayMedia
//-----------------OUT: $RecMedia
//-----------------OUT: $RecQualityModes
//function GetMediaInfo($controlURL, $DeviceIP, $DevicePort)
//-----------------OUT: $NrTracks
//-----------------OUT: $MediaDuration
//-----------------OUT: $CurrentURI
//-----------------OUT: $CurrentURIMetaData
//-----------------OUT: $NextURI
//-----------------OUT: $NextURIMetaData
//-----------------OUT: $PlayMedium
//-----------------OUT: $RecordMedium
//-----------------OUT: $WriteStatus
//function GetTransportInfo($controlURL, $DeviceIP, $DevicePort)
//-----------------OUT: $CurrentTransportState
//-----------------OUT: $CurrentTransportStatus
//-----------------OUT: $CurrentSpeed
//function GetTransportSettings($controlURL, $DeviceIP, $DevicePort)
//-----------------OUT: $PlayMode
//-----------------OUT: $RecQualityMode
//function GetCurrentTransportActions($controlURL, $DeviceIP, $DevicePort)
//-----------------OUT: $Actions
//function GetPositionInfo($controlURL, $DeviceIP, $DevicePort)
//-----------------OUT: $Track
//-----------------OUT: $TrackDuration
//-----------------OUT: $TrackMetaData
//-----------------OUT: $TrackURI
//-----------------OUT: $RelTime
//-----------------OUT: $AbsTime
//-----------------OUT: $RelCount
//-----------------OUT: $AbsCount
//------------------------------------------------------------------------------
//function Party_X_GetState($DeviceIP, $DevicePort)
//-----------------OUT: $PartyState
//-----------------OUT: $PartyMode
//-----------------OUT: $PartySong
//-----------------OUT: $SessionID
//-----------------OUT: $NumberOfListeners
//-----------------OUT: $ListenerList
//-----------------OUT: $SingerUUID
//-----------------OUT: $SingerSessionID
//function Party_X_Start($DeviceIP, $DevicePort, $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($DeviceIP, $DevicePort, $SingerSessionID, $ListenerList)
//-----------------IN: $SingerSessionID --> aus X-Start: SingerSessionID
//-----------------IN: $ListenerList --> aus X-Start: UUID´s der Listener
//function Party_X_Abort($DeviceIP, $DevicePort, $SingerSessionID)
//-----------------IN: $SingerSessionID --> aus X-Start: SingerSessionID
//function Party_X_Leave($DeviceIP, $DevicePort, $SingerSessionID, $ListenerList)
//-----------------IN: $SingerSessionID --> aus X-Start: UUID´s der Listener
//-----------------IN: $ListenerList
//------------------------------------------------------------------------------
//function send($controlURL, $DeviceIP, $DevicePort, $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 /*[Multimedia\Variablen\CurrentVolume]*/, $CurrentVolume);
//$CurrentMute.............X --> SetValue(35681 /*[Multimedia\Variablen\CurrentMute]*/, $CurrentMute);
//GetDeviceCapabilities---------------------------------------------------------
//$PlayMedia...............O --> SetValue(41033 /*[Multimedia\Variablen\GetDeviceCapabilities\PlayMedia]*/, $PlayMedia);
//$RecMedia................O --> SetValue(20844 /*[Multimedia\Variablen\GetDeviceCapabilities\RecMedia]*/, $RecMedia);
//$RecQualityModes.........O --> SetValue(37254 /*[Multimedia\Variablen\GetDeviceCapabilities\RecQualityModes]*/, $RecQualityModes);
//GetMediaInfo------------------------------------------------------------------
//$NrTracks................O --> SetValue(25573 /*[Multimedia\Variablen\GetMediaInfo\NrTracks]*/, $CurrentTransportState);
//$MediaDuration...........O --> SetValue(15324 /*[Multimedia\Variablen\GetMediaInfo\MediaDuration]*/, $CurrentTransportState);
//$CurrentURI..............O --> SetValue(49130 /*[Multimedia\Variablen\GetMediaInfo\CurrentURI]*/, $CurrentTransportState);
//$CurrentURIMetaData......O --> SetValue(28566 /*[Multimedia\Variablen\GetMediaInfo\CurrentURIMetaData]*/, $CurrentTransportState);
//$NextURI.................O --> SetValue(28865 /*[Multimedia\Variablen\GetMediaInfo\NextURI]*/, $CurrentTransportState);
//$NextURIMetaData.........O --> SetValue(39683 /*[Multimedia\Variablen\GetMediaInfo\NextURIMetaData]*/, $CurrentTransportState);
//$PlayMedium..............O --> SetValue(43433 /*[Multimedia\Variablen\GetMediaInfo\PlayMedium]*/, $CurrentTransportState);
//$RecordMedium............O --> SetValue(44923 /*[Multimedia\Variablen\GetMediaInfo\RecordMedium]*/, $CurrentTransportState);
//$WriteStatus.............O --> SetValue(14394 /*[Multimedia\Variablen\GetMediaInfo\WriteStatus]*/, $CurrentTransportState);
//GetTransportInfo--------------------------------------------------------------
//$CurrentTransportState...O --> SetValue(28600 /*[Multimedia\Variablen\GetTransportInfo\CurrentTransportState]*/, $CurrentTransportState);
//$CurrentTransportStatus..O --> SetValue(38643 /*[Multimedia\Variablen\GetTransportInfo\CurrentTransportStatus]*/, $CurrentTransportStatus);
//$CurrentSpeed............O --> SetValue(28539 /*[Multimedia\Variablen\GetTransportInfo\CurrentSpeed]*/, $CurrentSpeed);
//GetTransportSettings----------------------------------------------------------
//$PlayMode................O --> SetValue(11327 /*[Multimedia\Variablen\GetTransportSettings\PlayMode]*/, $PlayMode);
//$RecQualityMode..........O --> SetValue(22324 /*[Multimedia\Variablen\GetTransportSettings\RecQualityMode]*/, $RecQualityMode);
//GetCurrentTransportActions----------------------------------------------------
//$Actions.................O --> SetValue(34397 /*[Multimedia\Variablen\GetCurrentTransportActions\Actions]*/, $Actions);
//GetPositionInfo---------------------------------------------------------------
//$Track...................O --> Setvalue(37167 /*[Multimedia\Variablen\GetPositionInfo\Track]*/, $Track);
//$TrackDuration...........O --> SetValue(19680 /*[Multimedia\Variablen\GetPositionInfo\TrackDuration]*/, $TrackDuration);
//$TrackMetaData...........O --> SetValue(41870 /*[Multimedia\Variablen\GetPositionInfo\TrackMetaData]*/, $TrackMetaData);
//$TrackURI................O --> SetValue(52714 /*[Multimedia\Variablen\GetPositionInfo\TrackURI]*/, $TrackURI);
//$RelTime.................O --> SetValue(13956 /*[Multimedia\Variablen\GetPositionInfo\RelTime]*/, $RelTime);
//$AbsTime.................O --> SetValue(35614 /*[Multimedia\Variablen\GetPositionInfo\AbsTime]*/, $AbsTime);
//$RelCount................O --> SetValue(57388 /*[Multimedia\Variablen\GetPositionInfo\RelCount]*/, $RelCount);
//$AbsCount................O --> SetValue(26780 /*[Multimedia\Variablen\GetPositionInfo\AbsCount]*/, $AbsCount);
//Party_Mode Sony---------------------------------------------------------------
//$PartyState..............O --> Setvalue(15268 /*[Multimedia\Variablen\Party_Mode\PartyState]*/, $PartyState);
//$PartyMode...............O --> SetValue(53869 /*[Multimedia\Variablen\Party_Mode\PartyMode]*/, $PartyMode);
//$PartySong...............O --> Setvalue(23773 /*[Multimedia\Variablen\Party_Mode\PartySong]*/, $PartySong);
//$SessionID...............O --> Setvalue(56331 /*[Multimedia\Variablen\Party_Mode\SessionID]*/, $SessionID);
//$NumberOfListeners.......O --> Setvalue(36305 /*[Multimedia\Variablen\Party_Mode\NumberOfListeners]*/, $NumberOfListeners);
//$ListenerList............O --> SetValue(49311 /*[Multimedia\Variablen\Party_Mode\ListenerList]*/, $ListenerList);
//$SingerUUID..............O --> Setvalue(24532 /*[Multimedia\Variablen\Party_Mode\SingerUUID]*/, $SingerUUID);
//$SingerSessionID.........O --> Setvalue(23791 /*[Multimedia\Variablen\Party_Mode\SingerSessionID]*/, $SingerSessionID);
//------------------------------------------------------------------------------
Viele Grüße
André