コード例 #1
0
        static NestCommandHandler()
        {
            DeviceList = new List <Thermostat>();

            DurationList = new List <FanDuration>()
            {
                new FanDuration()
                {
                    Duration = "15"
                },
                new FanDuration()
                {
                    Duration = "30"
                },
                new FanDuration()
                {
                    Duration = "45"
                },
                new FanDuration()
                {
                    Duration = "60"
                },
                new FanDuration()
                {
                    Duration = "120"
                },
                new FanDuration()
                {
                    Duration = "240"
                },
                new FanDuration()
                {
                    Duration = "480"
                },
                new FanDuration()
                {
                    Duration = "720"
                }
            };

            ThermostatAPI = new ThermostatAPI();
        }
コード例 #2
0
        static bool InitDevice()
        {
            Task <bool> t = Task.Run(async() => await ThermostatAPI.GetDevices());

            t.Wait();

            if (t.Result)
            {
                int count = DeviceList.Count;
                if (0 == count)
                {
                    foreach (ThermostatDevice d in ThermostatAPI.ThermostatDevices)
                    {
                        FanDuration nfd = DurationList.Where(L => L.Duration == d.fan_timer_duration.ToString()).SingleOrDefault();

                        Thermostat nts = new Thermostat(d);
                        nts.Duration     = nfd;
                        nts.RollDuration = nfd;

                        nts.Tick = 1; //("C" == nts.temperature_scale) ? 1 : 2;

                        nts.FanRun  = nts.fan_timer_active == true;
                        nts.FanStop = nts.fan_timer_active == false;

                        DeviceList.Add(nts);
                    }
                }
                else
                {
                    if (ThermostatAPI.ThermostatDevices.Count < count)
                    {
                        DeviceList.Clear();
                    }

                    foreach (ThermostatDevice d in ThermostatAPI.ThermostatDevices)
                    {
                        FanDuration nfd = DurationList.Where(L => L.Duration == d.fan_timer_duration.ToString()).SingleOrDefault();

                        Thermostat tm = DeviceList.Where(T => T.device_id == d.device_id).SingleOrDefault();
                        if (null == tm || string.IsNullOrEmpty(tm.device_id))
                        {
                            Thermostat nts = new Thermostat(d);
                            nts.Duration     = nfd;
                            nts.RollDuration = nfd;

                            nts.Tick = 1; //("C" == nts.temperature_scale) ? 1 : 2;

                            nts.FanRun  = nts.fan_timer_active == true;
                            nts.FanStop = nts.fan_timer_active == false;

                            DeviceList.Add(nts);
                            continue;
                        }

                        if (null != tm || false == string.IsNullOrEmpty(tm.device_id))
                        {
                            tm.Update(d, nfd);
                        }
                    }
                }

                return(true);
            }

            return(false);
        }