diff --git a/lib/mqtt/mqttClient.js b/lib/mqtt/mqttClient.js index 2c6d944..961ea16 100644 --- a/lib/mqtt/mqttClient.js +++ b/lib/mqtt/mqttClient.js @@ -1,21 +1,20 @@ +'use strict'; const mqtt = require('mqtt'); const request = require('request'); let util = require('util'); const logger = require('log4js').getLogger(); -const EventEmitter = require('events'); -let Minibus = require('minibus'); - // var db = require('../server/db-connector').dbConnection; -//var nano = require('nano')('http://martind2000:1V3D4m526i@localhost:5984'); -//var nano = require('nano')('http://localhost:5984'); +// var nano = require('nano')('http://martind2000:1V3D4m526i@localhost:5984'); +// var nano = require('nano')('http://localhost:5984'); -let db_name = 'mqtt'; -//var dbCouch = nano.use(db_name); +// let db_name = 'mqtt'; +// var dbCouch = nano.use(db_name); -var globalMode = 'FanOff'; -var lastDispatch = 0; +let globalMode = 'FanOff'; + +let lastDispatch = 0; const mqttClient = function (events) { @@ -34,46 +33,54 @@ const mqttClient = function (events) { this.lastMsg = d.getTime(); events.on('sendIFTTT', function (mode) { + let d; const url = ['https://maker.ifttt.com/trigger/', mode, '/with/key/cWvECkeiyAPwmiOPBkXL2D'].join(''); - if (mode !== globalMode) - { - console.log('Sending..'); - globalMode = mode; - request(url, function (error, response, body) { - // if (!error && response.statusCode === 200) { - console.log(response, body); - // } - }); - - var d = new Date(); - lastDispatch = d.getTime(); - } else { - console.log('Not sent...'); - } + if (mode !== globalMode) { + logger.info('Sending..'); + globalMode = mode; + request(url, function (error, response, body) { + logger.debug(response, body); }); + d = new Date(); + lastDispatch = d.getTime(); + } else { + logger.warn('Not sent...'); + } + }); + this.fanTimer = function () { - 'use strict'; + + let n; const now = new Date; const mod = 900000 - (now.getTime() % 900000); + const day = now.getDay(); + const daytimeLimits = {low:27900000,high:63000000}; + const nowMS = (now.getHours() * 3600000) + (now.getMinutes() * 60000); if (globalMode === 'FanOff') { - console.log('Fans off, temp should be <= 19.5'); + logger.info('Fans off, temp should be <= 19.5'); mode = (parseFloat(this.livingRoom.temp) <= 19.5) ? 'FanOn' : 'FanOff'; } else { - console.log('Fans on, temp should not be less than 22.5'); + logger.info('Fans on, temp should not be less than 22.5'); mode = (parseFloat(this.livingRoom.temp) <= 22.5) ? 'FanOn' : 'FanOff'; } - let n = new Date(); - n = n.getTime() - this.lastMsg; - console.log('Last msg', n); + if ((globalMode !== 'FanOff' || mode !== 'FanOff') && ((day >=1 && day <=5) && (nowMS >= daytimeLimits.low && nowMS <= daytimeLimits.high))) { + logger.info('Week day'); + mode = 'FanOff' + } + + n = now.getTime() - this.lastMsg; + logger.info('Last msg', n); if (n >= 600000) { - console.error('No message received for over 10 minutes'); + logger.error('No message received for over 10 minutes'); mode = 'FanOff'; - throw new error('Ejecting for restart'); + logger.warn('Setting quit for 15 seconds.'); + setTimeout(()=>{throw new error('Ejecting for restart');}, 15000); + } logger.info('LR temp:', this.livingRoom.temp); @@ -100,8 +107,8 @@ const mqttClient = function (events) { this.client = mqtt.connect('mqtt://' + orgId + 'silvrtree.co.uk', options); this.client.on('connect', function () { - connected = true; - logger.info('Connected to SIlvr Broker'); + this.connected = true; + logger.info('Connected to Silvr Broker'); this.fanTimer(); }.bind(this)); @@ -114,9 +121,10 @@ const mqttClient = function (events) { logger.debug(json.temp); this.livingRoom.temp = parseFloat(json.temp); - console.log('lr:',this.livingRoom.temp, this.livingRoom.temp >= 22.6); + logger.info('lr:', this.livingRoom.temp, this.livingRoom.temp >= 22.6); + if (this.livingRoom.temp >= 22.7) { - console.log('Max temp reached, turn off'); + logger.warn('Max temp reached, turn off'); events.emit('sendIFTTT', 'FanOff'); } const d = new Date(); diff --git a/lib/mqtt/IoTFconnector.js b/lib/mqtt/old/IoTFconnector.js similarity index 100% rename from lib/mqtt/IoTFconnector.js rename to lib/mqtt/old/IoTFconnector.js diff --git a/lib/mqtt/mqttConnect.js b/lib/mqtt/old/mqttConnect.js similarity index 100% rename from lib/mqtt/mqttConnect.js rename to lib/mqtt/old/mqttConnect.js diff --git a/lib/mqtt/mqttws31.js b/lib/mqtt/old/mqttws31.js similarity index 100% rename from lib/mqtt/mqttws31.js rename to lib/mqtt/old/mqttws31.js diff --git a/app.js b/old-app.js similarity index 100% rename from app.js rename to old-app.js diff --git a/package.json b/package.json index e0854bc..561db72 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,8 @@ "sugar-date": "^2.0.2", "uuid-pure": "^1.0.10", "websocket": "^1.0.23", - "ws": "^1.1.1" + "ws": "^1.1.1", + "better-npm-run": "0.0.13" }, "devDependencies": { "after": "^0.8.1",