diff --git a/src/MyGPIO.ts b/src/MyGPIO.ts index 0991399..d71c6b5 100644 --- a/src/MyGPIO.ts +++ b/src/MyGPIO.ts @@ -1,4 +1,6 @@ import GPIO from "rpi-gpio"; +import Container from "./database/Container"; +import {IContainer} from "./database/IContainer"; export class MyGPIO { static setup(pin: number, direction): Promise { @@ -16,8 +18,7 @@ export class MyGPIO { static write(pin: number, state: boolean): Promise { return new Promise((resolve, reject) => { GPIO.write(pin, state, (err) => { - if(err) - { + if (err) { reject(); return; } @@ -25,4 +26,19 @@ export class MyGPIO { }); }); } + + static setupPins() : Promise { + return new Promise(async resolve => { + let containers = await Container.find({}) as IContainer[]; + for (let c of containers) { + 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); + } + resolve(); + }); + } } \ No newline at end of file diff --git a/src/WebSocketHandler.ts b/src/WebSocketHandler.ts index ad23228..73f3d0f 100644 --- a/src/WebSocketHandler.ts +++ b/src/WebSocketHandler.ts @@ -39,6 +39,7 @@ export class WebSocketHandler { public static answerRequest(type: RequestType, content: any) { WebSocketHandler.send(new WebSocketPayload(WebSocketEvent.RESPONSE, false, {type: type, content: content})); + log("Answered " + type + " request"); } diff --git a/src/main.ts b/src/main.ts index 61944ef..37d84cd 100644 --- a/src/main.ts +++ b/src/main.ts @@ -7,6 +7,7 @@ import {iTenderStatus} from "./iTenderStatus"; import {Utils} from "./Utils"; import {Settings} from "./Settings"; import Drink from "./database/Drink"; +import {MyGPIO} from "./MyGPIO"; const log = debug("itender:server"); @@ -60,15 +61,16 @@ function init(): Promise { return new Promise(async resolve => { log("Initializing..."); - setTimeout( async () => { + await MyGPIO.setupPins(); + setTimeout(async () => { // Network await iTender.checkNetwork(); let drinkCount = await Drink.countDocuments({}); - if (iTender.internetConnection && iTender.status == iTenderStatus.READY && drinkCount < 3 ) { + if (iTender.internetConnection && iTender.status == iTenderStatus.READY && drinkCount < 3) { console.log("No drinks in the database. - Try to refresh from server...") await iTender.refreshFromServer(); } - }, 1000 * 15 ) ; + }, 1000 * 15); // Containers diff --git a/src/routes/ws/websocketRoute.ts b/src/routes/ws/websocketRoute.ts index 5340e05..ea254de 100644 --- a/src/routes/ws/websocketRoute.ts +++ b/src/routes/ws/websocketRoute.ts @@ -117,6 +117,7 @@ router.ws('/', async (ws, req, next) => { } case WebSocketEvent.REQUEST: { + log("Request to " + msg.data["type"]); switch (msg.data["type"] as RequestType) { case RequestType.STATS: {