update weather every 30mins
This commit is contained in:
parent
c94bacb71e
commit
3871bf76db
14
app.js
14
app.js
@ -23,10 +23,12 @@ async function main() {
|
||||
case 'water':
|
||||
console.log('Water Switch')
|
||||
if (globalVars.waterOn === 'true') {
|
||||
globalVars.lastWaterRequest = ""
|
||||
await common.request(0)
|
||||
await common.pause(2000)
|
||||
await menu.water()
|
||||
} else {
|
||||
globalVars.lastWaterRequest = ""
|
||||
await common.request(1)
|
||||
await common.pause(2000)
|
||||
await menu.water()
|
||||
@ -59,32 +61,20 @@ async function main() {
|
||||
switch (arr[i]) {
|
||||
case 'water':
|
||||
globalVars.currentPage = arr[i]
|
||||
clearInterval(globalVars.waterPolling)
|
||||
clearInterval(globalVars.heatingPageSwitch)
|
||||
clearInterval(globalVars.heatingPolling)
|
||||
await menu.water()
|
||||
break;
|
||||
case 'mainMenu':
|
||||
globalVars.currentPage = arr[i]
|
||||
clearInterval(globalVars.waterPolling)
|
||||
clearInterval(globalVars.heatingPageSwitch)
|
||||
clearInterval(globalVars.heatingPolling)
|
||||
led.set('off')
|
||||
await menu.home()
|
||||
break;
|
||||
case 'heating':
|
||||
globalVars.currentPage = arr[i]
|
||||
clearInterval(globalVars.waterPolling)
|
||||
clearInterval(globalVars.heatingPageSwitch)
|
||||
clearInterval(globalVars.heatingPolling)
|
||||
led.set('off')
|
||||
await menu.heating()
|
||||
break;
|
||||
case 'pihole':
|
||||
globalVars.currentPage = arr[i]
|
||||
clearInterval(globalVars.waterPolling)
|
||||
clearInterval(globalVars.heatingPageSwitch)
|
||||
clearInterval(globalVars.heatingPolling)
|
||||
led.set('off')
|
||||
await menu.piHole()
|
||||
break;
|
||||
|
@ -1,5 +1,7 @@
|
||||
const got = require('got');
|
||||
const moment = require('moment');
|
||||
const globalVars = require('./globalVars')
|
||||
|
||||
|
||||
module.exports = {
|
||||
request: async (input) => {
|
||||
@ -41,5 +43,16 @@ module.exports = {
|
||||
let currentDate = moment(new Date(new Date().toUTCString()))
|
||||
nextEvent = moment(nextEvent, "dddd, MMMM Do, YYYY LTS")
|
||||
return currentDate.isAfter(nextEvent);
|
||||
},
|
||||
clearPolling: async () => {
|
||||
await clearInterval(globalVars.waterPolling);
|
||||
await clearInterval(globalVars.heatingPolling)
|
||||
await clearInterval(globalVars.piHolePolling)
|
||||
await clearInterval(globalVars.weatherPolling)
|
||||
},
|
||||
clearGlobalVars: async () => {
|
||||
globalVars.lastHeatingRequest = ""
|
||||
globalVars.lastWaterRequest = ""
|
||||
globalVars.lastWeatherRequest = ""
|
||||
}
|
||||
}
|
@ -6,9 +6,12 @@ class globalVariables {
|
||||
heatingPolling = "";
|
||||
currentPage = "";
|
||||
heatingPageSwitch = "";
|
||||
heatingPageSwitchActive = "";
|
||||
heatingPageS = 1;
|
||||
piHolePolling = "";
|
||||
lastWeatherRequest = ""
|
||||
lastWaterRequest = ""
|
||||
lastHeatingRequest = ""
|
||||
weatherPolling = ""
|
||||
}
|
||||
|
||||
module.exports = new globalVariables();
|
@ -9,21 +9,22 @@ var modules = requireDir('../modules');
|
||||
|
||||
module.exports = {
|
||||
home: async () => {
|
||||
clearInterval(globalVars.waterPolling);
|
||||
clearInterval(globalVars.heatingPolling)
|
||||
clearInterval(globalVars.piHolePolling)
|
||||
common.clearPolling()
|
||||
common.clearGlobalVars()
|
||||
await screen.clearScreen()
|
||||
await screen.heading('Main Menu')
|
||||
await screen.heading('Home')
|
||||
await screen.clearLine(2)
|
||||
await screen.clearLine(3)
|
||||
await screen.clearLine(4)
|
||||
await screen.time()
|
||||
await modules.weather.getStatus()
|
||||
globalVars.weatherPolling = setInterval(() => {
|
||||
modules.weather.getStatus()
|
||||
}, 1800000);
|
||||
},
|
||||
water: async () => {
|
||||
clearInterval(globalVars.waterPolling);
|
||||
clearInterval(globalVars.heatingPolling)
|
||||
clearInterval(globalVars.piHolePolling)
|
||||
common.clearPolling()
|
||||
common.clearGlobalVars()
|
||||
await screen.clearScreen()
|
||||
await screen.heading('Hot Water')
|
||||
await screen.time()
|
||||
@ -33,9 +34,8 @@ module.exports = {
|
||||
}, 60000);
|
||||
},
|
||||
heating: async () => {
|
||||
clearInterval(globalVars.waterPolling);
|
||||
clearInterval(globalVars.heatingPolling)
|
||||
clearInterval(globalVars.piHolePolling)
|
||||
common.clearPolling()
|
||||
common.clearGlobalVars()
|
||||
await screen.clearScreen()
|
||||
await screen.heading('Heating')
|
||||
await screen.time()
|
||||
@ -45,9 +45,8 @@ module.exports = {
|
||||
}, 60000);
|
||||
},
|
||||
piHole: async () => {
|
||||
clearInterval(globalVars.waterPolling);
|
||||
clearInterval(globalVars.heatingPolling)
|
||||
clearInterval(globalVars.piHolePolling)
|
||||
common.clearPolling()
|
||||
common.clearGlobalVars()
|
||||
await screen.clearScreen()
|
||||
await screen.heading('PiHole')
|
||||
await screen.time()
|
||||
|
@ -26,34 +26,45 @@ module.exports = {
|
||||
// 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
|
||||
let waterdata = {
|
||||
"waterOn": data.waterOn,
|
||||
"time": await common.nextEvent(data.nextScheduleEventUtcTime),
|
||||
}
|
||||
globalVars.waterNextEvent = waterdata.time
|
||||
|
||||
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.waterPageOne('Heating', globalVars.waterNextEvent)
|
||||
led.set('red')
|
||||
// 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 {
|
||||
globalVars.waterOn = waterOn
|
||||
lcd.waterPageOne('Not Heating', globalVars.waterNextEvent)
|
||||
led.set('blue')
|
||||
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 {
|
||||
if (waterOn === 'true') {
|
||||
globalVars.waterOn = waterOn
|
||||
lcd.waterPageOne('Heating', globalVars.waterNextEvent)
|
||||
led.set('red')
|
||||
} else {
|
||||
globalVars.waterOn = waterOn
|
||||
lcd.waterPageOne('Not Heating', globalVars.waterNextEvent)
|
||||
led.set('blue')
|
||||
}
|
||||
updateWater()
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -29,14 +29,27 @@ module.exports = {
|
||||
// Once we're done streaming the response, parse it as json.
|
||||
response.on('end', async function () {
|
||||
var data = JSON.parse(content);
|
||||
let city = data.name
|
||||
let weatherDescription = data.weather[0].description
|
||||
let currentTemp = Math.floor(data.main.temp)
|
||||
let highTemp = Math.floor(data.main.temp_max)
|
||||
let lowTemp = Math.floor(data.main.temp_min)
|
||||
|
||||
await lcd.weather(city, weatherDescription, currentTemp, highTemp, lowTemp)
|
||||
|
||||
let weatherData = {
|
||||
"city": data.name,
|
||||
"weatherDescription": data.weather[0].description,
|
||||
"currentTemp": Math.floor(data.main.temp),
|
||||
"highTemp": Math.floor(data.main.temp_max),
|
||||
"lowTemp": Math.floor(data.main.temp_min)
|
||||
}
|
||||
async function updateWeather() {
|
||||
console.log('weather updated')
|
||||
globalVars.lastWeatherRequest = weatherData
|
||||
await lcd.weather(weatherData.city, weatherData.weatherDescription, weatherData.currentTemp, weatherData.highTemp, weatherData.lowTemp)
|
||||
}
|
||||
if (globalVars.lastWeatherRequest === "") {
|
||||
console.log('initial load')
|
||||
globalVars.lastWeatherRequest = weatherData
|
||||
updateWeather()
|
||||
} else if (globalVars.lastWeatherRequest = weatherData) {
|
||||
console.log('no update')
|
||||
} else {
|
||||
updateWeather()
|
||||
}
|
||||
});
|
||||
})
|
||||
// Report errors
|
||||
|
Loading…
x
Reference in New Issue
Block a user