فهرست منبع

update HongShan FCU control logic

chenhaiyang 4 سال پیش
والد
کامیت
5f81af8e05
1فایلهای تغییر یافته به همراه23 افزوده شده و 16 حذف شده
  1. 23 16
      app/controllers/equipment/fcu/basic.py

+ 23 - 16
app/controllers/equipment/fcu/basic.py

@@ -31,10 +31,10 @@ class FCUController(EquipmentController):
 
         return setting_target
 
-    async def get_mode(self) -> None:
+    async def get_mode(self) -> int:
         temperature_target = await self.get_temperature_target()
         if self.season == Season.heating:
-            if temperature_target > self._equipment.space.realtime_temperature:
+            if temperature_target >= self._equipment.space.realtime_temperature:
                 mode = 2
             else:
                 mode = 1
@@ -44,23 +44,31 @@ class FCUController(EquipmentController):
             mode = 0
         self._equipment.work_mode = mode
 
+        return mode
+
     async def get_air_valve_speed(self):
         temperature_target = await self.get_temperature_target()
-        mode = await self.get_mode()
         if temperature_target > 0:
-            if mode == 1:
-                diff = self._equipment.space.realtime_temperature - temperature_target
-            else:
+            if self.season == Season.heating:
                 diff = abs(self._equipment.space.realtime_temperature - temperature_target)
-
-            if diff >= 1.0:
-                self._equipment.air_valve_speed = AirValveSpeed.high
-            elif diff >= 0.5:
-                self._equipment.air_valve_speed = AirValveSpeed.medium
-            elif diff >= 0.0:
-                self._equipment.air_valve_speed = AirValveSpeed.low
+                if diff >= 1.5:
+                    self._equipment.air_valve_speed = AirValveSpeed.high
+                elif diff >= 1.0:
+                    self._equipment.air_valve_speed = AirValveSpeed.medium
+                elif diff >= 0.5:
+                    self._equipment.air_valve_speed = AirValveSpeed.low
+                else:
+                    self._equipment.air_valve_speed = AirValveSpeed.off
             else:
-                self._equipment.air_valve_speed = AirValveSpeed.off
+                diff = self._equipment.space.realtime_temperature - temperature_target
+                if diff >= 1.0:
+                    self._equipment.air_valve_speed = AirValveSpeed.high
+                elif diff >= 0.5:
+                    self._equipment.air_valve_speed = AirValveSpeed.medium
+                elif diff >= 0.0:
+                    self._equipment.air_valve_speed = AirValveSpeed.low
+                else:
+                    self._equipment.air_valve_speed = AirValveSpeed.off
         else:
             self._equipment.air_valve_speed = AirValveSpeed.off
 
@@ -113,9 +121,8 @@ async def get_fcu_control_result(project_id: str, equipment_id: str) -> Dict:
         'onOff': 1 if regulated_fcu.running_status else 0,
         'mode': regulated_fcu.work_mode,
         'speed': regulated_fcu.air_valve_speed.value,
-        'temperature': int(round_half_up(regulated_fcu.setting_temperature, 1)),
+        'temperature': float(round_half_up(regulated_fcu.setting_temperature, 1)),
         'water': 1 if regulated_fcu.running_status else 0
     }
-    logger.debug(output)
 
     return output