Bläddra i källkod

1.1 modify ferment_auto_status

rita 3 år sedan
förälder
incheckning
5dddee458e
2 ändrade filer med 126 tillägg och 75 borttagningar
  1. 81 75
      app/main/views.py
  2. 45 0
      app/templates/ferment_auto.html

+ 81 - 75
app/main/views.py

@@ -31,6 +31,7 @@ import random
 from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg as FigureCanvas
 import io
 from flask import make_response
+from distutils.util import strtobool   # 將字串 string 轉成布林 boolean 
 
 import psutil
 
@@ -323,7 +324,7 @@ def dry_auto_test():
         DI1 = 'DI_InputtingBean'
         print('-- DI1 狀態更新:入豆中 --')
     # 入料儲豆槽入豆時 且 (發酵儲豆槽有入料 或者 前方儲豆槽非可出豆), 則停止入豆
-    elif DI1 == 'DI_InputtingBean' and (DI_UP_UltraSoniclist[0] > 55) and (FO1 != 'FO_OutputtingBean') :
+    elif DI1 == 'DI_InputtingBean' and (DI_UP_UltraSoniclist[0] > 35) and (FO1 != 'FO_OutputtingBean') :
         DI1 = 'DI_OutputtingBean'
         print('-- DI1 狀態更新:可出豆 --')
     # 若入料儲豆槽可出豆 且 儲豆槽內高度低於 40 且 前方脫皮機儲豆槽可出豆 且 目前無桶槽需入料時
@@ -333,7 +334,7 @@ def dry_auto_test():
     # if DI2 == 'DI_Waiting' and FO2 == 'FO_OutputtingBean': 
     #     DI2 = 'DI_InputtingBean'
     #     print('-- DI2 狀態更新:入豆中 --')
-    # elif DI2 == 'DI_InputtingBean' and ((DI_DOWN_UltraSoniclist[1] > 55) or (FO2 == 'FO_OutputtingBean')) :
+    # elif DI2 == 'DI_InputtingBean' and ((DI_DOWN_UltraSoniclist[1] > 35) or (FO2 == 'FO_OutputtingBean')) :
     #     DI2 = 'DI_OutputtingBean'
     #     print('-- DI2 狀態更新:可出豆 --')
     # elif DI2 == 'DI_OutputtingBean' and (DI_DOWN_UltraSoniclist[1] < 40) and FO2 == 'FO_OutputtingBean' and Dry_InputtingBean_number == 0 and Dry_InputtingBeanPause_number == 0:
@@ -352,7 +353,7 @@ def dry_auto_test():
     # 參考 -- 乾燥桶槽 F1~F6 可出豆→出料儲豆槽 FO1 判斷 --
 
     # 出料儲豆槽入料 且滿時, 出料儲豆槽可出豆
-    if DO1 == ('DO_InputtingBean' and DO_UP_UltraSoniclist[0] > 55):
+    if DO1 == ('DO_InputtingBean' and DO_UP_UltraSoniclist[0] > 35):
         DO1 = 'DO_OutputtingBean'
     # 出料儲豆槽入料 且未滿, 桶槽可出豆已空
     # -- 取得乾燥桶槽 D1~D6 桶內高度 UltraSonic -------------
@@ -468,9 +469,11 @@ def ferment_auto():
 def ferment_auto_test():
     info = request.args.to_dict()
     Ferment_Tank_bean_height = int(info['Ferment_Tank_bean_height'])
+    FermentAuto_fermenting = strtobool(info['FermentAuto_fermenting'])
     print('發酵自動化_指定生豆高度: ', Ferment_Tank_bean_height)
+    print('發酵自動化_發酵排程: ', FermentAuto_fermenting, type(FermentAuto_fermenting))
     # [介面] 讓使用者可以選擇排程內有發酵/清洗/校正, 此處預設為 True 
-    Ferment_btn = True
+    Ferment_btn = FermentAuto_fermenting # Ferment_btn = True
     # 從資料庫資料表中取得最新狀態
     ferment_status = ferment_container_status.query.order_by(text('datetime desc')).first()
     FI1 = ferment_status.Ferment_Input_1
@@ -494,13 +497,53 @@ def ferment_auto_test():
     F_UP_tanklist = [F1, F2, F3, F4, F5, F6]
     F_DOWN_tanklist = [F7, F8, F9, F10, F11, F12]
 
