xxxxxxxxxx
41
let SensorData; // Globale Variable die von allen Funktionen benutzt werden können
let feinstaub; // Globale Variable die von allen Funktionen benutzt werden können
function setup() { // Setup wir nur einmal Ausgeführt
createCanvas(400, 350);
checkAPI(); // Rufe einmal die Funktion checkAPI auf und führe das aus, was enthalten ist (LoadJSON)
setInterval(checkAPI, 300000); // wiederhole alle 5 Minuten (300000 Millisekunden) den Aufruf der funktion checkAPI
frameRate(24); // Setzt die Bildwiederholungsrate auf 24 Bilder die Sekunde
}
function checkAPI() { // Diese Funktion wird in Setup aufgerufen und durch setInterval dann alle 5 Minuten
loadJSON("https://api.opensensemap.org/boxes/58d82cf2b69fac0011215087", gotData); //läd die daten von der SenseBox mit der ID 58d82cf2b69fac0011215087 und übergibt diese an die Funktion gotData
}
function gotData(data) { // Bekommt die Daten von der loadJson funktion. Die Json wird in data übergeben
console.log(data); // Schreibe in die Console die Daten von der Sensebox
console.log("###########");
console.log(data.sensors[2].lastMeasurement.value); // Schreibe in die Console die Daten von dem messwert des feinstaubsensors PM10 der Sensebox
SensorData = data; // damit später die Daten genutz werden können außerhalb dieser funktion übergebe wird data (lokale Variable) der SensorData(Globale Variable) übergeben.
}
function draw() { // In Draw zeichnen wir unsere Grafiken, diese Funktion wird immer wieder ausgeführt.
background(255, 0, 255);
if (SensorData) { // Wenn die Variable Sensordata gesetzt wurde, wird der restliche teil ausgeführt
feinstaub = SensorData.sensors[3].lastMeasurement.value; // In einer JSON Datei können mehrere values gespeichert wereden, diese können dann auch seperat angesprochen werden. In diesem Fall wird nach dem vierten (in der Programmierung wird von 0 an gezählt) Sensor und deren letzem Messwert gefragt.
fill(20); //Der spätere Punkt bekommt die Farbe grau zugeteilt
noStroke(); // soll keien Umrandung haben
for(let i = 0; i<5*int(feinstaub); i++){ // Zeichne an zufälligen orten auf dem Canvas dem Wert feinstaub entsprechend Punkte
let xPos = random(0,width); // eine zufällige x Position
let yPos = random(0,height); // eine zufällige y Position
ellipse(xPos, yPos, 10, 10); // zeichne einen Kreis am Punkt xPos, yPos mit dem durchmesser 10
}
}
}