Merge commit '2652f33a0a2de8566df0d346ec19c2bc1ceaff9d' into feature/Harmony

This commit is contained in:
Kraig McConaghy
2015-10-18 13:04:51 -05:00
2 changed files with 19 additions and 14 deletions

View File

@@ -39,6 +39,7 @@
"xmldoc": "0.1.x", "xmldoc": "0.1.x",
"komponist" : "0.1.0", "komponist" : "0.1.0",
"yamaha-nodejs": "0.4.x", "yamaha-nodejs": "0.4.x",
"debug": "^2.2.0" "debug": "^2.2.0",
"node-xmpp-client": "1.0.0-alpha23"
} }
} }

View File

@@ -53,6 +53,14 @@ LogitechHarmonyPlatform.prototype = {
.then(function (client) { .then(function (client) {
self.log("Connected to Logitech Harmony remote hub"); self.log("Connected to Logitech Harmony remote hub");
// prevent connection from closing
setTimeout(function() {
setInterval(function() {
self.log("Sending command to prevent timeout");
client.getCurrentActivity();
}, 20000);
}, 5000);
callback(null, client); callback(null, client);
}); });
}; };
@@ -163,9 +171,9 @@ LogitechHarmonyAccessory.prototype = {
var self = this; var self = this;
if (this.isActivity) { if (this.isActivity) {
hub.getCurrentActivity().then(function (currentActivity) { this.hub.getCurrentActivity().then(function (currentActivity) {
callback(currentActivity.id === self.id); callback(currentActivity === self.id);
}).except(function (err) { }).catch(function (err) {
self.log('Unable to get current activity with error', err); self.log('Unable to get current activity with error', err);
callback(false); callback(false);
}); });
@@ -175,28 +183,23 @@ LogitechHarmonyAccessory.prototype = {
} }
}, },
setPowerState: function (state, callback) { setPowerState: function (state) {
var self = this; var self = this;
if (this.isActivity) { if (this.isActivity) {
this.log('Set activity ' + this.name + ' power state to ' + state); this.log('Set activity ' + this.name + ' power state to ' + state);
// Activity id -1 is turn off all devices this.hub.startActivity(self.id)
var id = state ? this.id : -1;
this.hub.startActivity(id)
.then(function () { .then(function () {
self.log('Finished setting activity ' + self.name + ' power state to ' + state); self.log('Finished setting activity ' + self.name + ' power state to ' + state);
callback();
}) })
.catch(function (err) { .catch(function (err) {
self.log('Failed setting activity ' + self.name + ' power state to ' + state + ' with error ' + err); self.log('Failed setting activity ' + self.name + ' power state to ' + state + ' with error ' + err);
callback(err);
}); });
} else { } else {
// TODO: Support setting device power // TODO: Support setting device power
this.log('TODO: Support setting device power'); this.log('TODO: Support setting device power');
callback(); // callback();
} }
}, },
@@ -284,7 +287,9 @@ LogitechHarmonyAccessory.prototype = {
onUpdate: function (value) { onUpdate: function (value) {
self.setPowerState(value) self.setPowerState(value)
}, },
onRead: self.getPowerState, onRead: function(callback) {
self.getPowerState(callback)
},
perms: ["pw","pr","ev"], perms: ["pw","pr","ev"],
format: "bool", format: "bool",
initialValue: 0, initialValue: 0,
@@ -300,6 +305,5 @@ LogitechHarmonyAccessory.prototype = {
}; };
module.exports.accessory = LogitechHarmonyAccessory;
module.exports.platform = LogitechHarmonyPlatform; module.exports.platform = LogitechHarmonyPlatform;