equipment.py 2.5 KB

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