You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

176 lines
5.7KB

  1. <!--HTML Seite, die das Video und saemtliche Zustandsdaten des Raspberry Pi anzeigt-->
  2. <!DOCTYPE HTML>
  3. <html>
  4. <head>
  5. <title>IKT CAR MONITORING</title>
  6. <style>
  7. body {
  8. background: #555;
  9. text-align: left;
  10. margin-top: 1%;
  11. zoom: 100%;
  12. }
  13. p {color:white;max-width: 50%;}
  14. th {color:white;}
  15. #column {
  16. width: 50%;
  17. float: left;
  18. position: relative;
  19. }
  20. </style>
  21. </head>
  22. <body>
  23. <script type="text/javascript" src="smoothie.js"></script>
  24. Parking control: <button id="btn_start">Start</button>
  25. <button id="btn_stop">Stop</button>
  26. <br>
  27. <!--Aufgabe 4-->
  28. <!--Für jeden Datensatz muss eine Zeichenfläche 'canvas' definiert werden-->
  29. <table border="1">
  30. <tr>
  31. <td>Geschwindigkeit:<br>
  32. <canvas class="canvas" id="speed" width="400" height="150"></canvas><br></td>
  33. <td>Himmelrichtung:<br>
  34. <canvas class="canvas" id="compass" width="400" height="150"></canvas><br></td>
  35. </tr>
  36. <tr>
  37. <td>Abstand vom Auto zum Hindernis:<br></td>
  38. <td>IR:<br>
  39. <canvas class="canvas" id="dist0" width="400" height="150"></canvas><br></td>
  40. </tr>
  41. <tr>
  42. <td>Front:<br>
  43. <canvas class="canvas" id="dist1" width="400" height="150"></canvas><br></td>
  44. <td>Rear:<br>
  45. <canvas class="canvas" id="dist2" width="400" height="150"></canvas><br></td>
  46. </tr>
  47. <tr>
  48. <td>Länge der Parklücke:<br>
  49. <canvas class="canvas" id="length" width="400" height="150"></canvas><br></td>
  50. <td>Encoder Traveled distance:<br>
  51. <canvas class="canvas" id="travel" width="400" height="150"></canvas><br></td>
  52. </tr>
  53. </table>
  54. <!--Einparken -->
  55. <!--Es müssen Knöpfe zum Starten und Stoppen des Parkvorgangs definiert werden-->
  56. <script type="text/javascript">
  57. // Aufgabe 4
  58. //
  59. // Damit die Daten dargestellt werden können muss ein Websocket geöffnet werden, der bei jeder neuen Nachricht die Daten aus dieser Nachricht rausholt und visualisiert.
  60. var dataSocket = new WebSocket("ws://192.168.1.42:8081/ws");
  61. // THE IP NEED TO BE CHANGED!
  62. var reply = 'nop';
  63. document.getElementById("btn_stop").addEventListener('click',
  64. ()=>{
  65. reply = 'stop_true';
  66. dataSocket.send(reply);
  67. console.log("ParkCtrl: Stopping");
  68. });
  69. document.getElementById("btn_start").addEventListener('click',
  70. ()=>{
  71. reply = 'park_true';
  72. dataSocket.send(reply);
  73. console.log("ParkCtrl: Parking");
  74. });
  75. dataSocket.onopen = function(){
  76. console.log("connected");
  77. dataSocket.send('connection established')
  78. };
  79. dataSocket.onmessage = function(evt) {
  80. // Aufgabe 4
  81. // Die empfangenen Daten müssen an die Charts weitergegeben werden.
  82. // evt.data == {"speed":"value", "compass":"value", "dist":"value", "length":"value"}
  83. console.log(evt.data);
  84. dataSocket.send(reply);
  85. var msg = JSON.parse(evt.data);
  86. speed.append(new Date().getTime(), parseFloat(msg.speed));
  87. compass.append(new Date().getTime(), parseFloat(msg.compass));
  88. dist0.append(new Date().getTime(), parseFloat(msg.dist0));
  89. dist1.append(new Date().getTime(), parseFloat(msg.dist1));
  90. dist2.append(new Date().getTime(), parseFloat(msg.dist2));
  91. length.append(new Date().getTime(), parseFloat(msg.length));
  92. travel.append(new Date().getTime(), parseFloat(msg.travel));
  93. };
  94. dataSocket.onclose = function(evt) {
  95. console.log("disconnected");
  96. };
  97. // Aufgabe 4
  98. //
  99. // Für jeden Datensatz muss ein eine SmoothieChart in einem vorher definierten canvas-Element erstellt werden.
  100. var speedChart = new SmoothieChart({ minValue: 0, maxValue: 15, grid: { strokeStyle: 'rgb(125, 0, 0)', fillStyle: 'rgb(60, 0, 0)', lineWidth: 1, millisPerLine: 500, verticalSections: 6 } });
  101. var speed = new TimeSeries();
  102. speedChart.addTimeSeries(speed);
  103. speedChart.streamTo(document.getElementById("speed"), 100);
  104. var compassChart = new SmoothieChart({ minValue: 0, maxValue: 360, grid: { strokeStyle: 'rgb(125, 0, 0)', fillStyle: 'rgb(60, 0, 0)', lineWidth: 1, millisPerLine: 500, verticalSections: 6 } });
  105. var compass = new TimeSeries();
  106. compassChart.addTimeSeries(compass);
  107. compassChart.streamTo(document.getElementById("compass"), 100);
  108. var dist0Chart = new SmoothieChart({ minValue: 0, maxValue: 100, grid: { strokeStyle: 'rgb(125, 0, 0)', fillStyle: 'rgb(60, 0, 0)', lineWidth: 1, millisPerLine: 500, verticalSections: 6 } });
  109. var dist0 = new TimeSeries();
  110. dist0Chart.addTimeSeries(dist0);
  111. dist0Chart.streamTo(document.getElementById("dist0"), 100);
  112. var dist1Chart = new SmoothieChart({ minValue: 0, maxValue: 100, grid: { strokeStyle: 'rgb(125, 0, 0)', fillStyle: 'rgb(60, 0, 0)', lineWidth: 1, millisPerLine: 500, verticalSections: 6 } });
  113. var dist1 = new TimeSeries();
  114. dist1Chart.addTimeSeries(dist1);
  115. dist1Chart.streamTo(document.getElementById("dist1"), 100);
  116. var dist2Chart = new SmoothieChart({ minValue: 0, maxValue: 100, grid: { strokeStyle: 'rgb(125, 0, 0)', fillStyle: 'rgb(60, 0, 0)', lineWidth: 1, millisPerLine: 500, verticalSections: 6 } });
  117. var dist2 = new TimeSeries();
  118. dist2Chart.addTimeSeries(dist2);
  119. dist2Chart.streamTo(document.getElementById("dist2"), 100);
  120. var lengthChart = new SmoothieChart({ minValue: 0, maxValue: 300, grid: { strokeStyle: 'rgb(125, 0, 0)', fillStyle: 'rgb(60, 0, 0)', lineWidth: 1, millisPerLine: 500, verticalSections: 6 } });
  121. var length = new TimeSeries();
  122. lengthChart.addTimeSeries(length);
  123. lengthChart.streamTo(document.getElementById("length"), 100);
  124. var travelChart = new SmoothieChart({ minValue: 0, maxValue: 500, grid: { strokeStyle: 'rgb(125, 0, 0)', fillStyle: 'rgb(60, 0, 0)', lineWidth: 1, millisPerLine: 500, verticalSections: 6 } });
  125. var travel = new TimeSeries();
  126. travelChart.addTimeSeries(length);
  127. travelChart.streamTo(document.getElementById("travel"), 100);
  128. </script>
  129. </body>
  130. </html>