Browse Source

上傳檔案到 'app'

rita 2 years ago
parent
commit
6bbef6a0ac
1 changed files with 355 additions and 218 deletions
  1. 355 218
      app/models.py

+ 355 - 218
app/models.py

@@ -27,7 +27,8 @@ class User(db.Model):
 # dry_block 取值測試
 class dry_block_waiting(db.Model):
     __tablename__ = 'dry_block_waiting'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     cond_z1_1 = db.Column(db.Text, nullable=False)
     cond_tank1_1 = db.Column(db.Text, nullable=False)
     cond_a1_1 = db.Column(db.Text, nullable=False)
@@ -185,49 +186,114 @@ class dry_block_waiting(db.Model):
     do_act5_5 = db.Column(db.Text, nullable=False)
 
 # # ////////////////////////////////////////////////////////////////////////////////
-# 乾燥槽
-# 乾燥桶入料_感測器_超音波感測器
-class dry_input_sensor(db.Model):
-    __tablename__ = 'dry_input_sensor'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+# ===== 乾燥槽 - 桶槽 =====
+# 乾燥桶_感測器_超音波感測器 0421 update
+class dry_tank_UltraSonic(db.Model):
+    __tablename__ = 'dry_tank_UltraSonic'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     UltraSonic = db.Column(db.Text, nullable=False)
 
-# 乾燥桶_感測器_SHT11
+# 乾燥桶_感測器_大氣壓力 0421 update
+class dry_tank_PA(db.Model):
+    __tablename__ = 'dry_tank_PA'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
+    tank_num = db.Column(db.Text, nullable=False)
+    PA = db.Column(db.Text, nullable=False)
+
+# 乾燥桶_感測器_馬達編碼器 0421 update
+class dry_tank_motorEncoder(db.Model):
+    __tablename__ = 'dry_tank_motorEncoder'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
+    tank_num = db.Column(db.Text, nullable=False)
+    motorEncoder = db.Column(db.Text, nullable=False)
+
+# 乾燥桶_感測器_SHT11 0421 update
 class dry_tank_SHT11(db.Model):
     __tablename__ = 'dry_tank_SHT11'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     SHT11_Temp = db.Column(db.Text, nullable=False)
     SHT11_Humidity = db.Column(db.Text, nullable=False)
 
-# 乾燥桶_感測器_土壤三合一感測器
+# 乾燥桶_感測器_土壤三合一感測器 0421 update
 class dry_tank_Soil(db.Model):
     __tablename__ = 'dry_tank_Soil'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     soil_Temp = db.Column(db.Text, nullable=False)
     soil_Humidity = db.Column(db.Text, nullable=False)
     soil_EC = db.Column(db.Text, nullable=False)
 
-# 乾燥桶_感測器_超音波感測器
-class dry_tank_PA(db.Model):
-    __tablename__ = 'dry_tank_PA'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+# 乾燥桶_感測器_蝴蝶閥狀態顯示器 0421 update
+class dry_tank_diskvalveMonitor(db.Model):
+    __tablename__ = 'dry_tank_diskvalveMonitor'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
-    PA = db.Column(db.Text, nullable=False)
+    diskvalveMonitor = db.Column(db.Text, nullable=False)
 
-# 乾燥桶_感測器_超音波感測器
-class dry_tank_UltraSonic(db.Model):
-    __tablename__ = 'dry_tank_UltraSonic'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+# 乾燥桶_感測器_水位計 0421 update
+class dry_outer_WaterLevel(db.Model):
+    __tablename__ = 'dry_outer_WaterLevel'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
-    UltraSonic = db.Column(db.Text, nullable=False)
+    WaterLevel = db.Column(db.Text, nullable=False)
 
