// br_ips: br_sonos_test
// Test / Example script for PHPSonos and br_sonos
// Include br_ips Libs - PHPSonos still works without this lib!
require ("functions.inc.php"); // use PHPSonos.inc.php here
// Get Script Parent
$ParentID=(int)br_objParent ($IPS_SELF);
// Talk to Coord
$sonos = new PHPSonos("192.168.0.115"); //Sonos ZP IPAdresse
/******************************* LEDSTATE EXAMPLE *******************************************
echo "\n LED: " . $sonos->GetLEDState() . "\n";
$sonos->SetLEDState(true);
echo "\n LED: " . $sonos->GetLEDState() . "\n";
IPS_Sleep(600);
$sonos->SetLEDState(false);
echo "\n LED: " . $sonos->GetLEDState() . "\n";
IPS_Sleep(600);
$sonos->SetLEDState("On");
echo "\n LED: " . $sonos->GetLEDState() . "\n";
// ******************************* /LEDSTATE EXAMPLE *********************************************/
/* ****************************** ZONEATTR AND INFO EXAMPLE ***********************************
$ZoneAttributes = $sonos->GetZoneAttributes();
print_r( $ZoneAttributes);
$ZoneInfo = $sonos->GetZoneInfo();
print_r( $ZoneInfo);
// ******************************* /ZONEATTR AND INFO EXAMPLE ************************************/
/* ****************************** AddMember and RemoveMember EXAMPLE****************************
$AddMember = $sonos->AddMember("RINCON_000E5825411201400");
echo "\nDEBUG AddMember:\n";
print_r( $AddMember);
// Talk to slave
$sonos = new PHPSonos("192.168.0.111"); //Slave Sonos ZP IPAddress
echo "\n";
$ret = $sonos->SetAVTransportURI("x-rincon:" . "RINCON_000E5832FB5C01400");
echo "\nDEBUG SetAVTransportURI to "."x-rincon:" . "RINCON_000E5832FB5C01400" ."\n";
// Playing starts
IPS_Sleep(1000);
// Talk to Coord
$sonos = new PHPSonos("192.168.0.115"); //Sonos ZP IPAdresse
$RemoveMember = $sonos->RemoveMember("RINCON_000E5825411201400");
echo "\nDEBUG RemoveMember:\n";
print_r( $RemoveMember);
// Talk to slave
$sonos = new PHPSonos("192.168.0.111"); //Slave Sonos ZP IPAddress
// needed for stop of playback on Slave
$sonos->SetAVTransportURI("");
echo "\nDEBUG SetAVTransportURI to NONE \n";
//Playing stops
// ****************************** /AddMember and RemoveMember EXAMPLE****************************/
$sonos = new PHPSonos("192.168.0.111"); //Sonos ZP IPAdresse
// ****************************** Volume Ramp EXAMPLE****************************/
// echo "RampTime: ". $sonos->RampToVolume("SLEEP_TIMER_RAMP_TYPE",40) . "\n";
// ****************************** /Volume Ramp EXAMPLE****************************/
/****************************** Crossfade EXAMPLE****************************
echo "GetCrossfadeMode: ". $sonos->GetCrossfadeMode() . "\n";
IPS_Sleep(1000);
echo "SetCrossfadeMode true: ". $sonos->SetCrossfadeMode(true) . "\n";
echo "GetCrossfadeMode: ". $sonos->GetCrossfadeMode() . "\n";
IPS_Sleep(1000);
echo "SetCrossfadeMode false: ". $sonos->SetCrossfadeMode(false) . "\n";
echo "GetCrossfadeMode: ". $sonos->GetCrossfadeMode() . "\n";
// ****************************** /Crossfade EXAMPLE****************************/
/****************************** SaveQueue EXAMPLE****************************
echo "SaveQueue as TEST (SONOS Playlist): ". $sonos->SaveQueue("Test") . "\n";
// ****************************** /SaveQueue EXAMPLE****************************/
/****************************** Playlists EXAMPLE****************************
$sonoslists=$sonos->GetSONOSPlaylists();
print_r($sonoslists);
foreach($sonoslists as $sonoslist)
{
if ($sonoslist['title']=='Test') $id=$sonoslist['id'];
}
echo $id . "\n";
$sonos->SaveQueue("Test",$id);
echo "\n====================\n";
$arrpl=$sonos->GetImportedPlaylists();
print_r($arrpl);
// ****************************** /Playlists EXAMPLE****************************/
/* ****************************** Meldung/Message EXAMPLE***********************
$sonos = new PHPSonos("192.168.0.115"); //Sonos ZP IPAdresse
$vol=$sonos->GetVolume();
// br_TTS_Speak($IDMediaPlayer,"Test Meldung",1*1000);
// Ramp down
$sonos->SetVolume($vol/100*40);
IPS_Sleep(100);
$sonos->SetVolume($vol/100*10);
// Saving off information
$oldpi = $sonos->GetPositionInfo();
$oldmi = $sonos->GetMediaInfo();
print_r($oldpi);
$oldti = $sonos->GetTransportInfo();
// Setting AVT to IPS-Meldung
$sonos->SetVolume($vol/100*70);
$sonos->SetAVTransportURI("x-file-cifs://touch/IP-Symcon$/media/Meldung.wav");
$sonos->Play();
$sonos->SetVolume($vol);
while ($sonos->GetTransportInfo()==1){ // Wait here for Meldung
IPS_Sleep(30);
}
$sonos->SetVolume($vol/100*60);
// Setting old queue
$sonos->SetAVTransportURI($oldmi['CurrentURI'],$oldmi['CurrentURIMetaData']);
try {
// Seek TRack_Nr
$sonos->Seek("TRACK_NR",$oldpi['Track']);
// Seek REl_time
$sonos->Seek("REL_TIME",$oldpi['RelTime']);
} catch (Exception $e) {
// Seek not posssible
}
// Only play if old pi is PLAYING
if ($oldti==1) $sonos->Play();
$sonos->SetVolume($vol);
/* ****************************** / Meldung/Message EXAMPLE***********************/
/* Test br */
//if($sonos->SubscribeMRAVTransport()) echo "SUBCRIBE !!!! true";
/*
$AddMember = $sonos->AddMember("RINCON_000E5825411201400");
echo "\nDEBUG AddMember:\n";
print_r( $AddMember);
// Talk to slave
$sonos = new PHPSonos("192.168.0.111"); //Slave Sonos ZP IPAddress
echo "\n";
$ret = $sonos->SetAVTransportURI("x-rincon:" . "RINCON_000E5832FB5C01400");
echo "\nDEBUG SetAVTransportURI to "."x-rincon:" . "RINCON_000E5832FB5C01400" ."\n";
// Playing starts
*/
/* ****************************** Browse EXAMPLE**********************
$sonoslists=$sonos->GetSONOSPlaylists();
print_r($sonoslists);
foreach($sonoslists as $sonoslist)
{
if ($sonoslist['title']=='Test') $id=$sonoslist['id'];
}
echo "\n===============================================================\n";
$browseliste = $sonos->Browse("SQ:53","c");
print_r($browseliste);
echo "\n===============================================================\n";
/* ****************************** /Browse EXAMPLE***********************/
/* ****************************** GetAlarmTime EXAMPLE***********************
print_r($sonos->ListAlarms());
/* ****************************** GetAlarmTime EXAMPLE***********************
/* ****************************** Subcribe **********************************/
$sonos = new PHPSonos("192.168.0.115"); //Sonos ZP IPAdresse
echo($sonos->SubscribeMRAVTransport('http://192.168.0.5:6666'));
echo($sonos->SubscribeZPGroupManagement('http://192.168.0.5:6666'));
/* ****************************** /Subcribe **********************************/
// http://www.ip-symcon.de/forum/f53/php-sonos-klasse-ansteuern-einzelner-player-7676/index12.html#post125724
//$sonos->SetRadio("x-rincon-mp3radio://streams.br-online.de/bayern3_2.asx", "Bayern 3");
//$sonos->Play();
/* ************ Queue Dump to htmlvar ***********************
$sonoscurrentlist=$sonos->GetCurrentPlaylist();
$title="";
foreach($sonoscurrentlist as $sonoslist)
{
$title.=($sonoslist ['title'])."
";
//,= ist anhängen
}
SetValueString (24524, $title);
/***************************************************************
$VarProfileName="pl_anz_play";
if (IPS_VariableProfileExists($VarProfileName)==False) {
IPS_CreateVariableProfile($VarProfileName,1);
IPS_SetVariableProfileAssociation($VarProfileName, 0, "Anzeigen","",-1);
IPS_SetVariableProfileAssociation($VarProfileName, 1, "Play","",-1);
}
$sonoslists=$sonos->GetSONOSPlaylists();
// DEBUG
print_r($sonoslists);
// ...wo sollen die ganzen Vars hin
$ParentID=(int)33498; // ...wo sollen die ganzen Vars hin
$position=1;
foreach($sonoslists as $sonoslist)
{
$id = CreateVariableByName($ParentID, "test",VAR_TYPE_INTEGER);
$id = CreateVariableByName($ParentID, $sonoslist['title'],VAR_TYPE_INTEGER);
IPS_SetVariableCustomProfile($id, "pl_anz_play");
IPS_SetPosition($id, ++$position);
$test=IPS_SetVariableCustomAction($id, 45245 );
SetValueInteger($id, -1); // Wert setzen auf -1
$position++;
}
*/
/*******************************************************************************************
// Selectvar Webfront
$RadioFavSelID=(int)25828;
// Data var
$RadioFavDataID=(int)36980;
// Hide data var
IPS_SetHidden($RadioFavDataID,true);
$sonos = new PHPSonos("192.168.0.115"); //Sonos ZP IPAdresse
$VarProfileName="RadioFavSel";
if (IPS_VariableProfileExists($VarProfileName)==true) {
echo "\nDEBUG: profile exists ... delete\n";
IPS_DeleteVariableProfile($VarProfileName);
}
$ret=IPS_CreateVariableProfile($VarProfileName,1);
echo "\nDEBUG: profile create ret is !".$ret."!\n";
IPS_SetVariableCustomProfile($RadioFavSelID, $VarProfileName);
$test=IPS_SetVariableCustomAction($RadioFavSelID, 45245 );
$browselist = $sonos->Browse("R:0/0","c");
// Safe off Data
SetValue($RadioFavDataID, serialize($browselist));
print_r($browselist);
$position=0;
$ret2=0;
foreach($browselist as $radiofav)
{ $ret2=IPS_SetVariableProfileAssociation($VarProfileName, $position, $radiofav['title'],"",-1);
// echo "\nDEBUG: assoc !".$radiofav['title']."!!".$ret2."!".$radiofav['res']."!\n";
$position++; }
echo "\n\n!!";
var_dump(urldecode($browselist[0]['res']));
echo "!!\n\n";
// Play
$sonos->SetRadio(urldecode($browselist[0]['res']));
// $sonos->SetRadio("x-sonosapi-stream:s90495?sid=254&flags=32","Test");
$sonos->Play();
***************************************************************/
/***************************** TUNEIN TEST *****************************
$sonos = new PHPSonos("192.168.0.115"); //Sonos ZP IPAdresse
$mi=$sonos->GetMediaInfo();
//print_r($mi);
$station=preg_replace("#(.*)x-sonosapi-stream:(.*?)\?sid(.*)#is",'$2',$mi['CurrentURI']);
//echo $station;
$content = @file_get_contents("http://opml.radiotime.com/Describe.ashx?c=nowplaying&id=".$station);
echo $content;
$albumArtURI=preg_replace("#(.*)(.*?)\(.*)#is",'$2',$content);
echo $albumArtURI;
******************************************************************************/
/************************* GetCurrentTransportActions TEST**********************************************************
$sonos = new PHPSonos("192.168.0.115"); //Sonos ZP IPAdresse
$sonos->SetRadio("x-rincon-mp3radio://streams.br-online.de/bayern3_2.asx", "Bayern 3");
$sonos->Play();
$oldpi = $sonos->GetPositionInfo();
$oldmi = $sonos->GetMediaInfo();
print_r($oldpi);
print_r($oldmi);
// print_r($sonos->GetCurrentTransportActions());
************************** /GetCurrentTransportActions TEST *************************************/
/*
$sonos = new PHPSonos("192.168.0.115"); //Sonos ZP IPAdresse
print_r($sonos->GetZoneAttributes());
*/
/********************* INVISIBLE EXAMPLE **************************************
// Be careful with using the code below!!!
$sonos = new PHPSonos("192.168.0.115"); //Sonos ZP IPAdresse
echo "\nSet Inv true: ";
$sonos->SetInvisible(true);
echo "\nGet Inv: ";
print_r($sonos->GetInvisible());
echo "\nSet Inv false: ";
$sonos->SetInvisible(false);
echo "\nGet Inv: ";
print_r($sonos->GetInvisible());
*********************** /INVISIBLE EXAMPLE ********************************************/
/************************ simplexml status test *************************************
// http://www.trautner.net/313-sonos-mit-gira-homeserver-steuern
**/
function getStatus($zoneplayerIp)
{
$url = "http://" . $zoneplayerIp . ":1400/status/zp";
$xml = simpleXML_load_file($url);
return $xml->ZPInfo->SoftwareVersion;
}
echo getStatus("192.168.0.115");
?>