equipment.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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.basic import get_fcu_control_result
  6. from app.controllers.equipment.fcu.q_learning import get_fcu_q_learning_control_result
  7. from app.controllers.equipment.vav import get_vav_control_result
  8. from app.models.domain.equipment import EquipmentControlResponse, EquipmentControlRequest
  9. from app.utils.date import get_time_str
  10. class EquipmentName(str, Enum):
  11. FCU = 'ACATFC'
  12. VAV = 'ACATVA'
  13. router = APIRouter()
  14. @router.get('/control', response_model=EquipmentControlResponse)
  15. async def get_equipment_command_test(
  16. project_id: str = Query(..., max_length=50, regex='^Pj', alias='projectId'),
  17. equip_id: str = Query(..., max_length=50, regex='^Eq', alias='equipId'),
  18. equip_type: EquipmentName = Query(..., alias='equipType'),
  19. ):
  20. if equip_type.value == EquipmentName.FCU:
  21. if project_id == 'Pj1101050030':
  22. fcu = await get_fcu_control_result(project_id, equip_id)
  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. else:
  30. output = await get_fcu_q_learning_control_result(project_id, equip_id)
  31. elif equip_type.value == EquipmentName.VAV:
  32. vav = await get_vav_control_result(project_id, equip_id)
  33. output = {
  34. 'SupplyAirFlowSet': vav.supply_air_flow_set
  35. }
  36. else:
  37. output = {}
  38. response = {
  39. 'projectId': project_id,
  40. 'equipId': equip_id,
  41. 'time': get_time_str(),
  42. 'output': output
  43. }
  44. return response
  45. @router.post('/control', response_model=EquipmentControlResponse)
  46. async def get_equipment_command(equipment_control_info: EquipmentControlRequest):
  47. if equipment_control_info.equipType == EquipmentName.FCU:
  48. if equipment_control_info.projectId == 'Pj1101050030':
  49. output = await get_fcu_control_result(equipment_control_info.projectId, equipment_control_info.equipId)
  50. else:
  51. output = await get_fcu_q_learning_control_result(
  52. equipment_control_info.projectId,
  53. equipment_control_info.equipId
  54. )
  55. elif equipment_control_info.equipType == EquipmentName.VAV:
  56. vav = await get_vav_control_result(equipment_control_info.projectId, equipment_control_info.equipId)
  57. output = {
  58. 'SupplyAirFlowSet': vav.supply_air_flow_set
  59. }
  60. else:
  61. output = {}
  62. response = {
  63. 'projectId': equipment_control_info.projectId,
  64. 'equipId': equipment_control_info.equipId,
  65. 'time': get_time_str(),
  66. 'output': output
  67. }
  68. logger.info(response)
  69. return response