Took 32 minutes
This commit is contained in:
Tobias Hopp 2022-11-18 00:01:56 +01:00
parent 03dd0e0fb6
commit 016f4bc3fe
7 changed files with 77 additions and 5 deletions

View File

@ -7,6 +7,7 @@
cursor: none !important; cursor: none !important;
font-weight: 500; font-weight: 500;
margin-right: 2%; margin-right: 2%;
transition: 0.2s all;
} }

View File

@ -37,7 +37,7 @@ h1 {
font-size: 1.74em; font-size: 1.74em;
font-weight: 500; font-weight: 500;
margin-bottom: 2%; margin-bottom: 2%;
color: white;
} }
@ -100,13 +100,22 @@ h1 {
#overlay #bottom #menuBtn { #overlay #bottom #menuBtn {
height: 100%; height: 100%;
width: 10%; width: 10%;
background-color: blue; background-color: #21212d;
padding: 1px; padding: 1px;
font-size: 1.5em; font-size: 1.5em;
border: 0; border: 0;
border-radius: 0 8px 0 0; border-radius: 0 12px 0 0;
color: white; color: white;
float: left; float: left;
transition: all 0.4s;
}
#menuBtn:hover {
background-color: #313147 !important;
}
#menuBtn:disabled {
background-color: #777 !important;
color: #C1C1C1 !important;
} }

View File

@ -2,6 +2,7 @@ import {WebSocketPayload} from "./WebSocketPayload";
import {WebSocketEvent} from "./WebSocketEvent"; import {WebSocketEvent} from "./WebSocketEvent";
import {iTender} from "./iTender"; import {iTender} from "./iTender";
import {Settings} from "./Settings"; import {Settings} from "./Settings";
import Container from "./database/Container";
export class WebSocketHandler { export class WebSocketHandler {
private static _ws: WebSocket; private static _ws: WebSocket;
@ -40,4 +41,11 @@ export class WebSocketHandler {
WebSocketHandler.send(payload).then(resolve); WebSocketHandler.send(payload).then(resolve);
}) })
} }
static sendContainers() {
return new Promise(async resolve => {
let payload = new WebSocketPayload(WebSocketEvent.CONTAINERS, false, ( await Container.find() ));
WebSocketHandler.send(payload).then(resolve);
})
}
} }

View File

