equipment.py 892 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # -*- coding: utf-8 -*-
  2. from enum import Enum
  3. from typing import List, Optional
  4. from pydantic import BaseModel
  5. from app.models.space import Space
  6. class AirValveSpeed(int, Enum):
  7. off = 0
  8. low = 1
  9. medium = 2
  10. high = 3
  11. auto = -1
  12. class BaseEquipment(BaseModel):
  13. id: str
  14. running_status: Optional[bool] = False
  15. setting_temperature: Optional[float] = 0.0
  16. class FCU(BaseEquipment):
  17. air_valve_speed: Optional[AirValveSpeed] = AirValveSpeed.off
  18. water_valve_status: Optional[bool] = False
  19. space: Space
  20. class VAVBox(BaseEquipment):
  21. spaces: List[Space]
  22. if __name__ == '__main__':
  23. external_data = {
  24. 'id': '123',
  25. 'running_status': True
  26. }
  27. fcu = FCU(**external_data)
  28. print(fcu.id)
  29. print(fcu.setting_temperature)
  30. fcu.setting_temperature = 23.5
  31. print(fcu.setting_temperature)
  32. print(isinstance(fcu, FCU))