From 4cd6be3cde82be472398e349385199d5a0030da5 Mon Sep 17 00:00:00 2001 From: Dave C-J Date: Sun, 12 Jan 2014 12:06:13 +0000 Subject: [PATCH] Reorganise/de-duplicate Philips Hue node --- hardware/hue/103-hue_discover.html | 23 ++-- hardware/hue/104-hue_manage.html | 19 ++- hardware/hue/104-hue_manage.js | 101 ++++++-------- hardware/{hue_manage => hue}/icons/hue.png | Bin hardware/hue_discover/103-hue_discover.html | 54 -------- hardware/hue_discover/103-hue_discover.js | 105 -------------- hardware/hue_discover/icons/philipshue.png | Bin 9372 -> 0 bytes hardware/hue_manage/104-hue_manage.html | 80 ----------- hardware/hue_manage/104-hue_manage.js | 145 -------------------- 9 files changed, 62 insertions(+), 465 deletions(-) rename hardware/{hue_manage => hue}/icons/hue.png (100%) delete mode 100644 hardware/hue_discover/103-hue_discover.html delete mode 100644 hardware/hue_discover/103-hue_discover.js delete mode 100644 hardware/hue_discover/icons/philipshue.png delete mode 100644 hardware/hue_manage/104-hue_manage.html delete mode 100644 hardware/hue_manage/104-hue_manage.js diff --git a/hardware/hue/103-hue_discover.html b/hardware/hue/103-hue_discover.html index ac6c1d39..db540a57 100644 --- a/hardware/hue/103-hue_discover.html +++ b/hardware/hue/103-hue_discover.html @@ -13,7 +13,6 @@ See the License for the specific language governing permissions and limitations under the License. - --> - - - - - - diff --git a/hardware/hue_discover/103-hue_discover.js b/hardware/hue_discover/103-hue_discover.js deleted file mode 100644 index 4106aeff..00000000 --- a/hardware/hue_discover/103-hue_discover.js +++ /dev/null @@ -1,105 +0,0 @@ -/** - * philips_hue.js - * Basic functionality for accessing a Philips Hue wireless Lamp - * Allows for bridge/gateway detection and light scanning. - * Requires node-hue-api https://github.com/peter-murray/node-hue-api - * Copyright 2013 Charalampos Doukas - @BuildingIoT - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - **/ - - -//Require node-hue-api -var hue = require("node-hue-api"); -var HueApi = require("node-hue-api").HueApi; - -// Require main module -var RED = require(process.env.NODE_RED_HOME+"/red/red"); - -//store the IP address of the Hue Gateway -var gw_ipaddress = ""; - -var username; - -// The main node definition - most things happen in here -function HueNodeDiscovery(n) { - // Create a RED node - RED.nodes.createNode(this,n); - - var node = this; - - //get username from user input - this.username = n.username; - - - // Store local copies of the node configuration (as defined in the .html) - this.topic = n.topic; - - this.on("input", function(msg){ - - //start with detecting the IP address of the Hue gateway in the local network: - hue.locateBridges(function(err, result) { - var msg = {}; - if (err) throw err; - //check for found bridges - if(result[0]!=null) { - //save the IP address of the 1st bridge found - this.gw_ipaddress = result[0].ipaddress; - msg.payload = this.gw_ipaddress; - - //get light info: - var api = new HueApi(this.gw_ipaddress, node.username); - api.lights(function(err, lights) { - var msg2 = {}; - if (err) throw err; - var lights_discovered = JSON.stringify(lights, null, 2); - msg2.topic = "Lights"; - msg2.payload = lights_discovered; - node.send([msg, msg2]); - - }); - } - else { - //bridge not found: - var msg = {}; - msg.payload = "Bridge not found!"; - node.send(msg); - } - - }); - - }); - - - this.on("close", function() { - // Called when the node is shutdown - eg on redeploy. - // Allows ports to be closed, connections dropped etc. - // eg: this.client.disconnect(); - }); - - } - - //hue debugging on the output: - var displayResult = function(result) { - console.log(result); -}; - -var displayError = function(err) { - console.error(err); -}; - - - -// Register the node by name. This must be called before overriding any of the -// Node functions. -RED.nodes.registerType("Discover",HueNodeDiscovery); \ No newline at end of file diff --git a/hardware/hue_discover/icons/philipshue.png b/hardware/hue_discover/icons/philipshue.png deleted file mode 100644 index 261b38d195b32744852cf19e7ed994535dedf376..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9372 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 m;*>y8gD%+pbFA3HD}c - - - - - - - - diff --git a/hardware/hue_manage/104-hue_manage.js b/hardware/hue_manage/104-hue_manage.js deleted file mode 100644 index 954a8f16..00000000 --- a/hardware/hue_manage/104-hue_manage.js +++ /dev/null @@ -1,145 +0,0 @@ -/** - * philips_hue.js - * Basic functionality for accessing and contolling a Philips Hue wireless Lamp - * Allows for bridge/gateway and light scanning, as well as Light ON/OFF/ALERT status update - * Requires node-hue-api https://github.com/peter-murray/node-hue-api - * Copyright 2013 Charalampos Doukas - @BuildingIoT - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - **/ - - -//Require node-hue-api -var hue = require("node-hue-api"); -var HueApi = require("node-hue-api").HueApi; - -// Require main module -var RED = require(process.env.NODE_RED_HOME+"/red/red"); - -//store the IP address of the Hue Gateway -var gw_ipaddress = ""; - - -var username, lamp_status, lamp_id, color; - -function hexToRgb(hex) { - var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); - return result ? { - r: parseInt(result[1], 16), - g: parseInt(result[2], 16), - b: parseInt(result[3], 16) - } : null; -} - - -// The main node definition - most things happen in here -function HueNode(n) { - // Create a RED node - RED.nodes.createNode(this,n); - - var node = this; - - //get parameters from user - this.username = n.username; - this.lamp_status = n.lamp_status; - this.lamp_id = n.lamp_id; - this.color = n.color; - - - // Store local copies of the node configuration (as defined in the .html) - this.topic = n.topic; - - - var msg = {}; - - msg.topic = this.topic; - - this.on("input", function(msg){ - //set the lamp status - //first locate the Hue gateway: - hue.locateBridges(function(err, result) { - - var msg2 = {}; - msg2.topic = this.topic; - if (err) throw err; - //check for found bridges - if(result[0]!=null) { - //save the IP address of the 1st bridge found - this.gw_ipaddress = result[0].ipaddress; - - - //set light status - var api = new HueApi(this.gw_ipaddress, node.username); - var lightState = hue.lightState; - var state = lightState.create(); - - var status; - if(msg.payload=="ALERT"){ - status = "ALERT"; - } - else if(node.lamp_status=="ON" || msg.payload=="ON") status = "ON"; - else if(node.lamp_status=="OFF" || msg.payload=="OFF") status = "OFF"; - - - if(status=="ALERT") { - api.setLightState(node.lamp_id, state.alert()).then(displayResult).fail(displayError).done(); - } - else if(status=="ON") { - if(node.color==null) { - api.setLightState(node.lamp_id, state.on().rgb(hexToRgb(msg.topic).r,hexToRgb(msg.topic).g,hexToRgb(msg.topic).b)).then(displayResult).fail(displayError).done(); - } - else { - api.setLightState(node.lamp_id, state.on().rgb(hexToRgb(node.color).r,hexToRgb(node.color).g,hexToRgb(node.color).b)).then(displayResult).fail(displayError).done(); - } - } - else { - api.setLightState(node.lamp_id, state.off()).then(displayResult).fail(displayError).done(); - } - - msg2.payload = 'Light with ID: '+node.lamp_id+ ' was set to '+status; - node.send(msg2); - } - else { - //bridge not found: - var msg = {}; - msg.payload = "Bridge not found!"; - node.send(msg); - } - - }); - }); - - - this.on("close", function() { - // Called when the node is shutdown - eg on redeploy. - // Allows ports to be closed, connections dropped etc. - // eg: this.client.disconnect(); - }); - - } - - //hue debugging on the output: - var displayResult = function(result) { - console.log(result); -}; - -var displayError = function(err) { - console.error(err); -}; - - - - -// Register the node by name. This must be called before overriding any of the -// Node functions. -RED.nodes.registerType("HueNode",HueNode); \ No newline at end of file