76 lines
2.6 KiB
JavaScript

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'
};
console.log('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 waterOn = data.waterOn
var time = await common.nextEvent(data.nextScheduleEventUtcTime)
globalVars.waterNextEvent = time
let m = await common.time(data.nextScheduleEventUtcTime)
if (globalVars.waterOn === "" || globalVars.waterOn === "error") {
if (waterOn === 'true') {
globalVars.waterOn = waterOn
lcd.waterStatus('Heating')
lcd.NextEvent(globalVars.waterNextEvent)
led.set('red')
} else {
globalVars.waterOn = waterOn
lcd.waterStatus('Not Heating')
led.set('blue')
lcd.NextEvent(globalVars.waterNextEvent)
}
} else {
// if (waterOn != globalVars.waterOn) {
if (waterOn === 'true') {
globalVars.waterOn = waterOn
lcd.waterStatus('Heating')
led.set('red')
lcd.NextEvent(globalVars.waterNextEvent)
} else {
globalVars.waterOn = waterOn
lcd.waterStatus('Not Heating')
led.set('blue')
lcd.NextEvent(globalVars.waterNextEvent)
}
// }
}
});
});
// Report errors
request.on('error', function (error) {
lcd.waterStatus('Error')
led.set('green')
lcd.waterStatus('Error No Data')
globalVars.waterOn = 'error'
});
request.end();
}
}