+
+
+    # ----- 發酵入料儲豆槽 FI1~FI2 入豆→可出豆判斷 ------------------------------
+    # 目前發酵槽 F1~F6 正在入豆的桶槽數量 (應小於一桶)
+    FermentUp_InputtingBean_number = int(F_UP_tanklist.count('F_InputtingBean'))
+    FermentUp_InputtingBeanPause_number = int(F_UP_tanklist.count('F_InputtingBean_Pause'))
+    # -- 取得發酵入料儲豆槽 FI1~FI2 桶內高度 UltraSonic -------------
+    FI_UP_UltraSoniclist = []
+    for i in range(1, 3, 1):
+        input_UltraSonic = ferment_input_UltraSonic.query.filter_by(tank_num='FI' + str(i)).order_by(text('datetime desc')).first()
+        UltraSonic = int(input_UltraSonic.UltraSonic)
+        FI_UP_UltraSoniclist.append(UltraSonic)
+    print('FI_UP_UltraSoniclist: ', FI_UP_UltraSoniclist)
+    # -- 取得發酵入料儲豆槽 FI1~FI2 桶內高度 UltraSonic -------------
+    # 入料儲豆槽等待中、且脫皮機儲豆槽可出豆時, 入料儲豆槽入豆
+    if FI1 == 'FI_Waiting' and PO1 == 'PO_OutputtingBean':
+        FI1 = 'FI_InputtingBean'
+        print('-- FI1 狀態更新:入豆中 --')
+    # 入料儲豆槽入豆時 且 (發酵儲豆槽有入料(少) 或者 前方儲豆槽非可出豆), 則停止入豆
+    elif FI1 == 'FI_InputtingBean' and (FI_UP_UltraSoniclist[0] <= 5) and (PO1 != 'PO_OutputtingBean') :
+        FI1 = 'FI_Waiting'
+        print('-- FI1 狀態更新:空桶等待 --')
+    # 入料儲豆槽入豆時 且 (發酵儲豆槽有入料(多) 或者 前方儲豆槽非可出豆), 則停止入豆
+    elif FI1 == 'FI_InputtingBean' and (FI_UP_UltraSoniclist[0] >= 35) and (PO1 != 'PO_OutputtingBean') :
+        FI1 = 'FI_OutputtingBean'
+        print('-- FI1 狀態更新:可出豆 --')
+    # 若入料儲豆槽可出豆 且 儲豆槽內高度低於 40 且 前方脫皮機儲豆槽可出豆 且 目前無桶槽需入料時
+    elif FI1 == 'FI_OutputtingBean' and (FI_UP_UltraSoniclist[0] < 40) and PO1 == 'PO_OutputtingBean' and FermentUp_InputtingBean_number == 0 and FermentUp_InputtingBeanPause_number == 0:
+        FI1 = 'FI_InputtingBean'
+        print('-- FI1 狀態更新:入豆中 --')
+    # if FI2 == 'FI_Waiting' and PO2 == 'PO_OutputtingBean':
+    #     FI2 = 'FI_InputtingBean'
+    #     print('-- FI2 狀態更新:入豆中 --')
+    # elif FI2 == 'FI_InputtingBean' and ((FI_UP_UltraSoniclist[1] >= 35) or (PO2 != 'PO_OutputtingBean')) :
+    #     FI2 = 'FI_OutputtingBean'
+    #     print('-- FI2 狀態更新:可出豆 --')
+    # elif FI2 == 'FI_OutputtingBean' and (FI_UP_UltraSoniclist[1] < 40) and PO2 == 'PO_OutputtingBean' and FermentUp_InputtingBean_number == 0 and FermentUp_InputtingBeanPause_number == 0:
+    #     FI2 = 'FI_InputtingBean'
+    #     print('-- FI2 狀態更新:入豆中 --')
+    
+
+
+
     # ----- 發酵桶槽 F1~F6 入料暫停→入料判斷 ------------------------------
     ### 移到入料
 
     # ----- 發酵桶槽 F1~F6 等待→入料判斷 ------------------------------
-    # 目前發酵槽 F1~F6 正在入豆的桶槽數量 (應小於一桶)
-    Ferment_InputtingBean_number = int(F_UP_tanklist.count('F_InputtingBean'))
-    Ferment_InputtingBeanPause_number = int(F_UP_tanklist.count('F_InputtingBean_Pause'))
     # -- 取得發酵桶槽 F1~F6 桶內高度 UltraSonic -------------
     F_UP_UltraSoniclist = []
     for i in range(1, 7, 1):
@@ -534,11 +577,11 @@ def ferment_auto_test():
                 F6 = 'F_InputtingBean_Finish'
                 print('-- F6 狀態更新:入料完成 --')
             # 若有兩個以上桶槽入料中, 則桶號最小者優先入料
-            if Ferment_InputtingBean_number >= 1:
+            if FermentUp_InputtingBean_number >= 1:
                 print('發酵槽 F'+str(F_UP_tanklist.index('F_InputtingBean')+1)+' 優先入豆中')
