var redis = require("redis"); var util = require('util'); var EventEmitter = require('events').EventEmitter; var http = require("http"); var redisprefix = "flukso:"; var Flukso = function(hostname, pathname) { var self = this; var redisClient = redis.createClient(); var regexp = /([0-9]+)\]\]$/; // /\(([0-9]+) hosts* up\)/; redisClient.on("connect", function () { console.log("connected to redis"); self.emit('ready'); }); this.pollPower = function() { http.request({ host: hostname, path: pathname }, function(response) { var str = ''; response.on('data', function(chunk) { str += chunk; }); response.on('end', function () { // console.log("http received: " + str); var matches = regexp.exec(str); if(matches != null && matches.length == 2) { var time = Date.now(); redisClient.zremrangebyscore(redisprefix + 'power', "-inf", time - 7*24*60*1000); var num = matches[1]; redisClient.zadd(redisprefix + 'power', time, time + "|" + num, function() { self.emit('done', parseInt(num)); }); } }); }).end(); }; // this.getHistory = function(start, end, callback) { // // redisClient.zrangebyscore(redisprefix + 'power', start, end, function(err, replies) { // var data = []; // // replies.forEach(function (reply, i) { // var line = reply.split('|'); // data.push( { at: moment(parseInt(line[0])).format(), value: line[1] }); // }); // // callback(data); // }); // }; }; util.inherits(Flukso, EventEmitter); module.exports = Flukso;