Browse Source

fix a bug about VAV logic

highing666 2 years ago
parent
commit
d6c53992db
2 changed files with 20 additions and 33 deletions
  1. 19 32
      app/controllers/equipment/vav.py
  2. 1 1
      docker-compose.yml

+ 19 - 32
app/controllers/equipment/vav.py

@@ -181,46 +181,33 @@ class VAVControllerV2(VAVController):
                         bad_spaces.append(sp)
 
         if bad_spaces:
-            virtual_diff = (
-                self.equipment.virtual_target_temperature
-                - self.equipment.virtual_realtime_temperature
-            )
+            virtual_diff = self.equipment.virtual_target_temperature - self.equipment.virtual_realtime_temperature
             if self.season == Season.cooling:
                 bad_spaces = sorted(bad_spaces, key=attrgetter("diff"))
                 worst = bad_spaces[0]
-                if worst.diff <= 0:
-                    if worst.diff < virtual_diff:
-                        self.equipment.virtual_target_temperature = (
-                            worst.temperature_target
-                        )
-                        self.equipment.virtual_realtime_temperature = (
-                            worst.realtime_temperature
-                        )
+                if worst.diff * virtual_diff >= 0:
+                    if abs(worst.diff) > abs(virtual_diff):
+                        self.equipment.virtual_target_temperature = worst.temperature_target
+                        self.equipment.virtual_realtime_temperature = worst.realtime_temperature
                 else:
-                    self.equipment.virtual_target_temperature = (
-                        min(22.0, worst.temperature_target) + 0.5
-                    )
-                    self.equipment.virtual_realtime_temperature = (
-                        worst.realtime_temperature
-                    )
+                    if worst.diff < 0:
+                        self.equipment.virtual_target_temperature = min(22.0, worst.temperature_target) + 0.5
+                    else:
+                        self.equipment.virtual_target_temperature = max(26.0, worst.temperature_target) - 0.5
+                    self.equipment.virtual_realtime_temperature = worst.realtime_temperature
             elif self.season == Season.heating:
                 bad_spaces = sorted(bad_spaces, key=attrgetter("diff"), reverse=True)
                 worst = bad_spaces[0]
-                if worst.diff >= 0:
-                    if worst.diff > virtual_diff:
-                        self.equipment.virtual_target_temperature = (
-                            worst.temperature_target
-                        )
-                        self.equipment.virtual_realtime_temperature = (
-                            worst.realtime_temperature
-                        )
+                if worst.diff * virtual_diff >= 0:
+                    if abs(worst.diff) > abs(virtual_diff):
+                        self.equipment.virtual_target_temperature = worst.temperature_target
+                        self.equipment.virtual_realtime_temperature = worst.realtime_temperature
                 else:
-                    self.equipment.virtual_target_temperature = (
-                        max(26.0, worst.temperature_target) - 0.5
-                    )
-                    self.equipment.virtual_realtime_temperature = (
-                        worst.realtime_temperature
-                    )
+                    if worst.diff > 0:
+                        self.equipment.virtual_target_temperature = max(26.0, worst.temperature_target) - 0.5
+                    else:
+                        self.equipment.virtual_target_temperature = min(20.0, worst.temperature_target) + 0.5
+                    self.equipment.virtual_realtime_temperature = worst.realtime_temperature
 
         return (
             self.equipment.virtual_target_temperature,

+ 1 - 1
docker-compose.yml

@@ -2,7 +2,7 @@ version: "3"
 
 services:
   app:
-      image: registry.persagy.com/sagacloud/saga_algo_api:0.4.2
+      image: registry.persagy.com/sagacloud/saga_algo_api:0.4.3
       container_name: saga_algo_api
       ports:
         - "8002:8002"