// 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; }