setup.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. <!DOCTYPE html>
  2. <html lang="en" xml:lang="en">
  3. <head>
  4. <title>AI on the edge</title>
  5. <meta charset="UTF-8" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <style>
  8. .h_iframe_explain iframe {
  9. width:995px;
  10. height:155px;
  11. padding:5px;
  12. padding-top:0px;
  13. padding-bottom:0px;
  14. }
  15. .h_iframe iframe {
  16. width:995px;
  17. height:800px;
  18. padding:5px;
  19. }
  20. h1 {font-size: 2em; margin-block-end: 0.3em;}
  21. h2 {font-size: 1.5em;margin-block-start: 0.3em;}
  22. h3 {font-size: 1.2em;}
  23. p {font-size: 1em;}
  24. .button {
  25. padding: 5px 10px;
  26. width: 125px;
  27. font-size: 16px;
  28. }
  29. table {
  30. width: 1015px;
  31. padding: 0px;
  32. }
  33. .main {
  34. display: flex;
  35. width: 100%;
  36. height: 100%;
  37. flex-direction: column;
  38. overflow: hidden;
  39. }
  40. body, html {
  41. width: 100%;
  42. height: 100%;
  43. min-height: 800px;
  44. margin: 0px 0px 0px 2px;
  45. padding: 0;
  46. font-family: arial;
  47. width: -moz-fit-content;
  48. width: fit-content;
  49. }
  50. </style>
  51. <script type="text/javascript">
  52. function resizeIframe(obj) {
  53. obj.style.height = obj.contentWindow.document.documentElement.scrollHeight + 20 + 'px';
  54. }
  55. </script>
  56. </head>
  57. <body style="font-family: arial">
  58. <table style="border: none">
  59. <tr>
  60. <td style="padding-right: 10px;"><img src="favicon.ico?v=$COMMIT_HASH"></td>
  61. <td>
  62. <h1> Digitizer - AI on the edge - Initial setup</h1>
  63. <h2>An ESP32 all inclusive neural network recognition system for meter Digitization</h2>
  64. </td>
  65. </tr>
  66. </table>
  67. <table>
  68. <colgroup>
  69. <col span="1" style="width: 45.0%;">
  70. <col span="1" style="width: 15.0%;">
  71. <col span="1" style="width: 25.0%;">
  72. </colgroup>
  73. <tr>
  74. <td>
  75. <button class="button" id="restart" name="restart" onclick="clickStart()">Restart Setup</button>
  76. <button class="button" id="previous" name="previous" onclick="clickPrevious()">Previous Step</button>
  77. <button class="button" id="next" name="next" onclick="clickNext()">Next Step</button>
  78. <button class="button" id="skip" name="skip" onclick="clickAbort()">Abort Setup</button>
  79. </td>
  80. <td style="padding-left:10px;">Setup Progress:<br><progress id="progressBar" value="0" max="7" style="width:120px;"></progress></td>
  81. <td style="padding-left:10px; padding-top: 10px; padding-right: 5px; float:right;">
  82. <output id="rssi" name="rssi"></output>
  83. </td>
  84. </tr>
  85. </table>
  86. <div class="h_iframe_explain" id="h_iframe_explain">
  87. <iframe name="explaincontent" id ="explaincontent" src="" allowfullscreen></iframe>
  88. </div>
  89. <div class="h_iframe" id="h_iframe">
  90. <iframe name="maincontent" id ="maincontent" src="" onload="resizeIframe(this)" allowfullscreen></iframe>
  91. <iframe name="stream" id ="stream" src="" display="none" allowfullscreen></iframe>
  92. </div>
  93. <script type="text/javascript" src="common.js?v=$COMMIT_HASH"></script>
  94. <script type="text/javascript">
  95. var aktstep = 0;
  96. var setupCompleted = false;
  97. document.getElementById('stream').style.display = "none"; // Make sure that stream iframe is always hidden
  98. document.getElementById("progressBar").value = 0;
  99. function clickStart() {
  100. aktstep = 0;
  101. setupCompleted = false;
  102. document.getElementById('stream').src = "";
  103. document.getElementById('stream').style.display = "none"; // Make sure that stream iframe is always hidden
  104. LoadStep();
  105. }
  106. function clickAbort() {
  107. setupCompleted = false;
  108. aktstep = 7;
  109. document.getElementById('stream').src = "";
  110. document.getElementById('stream').style.display = "none"; // Make sure that stream iframe is always hidden
  111. LoadStep();
  112. }
  113. function clickNext() {
  114. aktstep++;
  115. if (aktstep > 7) {
  116. aktstep = 7;
  117. }
  118. document.getElementById('stream').src = "";
  119. document.getElementById('stream').style.display = "none"; // Make sure that stream iframe is always hidden
  120. LoadStep();
  121. }
  122. function clickPrevious() {
  123. aktstep--;
  124. if (aktstep < 0) {
  125. aktstep = 0;
  126. }
  127. document.getElementById('stream').src = "";
  128. document.getElementById('stream').style.display = "none"; // Make sure that stream iframe is always hidden
  129. LoadStep();
  130. }
  131. function LoadStep(){
  132. loadRSSI();
  133. switch (aktstep) {
  134. case 0: // Start page
  135. document.getElementById('maincontent').src = 'edit_explain_0.html?v=$COMMIT_HASH';
  136. document.getElementById('maincontent').style.display = "";
  137. document.getElementById('h_iframe_explain').style.display = "none";
  138. document.getElementById("restart").disabled = true;
  139. document.getElementById("previous").disabled = true;
  140. document.getElementById("next").disabled = false;
  141. document.getElementById("skip").disabled = false;
  142. document.getElementById("progressBar").value = 0;
  143. setupCompleted = false;
  144. break;
  145. case 1: // Live stream
  146. document.getElementById('maincontent').style.display = "none";
  147. document.getElementById('h_iframe_explain').style.display = "";
  148. document.getElementById('h_iframe_explain').style="height:155px;"
  149. document.getElementById('explaincontent').style="height:155px;"
  150. document.getElementById('explaincontent').scrolling="yes"
  151. document.getElementById('explaincontent').src = 'explain_1.html?v=$COMMIT_HASH';
  152. document.getElementById("restart").disabled = false;
  153. document.getElementById("previous").disabled = false;
  154. document.getElementById("next").disabled = false;
  155. document.getElementById("skip").disabled = false;
  156. document.getElementById('h_iframe').style="height:480px;"
  157. document.getElementById('stream').style="height:480px;"
  158. document.getElementById("progressBar").value = 1;
  159. setupCompleted = false;
  160. setTimeout(function() {
  161. document.getElementById('stream').src = getDomainname() + '/stream?flashlight=true'; // needs to be the last statement because it's kind of blocking
  162. document.getElementById('stream').style.display = "";
  163. }, 500);
  164. break;
  165. case 2: // Reference image
  166. document.getElementById('maincontent').src = 'edit_reference.html?v=$COMMIT_HASH#description';
  167. document.getElementById('maincontent').style.display = "";
  168. document.getElementById('h_iframe_explain').style.display = "";
  169. document.getElementById('h_iframe_explain').style="height:45px;"
  170. document.getElementById('explaincontent').style="height:45px;"
  171. document.getElementById('explaincontent').scrolling="no"
  172. document.getElementById('explaincontent').src = 'explain_2.html?v=$COMMIT_HASH';
  173. document.getElementById("restart").disabled = false;
  174. document.getElementById("previous").disabled = false;
  175. document.getElementById("next").disabled = false;
  176. document.getElementById("skip").disabled = false;
  177. document.getElementById("progressBar").value = 2;
  178. setupCompleted = false;
  179. break;
  180. case 3: // Alignment marker
  181. document.getElementById('maincontent').src = 'edit_alignment.html?v=$COMMIT_HASH#description';
  182. document.getElementById('h_iframe_explain').style.display = "";
  183. document.getElementById('h_iframe_explain').style="height:45px;"
  184. document.getElementById('explaincontent').style="height:45px;"
  185. document.getElementById('explaincontent').scrolling="no"
  186. document.getElementById('explaincontent').src = 'explain_3.html?v=$COMMIT_HASH';
  187. document.getElementById("restart").disabled = false;
  188. document.getElementById("previous").disabled = false;
  189. document.getElementById("next").disabled = false;
  190. document.getElementById("skip").disabled = false;
  191. document.getElementById("progressBar").value = 3;
  192. setupCompleted = false;
  193. break;
  194. case 4: // Digit ROIs
  195. document.getElementById('maincontent').src = 'edit_digits.html?v=$COMMIT_HASH#description';
  196. document.getElementById('h_iframe_explain').style.display = "";
  197. document.getElementById('h_iframe_explain').style="height:45px;"
  198. document.getElementById('explaincontent').style="height:45px;"
  199. document.getElementById('explaincontent').scrolling="no"
  200. document.getElementById('explaincontent').src = 'explain_4.html?v=$COMMIT_HASH';
  201. document.getElementById("restart").disabled = false;
  202. document.getElementById("previous").disabled = false;
  203. document.getElementById("next").disabled = false;
  204. document.getElementById("skip").disabled = false;
  205. document.getElementById("progressBar").value = 4;
  206. setupCompleted = false;
  207. break;
  208. case 5: // Analog ROIs
  209. document.getElementById('maincontent').src = 'edit_analog.html?v=$COMMIT_HASH#description';
  210. document.getElementById('h_iframe_explain').style.display = "";
  211. document.getElementById('h_iframe_explain').style="height:45px;"
  212. document.getElementById('explaincontent').style="height:45px;"
  213. document.getElementById('explaincontent').scrolling="no"
  214. document.getElementById('explaincontent').src = 'explain_5.html?v=$COMMIT_HASH';
  215. document.getElementById("restart").disabled = false;
  216. document.getElementById("previous").disabled = false;
  217. document.getElementById("next").disabled = false;
  218. document.getElementById("skip").disabled = false;
  219. document.getElementById("progressBar").value = 5;
  220. setupCompleted = false;
  221. break;
  222. case 6: // Config page
  223. document.getElementById('maincontent').src = 'edit_config.html?v=$COMMIT_HASH#description';
  224. document.getElementById('h_iframe_explain').style.display = "";
  225. document.getElementById('h_iframe_explain').style="height:100px;"
  226. document.getElementById('explaincontent').style="height:100px;"
  227. document.getElementById('explaincontent').scrolling="no"
  228. document.getElementById('explaincontent').src = 'explain_6.html?v=$COMMIT_HASH';
  229. document.getElementById("restart").disabled = false;
  230. document.getElementById("previous").disabled = false;
  231. document.getElementById("next").disabled = false;
  232. document.getElementById("skip").disabled = false;
  233. document.getElementById("progressBar").value = 6;
  234. setupCompleted = true;
  235. break;
  236. case 7: // Setup completed / aborted
  237. document.getElementById('h_iframe').style="height:660px;"
  238. document.getElementById('maincontent').style="height:660px;"
  239. if (setupCompleted) {
  240. document.getElementById('maincontent').src = 'edit_explain_7.html?v=$COMMIT_HASH';
  241. }
  242. else {
  243. document.getElementById('maincontent').src = 'edit_explain_7_abort.html?v=$COMMIT_HASH';
  244. document.getElementById("previous").disabled = true;
  245. }
  246. document.getElementById('h_iframe_explain').style.display = "none";
  247. document.getElementById("skip").disabled = true;
  248. document.getElementById("restart").disabled = false;
  249. document.getElementById("next").disabled = true;
  250. document.getElementById("progressBar").value = 7;
  251. break;
  252. }
  253. }
  254. function loadRSSI() {
  255. url = getDomainname() + '/rssi';
  256. var xhttp = new XMLHttpRequest();
  257. xhttp.onreadystatechange = function() {
  258. if (this.readyState == 4 && this.status == 200) {
  259. var _rsp = xhttp.responseText;
  260. if (_rsp >= -55) {
  261. document.getElementById('rssi').value = ("WIFI Signal: Excellent (" + _rsp + "dBm)");
  262. }
  263. else if (_rsp < -55 && _rsp >= -67) {
  264. document.getElementById('rssi').value = ("WIFI Signal: Good (" + _rsp + "dBm)");
  265. }
  266. else if (_rsp < -67 && _rsp >= -78) {
  267. document.getElementById('rssi').value = ("WIFI Signal: Fair (" + _rsp + "dBm)");
  268. }
  269. else if (_rsp < -78 && _rsp >= -85) {
  270. document.getElementById('rssi').value = ("WIFI Signal: Weak (" + _rsp + "dBm)");
  271. }
  272. else {
  273. document.getElementById('rssi').value = ("WIFI Signal: Unreliable (" + _rsp + "dBm)");
  274. }
  275. }
  276. }
  277. xhttp.open("GET", url, true);
  278. xhttp.send();
  279. }
  280. LoadStep();
  281. </script>
  282. </body>
  283. </html>