예제 #1
0
        public async Task ChangeBridgeSettings()
        {
            if (SelectedBridge == null)
            {
                return;
            }
            Form_BridgeSettings frs = new Form_BridgeSettings {
                Owner = Application.Current.MainWindow
            };
            await frs.Initialize(SelectedBridge);

            if (frs.ShowDialog() == true)
            {
                Philips_Hue.BridgeObject.BridgeObjects.BridgeSettings bresult = await SelectedBridge.GetBridgeSettingsAsyncTask();

                if (bresult != null)
                {
                    string newname = bresult.name;
                    if (SelectedBridge.Name != newname)
                    {
                        SelectedBridge.Name = newname;
                        ListBridges[ListBridges.IndexOf(SelectedBridge)].Name = newname;
                        Bridge selbr = SelectedBridge;
                        SelectedBridge = null;
                        SelectedBridge = selbr;
                    }

                    await RefreshCurrentListHueObject();

                    RaisePropertyChanged("UpdateAvailable");
                }
            }
        }
예제 #2
0
        private static void _bgw_DoWork(object sender, DoWorkEventArgs e)
        {
            string    mac = e.Argument.ToString();
            IPAddress ip  = IPAddress.Parse(GetLocalIPAddress());

            byte[] ipArray   = ip.GetAddressBytes();
            byte   currentip = ipArray[3];

            e.Result = null;

            for (byte x = 2; x <= 254; x++)
            {
                if (_bgw.CancellationPending)
                {
                    log.Info("Bridge lookup cancelled.");
                    e.Cancel = true;
                    break;
                }


                if (x == currentip)
                {
                    continue;
                }
                ipArray[3] = x;
                _bgw.ReportProgress(0, new ProgressReport(new IPAddress(ipArray), x));

                HueHttpClient.Timeout = 50;
                if (_bgw.CancellationPending)
                {
                    break;
                }

                HttpResult comres = HueHttpClient.SendRequest(new Uri($@"http://{new IPAddress(ipArray)}/api/config"), WebRequestType.Get);
                Philips_Hue.BridgeObject.BridgeObjects.BridgeSettings desc = new Philips_Hue.BridgeObject.BridgeObjects.BridgeSettings();

                if (comres.Success)
                {
                    desc = Serializer.DeserializeToObject <Philips_Hue.BridgeObject.BridgeObjects.BridgeSettings>(comres.Data); // try to deserialize the received message.
                    if (desc == null)
                    {
                        continue;               // if the deserialisation didn't work it means this is not a bridge continue with next ip.
                    }
                    if (desc.mac == mac)
                    {
                        e.Result = new IPAddress(ipArray);
                        break;
                    }
                }

                if (e.Result != null)
                {
                    _bgw.ReportProgress(0, new ProgressReport(new IPAddress(ipArray), 254));
                    break;
                }
            }

            // Restore the timeout to the original value
            HueHttpClient.Timeout = WinHueSettings.settings.Timeout;
        }
예제 #3
0
        public async Task Initialize()
        {
            List <IHueObject> objects = await BridgesManager.Instance.SelectedBridge.GetAllObjectsAsync();

            _bs = await BridgesManager.Instance.SelectedBridge.GetBridgeSettingsAsyncTask();

            _listAvailableHueObject.AddRange(objects);
        }
예제 #4
0
        public async Task Initialize(Bridge bridge)
        {
            _bridge = bridge;
            List <IHueObject> objects = await HueObjectHelper.GetBridgeDataStoreAsyncTask(bridge);

            _bs = await bridge.GetBridgeSettingsAsyncTask();

            _listAvailableHueObject.AddRange(objects);
        }
예제 #5
0
        public async Task Initialize(Bridge bridge)
        {
            _bridge = bridge;
            List <IHueObject> objects = await _bridge.GetAllObjectsAsync(WinHueSettings.settings.ShowHiddenScenes, true);

            _bs = await _bridge.GetBridgeSettingsAsyncTask();

            _listAvailableHueObject.AddRange(objects);
        }