private DenonDevice RegisterDevice(string url, string ipAddress) { var xml = new XmlDocument(); xml.Load(url); var ns = new XmlNamespaceManager(xml.NameTable); ns.AddNamespace("n", "urn:schemas-upnp-org:device-1-0"); var mn = xml.SelectSingleNode("//n:manufacturer", ns); var fn = xml.SelectSingleNode("//n:friendlyName", ns); var sn = xml.SelectSingleNode("//n:serialNumber", ns); if (mn == null || fn == null || sn == null || !"Denon".Equals(mn.InnerText, StringComparison.Ordinal)) { return(null); } lock (_deviceLock) { if (GetDevices().Any(d => d.IpAddress.Equals(ipAddress, StringComparison.OrdinalIgnoreCase))) { return(null); } var device = new DenonDevice(sn.InnerText, ipAddress) { Name = fn.InnerText.Replace("Denon", string.Empty).Trim() }; _devices.Add(device); return(device); } }
public void ChangeInput(DenonDevice device, string source) { var parameters = new Dictionary <string, string> { { "Source", source } }; StartActionInNewTask(device, new Action("Change Input Source"), parameters); }
public void ChangeVolumne(DenonDevice device, int volume) { var parameters = new Dictionary <string, string> { { "Volume", volume.ToString() } }; StartActionInNewTask(device, new Action("Change Volume"), parameters); }
private async Task UpdateVariablesAsync(DenonDevice device) { var client = new RestClient($"http://{device.IpAddress}/"); var request = new RestRequest("goform/formMainZone_MainZoneXml.xml", Method.GET); var response = await client.ExecuteTaskAsync <DenonDeviceDto>(request); double volume; var isMute = response.Data.Mute.Value.Equals("on", StringComparison.OrdinalIgnoreCase); var select = response.Data.InputFuncSelect.Value; if (!double.TryParse(response.Data.MasterVolume.Value, out volume)) { volume = 0; } device.Name = response.Data.FriendlyName.Value.Replace("Denon", string.Empty).Trim(); device.Volume = volume; device.IsMute = isMute; device.Source = select; _messageQueue.Publish(new UpdateVariableMessage($"{Name}.{device.Id}.Volume", volume)); _messageQueue.Publish(new UpdateVariableMessage($"{Name}.{device.Id}.IsMute", isMute)); _messageQueue.Publish(new UpdateVariableMessage($"{Name}.{device.Id}.Source", select)); }
public void Unmute(DenonDevice device) { StartActionInNewTask(device, new Action("Mute Off"), null); }
public void PowerOff(DenonDevice device) { StartActionInNewTask(device, new Action("Power Off"), null); }
public DenonScriptObject(IDenonGateway gateway, DenonDevice device) { _gateway = gateway; _device = device; }