-                print('-- F'+str(F_UP_tanklist.index('F_InputtingBean')+1)+' 入料中 --')
+                print('-- F'+str(F_UP_tanklist.index('F_InputtingBean')+1)+' 狀態更新:入料中 --')
             # 若 F1~F6 發酵桶槽為 入豆暫停, 則狀態改為優先入豆
-            elif Ferment_InputtingBeanPause_number >= 1:
+            elif FermentUp_InputtingBeanPause_number >= 1:
                 if F1 == 'F_InputtingBean_Pause':
                     F1 = 'F_InputtingBean'
                     print('-- F1 狀態更新:入料中 --')
@@ -558,7 +601,7 @@ def ferment_auto_test():
                     F6 = 'F_InputtingBean'
                     print('-- F6 狀態更新:入料中 --')
             # 若 F1~F6 皆無入豆 無入豆暫停, 則桶號最小者開始入豆
-            elif Ferment_InputtingBean_number == 0 and Ferment_InputtingBeanPause_number == 0:
+            elif FermentUp_InputtingBean_number == 0 and FermentUp_InputtingBeanPause_number == 0:
                 if F1 == 'F_Waiting':
                     F1 = 'F_InputtingBean'
                     print('-- F1 狀態更新:入料中 --')
@@ -578,7 +621,7 @@ def ferment_auto_test():
                     F6 = 'F_InputtingBean'
                     print('-- F6 狀態更新:入料中 --')
         # 若入料儲豆槽非可出豆, 且 F1~F6 其中有桶槽入料中, 若桶槽未滿則入料暫停
-        elif FI1 != 'FI_InputtingBean' and Ferment_InputtingBean_number >= 1:
+        elif FI1 != 'FI_InputtingBean' and FermentUp_InputtingBean_number >= 1:
             if F1 == 'F_InputtingBean' and F_UP_UltraSoniclist[0] < Ferment_Tank_bean_height:
                 F1 = 'F_InputtingBean_Pause'
                 print('-- F1 狀態更新:入料暫停 --')
@@ -624,12 +667,10 @@ def ferment_auto_test():
 
 # ----- 10/07 --------------------------------------------------------------------------------------------------------------------------------
     # ----- 發酵桶槽 F1~F6 入料→入料暫停判斷 ------------------------------
-    # if FI1 != 'FI_OutputtingBean' and Ferment_InputtingBean_number >= 1:
     ### 移到入料
 
 
 
-
     # # ----- 發酵桶槽 F1~F6 入料→入水判斷 ------------------------------
     # Ferment_InputtingBeanFinish_number = int(F_UP_tanklist.count('F_InputtingBean_Finish'))
     # Ferment_InputtingWater_number = int(F_UP_tanklist.count('F_InputtingWater'))
@@ -733,43 +774,8 @@ def ferment_auto_test():
             print('-- F6 狀態更新:出豆中 --')
             print('-- FO1 狀態更新:入豆中 --')
 
-
-
     # ----- 發酵入料儲豆槽 FI1~FI2 入豆→可出豆判斷 ------------------------------