@ -71,12 +71,20 @@ export class iTender {
return new Promise(async resolve => { return new Promise(async resolve => {
for (let c of (await Container.find({enabled: true}))) { for (let c of (await Container.find({enabled: true}))) {
try { try {
if( !c.sensorFilledMax || c.sensorFilledMin )
{
c.enabled = false;
await c.save();
continue;
}
let rand = Math.random() * 5; let rand = Math.random() * 5;
if (c.sensorType == SensorType.ULTRASOUND) { if (c.sensorType == SensorType.ULTRASOUND) {
let sensor = new HCSR04(c.sensorPin1, c.sensorPin2); let sensor = new HCSR04(c.sensorPin1, c.sensorPin2);
c.rawData = sensor.distance(); c.rawData = sensor.distance();
c.rawData = rand; c.rawData = rand;
c.filled = c.rawData * c.sensorFilledMin / 100; c.filled = c.rawData * c.sensorFilledMin / 100;
} else if (c.sensorType == SensorType.LOADCELL) { } else if (c.sensorType == SensorType.LOADCELL) {
@ -90,6 +98,7 @@ export class iTender {
c.filled = -1; c.filled = -1;
c.rawData = 0; c.rawData = 0;
} }
console.log(c);
await c.save(); await c.save();
} }
log("Containers measured!"); log("Containers measured!");

View File

@ -23,6 +23,7 @@ router.ws('/', async (ws, req, next) => {
WebSocketHandler.ws = ws; WebSocketHandler.ws = ws;
await WebSocketHandler.sendRunningConfig(); await WebSocketHandler.sendRunningConfig();
await WebSocketHandler.sendContainers();
await WebSocketHandler.sendStatus(); await WebSocketHandler.sendStatus();
async function sendWhenReady() { async function sendWhenReady() {
@ -64,20 +65,28 @@ router.ws('/', async (ws, req, next) => {
} }
case WebSocketEvent.CONTAINERS: { case WebSocketEvent.CONTAINERS: {
let data = msg.data as { pumpPin: number; sensorType: SensorType; sensor1: number; sensor2: number; volume: number; }[]; let data = msg.data as { pumpPin: number; sensorType: SensorType; sensor1: number; sensor2: number; volume: number; }[];
await Container.remove({}); await Container.deleteMany({});
let i = 0; let i = 0;
for (let c of data) { for (let c of data) {
let container = new Container(); let container = new Container();
container.slot = i; container.slot = i;
container.volume = c.volume; container.volume = c.volume;
container.pumpPin = c.pumpPin;
container.sensorType = c.sensorType; container.sensorType = c.sensorType;
container.sensorPin1 = c.sensor1; container.sensorPin1 = c.sensor1;
container.sensorPin2 = c.sensor2; container.sensorPin2 = c.sensor2;
container.enabled = true; container.enabled = true;
container.autoDisabled = true; container.autoDisabled = true;
await container.save();
i++; i++;
} }
break;
}
case WebSocketEvent.CONFIG: {
// ToDo
// Danach setup modus aus
} }
} }
}); });

View File

@ -3,6 +3,10 @@ import {IDrink} from "../database/IDrink";
import {Modal} from "./Modal"; import {Modal} from "./Modal";
import {ButtonType} from "./ButtonType"; import {ButtonType} from "./ButtonType";
import {Pane} from "./Pane"; import {Pane} from "./Pane";
import {IContainer} from "../database/IContainer";
import {Setup} from "./Setup";
import * as Events from "events";
import {SensorType} from "../SensorType";
export class WebHandler { export class WebHandler {
private static containers = []; private static containers = [];
@ -58,6 +62,37 @@ ${ingredients}`*/ //todo
public static onContainerUpdate(payload: WebSocketPayload) { public static onContainerUpdate(payload: WebSocketPayload) {
let containerDiv = document.getElementById("setupContainers") as HTMLDivElement;
containerDiv.innerHTML = "";
let containers = payload.data as IContainer[];
for (let c of containers) {
Setup.addSetupContainer();
}
let i = 0;
let list = containerDiv.getElementsByTagName("div");
for (let c of containers) {
let current = list[i] as HTMLDivElement;
let selects = current.getElementsByTagName("select");
(selects[0] as HTMLSelectElement).value = c.pumpPin.toString();
let type;
if( c.sensorType == SensorType.NONE )
type = "-1";
else if( c.sensorType == SensorType.ULTRASOUND )
type = "0";
else
type = "1";
(selects[1] as HTMLSelectElement).value = type;
(selects[2] as HTMLSelectElement).value = c.sensorPin1.toString();
(selects[3] as HTMLSelectElement).value = c.sensorPin2.toString();
(selects[4] as HTMLSelectElement).value = c.volume.toString();
let event = new Event('change', { bubbles: true });
selects[1].dispatchEvent( event );
i++;
}
} }

View File

@ -31,7 +31,8 @@ block setup
div#setupContainers div#setupContainers
button.btn.btn-success#setup_saveBtn(style="grid-row: span 1; grid-column: span 2; border-radius: 15px; font-size: 1.2em;") Speichern button.btn.btn-danger#setup_cancelBtn(style="grid-row: span 1; grid-column: span 1; border-radius: 15px; font-size: 1.2em;" onclick="window.location.reload()") Abbrechen
button.btn.btn-success#setup_saveBtn(style="grid-row: span 1; grid-column: span 1; border-radius: 15px; font-size: 1.2em;") Speichern
block menu block menu
// Menu // Menu