Files
J1B1-CMB/web/js-ts/serialv2.js
2023-10-31 13:35:44 +01:00

157 lines
4.9 KiB
JavaScript

// Declare alle functies
// lege variabel kan nog ingevult worden
// getal is een float of int
// [] betekent array
let port;
let reader;
const decoder = new TextDecoder("utf-8");
let readibleoutput = 0;
let xArray = [];
let tempArray = [];
let humidArray = [];
let lichtArray = [];
let TempAdvies;
let HumidAdvies;
let LichtAdvies;
let VolledigAdvies;
let TempWaardes;
let LuchtVochtigsheidWaardes;
let LichtWaardes;
const between = (x, min, max) => {
return x >= min && x <= max;
};
// Request a port and open a connection.
async function connect() {
//vraag aan de browser om een serial port te selecteren
port = await navigator.serial.requestPort();
await port.open({ baudRate: 9600 });
reader = port.readable.getReader();
console.log("Port is open!");
readLoop()
}
// Read data
async function readLoop() {
let buffer = [];
// loop until reader.cancel() is called
while (true) {
// Wait for data
const { value, done } = await reader.read();
for (let iByte = 0; iByte < value.length; iByte++) {
let singleByte = value[iByte];
//functie maken er van met boolean!!!
if (singleByte != 10) {
buffer.push(singleByte);
}
else {
let sensorString = decoder.decode(new Uint8Array(buffer));
let SensorValues;
//zet alle data in een json array
try {
SensorValues = JSON.parse(sensorString);
} catch (e) {
console.log("json niet geparserd");
}
if (SensorValues) {
console.log(SensorValues)
//zet alle data in een array
tempArray.push(SensorValues[0])
humidArray.push(SensorValues[1])
lichtArray.push(SensorValues[2])
}
buffer = [];
// var array = sensorString.split(','),
// temp = array[0], humid = array[1], licht = array[2];
// console.log(temp);
// console.log(humid);
// console.log(licht);
document.getElementById("temp").innerHTML = SensorValues[0];
document.getElementById("humid").innerHTML = SensorValues[1];
document.getElementById("licht").innerHTML = SensorValues[2];
plotly(tempGraph, tempArray)
plotly(humidGraph, humidArray)
plotly(lightGraph, lichtArray)
Advies(SensorValues[0], SensorValues[1], SensorValues[2])
AdviesUpdate()
}
// Show the received data in the console
// Exit the loop when done
if (done) {
console.log('[readLoop] DONE', done);
reader.releaseLock();
break;
}
}
}
}
// Sluit de poort
async function disconnect() {
await reader.cancel();
await port.close();
console.log("Port is closed!");
}
//plotly grafiek
function plotly(graph, dataArray) {
Plotly.newPlot(graph, [{
y: dataArray,
mode: 'lines',
line: { color: '#80CAF6' }
}]);
}
//eigen library maken voor serial
function Advies(TempWaardes, LuchtVochtigsheidWaardes, LichtWaardes) {
if (TempWaardes < 0) {
// document.getElementById("TempAdvies").innerHTML = "Ga naar binnen of trek een dikke jas aan. Het is vriest!";
TempAdvies = "Ga naar binnen of trek een dikke jas aan. Het is vriest! "
}
if (between(TempWaardes, 0, 10)) {
// document.getElementById("TempAdvies").innerHTML = "Het is redelijk koud, pak een jas";
TempAdvies = "Het is redelijk koud, pak een jas. ";
}
if (between(TempWaardes, 10, 20)) {
TempAdvies = "Je kan zonder jas rondlopen. Een hoodie zou perfect zijn. ";
}
if (between(TempWaardes, 20, 35)) {
TempAdvies = "Het is lekker warm je kan in een shirt rondlopen. ";
}
if (between(LuchtVochtigsheidWaardes, 0 , 10)) {
HumidAdvies = "De lucht is kurkdroog. "
}
if (between(LuchtVochtigsheidWaardes, 10 , 50)) {
HumidAdvies = "De lucht voelt normaal aan. "
}
if (between(LuchtVochtigsheidWaardes, 50 , 75)) {
HumidAdvies = "De lucht voelt wat vochtig aan. "
}
if (between(LuchtVochtigsheidWaardes, 75 , 100)) {
HumidAdvies = "De lucht voelt heel vochtig aan. "
}
if (LichtWaardes == 0 < 400) {
LichtAdvies = "Zet het licht aan holbewoner."
}
}
function AdviesUpdate(){
VolledigAdvies = TempAdvies + HumidAdvies + LichtAdvies;
document.getElementById("Advies").innerHTML = VolledigAdvies;
}