Your comments

up

Может у кого-то есть функция как запустить и остановить радио стрим на конкретном соносе(есть RINCON)?

Та что выше почему-то посылает сонос в ступор через 2-3 команды вкл/выкл

Екатерина, у меня нет варианты "Автору и команде" к комментарию


Да простят меня скрипт программисты за непонятную логику и кривой синтаксис....


var mute;


var plus;
var minus;
var volume;
var uuid;
var sonos;
var sonosT4;
var sonosT8;
var sonosT9;
var url;
var port;
var host;
var path;
var upnp;
var players = [];


IR.AddListener(IR.EVENT_DEVICE_FOUND, 0, FoundDevice);
function SavePlayers()
{
var data = [];
for(var i = 0; i < players.length; ++i) {
data[i] = players[i].Name + '~http://' + players[i].Host + ':' + players[i].Port + players[i].DescriptionUrl;
IR.SetVariable("Global.SonosPlayers", data.join(','));
}}
IR.AddListener(IR.EVENT_START,0,function()
{
upnp = IR.CreateDevice(IR.DEVICE_UPNP_CONTROL, "UpnpControl");
upnp.Connect();
})

function UpdateGroups()
{
var info = [];
var num = players.length;
grouplist.Clear();
for(var i = 0; i < num; ++i)
{
// Receiving meta data
players[i].InvokeAction("GetMediaInfo", "urn:schemas-upnp-org:service:AVTransport:1", {InstanceID: 0}, function(index)
{
return function(text)
{
//IR.Log("text"+text);
// Save info and wait for all data
var xml = new XML(text);
info[index] = xml["s:Envelope"]["s:Body"]["u:GetMediaInfoResponse"]["CurrentURI"].toString();
//IR.Log("info="+info[index]);
// If received all data, create a groups
if(--num == 0)
{
// Create groups
group = undefined;
zone.Text = "";
groups.length = 0;
for(i = 0; i < info.length; ++i)
{
if(!info[i] || info[i].indexOf("x-rincon:") < 0)
{
players[i].group = undefined;
var ngroup = {parent: players[i],
members: [],
name: players[i].Description.root.device.roomName.toString(),
uri: "x-rincon:" + players[i].Description.root.device.UDN.toString().substr(5)};
groups.push(ngroup);
// Add members
for(var j = 0; j < info.length; ++j)
if(info[j] == ngroup.uri)
{
players[j].group = ngroup;
ngroup.members.push(players[j]);
ngroup.name += ", " + players[j].Description.root.device.roomName;
}
}
}
// Update list
grouplist.Clear();
for(i = 0; i < groups.length; ++i)
grouplist.CreateItem(i, 4, {Text: groups[i].name});
// Select first group
SelectGroup(0);
}
}
}(i));
}
}
function FoundDevice(uuid, url)
{
if(IR.GetDevice(uuid)) return;
var device = IR.CreateDevice(IR.DEVICE_UPNP_DEVICE, uuid);
host = url.indexOf("http://");
if(host >= 0)
{
host += 7;
port = url.indexOf(":", host);
if(port > 0)
{
port += 1;
path = url.indexOf("/", port);
if(path > 0)
{
device.SetParameters({
Host: url.substr(host, port - host - 1),
Port: url.substr(port, path - port),
DescriptionUrl: url.substr(path)});
device.Connect();
IR.AddListener(IR.EVENT_ONLINE, device, function()
{
var xml = this.Description.root.device;
var type = xml.deviceType.toString();
if(type.indexOf("urn:schemas-upnp-org:device:ZonePlayer") >= 0 && xml.modelNumber.toString().indexOf("ZB") < 0)
{
players.push(this);
SavePlayers();

IR.AddListener(IR.EVENT_RECEIVE_EVENT, this, ReceiveEvent, this);
this.Subscribe("urn:schemas-upnp-org:service:AVTransport:1");
this.Subscribe("urn:schemas-upnp-org:service:RenderingControl:1");
this.Subscribe("urn:schemas-upnp-org:service:ContentDirectory:1");
}
}, device);

}
}
}
}

IR.AddListener(IR.EVENT_RECEIVE_EVENT , IR.GetDevice("RINCON_5CAAFD11490D01400"), function(type,text) // кино 103
{
ReceiveEvent() ;
})
IR.AddListener(IR.EVENT_RECEIVE_EVENT , IR.GetDevice("RINCON_000E58DDFACA01400"), function(type,text) //ванная малая104
{
ReceiveEvent() ;
})
IR.AddListener(IR.EVENT_RECEIVE_EVENT , IR.GetDevice("RINCON_B8E937A473F601400"), function(type,text) //гардероб 101
{
ReceiveEvent() ;
})
IR.AddListener(IR.EVENT_RECEIVE_EVENT , IR.GetDevice("RINCON_B8E937A46DCC01400"), function(type,text) //ванная спалня 102
{
ReceiveEvent() ;
})




function Control(){
FoundDevice();

};
//mute = IR.GetItem("TV_T2_volume").GetItem("mute-icon 3");

