2022-11-27 01:56:04 +00:00
|
|
|
// npm module for Raspberri Pi GPIO
|
2022-11-27 00:45:18 +00:00
|
|
|
var gpio = require('rpi-gpio');
|
2022-11-27 01:56:04 +00:00
|
|
|
// Module for importing environment variables
|
2022-11-27 01:50:20 +00:00
|
|
|
var dotenv = require('dotenv').config();
|
|
|
|
|
2022-11-27 01:56:04 +00:00
|
|
|
// Set up GPIO 4 (pysical pin 7) as output, then call cycleAuger()
|
2022-11-27 00:49:07 +00:00
|
|
|
gpio.setup(7, gpio.DIR_OUT, cycleAuger);
|
2022-11-27 00:33:33 +00:00
|
|
|
|
2022-11-27 01:56:04 +00:00
|
|
|
// Turns the auger on (Pin 7 high)
|
2022-11-27 00:44:31 +00:00
|
|
|
function augerOn(err) {
|
|
|
|
if (err) throw err;
|
|
|
|
gpio.write(7, true, function(err) {
|
|
|
|
if (err) throw err;
|
|
|
|
console.log('Auger turned on.');
|
|
|
|
});
|
2022-11-27 00:33:33 +00:00
|
|
|
}
|
|
|
|
|
2022-11-27 01:56:04 +00:00
|
|
|
// Turns the auger off (pin 7 low)
|
2022-11-27 00:44:31 +00:00
|
|
|
function augerOff(err) {
|
|
|
|
if (err) throw err;
|
|
|
|
gpio.write(7, false, function(err) {
|
|
|
|
if (err) throw err;
|
|
|
|
console.log('Auger turned off.');
|
|
|
|
});
|
2022-11-27 00:33:33 +00:00
|
|
|
}
|
2022-11-27 00:44:31 +00:00
|
|
|
|
|
|
|
// Identical functions as above for debugging without gpio
|
|
|
|
// function augerOff() {
|
|
|
|
// console.log('Auger turned off.');
|
|
|
|
// }
|
|
|
|
|
|
|
|
// function augerOn() {
|
|
|
|
// console.log('Auger turned on.');
|
|
|
|
// }
|
2022-11-27 01:56:04 +00:00
|
|
|
|
|
|
|
// Sleeps for any given milliseconds, call with await
|
2022-11-27 00:33:33 +00:00
|
|
|
function sleep(ms) {
|
|
|
|
return new Promise((resolve) => {
|
|
|
|
setTimeout(resolve, ms);
|
2022-11-27 00:41:39 +00:00
|
|
|
console.log(`Slept for ${ms}ms`);
|
2022-11-27 00:33:33 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2022-11-27 01:56:04 +00:00
|
|
|
// Main function, turns the auger on, sleeps for the time given in environment variables, then turns the auger off, sleeps, repeats.
|
2022-11-27 00:49:07 +00:00
|
|
|
async function cycleAuger(err) {
|
|
|
|
if (err) throw err;
|
2022-11-27 01:56:04 +00:00
|
|
|
// TODO: Detect file 'pause', 'reload', 'quit'
|
2022-11-27 00:33:33 +00:00
|
|
|
augerOn();
|
2022-11-27 01:50:20 +00:00
|
|
|
await sleep(process.env.ONTIME);
|
2022-11-27 00:33:33 +00:00
|
|
|
augerOff();
|
2022-11-27 01:50:20 +00:00
|
|
|
await sleep(process.env.OFFTIME);
|
2022-11-27 00:39:33 +00:00
|
|
|
cycleAuger();
|
2022-11-27 00:49:07 +00:00
|
|
|
}
|