-# 乾燥桶出料_感測器_超音波感測器
-class dry_output_sensor(db.Model):
-    __tablename__ = 'dry_output_sensor'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+#乾燥桶_致動器_ALL 0421 update
+class dry_tank_actuator(db.Model):
+    __tablename__ = 'dry_tank_actuator'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
+    tank_num = db.Column(db.Text, nullable=False)
+    vacuum = db.Column(db.Text, nullable=False)
+    threewayvalve_input = db.Column(db.Text, nullable=False)
+    solenoid_disinfect = db.Column(db.Text, nullable=False)
+    motor = db.Column(db.Text, nullable=False)
+    solenoid_outer_water = db.Column(db.Text, nullable=False)
+    solenoid_water_out = db.Column(db.Text, nullable=False)
+    heater1 = db.Column(db.Text, nullable=False)
+    heater2 = db.Column(db.Text, nullable=False)
+    temp_enable = db.Column(db.Text, nullable=False)
+    temp = db.Column(db.Text, nullable=False)
+    diskvalve = db.Column(db.Text, nullable=False)
+    switch_magnetic = db.Column(db.Text, nullable=False)
+    switch_emergency = db.Column(db.Text, nullable=False)
+    camera = db.Column(db.Text, nullable=False)
+    light_warning = db.Column(db.Text, nullable=False)
+
+#乾燥桶_致動器_ALL OLD
+class dry_tank_brake(db.Model):
+    __tablename__ = 'dry_tank_brake'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
+    tank_num = db.Column(db.Text, nullable=False)
+    vacuum = db.Column(db.Integer, nullable=False)
+    threewayvalve_input = db.Column(db.Integer, nullable=False)
+    threewayvalve_bean = db.Column(db.Integer, nullable=False)
+    diskvalve = db.Column(db.Integer, nullable=False)
+    solenoid_disinfect = db.Column(db.Integer, nullable=False)
+    solenoid_water = db.Column(db.Integer, nullable=False)
+    solenoid_outer_water = db.Column(db.Integer, nullable=False)
+    motor = db.Column(db.Integer, nullable=False)
+    blower = db.Column(db.Integer, nullable=False)
+    heater1 = db.Column(db.Integer, nullable=False)
+    heater2 = db.Column(db.Integer, nullable=False)
+    temp1_enable = db.Column(db.Integer, nullable=False)
+    temp1 = db.Column(db.Float, nullable=False)
+
+# ===== 乾燥槽 - 入料 =====
+# 乾燥桶入料_感測器_超音波感測器
+class dry_input_sensor(db.Model):
+    __tablename__ = 'dry_input_sensor'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     UltraSonic = db.Column(db.Text, nullable=False)
 
@@ -235,7 +301,7 @@ class dry_output_sensor(db.Model):
 class set_dry_input(db.Model):
     __tablename__ = 'set_dry_input'
     sn = db.Column(db.Integer, primary_key=True)
-    datetime = db.Column(db.DateTime, nullable=False)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     input_height = db.Column(db.Text, nullable=False)
     input_entertime = db.Column(db.Text, nullable=False)
     input_exittime = db.Column(db.Text, nullable=False)
@@ -244,177 +310,202 @@ class set_dry_input(db.Model):
 # 乾燥桶入料_致動器_真空吸料機
 class dry_input_brake(db.Model):
     __tablename__ = 'dry_input_brake'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     vacuum = db.Column(db.Integer, nullable=False)
 
-#乾燥桶_致動器_ALL
-class dry_tank_brake(db.Model):
-    __tablename__ = 'dry_tank_brake'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+# ===== 乾燥槽 - 出料 =====
+# 乾燥桶出料_感測器_超音波感測器
+class dry_output_sensor(db.Model):
+    __tablename__ = 'dry_output_sensor'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
-    vacuum = db.Column(db.Integer, nullable=False)
-    threewayvalve_input = db.Column(db.Integer, nullable=False)
-    threewayvalve_bean = db.Column(db.Integer, nullable=False)
-    diskvalve = db.Column(db.Integer, nullable=False)
-    solenoid_disinfect = db.Column(db.Integer, nullable=False)
-    solenoid_water = db.Column(db.Integer, nullable=False)
-    solenoid_outer_water = db.Column(db.Integer, nullable=False)
-    motor = db.Column(db.Integer, nullable=False)
-    blower = db.Column(db.Integer, nullable=False)
-    heater1 = db.Column(db.Integer, nullable=False)
-    heater2 = db.Column(db.Integer, nullable=False)
-    temp1_enable = db.Column(db.Integer, nullable=False)
-    temp1 = db.Column(db.Float, nullable=False)
+    UltraSonic = db.Column(db.Text, nullable=False)
 
 # 乾燥桶出料_致動器_真空吸料機
 class dry_output_brake(db.Model):
     __tablename__ = 'dry_output_brake'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     vacuum = db.Column(db.Integer, nullable=False)
     
 # ////////////////////////////////////////////////////////////////////////////////
