equipment.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. # -*- coding: utf-8 -*-
  2. from enum import Enum
  3. from fastapi import APIRouter, Depends, Query
  4. from loguru import logger
  5. from sqlalchemy.orm import Session
  6. from app.api.dependencies.db import get_db
  7. from app.controllers.equipment.fcu.basic import get_fcu_control_result
  8. from app.controllers.equipment.fcu.q_learning import get_fcu_q_learning_control_result
  9. from app.controllers.equipment.vav import get_vav_control_result
  10. from app.models.domain.equipment import EquipmentControlResponse, EquipmentControlRequest
  11. from app.utils.date import get_time_str
  12. class EquipmentName(str, Enum):
  13. FCU = 'ACATFC'
  14. VAV = 'ACATVA'
  15. router = APIRouter()
  16. @router.get('/control', response_model=EquipmentControlResponse)
  17. async def get_equipment_command_test(
  18. project_id: str = Query(..., max_length=50, regex='^Pj', alias='projectId'),
  19. equip_id: str = Query(..., max_length=50, regex='^Eq', alias='equipId'),
  20. equip_type: EquipmentName = Query(..., alias='equipType'),
  21. db: Session = Depends(get_db)
  22. ):
  23. if equip_type.value == EquipmentName.FCU:
  24. if project_id == 'Pj1101050030':
  25. output = await get_fcu_control_result(project_id, equip_id)
  26. else:
  27. output = await get_fcu_q_learning_control_result(project_id, equip_id)
  28. elif equip_type.value == EquipmentName.VAV:
  29. vav = await get_vav_control_result(db, project_id, equip_id)
  30. output = {
  31. 'SupplyAirFlowSet': vav.supply_air_flow_set
  32. }
  33. else:
  34. output = {}
  35. response = {
  36. 'projectId': project_id,
  37. 'equipId': equip_id,
  38. 'time': get_time_str(),
  39. 'output': output
  40. }
  41. return response
  42. @router.post('/control', response_model=EquipmentControlResponse)
  43. async def get_equipment_command(equipment_control_info: EquipmentControlRequest, db: Session = Depends(get_db)):
  44. if equipment_control_info.equipType == EquipmentName.FCU:
  45. if equipment_control_info.projectId == 'Pj1101050030':
  46. output = await get_fcu_control_result(equipment_control_info.projectId, equipment_control_info.equipId)
  47. else:
  48. output = await get_fcu_q_learning_control_result(
  49. equipment_control_info.projectId,
  50. equipment_control_info.equipId
  51. )
  52. elif equipment_control_info.equipType == EquipmentName.VAV:
  53. vav = await get_vav_control_result(db, equipment_control_info.projectId, equipment_control_info.equipId)
  54. output = {
  55. 'SupplyAirFlowSet': vav.supply_air_flow_set,
  56. 'VirtualRealtimeTemperature': vav.virtual_realtime_temperature,
  57. 'TargetTemperatureSet': vav.virtual_target_temperature
  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