Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // P8, Lisa-Marie Rosendorff und Marie Steinbrügge
- // 2019 Marie Steinbrügge (es wurde auf Code des Projekts »vendy« aus dem Jahr 2018 zurückgegriffen)
- //Initialisierung der Datenbank
- const sqlite3 = require('sqlite3').verbose();
- //Spezifikation der Datenbank
- let db = new sqlite3.Database('./db/Amon-database.db');
- var Puck_ID = [];
- var Puck_Position = [];
- var StepDone = new Boolean ();
- var StepCount = 1;
- var activeStep;
- var timer = 0;
- //////////////////////////////////////////////////////////////////////////////////////////////////////// MQTT-STUFF
- var mqtt = require('mqtt') //MQTT Initialisieren
- var client = mqtt.connect('mqtt://192.168.137.21') //Verbindung zum Server durch IP-Adresse (I-Net-Adresse des Computers auf dem der Server läuft)
- var messageText //Variable ist hier noch nicht gefüllt
- var messageInt;
- client.on('connect', function () { //Funktion zum Aufbau der Verbindung
- console.log("connected") //Signalisiert eine aufrechte Verbindung
- client.subscribe('Badezimmer/Sensordaten/+/Bewegung'); //Abonniert das gewünschte Topic
- client.subscribe('Badezimmer/Sensordaten/+/Error');
- client.publish('Badezimmer/ErrorMessage', "404");
- })
- ////////////////////////////////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////////////////////////////// DATENBANK + AUSSCHALTEN PUCK
- //aus der Datenbank der Tabelle STEPS soll die StepID, die PuckID und die Position ausgelesen und nach der Position sortiert werden
- var order = `SELECT
- StepID, PuckID, Position
- FROM
- STEPS
- ORDER BY
- Position`;
- db.all(order, [], (err, rows) => { //aus der Datenbank werden Daten ausgelesen (s.o.)
- if (err) {
- throw err;
- }
- rows.forEach((row) => {
- Puck_ID.push(row.PuckID); //ausgelesene PuckID wird in ein Array verpackt
- Puck_Position.push(row.Position); //ausgelesene Position wird in ein Array verpackt
- });
- StepDone = false;
- ProcessDone = false;
- activeStep = Puck_ID[StepCount-1];
- client.publish('Badezimmer/Zähneputzen/Step/'+activeStep, "An"); //erster Prozessschritt und zugehöriger Puck wird aktiviert
- StepCount = StepCount.toString();
- console.log(StepCount);
- client.publish('Zähneputzen/Step/Abfolge', StepCount); //dem Fixpunkt wird der erste Prozessschritt mitgeteilt
- });
- client.on('message', function (topic, message) { //Funktion die die ankommenden Messages verarbeitet
- messageText = message.toString(); //Message wird in einen String verpackt
- messageInt = parseInt(messageText); //der String wird in ein Integer umgewandelt
- db.all(order, [], (err, rows) => {
- if (err) {
- throw err;
- }
- //es werden alle PuckIDs kontrolliert
- for (var i = 0; i < Puck_ID.length; i++) {
- if(messageInt == Puck_ID[i] && StepCount == Puck_Position[i]){ //sollte eine ID sowie der aktuelle Schrittzähler mit der Puck-Position übereinstimmen, dann…
- console.log('Step existiert');
- console.log(StepCount+" Step existiert Funktion");
- StepDone = true; //…wird der Schritt als erledigt angesehen und…
- activeStep = Puck_ID[StepCount-1];
- client.publish('Badezimmer/Zähneputzen/Step/'+activeStep, "Aus"); //…der zugehörige Puck wird deaktivert
- }
- else{
- console.log('Step existiert nicht'); //sollte dies nicht zutreffen, existiert der Step mit dem Puck nicht
- }
- }
- /*if(messageText == "404"){
- console.log('Ertappt!');
- client.publish('Zähneputzen/Step/Abfolge', "Fail");
- StepDone == false;
- setTimeout(function () {
- //StepCount = StepCount.toString();
- console.log(StepCount+" 404 Funktion");
- console.log("Hey DUUUUDEEE");
- //client.publish('Zähneputzen/Step/Abfolge', StepCount); //dem Fixpunkt wird der aktuelle Prozessschritt mitgeteilt
- }, 7000);
- }*/
- ////////////////////////////////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////////////////////////////// SCHRITTABFOLGE + EINSCHALTEN PUCK
- if (StepDone == true){ //ist ein Schritt erledigt, so…
- StepCount++; //…wird der Schrittzähler hochgesetzt und…
- console.log(StepCount + " StepDone Funktion");
- StepDone = false; //…auf falsch gesetzt
- activeStep = Puck_ID[StepCount-1];
- client.publish('Badezimmer/Zähneputzen/Step/'+activeStep, "An"); //der zum nächsten Schritt zugehörige Puck wird aktiviert
- StepCount = StepCount.toString();
- console.log(StepCount + " StepDone2 Funktion");
- client.publish('Zähneputzen/Step/Abfolge', StepCount); //dem Fixpunkt wird der aktuelle Prozessschritt mitgeteilt
- client.publish('Badezimmer/ErrorMessage', "404");
- if(StepCount == 7){ //sollte der Schrittzähler 7 erreichen, wird der Prozess als erledigt betrachtet und…
- console.log("JOB FINISHED");
- client.publish('Zähneputzen/Step/Abfolge', "Done"); //…dem Fixpunkt wird dies mitgeteilt
- }
- }
- else{
- //client.publish('Badezimmer/Sensordaten/Error', "Fail");
- console.log("FUCK");
- /*console.log(StepCount+" FUCK Funktion");
- console.log('Ertappt!');
- StepDone == false;
- setTimeout(function () {
- StepCount = StepCount.toString();
- console.log(StepCount+" 404 Funktion");
- console.log("Hey DUUUUDEEE");
- client.publish('Zähneputzen/Step/Abfolge', StepCount); //dem Fixpunkt wird der aktuelle Prozessschritt mitgeteilt
- }, 7000);*/
- }
- });
- });
- ////////////////////////////////////////////////////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement