const http = require('http') const globalVars = require('../libs/globalVars') const led = require('../libs/led') const common = require('../libs/common') const lcd = require('../libs/lcd') module.exports = { getStatus: () => { var rest_options = { host: '192.168.4.5', port: 2020, path: '/water/status', method: 'GET' }; let t = new Date().toUTCString() console.log(t + ' water request') var request = http.request(rest_options, function (response) { var content = ""; // Handle data chunks response.on('data', function (chunk) { content += chunk; }); // Once we're done streaming the response, parse it as json. response.on('end', async function () { var data = JSON.parse(content); let waterdata = { "waterOn": data.waterOn, "time": await common.nextEvent(data.nextScheduleEventUtcTime), } globalVars.waterNextEvent = waterdata.time // let m = await common.time(data.nextScheduleEventUtcTime) async function updateWater() { if (globalVars.waterOn === "" || globalVars.waterOn === "error") { if (waterdata.waterOn === 'true') { globalVars.waterOn = waterdata.waterOn lcd.waterPageOne('Heating', globalVars.waterNextEvent) led.set('red') } else { globalVars.waterOn = waterdata.waterOn lcd.waterPageOne('Not Heating', globalVars.waterNextEvent) led.set('blue') } } else { if (waterdata.waterOn === 'true') { globalVars.waterOn = waterdata.waterOn lcd.waterPageOne('Heating', globalVars.waterNextEvent) led.set('red') } else { globalVars.waterOn = waterdata.waterOn lcd.waterPageOne('Not Heating', globalVars.waterNextEvent) led.set('blue') } } } if (globalVars.lastWaterRequest === "") { console.log('initial load') globalVars.lastWaterRequest = waterdata updateWater() } else if (globalVars.lastWaterRequest = waterdata) { console.log('no update') } else { updateWater() } }); }); // Report errors request.on('error', function (error) { lcd.waterStatus('Error') led.set('green') lcd.waterStatus('Error No Data') globalVars.waterOn = 'error' }); request.end(); } }