Browse Source

add some new file for fcu q learning control

chenhaiyang 4 years ago
parent
commit
0fa95fa0c6

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

@@ -1,87 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import numpy as np
-from httpx import AsyncClient
-from loguru import logger
-
-from app.controllers.equipment.controller import EquipmentController
-from app.schemas.equipment import AirValveSpeed, FCU, Space
-from app.services.platform import DataPlatformService
-from app.services.transfer import SpaceInfoService, EquipmentInfoService
-
-
-class FCUController(EquipmentController):
-
-    def __init__(self, equipment: FCU):
-        super(FCUController, self).__init__()
-        self._equipment = equipment
-
-    async def get_temperature_target(self) -> float:
-        target = self._equipment.space.temperature_target
-        if not np.isnan(target):
-            setting_target = target
-        else:
-            setting_target = 25.0
-        self._equipment.setting_temperature = setting_target
-
-        return setting_target
-
-    async def get_air_valve_speed(self):
-        temperature_target = await self.get_temperature_target()
-        if temperature_target > 0:
-            diff = self._equipment.space.realtime_temperature - temperature_target
-            if diff >= 2.0:
-                self._equipment.air_valve_speed = AirValveSpeed.high
-            elif diff >= 1.0:
-                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
-
-    async def get_running_status(self):
-        if self._equipment.air_valve_speed == AirValveSpeed.off:
-            self._equipment.running_status = False
-        else:
-            self._equipment.running_status = True
-
-    async def run(self):
-        await self.get_temperature_target()
-        await self.get_air_valve_speed()
-        await self.get_running_status()
-
-    def get_results(self):
-        return self._equipment
-
-
-@logger.catch()
-async def get_fcu_control_result(project_id: str, equipment_id: str) -> FCU:
-    async with AsyncClient() as client:
-        duo_duo = EquipmentInfoService(client, project_id)
-        platform = DataPlatformService(client, project_id)
-        spaces = await duo_duo.get_space_by_equipment(equipment_id)
-        for sp in spaces:
-            transfer = SpaceInfoService(client, project_id, sp.get('id'))
-            current_target = await transfer.get_current_temperature_target()
-            realtime_temperature = await platform.get_realtime_temperature(sp.get('id'))
-            temp_space_params = {
-                'id': sp.get('id'),
-                'temperature_target': current_target,
-                'realtime_temperature': realtime_temperature
-            }
-            space = Space(**temp_space_params)
-            break
-
-        fcu_temp_params = {
-            'id': equipment_id,
-            'space': space
-        }
-        fcu = FCU(**fcu_temp_params)
-
-    fcu_controller = FCUController(fcu)
-    await fcu_controller.run()
-    regulated_fcu = fcu_controller.get_results()
-
-    return regulated_fcu

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


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


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