function stopAllSonos(){
sonos = IR.GetDevice("RINCON_5CAAFD11490D01400");
sonos.InvokeAction("Pause", "urn:schemas-upnp-org:service:AVTransport:1", {InstanceID: 0} );
ReceiveEvent();
sonosT4 = IR.GetDevice("RINCON_000E58DDFACA01400");
sonosT4.InvokeAction("Pause", "urn:schemas-upnp-org:service:AVTransport:1", {InstanceID: 0} );
ReceiveEvent();
sonosT8 = IR.GetDevice("RINCON_B8E937A473F601400");
sonosT8.InvokeAction("Pause", "urn:schemas-upnp-org:service:AVTransport:1", {InstanceID: 0} );
ReceiveEvent();
sonosT9 = IR.GetDevice("RINCON_B8E937A46DCC01400");
sonosT9.InvokeAction("Pause", "urn:schemas-upnp-org:service:AVTransport:1", {InstanceID: 0} );
ReceiveEvent();
}

function stopPlayT4(){
sonosT4 = IR.GetDevice("RINCON_000E58DDFACA01400");
sonosT4.InvokeAction("Pause", "urn:schemas-upnp-org:service:AVTransport:1", {InstanceID: 0} );
ReceiveEvent();
}

function stopPlayT9(){
sonosT9 = IR.GetDevice("RINCON_B8E937A46DCC01400");
sonosT9.InvokeAction("Pause", "urn:schemas-upnp-org:service:AVTransport:1", {InstanceID: 0} );
ReceiveEvent();
}



function PlayBackT4()
{
sonosT4 = IR.GetDevice("RINCON_000E58DDFACA01400");
sonosT4.InvokeAction("SetVolume", "urn:schemas-upnp-org:service:RenderingControl:1", {InstanceID: 0, Channel: "Master", DesiredVolume: 20});
ReceiveEvent();

var uri = "x-sonosapi-stream:s49630?sid=254&flags=32" //[di] lounge radio
var title = "[DI]Lounge"
var meta = '
meta += 'xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" ';
meta += 'xmlns:r="urn:schemas-rinconnetworks-com:metadata-1-0/" ';
meta += 'xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"';
meta += '><item id="-1" ';
meta += 'parentID="-1" ';
meta += 'restricted="true">';
meta += '<dc:title>' + title + '</dc:title>';
meta += '<upnp:class>object.item.audioItem.audioBroadcast</upnp:class>';
meta += '<desc id="cdudn" ';
meta += 'nameSpace="urn:schemas-rinconnetworks-com:metadata-1-0/">SA_RINCON65031_';
meta += '</desc></item></DIDL-Lite>';
sonosT4.InvokeAction("SetAVTransportURI", "urn:schemas-upnp-org:service:AVTransport:1",
{InstanceID: 0, CurrentURI: uri, CurrentURIMetaData: meta});
sonosT4.InvokeAction("Play", "urn:schemas-upnp-org:service:AVTransport:1", {InstanceID: 0, Speed: 1});
}

function PlayBackT9()
{
sonosT9 = IR.GetDevice("RINCON_B8E937A46DCC01400");
sonosT9.InvokeAction("SetVolume", "urn:schemas-upnp-org:service:RenderingControl:1", {InstanceID: 0, Channel: "Master", DesiredVolume: 20});
ReceiveEvent();

var uri = "x-sonosapi-stream:s49630?sid=254&flags=32" //[di] lounge radio
var title = "[DI]Lounge"
var meta = '
meta += 'xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" ';
meta += 'xmlns:r="urn:schemas-rinconnetworks-com:metadata-1-0/" ';
meta += 'xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"';
meta += '><item id="-1" ';
meta += 'parentID="-1" ';
meta += 'restricted="true">';
meta += '<dc:title>' + title + '</dc:title>';
meta += '<upnp:class>object.item.audioItem.audioBroadcast</upnp:class>';
meta += '<desc id="cdudn" ';
meta += 'nameSpace="urn:schemas-rinconnetworks-com:metadata-1-0/">SA_RINCON65031_';
meta += '</desc></item></DIDL-Lite>';
sonosT9.InvokeAction("SetAVTransportURI", "urn:schemas-upnp-org:service:AVTransport:1",
{InstanceID: 0, CurrentURI: uri, CurrentURIMetaData: meta});
sonosT9.InvokeAction("Play", "urn:schemas-upnp-org:service:AVTransport:1", {InstanceID: 0, Speed: 1});
}


/*IR.AddListener(IR.EVENT_ITEM_PRESS, mute, function (){
sonos = IR.GetDevice("RINCON_5CAAFD11490D01400");
sonos.InvokeAction("SetMute", "urn:schemas-upnp-org:service:RenderingControl:1", {InstanceID: 0, Channel: "Master", DesiredMute: mute.Value});
ReceiveEvent() ;
});
*/

function ReceiveEvent(type, text)
{
var xml = new XML(text);
try {
var uri = xml["e:propertyset"]["e:property"].LastChange.Event.InstanceID.CurrentTrackURI["@val"];
if((this.group && this.group.uri != uri) ||
(!this.group && uri.indexOf("x-rincon:") >= 0))
UpdateGroups();
} catch(error) {}
try {
var vars = xml["e:propertyset"]["e:property"].LastChange.Event.InstanceID;
if(vars.Volume)
{
volume.Value = vars.Volume["@val"];
}
if(vars.Mute)
{
mute.Value = vars.Mute["@val"];
}
} catch(error) {
}
}

Same problem on our / client tablets. My suggestion is to remove version 2.2.3 from AppStore until problem with HWID is solved. Otherwise integrators will have to update client projects / panels that were updated to version 2.2.3, given the fact that some devices maybe somewhere far abroad, this situation is kind a stitch up.