瀏覽代碼

amend VRF control logic

highing666 3 年之前
父節點
當前提交
a08ec1dbfc
共有 1 個文件被更改,包括 29 次插入11 次删除
  1. 29 11
      app/controllers/equipment/vrf/basic.py

+ 29 - 11
app/controllers/equipment/vrf/basic.py

@@ -18,12 +18,12 @@ class VRFController(EquipmentController):
 
     def get_switch_set(self) -> str:
         if np.isnan(self.target):
-            if self.device.running_status == 'on':
+            if self.device.running_status:
                 switch_set = 'off'
             else:
                 switch_set = 'hold'
         else:
-            if self.device.running_status == 'off':
+            if not self.device.running_status:
                 switch_set = 'on'
             else:
                 switch_set = 'hold'
@@ -43,30 +43,36 @@ class VRFController(EquipmentController):
         return mode_set
 
     def get_temperature_set(self) -> float:
-        if self.realtime > 24.0:
+        if self.realtime >= 24.0:
             diff = self.device.return_air_temp - self.realtime
             if diff > 0:
                 self.device.temperature_set = self.target + diff
             else:
                 self.device.temperature_set = self.target
-        elif self.realtime < 22.0:
+        elif self.realtime <= 22.0:
             self.device.temperature_set = self.device.return_air_temp + 1
         else:
-            self.device.temperature_set = self.device.current_temperature_set
+            if np.isnan(self.device.current_temperature_set):
+                self.device.temperature_set = 25.0
+            else:
+                self.device.temperature_set = self.device.current_temperature_set
 
         return self.device.temperature_set
 
     def get_speed_set(self) -> str:
-        if self.realtime > 24.0:
+        if self.realtime >= 24.0:
             speed = 'M'
-        elif self.realtime < 22.0:
+        elif self.realtime <= 22.0:
             speed = 'LL'
-        elif self.device.return_air_temp - self.target > 3.0:
+        elif self.device.return_air_temp - self.target >= 3.0:
             speed = 'HH'
-        elif self.device.return_air_temp - self.target > 1.0:
+        elif self.device.return_air_temp - self.target >= 1.0:
             speed = 'M'
         else:
-            speed = self.device.speed
+            if self.device.speed == 'missing':
+                speed = 'M'
+            else:
+                speed = self.device.speed
 
         self.device.speed_set = speed
 
@@ -98,7 +104,19 @@ async def build_acatvi_instructions(params: ACATVIInstructionsRequest) -> Dict:
     realtime = np.NAN if params.space_realtime_temperature == -1.0 else params.space_realtime_temperature
     return_air_temp = np.NAN if params.return_air_temperature == -1.0 else params.return_air_temperature
 
-    vrf = VRF(return_air_temp=return_air_temp)
+    if params.running_status == 'missing':
+        return {'need_send': False}
+    elif params.running_status == 'on':
+        running_status = True
+    else:
+        running_status = False
+
+    vrf = VRF(
+        return_air_temp=return_air_temp,
+        current_temperature_set=np.NAN if params.current_temperature_set == -1.0 else params.current_temperature_set,
+        speed=params.current_speed,
+        running_status=running_status
+    )
 
     controller = VRFController(vrf, target, realtime)
     need_send = await controller.run()