Try new startup init

This commit is contained in:
Skylar Grant 2024-09-02 13:16:21 -04:00
parent 0a90a93269
commit 2a756065e7
2 changed files with 58 additions and 43 deletions

View File

@ -61,9 +61,9 @@
],
"power": {
"start": {
"exhaustDelay": 30000,
"augerDelay": 60000,
"fireCheckDelay": 420000
"exhaustDelay": 5000,
"igniterPreheat": 60000,
"igniterDelay": 420000
},
"stop": {
"exhaustDelay": 600000

View File

@ -63,53 +63,68 @@ module.exports = {
module.exports.log(changes);
}).catch(e => console.error(e));
// Power on igniter
gpio.setPin(process.pinMap.get('igniter').board, 1).then(async () => {
// Wait for igniter preheat
await module.exports.sleep(config.power.start.exhaustDelay);
// Start the exhaust
this.exhaust().then(() => {
// Check for vacuum
this.vacuum().then(() => {
// Start the auger
this.auger().then(() => {
resolve('Startup sequence complete.');
}).catch(e => console.error(e));
// Preheat the igniter
this.igniter().then(() => {
module.exports.sleep(config.power.start.igniterDelay).then(() => {
// Check for fire
this.fire().then(() => {
}).catch(e => console.error(e));
});
}).catch(e => console.error(e));
}).catch(e => console.error(e));
}).catch(e => console.error(e));
});
},
exhaust() {
return new Promise(async (resolve, reject) => {
// Start exhaust
gpio.setPin(process.pinMap.get('exhaust').board, 1).then(async () => {
// Finish igniter preheat
await module.exports.sleep(config.power.start.augerDelay);
gpio.setPin(process.pinMap.get('exhaust').board, 1).then(() => {
// Wait to resolve
module.exports.sleep(config.power.start.exhaustDelay).then(() => {
resolve('Exhaust started.');
}
}).catch(e => console.error(e));
});
},
vacuum() {
return new Promise(async (resolve, reject) => {
// Check for vacuum
gpio.readPin(process.pinMap.get('vacuum').board).then(state => {
if (state === '0') {
// Power off exhaust
gpio.setPin(process.pinMap.get('exhaust').board, 0).then(() => {
// Report vacuum failure
reject(new Error('Vacuum failure.'));
return;
}).catch(e => console.error(e));
} else {
// Start auger
gpio.setPin(process.pinMap.get('auger').board, 1).then(async () => {
// Wait for fire
await module.exports.sleep(config.power.start.fireCheckDelay);
// Power off igniter
gpio.setPin(process.pinMap.get('igniter').board, 0).then(() => {
// Check for fire on pof
gpio.readPin(process.pinMap.get('pof').board).then(state => {
if (state === '0') {
// Power off auger
gpio.setPin(process.pinMap.get('auger').board, 0).then(() => {
// Report failed ignition
reject(new Error('Failed ignition.'));
}).catch(e => console.error(e));
} else {
// Power off auger
gpio.setPin(process.pinMap.get('auger').board, 0).then(() => {
// Report successful ignition
resolve('Successful ignition.');
}).catch(e => console.error(e));
resolve('Vacuum established.');
}
}).catch(e => console.error(e));
});
},
igniter() {
return new Promise(async (resolve, reject) => {
// Start igniter
gpio.setPin(process.pinMap.get('igniter').board, 1).then(() => {
// Wait to resolve
module.exports.sleep(config.power.start.igniterPreheat).then(() => {
resolve('Igniter preheated.');
});
}).catch(e => console.error(e));
}).catch(e => console.error(e));
});
},
fire() {
return new Promise(async (resolve, reject) => {
// Check for fire
gpio.readPin(process.pinMap.get('pof').board).then(state => {
if (state === '0') {
reject(new Error('Failed ignition.'));
} else {
resolve('Successful ignition.');
}
}).catch(e => console.error(e));
});