-# 發酵槽
-# 發酵槽_發酵貨櫃入料儲豆槽_超音波感測器
-class ferment_input_UltraSonic(db.Model):
-    __tablename__ = 'ferment_input_UltraSonic'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+# ===== 發酵槽 - 桶槽 =====
+# 發酵槽_感測器_超音波感測器 0421 update
+class ferment_tank_UltraSonic(db.Model):
+    __tablename__ = 'ferment_tank_UltraSonic'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     UltraSonic = db.Column(db.Text, nullable=False)
 
-# 發酵槽_發酵貨櫃入料儲豆槽_致動器
-class ferment_input_actuator(db.Model):
-    __tablename__ = 'ferment_input_actuator'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+# 發酵槽_感測器_PA 0421 update
+class ferment_tank_PA(db.Model):
+    __tablename__ = 'ferment_tank_PA'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
-    vacuum = db.Column(db.Integer, nullable=False)
+    PA = db.Column(db.Text, nullable=False)
+
+# 發酵槽_感測器_馬達編碼器 0421 update
+class ferment_tank_motorEncoder(db.Model):
+    __tablename__ = 'ferment_tank_motorEncoder'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
+    tank_num = db.Column(db.Text, nullable=False)
+    motorEncoder = db.Column(db.Text, nullable=False)
 
-# 發酵槽_感測器_SHT11
+# 發酵槽_感測器_SHT11 0421 update
 class ferment_tank_SHT11(db.Model):
     __tablename__ = 'ferment_tank_SHT11'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     SHT11_Temp = db.Column(db.Text, nullable=False)
     SHT11_Humidity = db.Column(db.Text, nullable=False)
 
-# 發酵槽_感測器_二氧化碳
-class ferment_tank_CO2(db.Model):
-    __tablename__ = 'ferment_tank_CO2'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+# 發酵槽_感測器_EC 0421 update
+class ferment_tank_EC(db.Model):
+    __tablename__ = 'ferment_tank_EC'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
-    CO2 = db.Column(db.Text, nullable=False)
+    EC = db.Column(db.Text, nullable=False)
 
-# 發酵槽_感測器_PH
+# 發酵槽_感測器_DO 0421 update
+class ferment_tank_DO(db.Model):
+    __tablename__ = 'ferment_tank_DO'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
+    tank_num = db.Column(db.Text, nullable=False)
+    DO = db.Column(db.Text, nullable=False)
+
+# 發酵槽_感測器_PH 0421 update
 class ferment_tank_PH(db.Model):
     __tablename__ = 'ferment_tank_PH'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     PH = db.Column(db.Text, nullable=False)
 
-# 發酵槽_感測器_ORP
+# 發酵槽_感測器_ORP 0421 update
 class ferment_tank_ORP(db.Model):
     __tablename__ = 'ferment_tank_ORP'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     ORP = db.Column(db.Text, nullable=False)
 
-# 發酵槽_感測器_DO
-class ferment_tank_DO(db.Model):
-    __tablename__ = 'ferment_tank_DO'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
-    tank_num = db.Column(db.Text, nullable=False)
-    DO = db.Column(db.Text, nullable=False)
-
-# 發酵槽_感測器_EC
-class ferment_tank_EC(db.Model):
-    __tablename__ = 'ferment_tank_EC'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+# 發酵槽_感測器_二氧化碳 0421 update
+class ferment_tank_CO2(db.Model):
+    __tablename__ = 'ferment_tank_CO2'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
-    EC = db.Column(db.Text, nullable=False)
+    CO2 = db.Column(db.Text, nullable=False)
 