-    # -- 取得發酵入料儲豆槽 FI1~FI2 桶內高度 UltraSonic -------------
-    FI_UP_UltraSoniclist = []
-    for i in range(1, 3, 1):
-        input_UltraSonic = ferment_input_UltraSonic.query.filter_by(tank_num='FI' + str(i)).order_by(text('datetime desc')).first()
-        UltraSonic = int(input_UltraSonic.UltraSonic)
-        FI_UP_UltraSoniclist.append(UltraSonic)
-    print('FI_UP_UltraSoniclist: ', FI_UP_UltraSoniclist)
-    # 入料儲豆槽等待中、且脫皮機儲豆槽可出豆時, 入料儲豆槽入豆
-    if FI1 == 'FI_Waiting' and PO1 == 'PO_OutputtingBean':
-        FI1 = 'FI_InputtingBean'
-        print('-- FI1 狀態更新:入豆中 --')
-    # 入料儲豆槽入豆時 且 (發酵儲豆槽有入料(少) 或者 前方儲豆槽非可出豆), 則停止入豆
-    elif FI1 == 'FI_InputtingBean' and ((FI_UP_UltraSoniclist[0] <= 30) and (PO1 != 'PO_OutputtingBean')) :
-        FI1 = 'FI_Waiting'
-        print('-- FI1 狀態更新:空桶等待 --')
-    # 入料儲豆槽入豆時 且 (發酵儲豆槽有入料(多) 或者 前方儲豆槽非可出豆), 則停止入豆
-    elif FI1 == 'FI_InputtingBean' and ((FI_UP_UltraSoniclist[0] > 30) and (PO1 != 'PO_OutputtingBean')) :
-        FI1 = 'FI_OutputtingBean'
-        print('-- FI1 狀態更新:可出豆 --')
-    # 若入料儲豆槽可出豆 且 儲豆槽內高度低於 40 且 前方脫皮機儲豆槽可出豆 且 目前無桶槽需入料時
-    elif FI1 == 'FI_OutputtingBean' and (FI_UP_UltraSoniclist[0] < 40) and PO1 == 'PO_OutputtingBean' and Ferment_InputtingBean_number == 0 and Ferment_InputtingBeanPause_number == 0:
-        FI1 = 'FI_InputtingBean'
-        print('-- FI1 狀態更新:入豆中 --')
-    # if FI2 == 'FI_Waiting' and PO2 == 'PO_OutputtingBean':
-    #     FI2 = 'FI_InputtingBean'
-    #     print('-- FI2 狀態更新:入豆中 --')
-    # elif FI2 == 'FI_InputtingBean' and ((FI_UP_UltraSoniclist[1] > 55) or (PO2 != 'PO_OutputtingBean')) :
-    #     FI2 = 'FI_OutputtingBean'
-    #     print('-- FI2 狀態更新:可出豆 --')
-    # elif FI2 == 'FI_OutputtingBean' and (FI_UP_UltraSoniclist[1] < 40) and PO2 == 'PO_OutputtingBean' and Ferment_InputtingBean_number == 0 and Ferment_InputtingBeanPause_number == 0:
-    #     FI2 = 'FI_InputtingBean'
-    #     print('-- FI2 狀態更新:入豆中 --')
-
-
+    # 1008 移到桶槽前面
 
 
     # ----- 發酵出料儲豆槽 FO1~FO2 入豆→可出豆判斷 ------------------------------
@@ -784,7 +790,7 @@ def ferment_auto_test():
     # 參考 -- 發酵桶槽 F1~F6 可出豆→出料儲豆槽 FO1 判斷 --
 
     # 出料儲豆槽入料 且滿時, 出料儲豆槽可出豆
-    if FO1 == ('FO_InputtingBean' and FO_UP_UltraSoniclist[0] > 55):
+    if FO1 == ('FO_InputtingBean') and FO_UP_UltraSoniclist[0] > 35:
         FO1 = 'FO_OutputtingBean'
         print('-- FO1 狀態更新:可出豆 --')
     # 出料儲豆槽入料 且未滿, 桶槽可出豆已空
@@ -830,30 +836,30 @@ def ferment_auto_test():
     elif FO1 == 'FO_OutputtingBean' and FO_UP_UltraSoniclist[0] < 5:
         FO1 = 'FO_Waiting'
 
