setup.html 13 KB

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