瀏覽代碼

update VRF control logic

highing666 3 年之前
父節點
當前提交
753fa3b8a8
共有 3 個文件被更改,包括 48 次插入1 次删除
  1. 46 1
      app/controllers/equipment/vrf/basic.py
  2. 1 0
      app/models/domain/devices.py
  3. 1 0
      app/schemas/equipment.py

+ 46 - 1
app/controllers/equipment/vrf/basic.py

@@ -150,6 +150,9 @@ class VRFController1(VRFController):
             if np.isnan(self.target):
                 return new_temperature_set
 
+            if self.device.work_mode == 4.0 or self.device.work_mode == 8.0:
+                return new_temperature_set
+
             # Default temperature set.
             if not self.device.running_status:
                 new_temperature_set = self.target
@@ -205,6 +208,9 @@ class VRFController1(VRFController):
             if np.isnan(self.target):
                 return new_temperature_set
 
+            if self.device.work_mode == 4.0 or self.device.work_mode == 8.0:
+                return new_temperature_set
+
             if not self.device.running_status:
                 new_temperature_set = self.target
 
@@ -357,9 +363,47 @@ class VRFController1(VRFController):
 
         return new_speed
 
+    def ventilation_mode(self) -> str:
+        new_speed = "hold"
+        if np.isnan(self.target):
+            return new_speed
+        else:
+            if not self.device.running_status:
+                new_speed = "HH"
+            else:
+                if self.realtime > 26.0:
+                    new_speed = "HH"
+                elif self.realtime < 22.0:
+                    new_speed = "LL"
+
+                if (
+                    self.feedback == FeedbackValue.a_little_cold
+                    or self.feedback == FeedbackValue.so_cold
+                    or self.feedback.noisy_or_blowy
+                ):
+                    if self.device.speed == "HH":
+                        new_speed = "M"
+                    elif self.device.speed == "M":
+                        new_speed = "LL"
+                elif (
+                    self.feedback == FeedbackValue.a_little_hot
+                    or self.feedback == FeedbackValue.so_hot
+                ):
+                    if self.device.speed == "LL":
+                        new_speed = "M"
+                    elif self.device.speed == "M":
+                        new_speed = "HH"
+
+        self.device.speed_set = new_speed
+
+        return new_speed
+
     async def run(self):
         self.get_switch_set()
-        self.get_speed_set()
+        if self.device.work_mode == 4.0 or self.device.work_mode == 8.0:
+            self.ventilation_mode()
+        else:
+            self.get_speed_set()
         self.get_temperature_set()
 
 
@@ -424,6 +468,7 @@ async def build_acatvi_instructions(
         current_temperature_set=current_temperature_set,
         speed=params.current_speed,
         running_status=params.running_status,
+        work_moe=params.work_mode,
     )
 
     act_blowy_feedback_time, act_high_speed_time = await query_status_time(

+ 1 - 0
app/models/domain/devices.py

@@ -32,6 +32,7 @@ class ACATVIInstructionsRequest(BaseModel):
     device_id: str
     return_air_temperature: float
     running_status: bool
+    work_mode: float
     current_speed: str
     current_temperature_set: float
     space_temperature_target: float

+ 1 - 0
app/schemas/equipment.py

@@ -68,6 +68,7 @@ class PAU(BaseEquipment):
 
 class VRF(BaseEquipment):
     equip_switch_set: Optional[str]
+    work_mode: Optional[float]
     speed: Optional[str]
     speed_set: Optional[str]
     current_temperature_set: Optional[float]