auto_FO.html 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702
  1. <!-- 宣告我們要套用模板 -->
  2. {% extends "base.html" %}
  3. {% block title %}{{ title }}{% endblock %}
  4. {% block script %}
  5. <script language="JavaScript">
  6. function myrefresh()
  7. {
  8. $.get('/ferment_auto_data', function (resText) {
  9. var PO = [resText.PO1,resText.PO2];
  10. var FI = [resText.FI1,resText.FI2];
  11. var F=[resText.F1,resText.F2,resText.F3,resText.F4,resText.F5,resText.F6,resText.F7,resText.F8,resText.F9,resText.F10,resText.F11,resText.F12];
  12. var FO = [resText.FO1,resText.FO2];
  13. var DI = [resText.DI1,resText.DI2];
  14. for (let i=0; i<2; i++) {
  15. if (PO[i] == 'PO_InputtingBean') {
  16. $("#PO"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  17. $("#PO"+parseInt(i+1)+"_status").text("PO" + parseInt(i+1) + " 入豆中")
  18. } else if (PO[i] == 'PO_Waiting') {
  19. $("#PO"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
  20. $("#PO"+parseInt(i+1)+"_status").text("PO" + parseInt(i+1) + " 空桶等待")
  21. } else if (PO[i] == 'PO_OutputtingBean') {
  22. $("#PO"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  23. $("#PO"+parseInt(i+1)+"_status").text("PO" + parseInt(i+1) + " 可出豆")
  24. } else if (PO[i] == 'PO_Stand_by') {
  25. $("#PO"+parseInt(i+1)+"_status_dot").css("background-color", "HotPink")
  26. $("#PO"+parseInt(i+1)+"_status").text("PO" + parseInt(i+1) + " 待命")
  27. } else {
  28. console.log('pass')
  29. }
  30. }
  31. for (let i=0; i<2; i++) {
  32. if (FI[i] == 'FI_InputtingBean') {
  33. $("#FI"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  34. $("#FI"+parseInt(i+1)+"_status").text("FI" + parseInt(i+1) + " 入豆中")
  35. } else if (FI[i] == 'FI_Waiting') {
  36. $("#FI"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
  37. $("#FI"+parseInt(i+1)+"_status").text("FI" + parseInt(i+1) + " 空桶等待")
  38. } else if (FI[i] == 'FI_OutputtingBean') {
  39. $("#FI"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  40. $("#FI"+parseInt(i+1)+"_status").text("FI" + parseInt(i+1) + " 可出豆")
  41. } else if (FI[i] == 'FI_Stand_by') {
  42. $("#FI"+parseInt(i+1)+"_status_dot").css("background-color", "HotPink")
  43. $("#FI"+parseInt(i+1)+"_status").text("FI" + parseInt(i+1) + " 待命")
  44. } else {
  45. console.log('pass')
  46. }
  47. }
  48. for (let i=0; i<12; i++) {
  49. if (F[i] == 'F_InputtingBean') {
  50. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  51. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 入豆中")
  52. } else if (F[i] == 'F_InputtingBean_Pause') {
  53. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  54. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 入豆暫停")
  55. } else if (F[i] == 'F_InputtingBean_Finish') {
  56. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  57. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 入豆完成")
  58. } else if (F[i] == 'F_InputtingWater') {
  59. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "DeepSkyBlue")
  60. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 內外桶入水中")
  61. } else if (F[i] == 'F_Waiting') {
  62. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
  63. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 空桶等待")
  64. } else if (F[i] == 'F_Cleaning') {
  65. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "plum")
  66. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 清洗中")
  67. } else if (F[i] == 'F_Fermenting') {
  68. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "NavajoWhite")
  69. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 發酵中")
  70. } else if (F[i] == 'F_OutputtingWater') {
  71. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "DeepSkyBlue")
  72. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 內桶排水中")
  73. } else if (F[i] == 'F_OutputtingBean') {
  74. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  75. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 可出豆")
  76. } else if (F[i] == 'F_Warning') {
  77. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "crimson")
  78. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 發生錯誤")
  79. $("#F"+parseInt(i+1)+"_status").css("color", "crimson")
  80. } else if (F[i] == 'F_Stand_by') {
  81. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "HotPink")
  82. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 待命中")
  83. } else {
  84. console.log('pass')
  85. }
  86. }
  87. for (let i=0; i<2; i++) {
  88. if (FO[i] == 'FO_InputtingBean') {
  89. $("#FO"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  90. $("#FO"+parseInt(i+1)+"_status").text("FO" + parseInt(i+1) + " 入豆中")
  91. } else if (FO[i] == 'FO_Waiting') {
  92. $("#FO"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
  93. $("#FO"+parseInt(i+1)+"_status").text("FO" + parseInt(i+1) + " 空桶等待")
  94. } else if (FO[i] == 'FO_OutputtingBean') {
  95. $("#FO"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  96. $("#FO"+parseInt(i+1)+"_status").text("FO" + parseInt(i+1) + " 可出豆")
  97. } else if (FO[i] == 'FO_Stand_by') {
  98. $("#FO"+parseInt(i+1)+"_status_dot").css("background-color", "HotPink")
  99. $("#FO"+parseInt(i+1)+"_status").text("FO" + parseInt(i+1) + " 待命")
  100. } else {
  101. console.log('pass')
  102. }
  103. }
  104. for (let i=0; i<2; i++) {
  105. if (DI[i] == 'DI_InputtingBean') {
  106. $("#DI"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  107. $("#DI"+parseInt(i+1)+"_status").text("DI" + parseInt(i+1) + " 入豆中")
  108. } else if (DI[i] == 'DI_Waiting') {
  109. $("#DI"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
  110. $("#DI"+parseInt(i+1)+"_status").text("DI" + parseInt(i+1) + " 空桶等待")
  111. } else if (DI[i] == 'DI_OutputtingBean') {
  112. $("#DI"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  113. $("#DI"+parseInt(i+1)+"_status").text("DI" + parseInt(i+1) + " 可出豆")
  114. } else if (DI[i] == 'DI_Stand_by') {
  115. $("#DI"+parseInt(i+1)+"_status_dot").css("background-color", "HotPink")
  116. $("#DI"+parseInt(i+1)+"_status").text("DI" + parseInt(i+1) + " 待命")
  117. } else {
  118. console.log('pass')
  119. }
  120. }
  121. },'json');
  122. loading_FO()
  123. }
  124. setInterval('myrefresh()',1000);
  125. </script>
  126. <script>
  127. var tank_num = '1';
  128. var status = '{{status}}';
  129. var username = '{{username}}';
  130. $(document).ready(function(){
  131. $("#coffee_title_pc").text('發酵出料自動化');
  132. $("#coffee_title_phone").text('發酵出料自動化');
  133. $('#navbarDropdown_user_pc').text(username);
  134. $('#navbarDropdown_user_phone').text(username);
  135. // 脫皮機
  136. peel_output_status = ['{{PO1}}','{{PO2}}']
  137. for (let i=0; i<peel_output_status.length; i++) {
  138. if (peel_output_status[i] == 'PO_InputtingBean') {
  139. $("#PO"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  140. $("#PO"+parseInt(i+1)+"_status").text("PO" + parseInt(i+1) + " 入豆中")
  141. } else if (peel_output_status[i] == 'PO_Waiting') {
  142. $("#PO"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
  143. $("#PO"+parseInt(i+1)+"_status").text("PO" + parseInt(i+1) + " 空桶等待")
  144. } else if (peel_output_status[i] == 'PO_OutputtingBean') {
  145. $("#PO"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  146. $("#PO"+parseInt(i+1)+"_status").text("PO" + parseInt(i+1) + " 可出豆")
  147. } else if (peel_output_status[i] == 'PO_Stand_by') {
  148. $("#PO"+parseInt(i+1)+"_status_dot").css("background-color", "HotPink")
  149. $("#PO"+parseInt(i+1)+"_status").text("PO" + parseInt(i+1) + " 待命")
  150. } else {
  151. console.log('pass')
  152. }
  153. }
  154. // 乾燥入料
  155. dry_input_status = ['{{DI1}}','{{DI2}}']
  156. for (let i=0; i<dry_input_status.length; i++) {
  157. if (dry_input_status[i] == 'DI_InputtingBean') {
  158. $("#DI"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  159. $("#DI"+parseInt(i+1)+"_status").text("DI" + parseInt(i+1) + " 入豆中")
  160. } else if (dry_input_status[i] == 'DI_Waiting') {
  161. $("#DI"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
  162. $("#DI"+parseInt(i+1)+"_status").text("DI" + parseInt(i+1) + " 空桶等待")
  163. } else if (dry_input_status[i] == 'DI_OutputtingBean') {
  164. $("#DI"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  165. $("#DI"+parseInt(i+1)+"_status").text("DI" + parseInt(i+1) + " 可出豆")
  166. } else if (dry_input_status[i] == 'DI_Stand_by') {
  167. $("#DI"+parseInt(i+1)+"_status_dot").css("background-color", "HotPink")
  168. $("#DI"+parseInt(i+1)+"_status").text("DI" + parseInt(i+1) + " 待命")
  169. } else {
  170. console.log('pass')
  171. }
  172. }
  173. // 桶槽入料
  174. ferment_input_status_N = ['{{FI1}}', '{{FI2}}']
  175. for (let i=0; i<ferment_input_status_N.length; i++) {
  176. if (ferment_input_status_N[i] == 'FI_InputtingBean') {
  177. $("#FI"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  178. $("#FI"+parseInt(i+1)+"_status").text("FI" + parseInt(i+1) + " 入豆中")
  179. } else if (ferment_input_status_N[i] == 'FI_Waiting') {
  180. $("#FI"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
  181. $("#FI"+parseInt(i+1)+"_status").text("FI" + parseInt(i+1) + " 空桶等待")
  182. } else if (ferment_input_status_N[i] == 'FI_OutputtingBean') {
  183. $("#FI"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  184. $("#FI"+parseInt(i+1)+"_status").text("FI" + parseInt(i+1) + " 可出豆")
  185. } else if (ferment_input_status_N[i] == 'FI_Stand_by') {
  186. $("#FI"+parseInt(i+1)+"_status_dot").css("background-color", "HotPink")
  187. $("#FI"+parseInt(i+1)+"_status").text("FI" + parseInt(i+1) + " 待命")
  188. } else {
  189. console.log('pass')
  190. }
  191. }
  192. // 桶槽狀態顯示
  193. ferment_tank_status_N = ['{{F1}}', '{{F2}}', '{{F3}}', '{{F4}}', '{{F5}}', '{{F6}}',
  194. '{{F7}}', '{{F8}}', '{{F9}}', '{{F10}}', '{{F11}}', '{{F12}}']
  195. for (let i=0; i<ferment_tank_status_N.length; i++) {
  196. if (ferment_tank_status_N[i] == 'F_InputtingBean') {
  197. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  198. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 入豆中")
  199. } else if (ferment_tank_status_N[i] == 'F_InputtingBean_Pause') {
  200. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  201. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 入豆暫停")
  202. } else if (ferment_tank_status_N[i] == 'F_InputtingBean_Finish') {
  203. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  204. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 入豆完成")
  205. } else if (ferment_tank_status_N[i] == 'F_InputtingWater') {
  206. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "DeepSkyBlue")
  207. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 內外桶入水中")
  208. } else if (ferment_tank_status_N[i] == 'F_Waiting') {
  209. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
  210. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 空桶等待")
  211. } else if (ferment_tank_status_N[i] == 'F_Cleaning') {
  212. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "plum")
  213. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 清洗中")
  214. } else if (ferment_tank_status_N[i] == 'F_Fermenting') {
  215. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "NavajoWhite")
  216. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 發酵中")
  217. } else if (ferment_tank_status_N[i] == 'F_OutputtingWater') {
  218. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "DeepSkyBlue")
  219. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 內桶排水中")
  220. } else if (ferment_tank_status_N[i] == 'F_OutputtingBean') {
  221. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  222. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 可出豆")
  223. } else if (ferment_tank_status_N[i] == 'F_Warning') {
  224. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "crimson")
  225. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 發生錯誤")
  226. $("#F"+parseInt(i+1)+"_status").css("color", "crimson")
  227. } else if (ferment_tank_status_N[i] == 'F_Stand_by') {
  228. $("#F"+parseInt(i+1)+"_status_dot").css("background-color", "HotPink")
  229. $("#F"+parseInt(i+1)+"_status").text("F" + parseInt(i+1) + " 待命中")
  230. } else {
  231. console.log('pass')
  232. }
  233. }
  234. // 桶槽出料顯示
  235. ferment_output_status_N = ['{{FO1}}', '{{FO2}}']
  236. for (let i=0; i<ferment_output_status_N.length; i++) {
  237. if (ferment_output_status_N[i] == 'FO_InputtingBean') {
  238. $("#FO"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  239. $("#FO"+parseInt(i+1)+"_status").text("FO" + parseInt(i+1) + " 入豆中")
  240. } else if (ferment_output_status_N[i] == 'FO_Waiting') {
  241. $("#FO"+parseInt(i+1)+"_status_dot").css("background-color", "lightgray")
  242. $("#FO"+parseInt(i+1)+"_status").text("FO" + parseInt(i+1) + " 空桶等待")
  243. } else if (ferment_output_status_N[i] == 'FO_OutputtingBean') {
  244. $("#FO"+parseInt(i+1)+"_status_dot").css("background-color", "MediumSeaGreen")
  245. $("#FO"+parseInt(i+1)+"_status").text("FO" + parseInt(i+1) + " 可出豆")
  246. } else if (ferment_output_status_N[i] == 'FO_Stand_by') {
  247. $("#FO"+parseInt(i+1)+"_status_dot").css("background-color", "HotPink")
  248. $("#FO"+parseInt(i+1)+"_status").text("FO" + parseInt(i+1) + " 待命")
  249. } else {
  250. console.log('pass')
  251. }
  252. loading_FO()
  253. }
  254. });
  255. $(function(){
  256. $('#cb_cleaning').on('change', function () {
  257. if ($('#cb_cleaning').prop('checked')) {
  258. $("input[name='Ferment_auto_cleaning_Ftimes']").attr('disabled', false);
  259. $("input[name='Ferment_auto_cleaning_Ftimes']").attr('value', '1');
  260. } else {
  261. $("input[name='Ferment_auto_cleaning_Ftimes']").attr('disabled', true);
  262. }
  263. })
  264. $('#cb_calibratingEC').on('change', function () {
  265. if ($('#cb_calibratingEC').prop('checked')) {
  266. $("input[name='Ferment_auto_calibratingEC_Ftimes']").attr('disabled', false);
  267. $("input[name='Ferment_auto_calibratingEC_Ftimes']").attr('value', '1');
  268. } else {
  269. $("input[name='Ferment_auto_calibratingEC_Ftimes']").attr('disabled', true);
  270. }
  271. })
  272. $('#cb_calibratingSTIR').on('change', function () {
  273. if ($('#cb_calibratingSTIR').prop('checked')) {
  274. $("input[name='Ferment_auto_calibratingSTIR_Ftimes']").attr('disabled', false);
  275. $("input[name='Ferment_auto_calibratingSTIR_Ftimes']").attr('value', '1');
  276. } else {
  277. $("input[name='Ferment_auto_calibratingSTIR_Ftimes']").attr('disabled', true);
  278. }
  279. })
  280. })
  281. function loading_FO(){
  282. var fotid = '{{fotid}}';
  283. $.get('/loading/FO'+fotid, '', function (resText) {
  284. var a = [resText.output_vacuum];
  285. for (let i=0; i<1; i++) {
  286. if (a[i] == 1) {
  287. $("#actuator_"+parseInt(i)+"_status").css("background-color", "MediumSeaGreen")
  288. } else if (a[i] == 0) {
  289. $("#actuator_"+parseInt(i)+"_status").css("background-color", "lightgray")
  290. }
  291. else {
  292. $("#actuator_"+parseInt(i)+"_status").css("background-color", "crimson")
  293. }
  294. }
  295. $("#sensor_99").text(resText.output_UltraSonic);
  296. }, 'json');
  297. }
  298. </script>
  299. {% endblock %}
  300. {% block style %}
  301. <style>
  302. .F_status_css {
  303. font-weight: bold;
  304. text-align: center;
  305. }
  306. .input-text {
  307. height: 25px;
  308. width: 40px;
  309. text-align: center;
  310. margin-left: 2px;
  311. margin-right: 5px;
  312. }
  313. </style>
  314. {% endblock %}
  315. {% block main %}
  316. <div class="album py-5 bg-light">
  317. <div class="container">
  318. <div class="row row-cols-1 row-cols-sm-1 row-cols-md-1 g-3">
  319. <div class="col">
  320. <div class="card shadow-sm">
  321. <div class="card-body">
  322. <div class="d-flex justify-content-between align-items-center">
  323. <table style="border: 3px lightsteelblue solid; margin-right: auto; margin-left: auto; text-align: center; margin-top: 5px;" cellpadding="5" border="1">
  324. <div style="text-align: center;">
  325. <tr>
  326. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  327. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  328. <tr>
  329. <td>
  330. <!-- 發酵槽入料儲豆槽 FI1 -->
  331. <div id="FI1" tabindex="0" class="FI1_position" role="button" style="text-align: center;">
  332. <span id="FI1_status" class="F_status_css">FI1 status</span>
  333. </div>
  334. </td>
  335. </tr>
  336. </table>
  337. </td>
  338. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  339. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  340. <tr>
  341. <td>
  342. <div id="F1" tabindex="0" class="F1_position" role="button">
  343. <span id="F1_status" class="F_status_css">F1 status</span>
  344. </div>
  345. </td>
  346. </tr>
  347. </table>
  348. </td>
  349. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  350. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  351. <tr>
  352. <td>
  353. <div id="F2" tabindex="0" class="F2_position" role="button">
  354. <span id="F2_status" class="F_status_css">F2 status</span>
  355. </div>
  356. </td>
  357. </tr>
  358. </table>
  359. </td>
  360. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  361. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  362. <tr>
  363. <td>
  364. <div id="F3" tabindex="0" class="F3_position" role="button">
  365. <span id="F3_status" class="F_status_css">F3 status</span>
  366. </div>
  367. </td>
  368. </tr>
  369. </table>
  370. </td>
  371. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  372. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  373. <tr>
  374. <td>
  375. <div id="F4" tabindex="0" class="F4_position" role="button">
  376. <span id="F4_status" class="F_status_css">F4 status</span>
  377. </div>
  378. </td>
  379. </tr>
  380. </table>
  381. </td>
  382. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  383. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  384. <tr>
  385. <td>
  386. <div id="F5" tabindex="0" class="F5_position" role="button">
  387. <span id="F5_status" class="F_status_css">F5 status</span>
  388. </div>
  389. </td>
  390. </tr>
  391. </table>
  392. </td>
  393. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  394. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  395. <tr>
  396. <td>
  397. <div id="F6" tabindex="0" class="F6_position" role="button">
  398. <span id="F6_status" class="F_status_css">F6 status</span>
  399. </div>
  400. </td>
  401. </tr>
  402. </table>
  403. </td>
  404. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  405. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  406. <tr>
  407. <td>
  408. <div id="FO1" tabindex="0" class="FO1_position" role="button">
  409. <span id="FO1_status" class="F_status_css">FO1 status</span>
  410. </div>
  411. </td>
  412. </tr>
  413. </table>
  414. </td>
  415. </tr>
  416. <tr>
  417. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  418. <div id="FI1_status_dot" style="height: 20px; background-color: black;"></div>
  419. </td>
  420. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  421. <div id="F1_status_dot" style=" height: 20px; background-color: black;"></div>
  422. </td>
  423. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  424. <div id="F2_status_dot" style=" height: 20px; background-color: black;"></div>
  425. </td>
  426. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  427. <div id="F3_status_dot" style=" height: 20px; background-color: black;"></div>
  428. </td>
  429. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  430. <div id="F4_status_dot" style="height: 20px; background-color: black;"></div>
  431. </td>
  432. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  433. <div id="F5_status_dot" style="height: 20px; background-color: black;"></div>
  434. </td>
  435. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  436. <div id="F6_status_dot" style="height: 20px; background-color: black;"></div>
  437. </td>
  438. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  439. <div id="FO1_status_dot" style="height: 20px; background-color: black;"></div>
  440. </td>
  441. </tr>
  442. <tr>
  443. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  444. 入料儲豆槽
  445. </td>
  446. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  447. 發酵槽
  448. </td>
  449. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  450. 發酵槽
  451. </td>
  452. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  453. 發酵槽
  454. </td>
  455. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  456. 發酵槽
  457. </td>
  458. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  459. 發酵槽
  460. </td>
  461. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  462. 發酵槽
  463. </td>
  464. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  465. 出料儲豆槽
  466. </td>
  467. </tr>
  468. <tr>
  469. <td style="border: lightsteelblue 1px solid;">
  470. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  471. <tr>
  472. <td>
  473. <div id="FI2" tabindex="0" class="FI2_position" role="button">
  474. <span id="FI2_status" class="F_status_css">FI2 status</span>
  475. </div>
  476. </td>
  477. </tr>
  478. </table>
  479. </td>
  480. <td style="border: lightsteelblue 1px solid;">
  481. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  482. <tr>
  483. <td>
  484. <div id="F7" tabindex="0" class="F7_position" role="button">
  485. <span id="F7_status" class="F_status_css">F7 status</span>
  486. </div>
  487. </td>
  488. </tr>
  489. </table>
  490. </td>
  491. <td style="border: lightsteelblue 1px solid;">
  492. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  493. <tr>
  494. <td>
  495. <div id="F8" tabindex="0" class="F8_position" role="button">
  496. <span id="F8_status" class="F_status_css">F8 status</span>
  497. </div>
  498. </td>
  499. </tr>
  500. </table>
  501. </td>
  502. <td style="border: lightsteelblue 1px solid;">
  503. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  504. <tr>
  505. <td>
  506. <div id="F9" tabindex="0" class="F9_position" role="button">
  507. <span id="F9_status" class="F_status_css">F9 status</span>
  508. </div>
  509. </td>
  510. </tr>
  511. </table>
  512. </td>
  513. <td style="border: lightsteelblue 1px solid;">
  514. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  515. <tr>
  516. <td>
  517. <div id="F10" tabindex="0" class="F10_position" role="button">
  518. <span id="F10_status" class="F_status_css">F10 status</span>
  519. </div>
  520. </td>
  521. </tr>
  522. </table>
  523. </td>
  524. <td style="border: lightsteelblue 1px solid;">
  525. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  526. <tr>
  527. <td>
  528. <div id="F11" tabindex="0" class="F11_position" role="button">
  529. <span id="F11_status" class="F_status_css">F11 status</span>
  530. </div>
  531. </td>
  532. </tr>
  533. </table>
  534. </td>
  535. <td style="border: lightsteelblue 1px solid;">
  536. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  537. <tr>
  538. <td>
  539. <div id="F12" tabindex="0" class="F12_position" role="button">
  540. <span id="F12_status" class="F_status_css">F12 status</span>
  541. </div>
  542. </td>
  543. </tr>
  544. </table>
  545. </td>
  546. <td style="border: lightsteelblue 1px solid;">
  547. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  548. <tr>
  549. <td>
  550. <div id="FO2" tabindex="0" class="FO2_position" role="button">
  551. <span id="FO2_status" class="F_status_css">FO2 status</span>
  552. </div>
  553. </td>
  554. </tr>
  555. </table>
  556. </td>
  557. </tr>
  558. <tr>
  559. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  560. <div id="FI2_status_dot" style=" height: 20px; background-color: black;"></div>
  561. </td>
  562. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  563. <div id="F7_status_dot" style=" height: 20px; background-color: black;"></div>
  564. </td>
  565. <td width="12.5%" style="border: lightsteelblue 1px solid;" >
  566. <div id="F8_status_dot" style=" height: 20px; background-color: black;"></div>
  567. </td>
  568. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  569. <div id="F9_status_dot" style=" height: 20px; background-color: black;"></div>
  570. </td>
  571. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  572. <div id="F10_status_dot" style="height: 20px; background-color: black;"></div>
  573. </td>
  574. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  575. <div id="F11_status_dot" style="height: 20px; background-color: black;"></div>
  576. </td>
  577. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  578. <div id="F12_status_dot" style="height: 20px; background-color: black;"></div>
  579. </td>
  580. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  581. <div id="FO2_status_dot" style="height: 20px; background-color: black;"></div>
  582. </td>
  583. </tr>
  584. </table>
  585. </div>
  586. <!-- 發酵貨櫃 致動器狀態 感測器數值 -->
  587. <div style="text-align: center;">
  588. <table style="border: 3px lightsteelblue solid; margin-right: auto; margin-left: auto; text-align: center; margin-top: 5px;" cellpadding="5" border="1">
  589. <tr>
  590. <td width="100%" style="border: lightsteelblue 1px solid;">
  591. 出料<br>真空吸料機
  592. </td>
  593. </tr>
  594. <tr>
  595. <td style="border: lightsteelblue 1px solid;">
  596. <div id="actuator_0_status" style="margin:0 auto; height: 20px; background-color: lightgray;"></div>
  597. </td>
  598. </tr>
  599. </table>
  600. <table style="border: 3px lightsteelblue solid; margin-right: auto; margin-left: auto; text-align: center; margin-top: 5px;" cellpadding="5" border="1">
  601. <tr>
  602. <td style="border: lightsteelblue 1px solid;">
  603. 生豆<br>高度
  604. </td>
  605. </tr>
  606. <tr>
  607. <td style="border: lightsteelblue 1px solid;">
  608. <span id="sensor_99"></span>
  609. </td>
  610. </tr>
  611. </table>
  612. <table style="border: 3px lightsteelblue solid; margin-right: auto; margin-left: auto; text-align: center; margin-top: 5px; line-height: 28px;" cellpadding="5" border="1">
  613. <tr>
  614. <td style="border: lightsteelblue 1px solid;">
  615. 出料儲豆槽<br>
  616. 參數設定
  617. </td>
  618. </tr>
  619. <tr>
  620. <td style="padding: 10px; text-align: left; vertical-align: text-top;">
  621. 生豆高度
  622. <input name="Ferment_Tank_bean_height" class="input-text" type="text" value="5">公分<br>
  623. 吸放料時間
  624. <input name="Ferment_Tank_vacuumON_time" class="input-text" type="text" value="5">秒<br>
  625. </td>
  626. </tr>
  627. </table>
  628. </div>
  629. </div>
  630. </div>
  631. </div>
  632. </div>
  633. </div>
  634. </div>
  635. </div>
  636. {% endblock %}