-# 發酵槽_感測器_PA
-class ferment_tank_PA(db.Model):
-    __tablename__ = 'ferment_tank_PA'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+# 發酵槽_感測器_蝴蝶閥狀態顯示器 0421 update
+class ferment_tank_diskvalveMonitor(db.Model):
+    __tablename__ = 'ferment_tank_diskvalveMonitor'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
-    PA = db.Column(db.Text, nullable=False)
+    diskvalveMonitor = db.Column(db.Text, nullable=False)
 
-# 發酵槽保溫夾層_感測器_保溫夾層水位計
+# 發酵槽_感測器_水位計 0421 update
 class ferment_tank_WaterLevel(db.Model):
     __tablename__ = 'ferment_tank_WaterLevel'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     WaterLevel = db.Column(db.Text, nullable=False)
 
-# 發酵槽_感測器_超音波感測器
-class ferment_tank_UltraSonic(db.Model):
-    __tablename__ = 'ferment_tank_UltraSonic'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
-    tank_num = db.Column(db.Text, nullable=False)
-    UltraSonic = db.Column(db.Text, nullable=False)
-
-# 發酵槽_感測器_咖啡生豆高度
+# 發酵槽_感測器_咖啡生豆高度 OLD
 class ferment_tank_LiDAR(db.Model):
     __tablename__ = 'ferment_tank_LiDAR'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     LiDAR = db.Column(db.Text, nullable=False)
 
-# 發酵槽_感測器_水位高度
+# 發酵槽_感測器_水位高度 OLD
 class ferment_tank_PressureWaterLevel(db.Model):
     __tablename__ = 'ferment_tank_PressureWaterLevel'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     PressureWaterLevel = db.Column(db.Text, nullable=False)
 
-# 發酵槽_感測器_馬達編碼器
-class ferment_tank_motorEncoder(db.Model):
-    __tablename__ = 'ferment_tank_motorEncoder'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
-    tank_num = db.Column(db.Text, nullable=False)
-    motorEncoder = db.Column(db.Text, nullable=False)
-
-# 發酵槽_致動器
+# 發酵槽_致動器 0421 update
 class ferment_tank_actuator(db.Model):
     __tablename__ = 'ferment_tank_actuator'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
+    tank_num = db.Column(db.Text, nullable=False)
+    vacuum = db.Column(db.Text, nullable=False)
+    threewayvalve_input = db.Column(db.Text, nullable=False)
+    solenoid_tank_disinfect = db.Column(db.Text, nullable=False)
+    threewayvalve_outer_float = db.Column(db.Text, nullable=False)
+    motor = db.Column(db.Text, nullable=False)
+    solenoid_outer_water_in = db.Column(db.Text, nullable=False)
+    solenoid_tank_water_in = db.Column(db.Text, nullable=False)
+    solenoid_tank_water_out = db.Column(db.Text, nullable=False)
+    pump_sensor = db.Column(db.Text, nullable=False)
+    pump_CO2 = db.Column(db.Text, nullable=False)
+    solenoid_tank_pump = db.Column(db.Text, nullable=False)
+    heater1 = db.Column(db.Text, nullable=False)
+    heater2 = db.Column(db.Text, nullable=False)
+    temp_enable = db.Column(db.Text, nullable=False)
+    temp = db.Column(db.Text, nullable=False)
+    diskvalve = db.Column(db.Text, nullable=False)
+    switch_magnetic = db.Column(db.Text, nullable=False)
+    switch_emergency = db.Column(db.Text, nullable=False)
+    camera = db.Column(db.Text, nullable=False)
+    light_warning = db.Column(db.Text, nullable=False)
+
+# ===== 發酵槽 - 入料 =====
+# 發酵槽_發酵貨櫃入料儲豆槽_超音波感測器 OLD
+class ferment_input_UltraSonic(db.Model):
+    __tablename__ = 'ferment_input_UltraSonic'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
+    tank_num = db.Column(db.Text, nullable=False)
+    UltraSonic = db.Column(db.Text, nullable=False)
+
+# 發酵槽_發酵貨櫃入料儲豆槽_致動器 OLD
+class ferment_input_actuator(db.Model):
+    __tablename__ = 'ferment_input_actuator'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     vacuum = db.Column(db.Integer, nullable=False)
-    threewayvalve_input = db.Column(db.Integer, nullable=False)
-    diskvalve = db.Column(db.Integer, nullable=False)
-    solenoid_tank_pump = db.Column(db.Integer, nullable=False)
-    solenoid_tank_disinfect = db.Column(db.Integer, nullable=False)
-    solenoid_outer_water = db.Column(db.Integer, nullable=False)
-    solenoid_tank_water_in = db.Column(db.Integer, nullable=False)
-    solenoid_tank_water_out = db.Column(db.Integer, nullable=False)
-    pump_sensor = db.Column(db.Integer, nullable=False)
-    threewayvalve_outer_float = db.Column(db.Integer, nullable=False)
-    motor = db.Column(db.Integer, nullable=False)
-    heater1 = db.Column(db.Integer, nullable=False)
-    heater2 = db.Column(db.Integer, nullable=False)
-    temp_enable = db.Column(db.Integer, nullable=False)
-    temp = db.Column(db.Integer, nullable=False)
 
-# 發酵槽_發酵貨櫃出料儲豆槽_感測器
+# ===== 乾燥槽 - 出料 =====
+# # 發酵槽_發酵貨櫃出料儲豆槽_感測器 OLD
 class ferment_output_UltraSonic(db.Model):
     __tablename__ = 'ferment_output_UltraSonic'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     UltraSonic = db.Column(db.Text, nullable=False)
 
-# 發酵槽_發酵貨櫃出料儲豆槽_致動器
+# 發酵槽_發酵貨櫃出料儲豆槽_致動器 OLD
 class ferment_output_actuator(db.Model):
     __tablename__ = 'ferment_output_actuator'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     vacuum = db.Column(db.Integer, nullable=False)
 
-# 發酵槽_發酵貨櫃自動化狀態判斷
+# ////////////////////////////////////////////////////////////////////////////////
+# 發酵槽_發酵貨櫃自動化狀態判斷 OLD
 class ferment_container_status(db.Model):
     __tablename__ = 'ferment_container_status'
     sn = db.Column(db.Integer, primary_key=True)
-    datetime = db.Column(db.DateTime, nullable=False)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     Ferment_Input_1 = db.Column(db.Text, nullable=False)
     Ferment_Input_2 = db.Column(db.Text, nullable=False)
     Ferment_Tank_1 = db.Column(db.Text, nullable=False)
@@ -436,7 +527,7 @@ class ferment_container_status(db.Model):
 class dry_container_status(db.Model):
     __tablename__ = 'dry_container_status'
     sn = db.Column(db.Integer, primary_key=True)
-    datetime = db.Column(db.DateTime, nullable=False)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     Dry_Input_1 = db.Column(db.Text, nullable=False)
     Dry_Input_2 = db.Column(db.Text, nullable=False)
     Dry_Tank_1 = db.Column(db.Text, nullable=False)
@@ -454,11 +545,11 @@ class dry_container_status(db.Model):
     Dry_Output_1 = db.Column(db.Text, nullable=False)
     Dry_Output_2 = db.Column(db.Text, nullable=False)
 
-# 乾燥槽_乾燥貨櫃自動化狀態判斷
+# 清洗槽_清洗貨櫃自動化狀態判斷
 class clean_container_status(db.Model):
     __tablename__ = 'clean_container_status'
     sn = db.Column(db.Integer, primary_key=True)
