Browse Source

fix a bug in early start in FCU

highing666 3 years ago
parent
commit
4e2fe42433
1 changed files with 16 additions and 5 deletions
  1. 16 5
      app/controllers/equipment/fcu/early_start.py

+ 16 - 5
app/controllers/equipment/fcu/early_start.py

@@ -21,10 +21,18 @@ class EarlyStartTimeDTRBuilder:
         self.model_path = f'{settings.ML_MODELS_DIR}{model_path}'
 
     async def get_prediction(self, indoor_temp: float, outdoor_temp: float) -> float:
-        model = load(self.model_path)
-        pre_time = model.predict([[outdoor_temp, indoor_temp]])
+        try:
+            model = load(self.model_path)
+        except FileNotFoundError:
+            return 0
 
-        return pre_time[0]
+        try:
+            pre = model.predict([[outdoor_temp, indoor_temp]])
+            pre_time = pre[0]
+        except (ValueError, IndexError):
+            pre_time = 0
+
+        return pre_time
 
 
 async def fetch_params(project_id: str, space_id: str, db: Session) -> Tuple[float, float, str]:
@@ -44,9 +52,12 @@ async def fetch_params(project_id: str, space_id: str, db: Session) -> Tuple[flo
                 device_id = device.get('id')
                 break
 
-        model_path = model_path_early_start_dtr.get_path_by_device(db, device_id)
+        if device_id:
+            model_path = model_path_early_start_dtr.get_path_by_device(db, device_id)
+        else:
+            model_path = ''
 
-        return indoor_temp, outdoor_temp, model_path.model_path
+        return indoor_temp, outdoor_temp, model_path
 
 
 @logger.catch()