2020-09-28 10:50:23 +01:00

112 lines
3.0 KiB
JavaScript

const { Gpio } = require('onoff');
const hotwater = require('./modules/water')
const common = require('./libs/common')
const globalVars = require('./libs/globalVars')
const led = require('./libs/led')
const lcd = require('./libs/lcd')
const menu = require('./modules/mainMenu')
async function main() {
lcd.clearScreen()
await lcd.intro()
menu.home()
const functionSwitch = new Gpio('17', 'in', 'both');
const appSwitch = new Gpio('23', 'in', 'both');
functionSwitch.watch(async (err, value) => {
if (err) {
console.log('Error', err);
}
if (value === 1) {
switch (globalVars.currentPage) {
case 'water':
console.log('Water Switch')
if (globalVars.waterOn === 'true') {
await common.request(0)
await common.pause(2000)
await menu.water()
} else {
await common.request(1)
await common.pause(2000)
await menu.water()
}
break;
case 'heating':
if (globalVars.heatingPageS === 1) {
clearInterval(globalVars.heatingPolling)
globalVars.heatingPageS = 2
} else {
clearInterval(globalVars.heatingPolling)
globalVars.heatingPageS = 1
}
await menu.heating(globalVars.heatingPageS)
break;
default:
break;
}
}
})
const arr = ['water', 'heating', 'pihole', 'mainMenu']
arrLength = arr.length
let i = 0
appSwitch.watch(async (err, value) => {
if (err) {
console.log('Error', err);
}
if (value === 1) {
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;
default:
break;
}
console.log(arr[i])
i = i + 1
if (i === arrLength) {
i = 0
}
}
})
}
process.stdin.resume();
process.on('SIGINT', function () {
lcd.clearScreen()
led.set('off')
process.exit(1)
});
setInterval(lcd.time, 55000)
main()