Beispiel #1
0
        public async Task UpdateExistingBridges()
        {
            IBridgeLocator       locator = new HttpBridgeLocator();
            List <LocatedBridge> bridges = (await locator.LocateBridgesAsync(TimeSpan.FromSeconds(5))).ToList();

            // Lets try to find some more
            locator = new SsdpBridgeLocator();
            IEnumerable <LocatedBridge> extraBridges = await locator.LocateBridgesAsync(TimeSpan.FromSeconds(5));

            foreach (LocatedBridge extraBridge in extraBridges)
            {
                if (bridges.All(b => b.BridgeId != extraBridge.BridgeId))
                {
                    bridges.Add(extraBridge);
                }
            }

            int updatedBridges = 0;

            foreach (LocatedBridge locatedBridge in bridges)
            {
                PhilipsHueBridge storedBridge = _storedBridgesSetting.Value.FirstOrDefault(s => s.BridgeId == locatedBridge.BridgeId);
                if (storedBridge != null && storedBridge.IpAddress != locatedBridge.IpAddress)
                {
                    storedBridge.IpAddress = locatedBridge.IpAddress;
                    updatedBridges++;
                }
            }

            if (updatedBridges > 0)
            {
                _storedBridgesSetting.Save();
                _logger.Information("Updated IP addresses of {updatedBridges} Hue Bridge(s)", updatedBridges);
            }
        }
Beispiel #2
0
        public static LocatedBridge[] FindBridges(int time = 2)
        {
            Console.WriteLine(@"Hue: Looking for bridges...");
            IBridgeLocator locator = new SsdpBridgeLocator();
            var            res     = locator.LocateBridgesAsync(TimeSpan.FromSeconds(time)).Result;

            Console.WriteLine($@"Result: {JsonConvert.SerializeObject(res)}");
            return(res.ToArray());
        }
Beispiel #3
0
        public async Task TestParallelLocators()
        {
            IBridgeLocator httpBridgeLocator             = new HttpBridgeLocator();
            IBridgeLocator ssdpBridgeLocator             = new SsdpBridgeLocator();
            IBridgeLocator mdnsBridgeLocator             = new MdnsBridgeLocator();
            IBridgeLocator localNetworkScanBridgeLocator = new LocalNetworkScanBridgeLocator();

            await Task.WhenAll(new Task[] {
                TestBridgeLocatorWithTimeout(httpBridgeLocator, TimeSpan.FromSeconds(5)),
                TestBridgeLocatorWithTimeout(ssdpBridgeLocator, TimeSpan.FromSeconds(5)),
                TestBridgeLocatorWithTimeout(mdnsBridgeLocator, TimeSpan.FromSeconds(5)),
                TestBridgeLocatorWithTimeout(localNetworkScanBridgeLocator, TimeSpan.FromSeconds(30)),
            });
        }
        public async Task TestSsdpBridgeLocator()
        {
            IBridgeLocator locator = new SsdpBridgeLocator();

            await TestBridgeLocatorWithTimeout(locator, TimeSpan.FromSeconds(5));
        }