equipment.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. # -*- coding: utf-8 -*-
  2. from enum import Enum
  3. from typing import List, Optional
  4. import numpy as np
  5. from pydantic import BaseModel
  6. from app.schemas.space import Space
  7. class AirValveSpeed(float, Enum):
  8. off = 0.0
  9. low = 1.0
  10. medium = 2.0
  11. high = 3.0
  12. class VRFMode(str, Enum):
  13. cooling = "cooling"
  14. heating = "heating"
  15. ventilation = "ventilation"
  16. unknown = "unknown"
  17. class BaseEquipment(BaseModel):
  18. id: Optional[str]
  19. running_status: Optional[bool]
  20. in_cloud_status: Optional[bool]
  21. on_time: Optional[str]
  22. off_time: Optional[str]
  23. equip_switch_set: Optional[bool]
  24. class FCU(BaseEquipment):
  25. work_mode: Optional[int]
  26. air_valve_speed: Optional[AirValveSpeed] = AirValveSpeed.off
  27. air_valve_speed_set: Optional[AirValveSpeed] = AirValveSpeed.off
  28. recommended_speed: Optional[AirValveSpeed] = AirValveSpeed.off
  29. space: Optional[Space]
  30. setting_temperature: Optional[float]
  31. supply_air_temperature: Optional[float]
  32. water_out_temperature: Optional[float]
  33. water_in_temperature: Optional[float]
  34. speed_limit: Optional[AirValveSpeed] = AirValveSpeed.high
  35. class VAVBox(BaseEquipment):
  36. spaces: Optional[List[Space]]
  37. supply_air_temperature: Optional[float] = np.NAN
  38. supply_air_flow: Optional[float] = np.NAN
  39. supply_air_flow_set: Optional[float] = np.NAN
  40. supply_air_flow_lower_limit: Optional[float] = np.NAN
  41. supply_air_flow_upper_limit: Optional[float] = np.NAN
  42. recommended_supply_air_flow: Optional[float] = np.NAN
  43. valve_opening: Optional[float] = np.NAN
  44. setting_temperature: Optional[float] = 0.0
  45. virtual_realtime_temperature: Optional[float] = np.NAN
  46. virtual_target_temperature: Optional[float] = np.NAN
  47. class AHU(BaseEquipment):
  48. supply_air_temperature: Optional[float]
  49. supply_air_temperature_set: Optional[float]
  50. return_air_temperature: Optional[float]
  51. return_air_temperature_set: Optional[float]
  52. freq: Optional[float]
  53. freq_set: Optional[float]
  54. fan_freq_upper_limit_set: Optional[float]
  55. fan_freq_lower_limit_set: Optional[float]
  56. class VentilationFan(BaseEquipment):
  57. pass
  58. class PAU(BaseEquipment):
  59. pass
  60. class VRF(BaseEquipment):
  61. equip_switch_set: Optional[str]
  62. work_mode: Optional[VRFMode]
  63. speed: Optional[str]
  64. speed_set: Optional[str]
  65. current_temperature_set: Optional[float]
  66. temperature_set: Optional[float]
  67. mode_set: Optional[str]
  68. return_air_temp: Optional[float]
  69. class ASHP(BaseEquipment):
  70. out_temp_15min: List[float]
  71. out_temp_set_15min: List[float]
  72. out_temp_30min: List[float]
  73. out_temp_set_30min: List[float]
  74. out_temp_set: Optional[float]
  75. iplr_15min: List[float]
  76. iplr_30min: List[float]