Advertisement
Guest User

Untitled

a guest
Aug 21st, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.06 KB | None | 0 0
  1. // P8, Lisa-Marie Rosendorff und Marie Steinbrügge
  2. // 2019 Marie Steinbrügge (es wurde auf Code des Projekts »vendy« aus dem Jahr 2018 zurückgegriffen)
  3.  
  4.  
  5. //Initialisierung der Datenbank
  6. const sqlite3 = require('sqlite3').verbose();
  7.  
  8. //Spezifikation der Datenbank
  9. let db = new sqlite3.Database('./db/Amon-database.db');
  10.  
  11. var Puck_ID = [];
  12. var Puck_Position = [];
  13. var StepDone = new Boolean ();
  14. var StepCount = 1;
  15. var activeStep;
  16. var timer = 0;
  17.  
  18.  
  19. //////////////////////////////////////////////////////////////////////////////////////////////////////// MQTT-STUFF
  20.  
  21. var mqtt = require('mqtt') //MQTT Initialisieren
  22. 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)
  23. var messageText //Variable ist hier noch nicht gefüllt
  24. var messageInt;
  25.  
  26. client.on('connect', function () { //Funktion zum Aufbau der Verbindung
  27. console.log("connected") //Signalisiert eine aufrechte Verbindung
  28. client.subscribe('Badezimmer/Sensordaten/+/Bewegung'); //Abonniert das gewünschte Topic
  29. client.subscribe('Badezimmer/Sensordaten/+/Error');
  30. client.publish('Badezimmer/ErrorMessage', "404");
  31. })
  32.  
  33. ////////////////////////////////////////////////////////////////////////////////////////////////////////
  34.  
  35.  
  36. //////////////////////////////////////////////////////////////////////////////////////////////////////// DATENBANK + AUSSCHALTEN PUCK
  37.  
  38. //aus der Datenbank der Tabelle STEPS soll die StepID, die PuckID und die Position ausgelesen und nach der Position sortiert werden
  39. var order = `SELECT
  40. StepID, PuckID, Position
  41.  
  42. FROM
  43. STEPS
  44.  
  45. ORDER BY
  46. Position`;
  47.  
  48. db.all(order, [], (err, rows) => { //aus der Datenbank werden Daten ausgelesen (s.o.)
  49. if (err) {
  50. throw err;
  51. }
  52.  
  53. rows.forEach((row) => {
  54. Puck_ID.push(row.PuckID); //ausgelesene PuckID wird in ein Array verpackt
  55. Puck_Position.push(row.Position); //ausgelesene Position wird in ein Array verpackt
  56. });
  57.  
  58. StepDone = false;
  59. ProcessDone = false;
  60.  
  61. activeStep = Puck_ID[StepCount-1];
  62. client.publish('Badezimmer/Zähneputzen/Step/'+activeStep, "An"); //erster Prozessschritt und zugehöriger Puck wird aktiviert
  63. StepCount = StepCount.toString();
  64. console.log(StepCount);
  65. client.publish('Zähneputzen/Step/Abfolge', StepCount); //dem Fixpunkt wird der erste Prozessschritt mitgeteilt
  66.  
  67. });
  68.  
  69. client.on('message', function (topic, message) { //Funktion die die ankommenden Messages verarbeitet
  70. messageText = message.toString(); //Message wird in einen String verpackt
  71. messageInt = parseInt(messageText); //der String wird in ein Integer umgewandelt
  72.  
  73. db.all(order, [], (err, rows) => {
  74. if (err) {
  75. throw err;
  76. }
  77.  
  78. //es werden alle PuckIDs kontrolliert
  79. for (var i = 0; i < Puck_ID.length; i++) {
  80.  
  81. if(messageInt == Puck_ID[i] && StepCount == Puck_Position[i]){ //sollte eine ID sowie der aktuelle Schrittzähler mit der Puck-Position übereinstimmen, dann…
  82. console.log('Step existiert');
  83. console.log(StepCount+" Step existiert Funktion");
  84. StepDone = true; //…wird der Schritt als erledigt angesehen und…
  85. activeStep = Puck_ID[StepCount-1];
  86. client.publish('Badezimmer/Zähneputzen/Step/'+activeStep, "Aus"); //…der zugehörige Puck wird deaktivert
  87.  
  88. }
  89.  
  90. else{
  91. console.log('Step existiert nicht'); //sollte dies nicht zutreffen, existiert der Step mit dem Puck nicht
  92. }
  93. }
  94.  
  95. /*if(messageText == "404"){
  96. console.log('Ertappt!');
  97. client.publish('Zähneputzen/Step/Abfolge', "Fail");
  98. StepDone == false;
  99.  
  100. setTimeout(function () {
  101.  
  102. //StepCount = StepCount.toString();
  103. console.log(StepCount+" 404 Funktion");
  104. console.log("Hey DUUUUDEEE");
  105. //client.publish('Zähneputzen/Step/Abfolge', StepCount); //dem Fixpunkt wird der aktuelle Prozessschritt mitgeteilt
  106.  
  107. }, 7000);
  108. }*/
  109.  
  110. ////////////////////////////////////////////////////////////////////////////////////////////////////////
  111.  
  112.  
  113. //////////////////////////////////////////////////////////////////////////////////////////////////////// SCHRITTABFOLGE + EINSCHALTEN PUCK
  114.  
  115. if (StepDone == true){ //ist ein Schritt erledigt, so…
  116.  
  117. StepCount++; //…wird der Schrittzähler hochgesetzt und…
  118. console.log(StepCount + " StepDone Funktion");
  119. StepDone = false; //…auf falsch gesetzt
  120.  
  121. activeStep = Puck_ID[StepCount-1];
  122. client.publish('Badezimmer/Zähneputzen/Step/'+activeStep, "An"); //der zum nächsten Schritt zugehörige Puck wird aktiviert
  123. StepCount = StepCount.toString();
  124. console.log(StepCount + " StepDone2 Funktion");
  125. client.publish('Zähneputzen/Step/Abfolge', StepCount); //dem Fixpunkt wird der aktuelle Prozessschritt mitgeteilt
  126. client.publish('Badezimmer/ErrorMessage', "404");
  127.  
  128. if(StepCount == 7){ //sollte der Schrittzähler 7 erreichen, wird der Prozess als erledigt betrachtet und…
  129. console.log("JOB FINISHED");
  130. client.publish('Zähneputzen/Step/Abfolge', "Done"); //…dem Fixpunkt wird dies mitgeteilt
  131. }
  132. }
  133. else{
  134. //client.publish('Badezimmer/Sensordaten/Error', "Fail");
  135. console.log("FUCK");
  136. /*console.log(StepCount+" FUCK Funktion");
  137. console.log('Ertappt!');
  138. StepDone == false;
  139.  
  140. setTimeout(function () {
  141.  
  142. StepCount = StepCount.toString();
  143. console.log(StepCount+" 404 Funktion");
  144. console.log("Hey DUUUUDEEE");
  145. client.publish('Zähneputzen/Step/Abfolge', StepCount); //dem Fixpunkt wird der aktuelle Prozessschritt mitgeteilt
  146.  
  147. }, 7000);*/
  148. }
  149. });
  150. });
  151.  
  152. ////////////////////////////////////////////////////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement