# -*- 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 VRFMode(str, Enum): cooling = "cooling" heating = "heating" ventilation = "ventilation" unknown = "unknown" class BaseEquipment(BaseModel): id: Optional[str] running_status: Optional[bool] in_cloud_status: Optional[bool] on_time: Optional[str] off_time: Optional[str] equip_switch_set: Optional[bool] 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] supply_air_temperature: Optional[float] water_out_temperature: Optional[float] water_in_temperature: Optional[float] 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): supply_air_temperature: Optional[float] supply_air_temperature_set: Optional[float] return_air_temperature: Optional[float] return_air_temperature_set: Optional[float] freq: Optional[float] freq_set: Optional[float] fan_freq_upper_limit_set: Optional[float] fan_freq_lower_limit_set: Optional[float] class VentilationFan(BaseEquipment): pass class PAU(BaseEquipment): pass class VRF(BaseEquipment): equip_switch_set: Optional[str] work_mode: Optional[VRFMode] speed: Optional[str] speed_set: Optional[str] current_temperature_set: Optional[float] temperature_set: Optional[float] mode_set: Optional[str] return_air_temp: Optional[float] class ASHP(BaseEquipment): out_temp_15min: List[float] out_temp_set_15min: List[float] out_temp_30min: List[float] out_temp_set_30min: List[float] out_temp_set: Optional[float] iplr_15min: List[float] iplr_30min: List[float]