-    # # ----- 將狀態寫入資料庫 ------------------------------
-    # # 獲取文本框的值並賦值給user實體對象
-    # F_status = ferment_container_status()
-    # F_status.Ferment_Input_1 = FI1
-    # F_status.Ferment_Input_2 = FI2
-    # F_status.Ferment_Tank_1 = F1
-    # F_status.Ferment_Tank_2 = F2
-    # F_status.Ferment_Tank_3 = F3
-    # F_status.Ferment_Tank_4 = F4
-    # F_status.Ferment_Tank_5 = F5
-    # F_status.Ferment_Tank_6 = F6
-    # F_status.Ferment_Tank_7 = F7
-    # F_status.Ferment_Tank_8 = F8
-    # F_status.Ferment_Tank_9 = F9
-    # F_status.Ferment_Tank_10 = F10
-    # F_status.Ferment_Tank_11 = F11
-    # F_status.Ferment_Tank_12 = F12
-    # F_status.Ferment_Output_1 = FO1
-    # F_status.Ferment_Output_2 = FO2
-    # #將數據保存進資料庫
-    # db.session.add(F_status)
-    # # 手動提交
-    # db.session.commit()
-    # # ----- 將狀態寫入資料庫 ------------------------------
+    # ----- 將狀態寫入資料庫 ------------------------------
+    # 獲取文本框的值並賦值給user實體對象
+    F_status = ferment_container_status()
+    F_status.Ferment_Input_1 = FI1
+    F_status.Ferment_Input_2 = FI2
+    F_status.Ferment_Tank_1 = F1
+    F_status.Ferment_Tank_2 = F2
+    F_status.Ferment_Tank_3 = F3
+    F_status.Ferment_Tank_4 = F4
+    F_status.Ferment_Tank_5 = F5
+    F_status.Ferment_Tank_6 = F6
+    F_status.Ferment_Tank_7 = F7
+    F_status.Ferment_Tank_8 = F8
+    F_status.Ferment_Tank_9 = F9
+    F_status.Ferment_Tank_10 = F10
+    F_status.Ferment_Tank_11 = F11
+    F_status.Ferment_Tank_12 = F12
+    F_status.Ferment_Output_1 = FO1
+    F_status.Ferment_Output_2 = FO2
+    #將數據保存進資料庫
+    db.session.add(F_status)
+    # 手動提交
+    db.session.commit()
+    # ----- 將狀態寫入資料庫 ------------------------------
 
     return jsonify({"Ferment_Input_1":FI1,
                     "Ferment_Tank_1":F1,

+ 45 - 0
app/templates/ferment_auto.html

@@ -396,6 +396,10 @@
             <!-- 發酵貨櫃 參數設定-->
             <table style="border: 3px lightsteelblue solid; margin-right: auto; margin-left: auto; text-align: center; margin-top: 10px;" cellpadding="5" border="1">
                 <tr>
+                    <td>
+                        發酵自動化<br>
+                        排程
+                    </td>
                     <td>
                         入料儲豆槽<br>
                         參數設定
@@ -410,6 +414,12 @@
                     </td>
                 </tr>
                 <tr>
+                    <td style="padding: 10px; text-align: left; vertical-align: text-top;">
+                        <label><input type="checkbox" id="cb_fermenting" checked>&nbsp; 發酵</label><br>
+                        <label><input type="checkbox" id="cb_cleaning">&nbsp; 清洗</label><br>
+                        <label><input type="checkbox" id="cb_calibratingEC">&nbsp; 校正 EC</label><br>
+                        <label><input type="checkbox" id="cb_calibratingSTIR">&nbsp; 校正攪拌棒</label>
+                    </td>
                     <td style="padding: 10px; text-align: left; vertical-align: text-top;">
                         吸料時間&nbsp; 
                         <input name="Ferment_Input_vacuumON_time" type="text" value="10" style="width:50px;">&nbsp; 秒<br>
@@ -502,8 +512,38 @@
                 [測試] 發酵貨櫃狀態</button></center>
             
             <script>
+                function test(){
+                    
+                    /*
+                    if ($('#cb_fermenting').prop('checked')) {
+                        console.log("發酵自動化:加入發酵排程");
+
+                    }  else {
+
+                    }
+                    if ($('#cb_cleaning').prop('checked')) {
+                        console.log("發酵自動化:加入清洗排程");
+                    }
+                    if ($('#cb_calibratingEC').prop('checked')) {
+                        console.log("發酵自動化:加入校正 EC 排程");
+                    }
+                    if ($('#cb_calibratingSTIR').prop('checked')) {
+                        console.log("發酵自動化:加入校正攪拌棒排程");
+                    }
+                    */
+                   console.log(FermentAuto_fermenting)
+                   console.log(FermentAuto_cleaning)
+                   console.log(FermentAuto_calibratingEC)
+                   console.log(FermentAuto_calibratingSTIR)
+                
+                };
 
                 function testing_F_auto(){
+                    var FermentAuto_fermenting = $('#cb_fermenting').prop('checked')
+                    var FermentAuto_cleaning = $('#cb_cleaning').prop('checked')
+                    var FermentAuto_calibratingEC = $('#cb_calibratingEC').prop('checked')
+                    var FermentAuto_calibratingSTIR = $('#cb_calibratingSTIR').prop('checked')
+
                     var Ferment_Input_vacuumON_time = $("input[name=Ferment_Input_vacuumON_time]").val();
                     var Ferment_Input_vacuumOFF_time = $("input[name=Ferment_Input_vacuumOFF_time]").val();
 
@@ -523,6 +563,11 @@
                     var Ferment_Output_vacuumOFF_time = $("input[name=Ferment_Output_vacuumOFF_time]").val();
                     
                     var data = { 'command': 'Ferment_auto_parameter', 
+                                 'FermentAuto_fermenting': FermentAuto_fermenting, 
+                                 'FermentAuto_cleaning': FermentAuto_cleaning, 
+                                 'FermentAuto_calibratingEC': FermentAuto_calibratingEC, 
+                                 'FermentAuto_calibratingSTIR': FermentAuto_calibratingSTIR, 
+
                                  'Ferment_Input_vacuumON_time': Ferment_Input_vacuumON_time, 
                                  'Ferment_Input_vacuumOFF_time': Ferment_Input_vacuumOFF_time, 
                                  'Ferment_Tank_bean_height': Ferment_Tank_bean_height,