-    datetime = db.Column(db.DateTime, nullable=False)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     Clean_Input_1 = db.Column(db.Text, nullable=False)
     Clean_Input_2 = db.Column(db.Text, nullable=False)
     Clean_Tank_1 = db.Column(db.Text, nullable=False)
@@ -481,18 +572,74 @@ class clean_container_status(db.Model):
     Peel_Output_b1 = db.Column(db.Text, nullable=False)
 
 # ////////////////////////////////////////////////////////////////////////////////
-# 清洗貨櫃
-# 清洗浮選槽_清洗貨櫃入料儲豆槽_致動器
-class clean_input_actuator(db.Model):
-    __tablename__ = 'clean_input_actuator'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+# ===== 清洗 - 桶槽 =====
+# 清洗槽_感測器_超音波感測器 0421 update
+class clean_tank_UltraSonic(db.Model):
+    __tablename__ = 'clean_tank_UltraSonic'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
-    vacuum = db.Column(db.Integer, nullable=False)
+    UltraSonic = db.Column(db.Text, nullable=False)
+
+# 清洗槽_感測器_馬達編碼器 0421 update
+class clean_tank_motorEncoder(db.Model):
+    __tablename__ = 'clean_tank_motorEncoder'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
+    tank_num = db.Column(db.Text, nullable=False)
+    motorEncoder = db.Column(db.Text, nullable=False)
+
+# 清洗槽_感測器_內桶濁度計 0421 update
+class clean_tank_Turbidity(db.Model):
+    __tablename__ = 'clean_tank_Turbidity'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
+    tank_num = db.Column(db.Text, nullable=False)
+    tankTurbidity = db.Column(db.Text, nullable=False)
+
+# 清洗槽_感測器_蝴蝶閥狀態顯示器 0421 update
+class clean_tank_diskvalveMonitor(db.Model):
+    __tablename__ = 'clean_tank_diskvalveMonitor'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
+    tank_num = db.Column(db.Text, nullable=False)
+    diskvalveMonitor = db.Column(db.Text, nullable=False)
+
+# 清洗槽_感測器_過濾器濁度計 0421 update
+class clean_filter_Turbidity(db.Model):
+    __tablename__ = 'clean_filter_Turbidity'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
+    tank_num = db.Column(db.Text, nullable=False)
+    filterTurbidity = db.Column(db.Text, nullable=False)
+
+# 清洗浮選槽_致動器 0421 update
+class cleann_tank_actuator(db.Model):
+    __tablename__ = 'cleann_tank_actuator'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
+    tank_num = db.Column(db.Text, nullable=False)
+    vacuum = db.Column(db.Text, nullable=False)
+    threewayvalve_input = db.Column(db.Text, nullable=False)
+    solenoid_disinfect = db.Column(db.Text, nullable=False)
+    pump_disinfect = db.Column(db.Text, nullable=False)
+    motor = db.Column(db.Text, nullable=False)
+    pump_water_in = db.Column(db.Text, nullable=False)
+    solenoid_reclaimed_in = db.Column(db.Text, nullable=False)
+    solenoid_water_in = db.Column(db.Text, nullable=False)
+    solenoid_water_out = db.Column(db.Text, nullable=False)
+    solenoid_reclaimed_out = db.Column(db.Text, nullable=False)
+    diskvalve = db.Column(db.Text, nullable=False)
+    switch_magnetic = db.Column(db.Text, nullable=False)
+    switch_emergency = db.Column(db.Text, nullable=False)
+    camera = db.Column(db.Text, nullable=False)
+    light_warning = db.Column(db.Text, nullable=False)
 
 # 清洗浮選槽_致動器 (old)
 class clean_tank_actuator(db.Model):
     __tablename__ = 'clean_tank_actuator'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     vacuum = db.Column(db.Integer, nullable=False)
     pump_waterInput = db.Column(db.Integer, nullable=False)
@@ -502,126 +649,116 @@ class clean_tank_actuator(db.Model):
     solenoid_waterL4L5 = db.Column(db.Integer, nullable=False)
     stepping_motor = db.Column(db.Text, nullable=False)
 
