From 9672d992eb21fec99ef0e751f9d5cf6fe0f250ac Mon Sep 17 00:00:00 2001 From: Gerrit Linnemann Date: Sat, 19 Mar 2016 10:24:17 +0100 Subject: [PATCH] fix --- hobu_distance_switch/app.js | 77 ++++++++++++++++++++++++++++++++ hobu_distance_switch/config.json | 20 +++++++++ hobu_doorbell/app.js | 2 +- 3 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 hobu_distance_switch/app.js create mode 100644 hobu_distance_switch/config.json diff --git a/hobu_distance_switch/app.js b/hobu_distance_switch/app.js new file mode 100644 index 0000000..2177015 --- /dev/null +++ b/hobu_distance_switch/app.js @@ -0,0 +1,77 @@ +var Tinkerforge = require('../Tinkerforge') +, Conf = require('./config.json') +, http = require('http'); + +var HOST = Conf.host; +var PORT = Conf.port; +var UID = Conf.uid; + +var ipcon = new Tinkerforge.IPConnection(); // Create IP connection +var dus = new Tinkerforge.BrickletDistanceUS(UID, ipcon); // Create device object + +var counter = 0; +var readyForNextNotification = true; + +ipcon.connect(HOST, PORT, + function (error) { + console.log('Error: ' + error); + } +); // Connect to brickd +// Don't use device before ipcon is connected + +ipcon.on(Tinkerforge.IPConnection.CALLBACK_CONNECTED, + function (connectReason) { + // Set period for distance value callback to 0.2s (200ms) + // Note: The distance value callback is only called every 0.2 seconds + // if the distance value has changed since the last call! + dus.setDistanceCallbackPeriod(200); + } +); + +// Register distance value callback +dus.on(Tinkerforge.BrickletDistanceUS.CALLBACK_DISTANCE, + // Callback function for distance value callback + function (distance) { + //console.log('Distance Value: ' + distance); + + if(distance < 200 && readyForNextNotification) { + counter++; + readyForNextNotification = false; + + var url2callObj = (counter % 2 == 0 ? Conf.on.action.on : Conf.on.action.off); + + console.log('Distance Value: ' + distance + ', URL to call: ' + url2callObj.host + ':' + url2callObj.port + url2callObj.path); + doHoBuDoorBellCall(url2callObj); + + setTimeout(function() { readyForNextNotification = true; }, Conf.on.action.timeout); + } + } +); + +console.log('Press key to exit'); +process.stdin.on('data', + function (data) { + ipcon.disconnect(); + process.exit(0); + } +); + + +/* private */ +function doHoBuDoorBellCall(options) { + callback = function(response) { + var str = ''; + + //another chunk of data has been recieved, so append it to `str` + response.on('data', function (chunk) { + str += chunk; + }); + + //the whole response has been recieved, so we just print it out here + response.on('end', function () { + console.log(str); + }); + } + + http.request(options, callback).end(); +} \ No newline at end of file diff --git a/hobu_distance_switch/config.json b/hobu_distance_switch/config.json new file mode 100644 index 0000000..534a4ef --- /dev/null +++ b/hobu_distance_switch/config.json @@ -0,0 +1,20 @@ +{ + "host": "192.168.2.122", + "port": 4223, + "uid": "q2J", + "on": { + "action": { + "timeout": 4500, + "on": { + "host": "hobu", + "port": "2999", + "path": "/set/state/of/powercontrol/23/to/1/" + }, + "off": { + "host": "hobu", + "port": "2999", + "path": "/set/state/of/powercontrol/23/to/0/" + } + } + } +} \ No newline at end of file diff --git a/hobu_doorbell/app.js b/hobu_doorbell/app.js index e731753..9a71605 100644 --- a/hobu_doorbell/app.js +++ b/hobu_doorbell/app.js @@ -1,4 +1,4 @@ -var Tinkerforge = require('../tinkerforge') +var Tinkerforge = require('../Tinkerforge') , Conf = require('./config.json') , http = require('http');