예제 #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("RadioThermostat");

            Uri uri = GetUri("http://192.168.88.100");

            //Console.WriteLine(uri.AbsoluteUri);
            //Console.WriteLine(uri.Scheme);
            //Console.WriteLine(uri.Host);
            //Console.WriteLine(uri.AbsolutePath);

            RadioThermostat.uri = new Uri("http://192.168.88.100");

            Hvac    hvac    = Task.Run(() => RadioThermostat.GetHvac()).Result;
            Info    info    = Task.Run(() => RadioThermostat.GetInfo()).Result;
            Mode    mode    = Task.Run(() => RadioThermostat.GetMode()).Result;
            Model   model   = Task.Run(() => RadioThermostat.GetModel()).Result;
            Name    name    = Task.Run(() => RadioThermostat.GetName()).Result;
            Network network = Task.Run(() => RadioThermostat.GetNetwork()).Result;

            Console.WriteLine(JsonConvert.SerializeObject(hvac, Formatting.None));
            Console.WriteLine(JsonConvert.SerializeObject(info, Formatting.None));
            Console.WriteLine(JsonConvert.SerializeObject(mode, Formatting.None));
            Console.WriteLine(JsonConvert.SerializeObject(model, Formatting.None));
            Console.WriteLine(JsonConvert.SerializeObject(name, Formatting.None));
            Console.WriteLine(JsonConvert.SerializeObject(network, Formatting.None));
            Console.ReadKey();
        }
예제 #2
0
        private async Task CreateDbFromModel(RmsConfigModel model)
        {
            RmsConfig rms = new RmsConfig {
                Name = model.RmsDeviceInterface.name, Location = model.RmsDeviceInterface.location, IpAddress = model.RmsDeviceInterface.localIp, MacAddress = model.RmsDeviceInterface.macAddress
            };

            foreach (RmsNode node in model.nodes)
            {
                foreach (RmsNodeDevice nodeDevice in node.devices)
                {
                    DeviceType deviceType = ParseLightType(nodeDevice.type);
                    if (deviceType == DeviceType.LightOnOff)
                    {
                        Light newLight = new Light
                        {
                            Location      = node.location,
                            Type          = deviceType,
                            MAC           = nodeDevice.macAddress,
                            CurrentStatus = nodeDevice.status
                        };

                        newLight.Hooks.Add(new WebHook {
                            ActivationCommand = RmsCommand.LightsOn, HookUrl = BuildHookUrl(nodeDevice, model.RmsDeviceInterface.localIp), Method = "POST", Body = BuildHookActiveBody(node, newLight)
                        });
                        newLight.Hooks.Add(new WebHook {
                            ActivationCommand = RmsCommand.LightsOff, HookUrl = BuildHookUrl(nodeDevice, model.RmsDeviceInterface.localIp), Method = "POST", Body = BuildHookInactiveBody(node, newLight)
                        });
                        rms.Lights.Add(newLight);
                    }

                    if (deviceType == DeviceType.Hvac)
                    {
                        Hvac newHvac = new Hvac
                        {
                            Location = node.location,
                            MAC      = nodeDevice.macAddress
                        };
                        double currentTemp;
                        if (double.TryParse(nodeDevice.currentTemperature, out currentTemp))
                        {
                            newHvac.CurrentTemperature = currentTemp;
                        }
                        double setpointTemp;
                        if (double.TryParse(nodeDevice.setTemperature, out setpointTemp))
                        {
                            newHvac.SetpointTemperature = setpointTemp;
                        }
                        newHvac.Hooks.Add(new WebHook {
                            ActivationCommand = RmsCommand.HvacSetTemperature, HookUrl = BuildHookUrl(nodeDevice, model.RmsDeviceInterface.localIp), Method = "POST", Body = BuildHookSetTemperatureBody(node, newHvac)
                        });
                        rms.Hvacs.Add(newHvac);
                    }
                }
            }
            _context.RmsList.Add(rms);
            _context.SaveChanges();
        }
예제 #3
0
 private static List <RmsNode> GetBodySetTemperature(RmsNode node, Hvac device)
 {
     return(new List <RmsNode> {
         new RmsNode {
             macAddress = node.macAddress, devices = new List <RmsNodeDevice> {
                 new RmsNodeDevice {
                     macAddress = device.MAC, setTemperature = "{setTemperature}"
                 }
             }
         }
     });
 }
예제 #4
0
        private string BuildHookSetTemperatureBody(RmsNode node, Hvac hvac)
        {
            List <RmsNode> nodes = GetBodySetTemperature(node, hvac);

            return(JsonConvert.SerializeObject(new { nodes }));
        }