From 00f444f36cb2f2f59b4840341f7cd05f57181529 Mon Sep 17 00:00:00 2001 From: Dan Cunningham Date: Thu, 27 Apr 2017 10:08:32 -0700 Subject: [PATCH] Initial commit for controlling color. Fixes #22 (#25) * Initial commit for controlling color. Fixes #22 Signed-off-by: Dan Cunningham * Few minor fixes Signed-off-by: Dan Cunningham --- oh2.js | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/oh2.js b/oh2.js index bd80e14d..8d5002a2 100644 --- a/oh2.js +++ b/oh2.js @@ -86,6 +86,9 @@ exports.handleControl = function (event, context) { case 'DecrementPercentageRequest': adjustPercentage(context, event); break; + case 'SetColorRequest': + adjustColor(context, event); + break; } }; @@ -206,6 +209,43 @@ function adjustPercentage(context, event) { } } +/** + * Color control + */ +function adjustColor(context, event) { + var success = function (response) { + var header = { + messageId: event.header.messageId, + name: event.header.name.replace("Request", "Confirmation"), + namespace: event.header.namespace, + payloadVersion: event.header.payloadVersion + }; + + var payload = { + achievedState : { + color : event.payload.color + } + }; + + var result = { + header: header, + payload: payload + }; + + context.succeed(result); + }; + + var failure = function (error) { + context.done(null, utils.generateControlError(event.header.messageId, event.header.name, 'DependentServiceUnavailableError', error.message)); + }; + + var h = event.payload.color.hue; + var s = Math.round(event.payload.color.saturation * 100); + var b = Math.round(event.payload.color.brightness * 100); + var state = h + ',' + s + ',' + b; + rest.postItemCommand(event.payload.accessToken, event.payload.appliance.applianceId, state, success, failure); +} + /** * Retrives the current temperature of a Thermostat or standalone currentTemperature tagged item **/ @@ -556,7 +596,8 @@ function getSwitchableActions(item) { "decrementPercentage", "setPercentage", "turnOn", - "turnOff" + "turnOff", + "setColor" ]; } else if (item.type === "Rollershutter" || (item.type === "Group" && item.groupType && item.groupType === "Rollershutter")) {