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;
font-weight: 500;
margin-right: 2%;
transition: 0.2s all;
}

View File

@ -37,7 +37,7 @@ h1 {
font-size: 1.74em;
font-weight: 500;
margin-bottom: 2%;
color: white;
}
@ -100,13 +100,22 @@ h1 {
#overlay #bottom #menuBtn {
height: 100%;
width: 10%;
background-color: blue;
background-color: #21212d;
padding: 1px;
font-size: 1.5em;
border: 0;
border-radius: 0 8px 0 0;
border-radius: 0 12px 0 0;
color: white;
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 {iTender} from "./iTender";
import {Settings} from "./Settings";
import Container from "./database/Container";
export class WebSocketHandler {
private static _ws: WebSocket;
@ -40,4 +41,11 @@ export class WebSocketHandler {
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 => {
for (let c of (await Container.find({enabled: true}))) {
try {
if( !c.sensorFilledMax || c.sensorFilledMin )
{
c.enabled = false;
await c.save();
continue;
}
let rand = Math.random() * 5;
if (c.sensorType == SensorType.ULTRASOUND) {
let sensor = new HCSR04(c.sensorPin1, c.sensorPin2);
c.rawData = sensor.distance();
c.rawData = rand;
c.filled = c.rawData * c.sensorFilledMin / 100;
} else if (c.sensorType == SensorType.LOADCELL) {
@ -90,6 +98,7 @@ export class iTender {
c.filled = -1;
c.rawData = 0;
}
console.log(c);
await c.save();
}
log("Containers measured!");

View File

@ -23,6 +23,7 @@ router.ws('/', async (ws, req, next) => {
WebSocketHandler.ws = ws;
await WebSocketHandler.sendRunningConfig();
await WebSocketHandler.sendContainers();
await WebSocketHandler.sendStatus();
async function sendWhenReady() {
@ -64,20 +65,28 @@ router.ws('/', async (ws, req, next) => {
}
case WebSocketEvent.CONTAINERS: {
let data = msg.data as { pumpPin: number; sensorType: SensorType; sensor1: number; sensor2: number; volume: number; }[];
await Container.remove({});
await Container.deleteMany({});
let i = 0;
for (let c of data) {
let container = new Container();
container.slot = i;
container.volume = c.volume;
container.pumpPin = c.pumpPin;
container.sensorType = c.sensorType;
container.sensorPin1 = c.sensor1;
container.sensorPin2 = c.sensor2;
container.enabled = true;
container.autoDisabled = true;
await container.save();
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 {ButtonType} from "./ButtonType";
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 {
private static containers = [];
@ -58,6 +62,37 @@ ${ingredients}`*/ //todo
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
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
// Menu