123 lines
3.2 KiB
JavaScript
123 lines
3.2 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')
|
|
const logger = require('perfect-logger');
|
|
|
|
require('dotenv').config()
|
|
|
|
logger.initialize('houseStatus', {
|
|
logLevelFile: 0, // Log level for file
|
|
logLevelConsole: 0, // Log level for STDOUT/STDERR
|
|
logDirectory: 'logs/', // Log directory
|
|
// customBannerHeaders: 'This is a custom banner' // Custom Log Banner
|
|
});
|
|
|
|
|
|
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) {
|
|
logger.info('Error', err);
|
|
}
|
|
if (value === 1) {
|
|
switch (globalVars.currentPage) {
|
|
case 'water':
|
|
logger.info('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()
|
|
}
|
|
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 = ['hassOcto', 'water', 'heating', 'pihole', 'capitalXtra', 'mainMenu']
|
|
arrLength = arr.length
|
|
let i = 0
|
|
appSwitch.watch(async (err, value) => {
|
|
if (err) {
|
|
logger.info('Error', err);
|
|
}
|
|
if (value === 1) {
|
|
switch (arr[i]) {
|
|
case 'water':
|
|
globalVars.currentPage = arr[i]
|
|
await menu.water()
|
|
break;
|
|
case 'mainMenu':
|
|
globalVars.currentPage = arr[i]
|
|
led.set('off')
|
|
await menu.home()
|
|
break;
|
|
case 'heating':
|
|
globalVars.currentPage = arr[i]
|
|
led.set('off')
|
|
await menu.heating()
|
|
break;
|
|
case 'pihole':
|
|
globalVars.currentPage = arr[i]
|
|
led.set('off')
|
|
await menu.piHole()
|
|
break;
|
|
case 'capitalXtra':
|
|
globalVars.currentPage = arr[i]
|
|
led.set('off')
|
|
await menu.capitalXtra()
|
|
break;
|
|
case 'hassOcto':
|
|
globalVars.currentPage = arr[i]
|
|
led.set('off')
|
|
await menu.hassOcto()
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
logger.info(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() |