-# 清洗浮選槽_致動器 (new)
-class cleann_tank_actuator(db.Model):
-    __tablename__ = 'cleann_tank_actuator'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+# ===== 清洗 - 入料 =====
+# 清洗浮選槽_清洗貨櫃入料儲豆槽_致動器 OLD
+class clean_input_actuator(db.Model):
+    __tablename__ = 'clean_input_actuator'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     vacuum = db.Column(db.Integer, nullable=False)
-    threewayvalve_input = db.Column(db.Integer, nullable=False)
-    motor = db.Column(db.Integer, nullable=False)
-    solenoid_reclaimed_in = db.Column(db.Integer, nullable=False)
-    solenoid_water_in = db.Column(db.Integer, nullable=False)
-    pump_water_in = db.Column(db.Integer, nullable=False)
-    solenoid_water_out = db.Column(db.Integer, nullable=False)
-    solenoid_reclaimed_out = db.Column(db.Integer, nullable=False)
-    solenoid_disinfect = db.Column(db.Integer, nullable=False)
-    pump_disinfect = db.Column(db.Integer, nullable=False)
-    diskvalve = db.Column(db.Integer, nullable=False)
 
-# 清洗浮選槽_清洗貨櫃出料儲豆槽_致動器
+# ===== 清洗 - 出料 =====
+# 清洗浮選槽_清洗貨櫃出料儲豆槽_致動器 OLD
 class clean_output_actuator(db.Model):
     __tablename__ = 'clean_output_actuator'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     vacuum = db.Column(db.Integer, nullable=False)
 
-# 清洗浮選槽_感測器
-class clean_tank_UltraSonic(db.Model):
-    __tablename__ = 'clean_tank_UltraSonic'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
-    tank_num = db.Column(db.Text, nullable=False)
-    UltraSonic = db.Column(db.Text, nullable=False)
-
-class clean_tank_Encoder(db.Model):
-    __tablename__ = 'clean_tank_Encoder'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+# ===== 中水 - 桶槽 =====
+# 中水桶_致動器
+class reclaimed_tank_actuator(db.Model):
+    __tablename__ = 'reclaimed_tank_actuator'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
-    Encoder = db.Column(db.Text, nullable=False)
+    pump_cleanwater_in = db.Column(db.Text, nullable=False)
+    pump_in_clean = db.Column(db.Text, nullable=False)
+    solenoid_water_in = db.Column(db.Text, nullable=False)
+    solenoid_water_out = db.Column(db.Text, nullable=False)
+    solenoid_reclaimed_out = db.Column(db.Text, nullable=False)
 
-class clean_tank_Turbidity(db.Model):
-    __tablename__ = 'clean_tank_Turbidity'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+# ===== 色選 - 桶槽 =====
+# 色選_感測器_超音波感測器 0421 update
+class colorselect_tank_UltraSonic(db.Model):
+    __tablename__ = 'colorselect_tank_UltraSonic'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
-    tankTurbidity = db.Column(db.Text, nullable=False)
+    UltraSonic = db.Column(db.Text, nullable=False)
 
-class clean_filter_Turbidity(db.Model):
-    __tablename__ = 'clean_filter_Turbidity'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+# 色選_感測器_顏色感測器 0421 update
+class colorselect_tank_color(db.Model):
+    __tablename__ = 'colorselect_tank_color'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
-    filterTurbidity = db.Column(db.Text, nullable=False)
+    color = db.Column(db.Text, nullable=False)
 
-# 脫皮機_清洗貨櫃入料儲豆槽_致動器
-class peel_input_actuator(db.Model):
-    __tablename__ = 'peel_input_actuator'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+# 色選_致動器 ALL 0421 update
+class colorselect_tank_actuator(db.Model):
+    __tablename__ = 'colorselect_tank_actuator'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
-    vacuum = db.Column(db.Integer, nullable=False)
+    vacuum = db.Column(db.Text, nullable=False)
+    motor = db.Column(db.Text, nullable=False)
+    nozzle = db.Column(db.Text, nullable=False)
 
