102 lines
2.5 KiB
JavaScript
Raw Normal View History

2020-09-12 11:42:02 +01:00
const { Gpio } = require('onoff');
2020-09-21 21:38:46 +01:00
const hotwater = require('./modules/water')
2020-09-12 11:42:02 +01:00
const common = require('./libs/common')
const globalVars = require('./libs/globalVars')
2020-09-14 12:11:37 +01:00
const led = require('./libs/led')
2020-09-14 08:17:22 +01:00
const lcd = require('./libs/lcd')
2020-09-14 18:42:09 +01:00
const menu = require('./modules/mainMenu')
2020-09-14 12:11:37 +01:00
async function main() {
lcd.clearScreen()
await lcd.intro()
2020-09-21 21:53:55 +01:00
menu.home()
2020-09-21 21:38:46 +01:00
2020-09-28 10:50:23 +01:00
const functionSwitch = new Gpio('17', 'in', 'both');
2020-09-14 12:11:37 +01:00
const appSwitch = new Gpio('23', 'in', 'both');
2020-09-28 10:50:23 +01:00
functionSwitch.watch(async (err, value) => {
2020-09-14 12:11:37 +01:00
if (err) {
console.log('Error', err);
}
if (value === 1) {
2020-09-28 10:50:23 +01:00
switch (globalVars.currentPage) {
case 'water':
console.log('Water Switch')
if (globalVars.waterOn === 'true') {
2020-09-29 10:23:41 +01:00
globalVars.lastWaterRequest = ""
2020-09-28 10:50:23 +01:00
await common.request(0)
await common.pause(2000)
await menu.water()
} else {
2020-09-29 10:23:41 +01:00
globalVars.lastWaterRequest = ""
2020-09-28 10:50:23 +01:00
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;
2020-09-14 12:11:37 +01:00
}
}
})
2020-09-28 10:50:23 +01:00
const arr = ['water', 'heating', 'pihole', 'mainMenu']
2020-09-14 18:42:09 +01:00
arrLength = arr.length
let i = 0
2020-09-14 12:11:37 +01:00
appSwitch.watch(async (err, value) => {
if (err) {
console.log('Error', err);
2020-09-12 11:42:02 +01:00
}
2020-09-14 12:11:37 +01:00
if (value === 1) {
2020-09-14 18:42:09 +01:00
switch (arr[i]) {
2020-09-21 21:38:46 +01:00
case 'water':
2020-09-28 10:50:23 +01:00
globalVars.currentPage = arr[i]
2020-09-21 21:38:46 +01:00
await menu.water()
break;
case 'mainMenu':
2020-09-28 10:50:23 +01:00
globalVars.currentPage = arr[i]
2020-09-21 21:38:46 +01:00
led.set('off')
await menu.home()
2020-09-14 18:42:09 +01:00
break;
2020-09-21 21:38:46 +01:00
case 'heating':
2020-09-28 10:50:23 +01:00
globalVars.currentPage = arr[i]
2020-09-14 18:42:09 +01:00
led.set('off')
2020-09-21 21:38:46 +01:00
await menu.heating()
2020-09-14 18:42:09 +01:00
break;
2020-09-28 10:50:23 +01:00
case 'pihole':
globalVars.currentPage = arr[i]
led.set('off')
await menu.piHole()
break;
2020-09-14 18:42:09 +01:00
default:
break;
}
console.log(arr[i])
i = i + 1
if (i === arrLength) {
i = 0
}
2020-09-14 12:11:37 +01:00
}
})
}
process.stdin.resume();
process.on('SIGINT', function () {
lcd.clearScreen()
led.set('off')
process.exit(1)
});
2020-09-28 10:50:23 +01:00
setInterval(lcd.time, 55000)
2020-09-14 12:11:37 +01:00
main()