Update measure and tare
Took 4 hours 19 minutes
This commit is contained in:
@ -23,7 +23,6 @@ router.ws('/', async (ws, req, next) => {
|
||||
log("Incoming websocket connection...");
|
||||
|
||||
if (WebSocketHandler.ws) {
|
||||
iTender.toggleTare(false);
|
||||
WebSocketHandler.ws.close(1001);
|
||||
}
|
||||
WebSocketHandler.ws = ws;
|
||||
@ -44,14 +43,6 @@ router.ws('/', async (ws, req, next) => {
|
||||
|
||||
|
||||
switch (msg.event) {
|
||||
case WebSocketEvent.TARE: {
|
||||
if (msg.data["state"] == true) {
|
||||
iTender.toggleTare(true);
|
||||
} else {
|
||||
iTender.toggleTare(false);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WebSocketEvent.CONTAINERS: {
|
||||
let data = msg.data as { pumpPin: number; sensorType: SensorType; sensor1: number; sensor2: number; }[];
|
||||
await Container.deleteMany({}); // V2: Remove this and check every container based on id if changes occurs
|
||||
@ -73,7 +64,7 @@ router.ws('/', async (ws, req, next) => {
|
||||
}
|
||||
|
||||
case WebSocketEvent.CONTAINER_UPDATE: {
|
||||
let container : IContainer | null = await Container.findById(msg.data["container"]);
|
||||
let container: IContainer | null = await Container.findById(msg.data["container"]);
|
||||
if (!container) break;
|
||||
|
||||
let ingredient;
|
||||
@ -83,20 +74,16 @@ router.ws('/', async (ws, req, next) => {
|
||||
ingredient = undefined;
|
||||
}
|
||||
|
||||
let filled : number = parseInt(msg.data["filled"]);
|
||||
let filled: number = parseInt(msg.data["filled"]);
|
||||
|
||||
container.filled = filled;
|
||||
container.volume = filled; // V2: Volume is now being updated after change of ingredient
|
||||
|
||||
if( container.sensorType != SensorType.NONE )
|
||||
{
|
||||
if (container.sensorType != SensorType.NONE) {
|
||||
let raw = SensorHelper.measure(container);
|
||||
if( !raw )
|
||||
{
|
||||
await WebSocketHandler.send(new WebSocketPayload(WebSocketEvent.ERROR, "Der Sensor hat beim Austarieren einen ungültigen Wert zurückgegeben.<br>Dies weist auf eine Fehlkonfiguration oder kaputten Sensor hin.<br>Aus Sicherheitsgründen wurde der Sensor für diesen Behälter deaktiviert." ));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!raw) {
|
||||
await WebSocketHandler.send(new WebSocketPayload(WebSocketEvent.ERROR, "Der Sensor hat beim Austarieren einen ungültigen Wert zurückgegeben.<br>Dies weist auf eine Fehlkonfiguration oder kaputten Sensor hin.<br>Aus Sicherheitsgründen wurde der Sensor für diesen Behälter deaktiviert."));
|
||||
} else {
|
||||
container.sensorDelta = raw - filled; // V2: Kalkuliere differenz zwischen Gewicht und gefülltem Inhalt // Todo Möglicherweise ist der "raw"-Wert nicht Gewicht
|
||||
}
|
||||
}
|
||||
@ -170,6 +157,51 @@ router.ws('/', async (ws, req, next) => {
|
||||
WebSocketHandler.answerRequest(msg.data["type"] as RequestType, "ok");
|
||||
break;
|
||||
}
|
||||
case RequestType.TARE: {
|
||||
let type = msg.data["type"];
|
||||
// Start TARE
|
||||
let success = true;
|
||||
|
||||
for (let c of await Container.find({})) {
|
||||
if (c.sensorType != SensorType.NONE) {
|
||||
c.sensorTare = 0;
|
||||
await c.save();
|
||||
}
|
||||
}
|
||||
|
||||
async function measureAndSafe() {
|
||||
try {
|
||||
await iTender.measureAllRaw();
|
||||
for (let c of await Container.find({})) {
|
||||
if (c.sensorType != SensorType.NONE) {
|
||||
c.sensorTare += c.rawData;
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
// { success: boolean, msg: string }
|
||||
WebSocketHandler.answerRequest(type, {success: false, msg: e});
|
||||
success = false;
|
||||
}
|
||||
}
|
||||
|
||||
setTimeout(measureAndSafe, 500);
|
||||
setTimeout(measureAndSafe, 1000);
|
||||
setTimeout(measureAndSafe, 2000);
|
||||
setTimeout(measureAndSafe, 3000);
|
||||
|
||||
setTimeout(async () => {
|
||||
if (success) {
|
||||
for (let c of await Container.find({})) {
|
||||
if (c.sensorType != SensorType.NONE) {
|
||||
c.sensorTare = c.sensorTare / 4;
|
||||
await c.save();
|
||||
}
|
||||
}
|
||||
WebSocketHandler.answerRequest(type, {success: true, msg: "OK"});
|
||||
}
|
||||
}, 4000);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
Reference in New Issue
Block a user