# -*- coding: utf-8 -*- from enum import Enum from typing import List, Optional import numpy as np from pydantic import BaseModel from app.schemas.space import Space class AirValveSpeed(float, Enum): off = 0.0 low = 1.0 medium = 2.0 high = 3.0 class BaseEquipment(BaseModel): id: str running_status: Optional[bool] = False in_cloud_status: Optional[bool] on_time: Optional[str] off_time: Optional[str] equip_switch_set: Optional[bool] = False class FCU(BaseEquipment): work_mode: Optional[int] air_valve_speed: Optional[AirValveSpeed] = AirValveSpeed.off air_valve_speed_set: Optional[AirValveSpeed] = AirValveSpeed.off recommended_speed: Optional[AirValveSpeed] = AirValveSpeed.off space: Optional[Space] setting_temperature: Optional[float] = 0.0 supply_air_temperature: Optional[float] = 0.0 water_out_temperature: Optional[float] = 0.0 water_in_temperature: Optional[float] = 0.0 speed_limit: Optional[AirValveSpeed] = AirValveSpeed.high class VAVBox(BaseEquipment): spaces: Optional[List[Space]] supply_air_temperature: Optional[float] = np.NAN supply_air_flow: Optional[float] = np.NAN supply_air_flow_set: Optional[float] = np.NAN supply_air_flow_lower_limit: Optional[float] = np.NAN supply_air_flow_upper_limit: Optional[float] = np.NAN recommended_supply_air_flow: Optional[float] = np.NAN valve_opening: Optional[float] = np.NAN setting_temperature: Optional[float] = 0.0 virtual_realtime_temperature: Optional[float] = np.NAN virtual_target_temperature: Optional[float] = np.NAN class AHU(BaseEquipment): fan_freq_set: Optional[float] supply_air_temperature: Optional[float] = np.NAN supply_air_temperature_set: Optional[float] = np.NAN class VentilationFan(BaseEquipment): pass class PAU(BaseEquipment): pass class VRF(BaseEquipment): speed_set: Optional[str] temperature_set: Optional[float] mode_set: Optional[str]