From 6ed75458c964b7f9900e21a1428306a7eb870939 Mon Sep 17 00:00:00 2001 From: Dave C-J Date: Sun, 10 Nov 2013 20:58:36 +0000 Subject: [PATCH] Add Wemo node and update READ.me --- README.md | 4 +- hardware/wemo/60-wemo.html | 90 ++++++++++++++++++++++++++++++++++++++ hardware/wemo/60-wemo.js | 60 +++++++++++++++++++++++++ 3 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 hardware/wemo/60-wemo.html create mode 100644 hardware/wemo/60-wemo.js diff --git a/README.md b/README.md index c0563a87..5c150f4c 100644 --- a/README.md +++ b/README.md @@ -57,11 +57,13 @@ Copyright 2013 IBM Corp. under [the Apache 2.0 license](LICENSE). **78-ledborg** - A simple driver for the LEDborg plug on module for Raspberry Pi. +**60-wemo** - Basic node to drive a WeMo socket and switch. Does not use discovery. + **76-blinkstick** - Provides support for the BlinkStick USB LED device. **77-blink1** - Provides support for the Blink1 USB LED from ThingM. -**78-digiRGB** - Provides support for the DigiPark RGB USB LED. +**78-digiRGB** - Provides support for the DigiSpark RGB USB LED. **79-sensorTag** - Reads data from the Ti BLE SensorTag device. diff --git a/hardware/wemo/60-wemo.html b/hardware/wemo/60-wemo.html new file mode 100644 index 00000000..b282ea73 --- /dev/null +++ b/hardware/wemo/60-wemo.html @@ -0,0 +1,90 @@ + + + + + + + + + + + + + diff --git a/hardware/wemo/60-wemo.js b/hardware/wemo/60-wemo.js new file mode 100644 index 00000000..34391dee --- /dev/null +++ b/hardware/wemo/60-wemo.js @@ -0,0 +1,60 @@ +/** + * Copyright 2013 IBM Corp. + * + * 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. + **/ + +var RED = require(process.env.NODE_RED_HOME+"/red/red"); +var WeMo = new require('wemo'); + +function WeMoOut(n) { + RED.nodes.createNode(this,n); + this.ipaddr = n.ipaddr; + this.wemoSwitch = new WeMo(n.ipaddr); + var node = this; + + this.on("input", function(msg) { + if (msg != null) { + var state = 0; + if ( msg.payload == 1 || msg.payload == true || msg.payload == "on" ) { var state = 1; } + node.wemoSwitch.setBinaryState(state, function(err, result) { + if (err) node.warn(err); + //else { node.log(result); } + }); + } + }); +} +RED.nodes.registerType("wemo out",WeMoOut); + +function WeMoIn(n) { + RED.nodes.createNode(this,n); + this.ipaddr = n.ipaddr; + this.wemoSwitch = new WeMo(n.ipaddr); + this.wemoSwitch.state = 0; + var node = this; + + var tick = setInterval(function() { + wemoSwitch.getBinaryState(function(err, result) { + if (err) node.warn(err); + if (parseInt(result) != wemoSwitch.state) { + wemoSwitch.state = parseInt(result); + node.send({payload:wemoSwitch.state,topic:"wemo/"+node.ipaddr}); + } + }); + }, 2000); + + this.on("close", function() { + clearInterval(tick); + }); +} +RED.nodes.registerType("wemo in",WeMoOut);