async void SearchBridges() { foundHueBridges.Clear(); foundHueLights.Clear(); connectedBridge = null; selectedLight = null; UpdateUIGroups(); FireUIUpdated(); //search bridges at https://www.meethue.com/api/nupnp //IBridgeLocator locator = new HttpBridgeLocator(); //scans network using multicast SSDP packets IBridgeLocator locator = new SSDPBridgeLocator(); IEnumerable <Q42.HueApi.Models.Bridge.LocatedBridge> locatedBridges = await locator.LocateBridgesAsync(TimeSpan.FromSeconds(5)); foreach (var locatedBridge in locatedBridges) { foundHueBridges.Add(new HueBridge(locatedBridge.BridgeId, locatedBridge.BridgeId, locatedBridge.IpAddress)); } string message = "Found Hue bridges count: " + locatedBridges.Count(); LogMessage(message, null); ShowHubToast(message, hueLogoImage, 2); UpdateUIGroups(); FireUIUpdated(); }
async Task <string> GetOrFindIP() { Console.WriteLine("starting GetOrFindIP"); string ip = settings.LastIPAddress; Console.WriteLine("ip: " + ip); if (String.IsNullOrEmpty(ip)) { //IBridgeLocator locator = new HttpBridgeLocator(); SSDPBridgeLocator locator = new SSDPBridgeLocator(); Console.WriteLine("Searching for bridges"); IEnumerable <Q42.HueApi.Models.Bridge.LocatedBridge> bridgeIPs = await locator.LocateBridgesAsync(TimeSpan.FromSeconds(20)); Console.WriteLine("Searching done"); ////For Windows 8 and .NET45 projects you can use the SSDPBridgeLocator which actually scans your network. ////See the included BridgeDiscoveryTests and the specific .NET and .WinRT projects if (!bridgeIPs.Any()) { Console.WriteLine("Scan did not find a Hue Bridge. Try suppling a IP address for the bridge"); return(null); } if (bridgeIPs.Count() == 1) { ip = bridgeIPs.First().IpAddress; Console.WriteLine("Bridge found using IP address: " + ip); //Store the new IP address settings.LastIPAddress = ip; settings.Save(); } else { Console.WriteLine("Found more than one bridge"); ListDialogBox dialog = new ListDialogBox(); ObservableCollection <BridgeItem> bridges = new ObservableCollection <BridgeItem>(); foreach (var b in bridgeIPs) { bridges.Add(new BridgeItem(b)); } dialog.Items = bridges; Console.WriteLine("showing dialog"); dialog.ShowDialog(); if (!dialog.IsCancelled) { BridgeItem item = dialog.SelectedItem as BridgeItem; ip = item.Bridge.IpAddress; //Store the new IP address settings.LastIPAddress = ip; settings.Save(); } } } return(ip); }
public async Task TestSSDPBridgeLocator() { IBridgeLocator locator = new SSDPBridgeLocator(); var bridgeIPs = await locator.LocateBridgesAsync(TimeSpan.FromSeconds(5)); Assert.IsNotNull(bridgeIPs); Assert.IsTrue(bridgeIPs.Count() > 0); }
public async Task TestSSDPBridgeLocator() { IBridgeLocator locator = new SSDPBridgeLocator(); var bridgIps = await locator.LocateBridgesAsync(TimeSpan.FromSeconds(5)); Assert.IsNotNull(bridgIps); Assert.IsTrue(bridgIps.Count() > 0); }
public static async Task <HueController> GetControllerAsync(string appKey = null) { var locator = new SSDPBridgeLocator(); var ip = (await locator.LocateBridgesAsync(TimeSpan.FromSeconds(15))).First(); Console.WriteLine("Found bridge at IP: {0}", ip); var client = new LocalHueClient(ip); if (!string.IsNullOrEmpty(appKey)) { client.Initialize(appKey); } else { appKey = await client.RegisterAsync("PiHueSphinx", "buzzerpi"); Console.WriteLine("Your HUE app key is: {0}", appKey); } return(new HueController(client)); }
public Hue(IDB db) { _locator = new SSDPBridgeLocator(); _db = db; }