freifunk-bot

Modular parser for the hackerspace door status with handlers for multiple services
git clone git://archive.git.mtrnord.blog/MTRNord/freifunk-bot.git
Log | Files | Refs | README | LICENSE

commit bc32c7e24f01beffd5073b66d22b66d67d741039
parent 87aca3ac54f1e8519f41b95b04c925dbcf512358
Author: Marcel Radzio <marcel@radzio-sh.de>
Date:   Thu, 10 Dec 2015 22:13:01 +0100

restructering

Diffstat:
MINSTALL.md | 21++++++++++++++++++---
MREADME.md | 4++--
DfeedGen.js | 44--------------------------------------------
Ahandlers/irc.js | 15+++++++++++++++
Ahandlers/pushbullet.js | 11+++++++++++
Amain.js | 44++++++++++++++++++++++++++++++++++++++++++++
Apackage.json | 32++++++++++++++++++++++++++++++++
7 files changed, 122 insertions(+), 49 deletions(-)

diff --git a/INSTALL.md b/INSTALL.md @@ -1,4 +1,19 @@ +Main +==== +!!!IMPORTANT!!! RUN HANDLER INSTALL BEFORE SCRIPT START!!! + 1. npm install request -2. npm install curlrequest -3. add your own pushbullet API key -4. node feedGen.js +2. node main.js + +Pushbullet Handler +================== +1. npm install curlrequest +2. Add ``var pushbullet = require('./handlers/pushbullet.js');`` to main.js at the Load section in the Top +3. Add ``pushbullet.pushbulletSend(door_status);`` to main.js at the Runtime section in the middle +4. add your own pushbullet API key in "handler/pushbullet.js" + +IRC Handler +=========== +1. npm install irc +2. Add ``var irc = require('./handlers/irc.js');`` to main.js at the Load section in the Top +3. Add ``irc.ircSend(door_status);`` to main.js at the Runtime section in the middle diff --git a/README.md b/README.md @@ -1,2 +1,2 @@ -# nordlab-pushbulletDoor -RSS-Feed Generator for pushing Door Status to Pushbullet Channel +# nordlab-hackerspace-door +Modular parser for the hackerspace door status with handlers for multiple services diff --git a/feedGen.js b/feedGen.js @@ -1,44 +0,0 @@ -var request = require('request'); -var curl = require('curlrequest'); - -function sleep(milliseconds) { - var start = new Date().getTime(); - for (var i = 0; i < 1e7; i++) { - if ((new Date().getTime() - start) > milliseconds){ - break; - } - } -} -var door_status2 = "1"; -function MakePush(){ -request.get('http://www.nordlab-ev.de/doorstate/status.txt', function (error, response, body) { - if (!error && response.statusCode == 200) { - var door_status = body; - //console.log(body); - }else{ - var door_status = error; - //console.log(error); - } - console.log("Current Real State:" + door_status + "\n"); - console.log("Current Last State:" + door_status2 + "\n"); - console.log("Next Check!"); - if (door_status2 !== door_status){ - door_status2 = door_status; - if (door_status == "geschlossen"){ - door_status = "closed"; - }else{ - door_status = "open"; - } - - curl.request({ url: 'https://api.pushbullet.com/v2/pushes', method: 'POST', headers: { "Access-Token": 'Access-Token', "Content-Type": 'application/json' }, data: '{"channel_tag": "space-door", "body":"'+ door_status + '","title":"Door Status","type":"note"}'}, function (err, stdout, meta) { - console.log(err); - console.log('\n STDOUT: \n'); - console.log(stdout); - }); - } - console.log("WAIT!"); - sleep(9*1000); - MakePush(); -}); -} -MakePush(); diff --git a/handlers/irc.js b/handlers/irc.js @@ -0,0 +1,14 @@ +var irc = require('irc'); +module.exports = { + ircSend: function (door_status){ + var config = { + channels: ["#hackerspace"], + server: "irc.lugfl.de", + botName: "DoorBot" + }; + var bot = new irc.Client(config.server, config.botName, { + channels: config.channels + }); + bot.say('#hackerspace', "Door Staus changed to: " + door_status); + } +}; +\ No newline at end of file diff --git a/handlers/pushbullet.js b/handlers/pushbullet.js @@ -0,0 +1,10 @@ +var curl = require('curlrequest'); +module.exports = { + pushbulletSend: function (door_status){ + curl.request({ url: 'https://api.pushbullet.com/v2/pushes', method: 'POST', headers: { "Access-Token": 'Access-Token', "Content-Type": 'application/json' }, data: '{"channel_tag": "space-door", "body":"'+ door_status + '","title":"Door Status","type":"note"}'}, function (err, stdout, meta) { + console.log(err); + console.log('\n STDOUT: \n'); + console.log(stdout); + }); + } +}; +\ No newline at end of file diff --git a/main.js b/main.js @@ -0,0 +1,44 @@ +var request = require('request'); +//LOAD MODULES DOWN HERE +var pushbullet = require('./handlers/pushbullet.js'); +var irc = require('./handlers/irc.js'); + + +function sleep(milliseconds) { + var start = new Date().getTime(); + for (var i = 0; i < 1e7; i++) { + if ((new Date().getTime() - start) > milliseconds){ + break; + } + } +} +var door_status2 = "1"; +function MakePush(){ +request.get('http://www.nordlab-ev.de/doorstate/status.txt', function (error, response, body) { + if (!error && response.statusCode == 200) { + var door_status = body; + //console.log(body); + }else{ + var door_status = error; + //console.log(error); + } + console.log("Current Real State:" + door_status + "\n"); + console.log("Current Last State:" + door_status2 + "\n"); + console.log("Next Check!"); + if (door_status2 !== door_status){ + door_status2 = door_status; + if (door_status == "geschlossen"){ + door_status = "closed"; + }else{ + door_status = "open"; + } + //ADD MODULE RUNTIMES DOWN HERE + pushbullet.pushbulletSend(door_status); + //irc.ircSend(door_status); + } + console.log("WAIT!"); + sleep(9*1000); + MakePush(); +}); +} +MakePush(); diff --git a/package.json b/package.json @@ -0,0 +1,31 @@ +{ + "name": "nordlab-hackerspace-door", + "version": "0.0.1", + "description": "Modular parser for the hackerspace door status with handlers for multiple services", + "author": "Marcel Radzio <info@nordgedanken.de>", + "scripts": { + "start": "node main.js" + }, + "main": "main.js", + "repository": { + "type": "git", + "url": "https://github.com/MTRNord/nordlab-nordlab-hackerspace-door" + }, + "bugs": { + "url": "https://github.com/MTRNord/nordlab-nordlab-hackerspace-door/issues" + }, + "keywords": [ + "door", + "services", + "notification" + ], + "dependencies": { + "request": "*", + "curlrequest": "*", + "irc": "*", + }, + "preferGlobal": false, + "private": true, + "license": "MIT" +} + +\ No newline at end of file