コード例 #1
0
        public async Task <bool> FindDevicesAsync(HardwareConfig config)
        {
            var modified = false;

            if (config.MiHome != null)
            {
                foreach (var gatewayConfig in config.MiHome.Gateways)
                {
                    var miHome = new MiHome(gatewayConfig.Password, gatewayConfig.Id);
                    m_MiHomeObjects.Add(miHome);
                    await Task.Delay(5000);

                    var gateway = miHome.GetGateway();
                    if (gateway != null)
                    {
                        AddDevice(gatewayConfig.Name, gatewayConfig.Description, gateway);
                        foreach (var device in miHome.GetDevices())
                        {
                            var deviceConfig = gatewayConfig.Devices.SingleOrDefault(deviceConfig => deviceConfig.Id == device.Sid);
                            if (deviceConfig == null)
                            {
                                deviceConfig = CreateDeviceConfig(device);
                                gatewayConfig.Devices.Add(deviceConfig);
                                modified = true;
                            }
                            AddDevice(deviceConfig.Name, deviceConfig.Description, device);
                        }
                    }
                }
            }

            if (config.Http != null)
            {
                foreach (var deviceConfig in config.Http.Devices)
                {
                    var device = HttpDevice.Create(deviceConfig.Type);
                    if (device != null)
                    {
                        device.Host = deviceConfig.Host;
                        AddDevice(deviceConfig.Name, deviceConfig.Description, device);
                    }
                }
            }

            if (config.Virtual != null)
            {
                foreach (var switchConfig in config.Virtual.Switches)
                {
                    var @switch = new Virtual.Switch();
                    @switch.SetStatus(switchConfig.Status);
                    AddDevice(switchConfig.Name, switchConfig.Description, @switch);
                }
            }

            return(modified);
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: mulflar/mi-home
        public static void Main(string[] args)
        {
            // pwd of your gateway (optional, needed only to send commands to your devices)
            // and sid of your gateway (optional, use only when you have 2 gateways in your LAN)
            using (var miHome = new MiHome())
            {
                Task.Delay(5000).Wait();

                foreach (var miHomeDevice in miHome.GetDevices())
                {
                    Console.WriteLine(miHomeDevice); // all discovered devices
                }

                Console.ReadLine();
            }
        }