Merge pull request #45 from alistairg/master

Changed approach to getting accessories
This commit is contained in:
Nick Farina
2015-06-30 10:22:11 -07:00
+16 -13
View File
@@ -102,25 +102,28 @@ var locateBridge = function (callback) {
}; };
PhilipsHuePlatform.prototype = { PhilipsHuePlatform.prototype = {
accessories: function(callback) { accessories: function(callback) {
this.log("Fetching Philips Hue lights..."); this.log("Fetching Philips Hue lights...");
var that = this; var that = this;
var getLights = function () { var getLights = function () {
var api = new HueApi(that.ip_address, that.username); var api = new HueApi(that.ip_address, that.username);
// Connect to the API and loop through lights
api.lights(function(err, response) { // Connect to the API
// Get a dump of all lights, so as not to hit rate limiting for installations with larger amounts of bulbs
api.fullState(function(err, response) {
if (err) throw err; if (err) throw err;
response.lights.map(function(light) {
var foundAccessories = []; var foundAccessories = [];
// Get the state of each individual light and add to platform for (var deviceId in response.lights) {
api.lightStatus(light.id, function(err, device) { var device = response.lights[deviceId];
if (err) throw err; device.id = deviceId;
device.id = light.id; var accessory = new PhilipsHueAccessory(that.log, device, api);
var accessory = new PhilipsHueAccessory(that.log, device, api); foundAccessories.push(accessory);
foundAccessories.push(accessory); }
callback(foundAccessories); callback(foundAccessories);
});
});
}); });
}; };