Quellcode durchsuchen

revise format of /instructions/acatah/supply-air-temperature-set and /instructions/acatah/thermal-mode-set response

chenhaiyang vor 4 Jahren
Ursprung
Commit
0f02716c90

+ 9 - 5
app/api/routers/devices.py

@@ -2,13 +2,13 @@ from fastapi import APIRouter, Query
 
 from app.controllers.equipment.ahu.supply_air_temperature_set import get_next_supply_air_temperature_set
 from app.controllers.equipment.ahu.thermal_mode import get_thermal_mode
-from app.models.domain.devices import ACATAHThermalModeSetResponse, ACATAHSupplyAirTemperatureSetResponse
+from app.models.domain.devices import DevicesInstructionsBaseResponse
 
 
 router = APIRouter()
 
 
-@router.get('/instructions/acatah/thermal-mode-set', response_model=ACATAHThermalModeSetResponse)
+@router.get('/instructions/acatah/thermal-mode-set', response_model=DevicesInstructionsBaseResponse)
 async def get_acatah_thermal_mode_set(
         project_id: str = Query(..., max_length=50, regex='^Pj', alias='projectId'),
         device_id: str = Query(..., max_length=50, regex='^Eq', alias='equipId')
@@ -18,11 +18,13 @@ async def get_acatah_thermal_mode_set(
     return {
         'projectId': project_id,
         'equipId': device_id,
-        'thermalModeSet': thermal_mode
+        'output': {
+            'thermalModeSet': thermal_mode
+        }
     }
 
 
-@router.get('/instructions/acatah/supply-air-temperature-set', response_model=ACATAHSupplyAirTemperatureSetResponse)
+@router.get('/instructions/acatah/supply-air-temperature-set', response_model=DevicesInstructionsBaseResponse)
 async def get_acatah_supply_air_temperature_set(
         project_id: str = Query(..., max_length=50, regex='^Pj', alias='projectId'),
         device_id: str = Query(..., max_length=50, regex='^Eq', alias='equipId')
@@ -32,5 +34,7 @@ async def get_acatah_supply_air_temperature_set(
     return {
         'projectId': project_id,
         'equipId': device_id,
-        'supplyAirTemperatureSet': next_supply_air_temperature_set
+        'output': {
+            'supplyAirTemperatureSet': next_supply_air_temperature_set
+        }
     }

+ 0 - 0
app/controllers/equipment/fcu/off_ratio.py


+ 54 - 0
app/controllers/equipment/fcu/on_ratio.py

@@ -0,0 +1,54 @@
+from typing import Dict
+
+from httpx import AsyncClient
+from loguru import logger
+
+
+class OffRatioController:
+
+    def __init__(self, target: float, return_air: float, period_num: int, last_off_ratio: float):
+        super(OffRatioController, self).__init__()
+        self.target = target
+        self.return_air = return_air
+        self.period_num = period_num
+        self.last_off_ratio = last_off_ratio
+
+    def select_mode(self) -> str:
+        if self.target < self.return_air:
+            mode = 'off'
+        else:
+            if self.target - self.return_air > 1:
+                mode = 'normal'
+            else:
+                mode = 'off_ratio'
+
+        return mode
+
+    def select_speed(self, last_return_air: float) -> str:
+        mode = self.select_mode()
+        if mode == 'off':
+            speed = 'off'
+        elif mode == 'normal':
+            if (self.return_air - last_return_air) / 10 > 0.053:
+                speed = 'medium'
+            else:
+                speed = 'high'
+        else:
+            speed = 'medium'
+
+        return speed
+
+    def select_water_valve(self) -> bool:
+        mode = self.select_mode()
+        if mode == 'off':
+            switch = True
+        elif mode == 'normal':
+            switch = False
+        else:
+            switch = True
+
+        return switch
+
+    def calculate_off_ratio(self) -> float:
+        
+

+ 2 - 8
app/models/domain/devices.py

@@ -1,4 +1,5 @@
 from enum import Enum
+from typing import Dict
 
 from pydantic import BaseModel
 
@@ -12,11 +13,4 @@ class ThermalMode(str, Enum):
 class DevicesInstructionsBaseResponse(BaseModel):
     projectId: str
     equipId: str
-
-
-class ACATAHThermalModeSetResponse(DevicesInstructionsBaseResponse):
-    thermalModeSet: ThermalMode
-
-
-class ACATAHSupplyAirTemperatureSetResponse(DevicesInstructionsBaseResponse):
-    supplyAirTemperatureSet: float
+    output: Dict