equipment.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. # -*- coding: utf-8 -*-
  2. from enum import Enum
  3. from fastapi import APIRouter, Query
  4. from loguru import logger
  5. from app.controllers.equipment.fcu import get_fcu_control_result
  6. from app.controllers.equipment.vav import get_vav_control_result
  7. from app.models.domain.equipment import EquipmentControlResponse, EquipmentControlRequest
  8. from app.utils.date import get_time_str
  9. from app.utils.math import round_half_up
  10. class EquipmentName(str, Enum):
  11. FCU = 'ACATFC'
  12. VAV = 'ACATVA'
  13. router = APIRouter()
  14. @router.get('/control', response_model=EquipmentControlResponse, tags=['equipment'])
  15. async def get_equipment_command(
  16. projectId: str = Query(..., max_length=50, regex='^Pj'),
  17. equipId: str = Query(..., max_length=50, regex='^Eq'),
  18. equipType: EquipmentName = Query(...),
  19. method: int = Query(3),
  20. ):
  21. if equipType.value == EquipmentName.FCU:
  22. fcu = await get_fcu_control_result(projectId, equipId)
  23. output = {
  24. 'EquipSwitchSet': 1 if fcu.running_status else 0,
  25. 'WorkModeSet': 3,
  26. 'FanGearSet': fcu.air_valve_speed.value,
  27. 'IndoorAirTempSet': fcu.setting_temperature
  28. }
  29. elif equipType.value == EquipmentName.VAV:
  30. vav = await get_vav_control_result(projectId, equipId)
  31. output = {
  32. 'SupplyAirFlowSet': vav.supply_air_flow_set
  33. }
  34. else:
  35. output = {}
  36. response = {
  37. 'projectId': projectId,
  38. 'equipId': equipId,
  39. 'time': get_time_str(),
  40. 'output': output
  41. }
  42. return response
  43. @router.post('/control', response_model=EquipmentControlResponse, tags=['equipment'])
  44. async def get_equipment_command_v2(equipment_control_info: EquipmentControlRequest):
  45. if equipment_control_info.equipType == EquipmentName.FCU:
  46. fcu = await get_fcu_control_result(equipment_control_info.projectId, equipment_control_info.equipId)
  47. output = {
  48. 'EquipSwitchSet': 1 if fcu.running_status else 0,
  49. 'WorkModeSet': 3,
  50. 'IndoorAirTempSet': int(round_half_up(fcu.setting_temperature, 1) * 10)
  51. }
  52. if fcu.air_valve_speed.value != 0.0:
  53. output.update({'FanGearSet': fcu.air_valve_speed.value})
  54. elif equipment_control_info.equipType == EquipmentName.VAV:
  55. vav = await get_vav_control_result(equipment_control_info.projectId, equipment_control_info.equipId)
  56. output = {
  57. 'SupplyAirFlowSet': vav.supply_air_flow_set
  58. }
  59. else:
  60. output = {}
  61. response = {
  62. 'projectId': equipment_control_info.projectId,
  63. 'equipId': equipment_control_info.equipId,
  64. 'time': get_time_str(),
  65. 'output': output
  66. }
  67. logger.info(response)
  68. return response