Example #1
0
        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);
            }
        }
Example #2
0
        public void ChangeInput(DenonDevice device, string source)
        {
            var parameters = new Dictionary <string, string>
            {
                { "Source", source }
            };

            StartActionInNewTask(device, new Action("Change Input Source"), parameters);
        }
Example #3
0
        public void ChangeVolumne(DenonDevice device, int volume)
        {
            var parameters = new Dictionary <string, string>
            {
                { "Volume", volume.ToString() }
            };

            StartActionInNewTask(device, new Action("Change Volume"), parameters);
        }
Example #4
0
        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));
        }
Example #5
0
 public void Unmute(DenonDevice device)
 {
     StartActionInNewTask(device, new Action("Mute Off"), null);
 }
Example #6
0
 public void PowerOff(DenonDevice device)
 {
     StartActionInNewTask(device, new Action("Power Off"), null);
 }
 public DenonScriptObject(IDenonGateway gateway, DenonDevice device)
 {
     _gateway = gateway;
     _device  = device;
 }
 public DenonScriptObject(IDenonGateway gateway, DenonDevice device)
 {
     _gateway = gateway;
     _device = device;
 }