# -*- coding: utf-8 -*- from enum import Enum from fastapi import APIRouter, Query from app.controllers.equipment.fcu import get_fcu_control_result from app.controllers.equipment.vav import get_vav_control_result from app.models.equipment import EquipmentControlInResponse, EquipmentControlInRequest from app.utils.date import get_time_str class EquipmentName(str, Enum): FCU = 'ACATFC' VAV = 'ACATVA' router = APIRouter() @router.get('/control', response_model=EquipmentControlInResponse, tags=['equipment']) async def get_equipment_command( projectId: str = Query(..., max_length=50, regex='^Pj'), equipId: str = Query(..., max_length=50, regex='^Eq'), equipType: EquipmentName = Query(...), method: int = Query(3), ): if equipType.value == EquipmentName.FCU: fcu = await get_fcu_control_result(projectId, equipId) output = { 'RunStatus': 1 if fcu.running_status else 0, 'WorkModeSet': 1, 'FanGearSet': fcu.air_valve_speed.value, 'IndoorAirTempSet': fcu.setting_temperature } elif equipType.value == EquipmentName.VAV: vav = await get_vav_control_result(projectId, equipId) output = { 'SupplyAirFlowSet': vav.supply_air_flow_set } else: output = {} response = { 'projectId': projectId, 'equipId': equipId, 'time': get_time_str(), 'output': output } return response @router.post('/control', response_model=EquipmentControlInResponse, tags=['equipment']) async def get_equipment_command_v2(equipment_control_info: EquipmentControlInRequest): if equipment_control_info.equipType == EquipmentName.FCU: fcu = await get_fcu_control_result(equipment_control_info.projectId, equipment_control_info.equipId) output = { 'RunStatus': 1 if fcu.running_status else 0, 'WorkModeSet': 1, 'FanGearSet': fcu.air_valve_speed.value, 'IndoorAirTempSet': fcu.setting_temperature } elif equipment_control_info.equipType == EquipmentName.VAV: vav = await get_vav_control_result(equipment_control_info.projectId, equipment_control_info.equipId) output = { 'SupplyAirFlowSet': vav.supply_air_flow_set } else: output = {} response = { 'projectId': equipment_control_info.projectId, 'equipId': equipment_control_info.equipId, 'time': get_time_str(), 'output': output } return response