itender/src/MyGPIO.ts
2022-11-28 13:52:50 +01:00

54 lines
1.6 KiB
TypeScript

import GPIO from "rpi-gpio";
import Container from "./database/Container";
export class MyGPIO {
static setup(pin: number, direction): Promise<void> {
return new Promise((resolve, reject) => {
try {
GPIO.setup(pin, direction, (err) => {
if (err) {
reject();
return;
}
resolve();
});
} catch (e) {
reject(e);
}
})
}
static write(pin: number, state: boolean): Promise<void> {
return new Promise((resolve, reject) => {
try {
GPIO.write(pin, state, (err) => {
if (err) {
reject();
return;
}
resolve();
});
} catch (e) {
reject(e);
}
});
}
static setupPins(): Promise<void> {
return new Promise(async resolve => {
let containers = await Container.find({});
for (let c of containers) {
try {
if (c.sensorType) {
await MyGPIO.setup(c.sensorPin1, GPIO.DIR_IN);
await MyGPIO.setup(c.sensorPin2, GPIO.DIR_IN);
}
await MyGPIO.setup(c.pumpPin, GPIO.DIR_OUT);
await MyGPIO.write(c.pumpPin, false);
} catch (e) {
}
}
resolve();
});
}
}