|  | @@ -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,
 |