diff --git a/modules/functions.js b/modules/functions.js index 1ec8ec1..5fa6e43 100644 --- a/modules/functions.js +++ b/modules/functions.js @@ -2,6 +2,9 @@ // TODO: Move these to config // Physical Pin numbers for GPIO const augerPin = 7; // Pin for controlling the relay for the pellet auger motor. +const igniterPin = 13; +const exhaustPin = 15; +const pofPin = 16; // Require the package for pulling version numbers const package = require('../package.json'); @@ -84,6 +87,80 @@ const functions = { }); }, }, + igniter: { + // Gets called once the Igniter Pin has been setup by rpi-gpio + ready(err) { + if (err) throw err; + console.log('Igniter GPIO Ready'); + return; + }, + // Turns the Igniter on (Pin 7 high) + on(gpio) { + return new Promise((resolve) => { + if (process.env.ONPI == 'true') { + gpio.write(igniterPin, true, function (err) { + if (err) throw err; + resolve('Igniter turned on.'); + }); + } else { + resolve('Simulated Igniter turned on.'); + } + }); + + }, + // Turns the Igniter off (pin 7 low) + off(gpio) { + return new Promise((resolve) => { + if (process.env.ONPI == 'true') { + gpio.write(igniterPin, false, function (err) { + if (err) throw err; + resolve('Igniter turned off.'); + + }); + } else { + resolve('Simulated Igniter turned off.'); + } + }); + + } + }, + exhaust: { + // Gets called once the Exhaust Pin has been setup by rpi-gpio + ready(err) { + if (err) throw err; + console.log('Exhaust GPIO Ready'); + return; + }, + // Turns the Exhaust on (Pin 7 high) + on(gpio) { + return new Promise((resolve) => { + if (process.env.ONPI == 'true') { + gpio.write(exhaustPin, true, function (err) { + if (err) throw err; + resolve('Exhaust turned on.'); + }); + } else { + resolve('Simulated Exhaust turned on.'); + } + }); + + }, + // Turns the Exhaust off (pin 7 low) + off(gpio) { + return new Promise((resolve) => { + if (process.env.ONPI == 'true') { + gpio.write(exhaustPin, false, function (err) { + if (err) throw err; + resolve('Exhaust turned off.'); + + }); + } else { + resolve('Simulated Exhaust turned off.'); + } + }); + + } + }, commands: { // Prepare the stove for starting augerOn() { // FKA startup() @@ -103,6 +180,36 @@ const functions = { return; }).catch(err => console.log(`[${(Date.now() - config.timestamps.procStart)/1000}] E: ${err}`)); }, + igniterOn() { + const enableIgniterQuery = "UPDATE status SET value = 1 WHERE key = 'igniter'"; + dbfn.run(enableIgniterQuery).then(res => { + console.log(`[${(Date.now() - config.timestamps.procStart) / 1000}] I: Igniter enabled.`); + return; + }).catch(err => console.log(`[${(Date.now() - config.timestamps.procStart)/1000}] E: ${err}`)); + }, + igniterOff() { + const disableIgniterQuery = "UPDATE status SET value = 0 WHERE key = 'igniter'"; + dbfn.run(disableIgniterQuery).then(res => { + if (process.env.DEBUG) console.log(`[${(Date.now() - config.timestamps.procStart)/1000}] I: ${res.status}`); + console.log(`[${(Date.now() - config.timestamps.procStart) / 1000}] I: Igniter disabled.`); + return; + }).catch(err => console.log(`[${(Date.now() - config.timestamps.procStart)/1000}] E: ${err}`)); + }, + exhaustOn() { + const enableExhaustQuery = "UPDATE status SET value = 1 WHERE key = 'exhaust'"; + dbfn.run(enableExhaustQuery).then(res => { + console.log(`[${(Date.now() - config.timestamps.procStart) / 1000}] I: Exhaust enabled.`); + return; + }).catch(err => console.log(`[${(Date.now() - config.timestamps.procStart)/1000}] E: ${err}`)); + }, + exhaustOff() { + const disableExhaustQuery = "UPDATE status SET value = 0 WHERE key = 'exhaust'"; + dbfn.run(disableExhaustQuery).then(res => { + if (process.env.DEBUG) console.log(`[${(Date.now() - config.timestamps.procStart)/1000}] I: ${res.status}`); + console.log(`[${(Date.now() - config.timestamps.procStart) / 1000}] I: Exhaust disabled.`); + return; + }).catch(err => console.log(`[${(Date.now() - config.timestamps.procStart)/1000}] E: ${err}`)); + }, // Pauses the script for the time defined in env variables pause() { return new Promise((resolve) => {