equipment.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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 as PydanticBaseModel, validator
  6. from app.schemas.space import Space
  7. class BaseModel(PydanticBaseModel):
  8. @validator("*")
  9. def change_to_nan(cls, v):
  10. if v == -999.9:
  11. v = np.NAN
  12. return v
  13. class AirValveSpeed(float, Enum):
  14. off = 0.0
  15. low = 1.0
  16. medium = 2.0
  17. high = 3.0
  18. class BaseEquipment(BaseModel):
  19. id: Optional[str]
  20. running_status: Optional[bool] = False
  21. in_cloud_status: Optional[bool]
  22. on_time: Optional[str]
  23. off_time: Optional[str]
  24. equip_switch_set: Optional[bool] = False
  25. class FCU(BaseEquipment):
  26. work_mode: Optional[int]
  27. air_valve_speed: Optional[AirValveSpeed] = AirValveSpeed.off
  28. air_valve_speed_set: Optional[AirValveSpeed] = AirValveSpeed.off
  29. recommended_speed: Optional[AirValveSpeed] = AirValveSpeed.off
  30. space: Optional[Space]
  31. setting_temperature: Optional[float] = 0.0
  32. supply_air_temperature: Optional[float] = 0.0
  33. water_out_temperature: Optional[float] = 0.0
  34. water_in_temperature: Optional[float] = 0.0
  35. speed_limit: Optional[AirValveSpeed] = AirValveSpeed.high
  36. class VAVBox(BaseEquipment):
  37. spaces: Optional[List[Space]]
  38. supply_air_temperature: Optional[float] = np.NAN
  39. supply_air_flow: Optional[float] = np.NAN
  40. supply_air_flow_set: Optional[float] = np.NAN
  41. supply_air_flow_lower_limit: Optional[float] = np.NAN
  42. supply_air_flow_upper_limit: Optional[float] = np.NAN
  43. recommended_supply_air_flow: Optional[float] = np.NAN
  44. valve_opening: Optional[float] = np.NAN
  45. setting_temperature: Optional[float] = 0.0
  46. virtual_realtime_temperature: Optional[float] = np.NAN
  47. virtual_target_temperature: Optional[float] = np.NAN
  48. class AHU(BaseEquipment):
  49. fan_freq_set: Optional[float] = np.NAN
  50. supply_air_temperature: Optional[float] = np.NAN
  51. supply_air_temperature_set: Optional[float] = np.NAN
  52. return_air_temperature: Optional[float] = np.NAN
  53. return_air_temperature_set: Optional[float] = np.NAN
  54. fan_freq: Optional[float] = np.NAN
  55. fan_freq_upper_limit_set: Optional[float] = np.NAN
  56. fan_freq_lower_limit_set: Optional[float] = np.NAN
  57. class VentilationFan(BaseEquipment):
  58. pass
  59. class PAU(BaseEquipment):
  60. pass
  61. class VRF(BaseEquipment):
  62. equip_switch_set: Optional[str]
  63. work_mode: Optional[float]
  64. speed: Optional[str]
  65. speed_set: Optional[str]
  66. current_temperature_set: Optional[float]
  67. temperature_set: Optional[float]
  68. mode_set: Optional[str]
  69. return_air_temp: Optional[float]