auto_FI.html 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703
  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_FI()
  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_FI()
  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_FI(){
  282. var fitid = '{{fitid}}';
  283. console.log('ferment_input_tank_id:' + fitid)
  284. $.get('/loading/FI'+fitid, '', function (resText) {
  285. var a = [resText.input_vacuum];
  286. for (let i=0; i<1; i++) {
  287. if (a[i] == 1) {
  288. $("#actuator_"+parseInt(i)+"_status").css("background-color", "MediumSeaGreen")
  289. } else if (a[i] == 0) {
  290. $("#actuator_"+parseInt(i)+"_status").css("background-color", "lightgray")
  291. }
  292. else {
  293. $("#actuator_"+parseInt(i)+"_status").css("background-color", "crimson")
  294. }
  295. }
  296. $("#sensor_00").text(resText.input_UltraSonic);
  297. }, 'json');
  298. }
  299. </script>
  300. {% endblock %}
  301. {% block style %}
  302. <style>
  303. .F_status_css {
  304. font-weight: bold;
  305. text-align: center;
  306. }
  307. .input-text {
  308. height: 25px;
  309. width: 40px;
  310. text-align: center;
  311. margin-left: 2px;
  312. margin-right: 5px;
  313. }
  314. </style>
  315. {% endblock %}
  316. {% block main %}
  317. <div class="album py-5 bg-light">
  318. <div class="container">
  319. <div class="row row-cols-1 row-cols-sm-1 row-cols-md-1 g-3">
  320. <div class="col">
  321. <div class="card shadow-sm">
  322. <div class="card-body">
  323. <div class="d-flex justify-content-between align-items-center">
  324. <table style="border: 3px lightsteelblue solid; margin-right: auto; margin-left: auto; text-align: center; margin-top: 5px;" cellpadding="5" border="1">
  325. <div style="text-align: center;">
  326. <tr>
  327. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  328. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  329. <tr>
  330. <td>
  331. <!-- 發酵槽入料儲豆槽 FI1 -->
  332. <div id="FI1" tabindex="0" class="FI1_position" role="button" style="text-align: center;">
  333. <span id="FI1_status" class="F_status_css">FI1 status</span>
  334. </div>
  335. </td>
  336. </tr>
  337. </table>
  338. </td>
  339. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  340. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  341. <tr>
  342. <td>
  343. <div id="F1" tabindex="0" class="F1_position" role="button">
  344. <span id="F1_status" class="F_status_css">F1 status</span>
  345. </div>
  346. </td>
  347. </tr>
  348. </table>
  349. </td>
  350. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  351. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  352. <tr>
  353. <td>
  354. <div id="F2" tabindex="0" class="F2_position" role="button">
  355. <span id="F2_status" class="F_status_css">F2 status</span>
  356. </div>
  357. </td>
  358. </tr>
  359. </table>
  360. </td>
  361. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  362. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  363. <tr>
  364. <td>
  365. <div id="F3" tabindex="0" class="F3_position" role="button">
  366. <span id="F3_status" class="F_status_css">F3 status</span>
  367. </div>
  368. </td>
  369. </tr>
  370. </table>
  371. </td>
  372. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  373. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  374. <tr>
  375. <td>
  376. <div id="F4" tabindex="0" class="F4_position" role="button">
  377. <span id="F4_status" class="F_status_css">F4 status</span>
  378. </div>
  379. </td>
  380. </tr>
  381. </table>
  382. </td>
  383. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  384. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  385. <tr>
  386. <td>
  387. <div id="F5" tabindex="0" class="F5_position" role="button">
  388. <span id="F5_status" class="F_status_css">F5 status</span>
  389. </div>
  390. </td>
  391. </tr>
  392. </table>
  393. </td>
  394. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  395. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  396. <tr>
  397. <td>
  398. <div id="F6" tabindex="0" class="F6_position" role="button">
  399. <span id="F6_status" class="F_status_css">F6 status</span>
  400. </div>
  401. </td>
  402. </tr>
  403. </table>
  404. </td>
  405. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  406. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  407. <tr>
  408. <td>
  409. <div id="FO1" tabindex="0" class="FO1_position" role="button">
  410. <span id="FO1_status" class="F_status_css">FO1 status</span>
  411. </div>
  412. </td>
  413. </tr>
  414. </table>
  415. </td>
  416. </tr>
  417. <tr>
  418. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  419. <div id="FI1_status_dot" style="height: 20px; background-color: black;"></div>
  420. </td>
  421. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  422. <div id="F1_status_dot" style=" height: 20px; background-color: black;"></div>
  423. </td>
  424. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  425. <div id="F2_status_dot" style=" height: 20px; background-color: black;"></div>
  426. </td>
  427. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  428. <div id="F3_status_dot" style=" height: 20px; background-color: black;"></div>
  429. </td>
  430. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  431. <div id="F4_status_dot" style="height: 20px; background-color: black;"></div>
  432. </td>
  433. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  434. <div id="F5_status_dot" style="height: 20px; background-color: black;"></div>
  435. </td>
  436. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  437. <div id="F6_status_dot" style="height: 20px; background-color: black;"></div>
  438. </td>
  439. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  440. <div id="FO1_status_dot" style="height: 20px; background-color: black;"></div>
  441. </td>
  442. </tr>
  443. <tr>
  444. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  445. 入料儲豆槽
  446. </td>
  447. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  448. 發酵槽
  449. </td>
  450. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  451. 發酵槽
  452. </td>
  453. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  454. 發酵槽
  455. </td>
  456. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  457. 發酵槽
  458. </td>
  459. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  460. 發酵槽
  461. </td>
  462. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  463. 發酵槽
  464. </td>
  465. <td style="border: lightsteelblue 1px solid;" width="12.5%">
  466. 出料儲豆槽
  467. </td>
  468. </tr>
  469. <tr>
  470. <td style="border: lightsteelblue 1px solid;">
  471. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  472. <tr>
  473. <td>
  474. <div id="FI2" tabindex="0" class="FI2_position" role="button">
  475. <span id="FI2_status" class="F_status_css">FI2 status</span>
  476. </div>
  477. </td>
  478. </tr>
  479. </table>
  480. </td>
  481. <td style="border: lightsteelblue 1px solid;">
  482. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  483. <tr>
  484. <td>
  485. <div id="F7" tabindex="0" class="F7_position" role="button">
  486. <span id="F7_status" class="F_status_css">F7 status</span>
  487. </div>
  488. </td>
  489. </tr>
  490. </table>
  491. </td>
  492. <td style="border: lightsteelblue 1px solid;">
  493. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  494. <tr>
  495. <td>
  496. <div id="F8" tabindex="0" class="F8_position" role="button">
  497. <span id="F8_status" class="F_status_css">F8 status</span>
  498. </div>
  499. </td>
  500. </tr>
  501. </table>
  502. </td>
  503. <td style="border: lightsteelblue 1px solid;">
  504. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  505. <tr>
  506. <td>
  507. <div id="F9" tabindex="0" class="F9_position" role="button">
  508. <span id="F9_status" class="F_status_css">F9 status</span>
  509. </div>
  510. </td>
  511. </tr>
  512. </table>
  513. </td>
  514. <td style="border: lightsteelblue 1px solid;">
  515. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  516. <tr>
  517. <td>
  518. <div id="F10" tabindex="0" class="F10_position" role="button">
  519. <span id="F10_status" class="F_status_css">F10 status</span>
  520. </div>
  521. </td>
  522. </tr>
  523. </table>
  524. </td>
  525. <td style="border: lightsteelblue 1px solid;">
  526. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  527. <tr>
  528. <td>
  529. <div id="F11" tabindex="0" class="F11_position" role="button">
  530. <span id="F11_status" class="F_status_css">F11 status</span>
  531. </div>
  532. </td>
  533. </tr>
  534. </table>
  535. </td>
  536. <td style="border: lightsteelblue 1px solid;">
  537. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  538. <tr>
  539. <td>
  540. <div id="F12" tabindex="0" class="F12_position" role="button">
  541. <span id="F12_status" class="F_status_css">F12 status</span>
  542. </div>
  543. </td>
  544. </tr>
  545. </table>
  546. </td>
  547. <td style="border: lightsteelblue 1px solid;">
  548. <table style="border: 0px plum solid; margin-right: auto; margin-left: auto; text-align: center;" cellpadding="5">
  549. <tr>
  550. <td>
  551. <div id="FO2" tabindex="0" class="FO2_position" role="button">
  552. <span id="FO2_status" class="F_status_css">FO2 status</span>
  553. </div>
  554. </td>
  555. </tr>
  556. </table>
  557. </td>
  558. </tr>
  559. <tr>
  560. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  561. <div id="FI2_status_dot" style=" height: 20px; background-color: black;"></div>
  562. </td>
  563. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  564. <div id="F7_status_dot" style=" height: 20px; background-color: black;"></div>
  565. </td>
  566. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  567. <div id="F8_status_dot" style=" height: 20px; background-color: black;"></div>
  568. </td>
  569. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  570. <div id="F9_status_dot" style=" height: 20px; background-color: black;"></div>
  571. </td>
  572. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  573. <div id="F10_status_dot" style="height: 20px; background-color: black;"></div>
  574. </td>
  575. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  576. <div id="F11_status_dot" style="height: 20px; background-color: black;"></div>
  577. </td>
  578. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  579. <div id="F12_status_dot" style="height: 20px; background-color: black;"></div>
  580. </td>
  581. <td width="12.5%" style="border: lightsteelblue 1px solid;">
  582. <div id="FO2_status_dot" style="height: 20px; background-color: black;"></div>
  583. </td>
  584. </tr>
  585. </table>
  586. </div>
  587. <!-- 發酵貨櫃 致動器狀態 感測器數值 -->
  588. <div style="text-align: center;">
  589. <table style="border: 3px lightsteelblue solid; margin-right: auto; margin-left: auto; text-align: center; margin-top: 5px;" cellpadding="5" border="1">
  590. <tr>
  591. <td width="100%" style="border: lightsteelblue 1px solid;">
  592. 入料<br>真空吸料機
  593. </td>
  594. </tr>
  595. <tr>
  596. <td>
  597. <div id="actuator_0_status" style="margin:0 auto; height: 20px; background-color: lightgray;"></div>
  598. </td>
  599. </tr>
  600. </table>
  601. <table style="border: 3px lightsteelblue solid; margin-right: auto; margin-left: auto; text-align: center; margin-top: 5px;" cellpadding="5" border="1">
  602. <tr>
  603. <td style="border: lightsteelblue 1px solid;">
  604. 生豆<br>高度
  605. </td>
  606. </tr>
  607. <tr>
  608. <td style="border: lightsteelblue 1px solid;">
  609. <span id="sensor_00"></span>
  610. </td>
  611. </tr>
  612. </table>
  613. <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">
  614. <tr>
  615. <td style="border: lightsteelblue 1px solid;">
  616. 入料儲豆槽<br>
  617. 參數設定
  618. </td>
  619. </tr>
  620. <tr>
  621. <td style="padding: 10px; text-align: left; vertical-align: text-top;">
  622. 生豆高度
  623. <input name="Ferment_Tank_bean_height" class="input-text" type="text" value="5">公分<br>
  624. 吸放料時間
  625. <input name="Ferment_Tank_vacuumON_time" class="input-text" type="text" value="5">秒<br>
  626. </td>
  627. </tr>
  628. </table>
  629. </div>
  630. </div>
  631. </div>
  632. </div>
  633. </div>
  634. </div>
  635. </div>
  636. </div>
  637. {% endblock %}