54 lines
1.6 KiB
TypeScript
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();
|
|
});
|
|
}
|
|
} |