-# 脫皮機_致動器
-class peel_tank_actuator(db.Model):
-    __tablename__ = 'peel_tank_actuator'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+# ===== 色選 - 出料 =====
+# 色選機_清洗貨櫃出料儲豆槽_致動器 OLD
+class colorselect_output_actuator(db.Model):
+    __tablename__ = 'colorselect_output_actuator'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     vacuum = db.Column(db.Integer, nullable=False)
-    motor = db.Column(db.Integer, nullable=False)
 
-# 脫皮機_感測器
+# ===== 脫皮 - 桶槽 =====
+# 脫皮機_感測器_超音波感測器 0421 update
 class peel_output_UltraSonic(db.Model):
     __tablename__ = 'peel_output_UltraSonic'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     UltraSonic = db.Column(db.Text, nullable=False)
 
+# 脫皮機_感測器_馬達編碼器 0421 update
 class peel_output_motorEncoder(db.Model):
     __tablename__ = 'peel_output_motorEncoder'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     motorEncoder = db.Column(db.Text, nullable=False)
 
-# 脫皮機_清洗貨櫃出料儲豆槽_致動器
-class peel_output_actuator(db.Model):
-    __tablename__ = 'peel_output_actuator'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+# 脫皮機_致動器 0421 update
+class peel_tank_actuator(db.Model):
+    __tablename__ = 'peel_tank_actuator'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
-    vacuum = db.Column(db.Integer, nullable=False)
+    vacuum = db.Column(db.Text, nullable=False)
+    motor = db.Column(db.Text, nullable=False)
 
-# 色選機_清洗貨櫃出料儲豆槽_致動器
-class colorselect_output_actuator(db.Model):
-    __tablename__ = 'colorselect_output_actuator'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+# ===== 脫皮 - 入料 =====
+# 脫皮機_清洗貨櫃入料儲豆槽_致動器 OLD
+class peel_input_actuator(db.Model):
+    __tablename__ = 'peel_input_actuator'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     vacuum = db.Column(db.Integer, nullable=False)
 
-class colorselect_tank_actuator(db.Model):
-    __tablename__ = 'colorselect_tank_actuator'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
+# ===== 脫皮 - 出料 =====
+# 脫皮機_清洗貨櫃出料儲豆槽_致動器 OLD
+class peel_output_actuator(db.Model):
+    __tablename__ = 'peel_output_actuator'
+    sn = db.Column(db.Integer, primary_key=True)
+    datetime = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
     tank_num = db.Column(db.Text, nullable=False)
     vacuum = db.Column(db.Integer, nullable=False)
-    motor = db.Column(db.Integer, nullable=False)
-    nozzle = db.Column(db.Integer, nullable=False)
-    
-class colorselect_tank_color(db.Model):
-    __tablename__ = 'colorselect_tank_color'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
-    tank_num = db.Column(db.Text, nullable=False)
-    color = db.Column(db.Integer, nullable=False)
-
-class colorselect_tank_UltraSonic(db.Model):
-    __tablename__ = 'colorselect_tank_UltraSonic'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
-    tank_num = db.Column(db.Text, nullable=False)
-    UltraSonic = db.Column(db.Integer, nullable=False)
-
-# 中水桶_致動器
-class reclaimed_tank_actuator(db.Model):
-    __tablename__ = 'reclaimed_tank_actuator'
-    datetime = db.Column(db.DateTime, nullable=False, primary_key=True)
-    tank_num = db.Column(db.Text, nullable=False)
-    solenoid_water_in = db.Column(db.Integer, nullable=False)
-    solenoid_water_out = db.Column(db.Integer, nullable=False)
-    solenoid_reclaimed_out = db.Column(db.Integer, nullable=False)
-    pump_reclaimed_out = db.Column(db.Integer, nullable=False)
 
 # ////////////////////////////////////////////////////////////////////////////////