from enum import Enum from typing import Dict, List, Optional from pydantic import BaseModel, Field from app.models.domain.feedback import FeedbackValue class ThermalMode(str, Enum): cooling = 'cooling' heating = 'heating' hold = 'hold' class DevicesInstructionsBaseResponse(BaseModel): project_id: str = Field(None, alias='projectId') device_id: str = Field(None, alias='equipId') output: Dict class DevicesEarlyStartTime(BaseModel): project_id: str = Field(None, alias='projectId') space_id: str = Field(None, alias='spaceId') minutes: float class ACATVIInstructionsRequest(BaseModel): device_id: str return_air_temperature: float running_status: str current_speed: str current_temperature_set: float space_temperature_target: float space_realtime_temperature: float feedback: FeedbackValue class ACATVIInstructionsTemporaryResponse(BaseModel): output: Dict class ACATVIInstructionsResponse(BaseModel): switch_set: Optional[str] speed_set: Optional[str] temperature_set: Optional[float] mode_set: Optional[str] class ACATFCInstructionsRequest(BaseModel): device_id: str season: str space_temperature_target: float space_realtime_temperature: Optional[float] class ACATFCInstructionsResponse(BaseModel): switch_set: int = Field(None, alias='onOff') speed_set: int = Field(None, alias='speed') temperature_set: float = Field(None, alias='temperature') mode_set: int = Field(None, alias='mode') water_valve_switch_set: int = Field(None, alias='water') class Space(BaseModel): realtime_temperature: float temperature_target: float vav_default_weight: float vav_temporary_weight: float vav_temporary_update_time: str class ACATVAInstructionsRequest(BaseModel): device_id: str season: str supply_air_temperature: float supply_air_flow: float supply_air_flow_lower_limit: float supply_air_flow_upper_limit: float spaces: List[Space] class ACATVAInstructionsResponse(BaseModel): supply_air_flow_set: float = Field(None, alias='SupplyAirFlowSet') virtual_temperature_target_set: float = Field(None, alias='TargetTemperatureSet') virtual_realtime_temperature: float = Field(None, alias='VirtualRealtimeTemperature') class ACATAHFreqSetRequest(BaseModel): device_id: str system_supply_static_press: float system_supply_static_press_set: float current_freq_set: float supply_air_temperature_set: List[float] spaces_hot_rate: float class ACATAHFreqSetResponse(BaseModel): freq_set: float class SwitchSet(str, Enum): on = 'on' off = 'off' hold = 'hold' class SwitchSetRequestBase(BaseModel): device_id: str running_status: bool in_cloud_status: bool on_time: str off_time: str is_workday: bool class SwitchSetResponseBase(BaseModel): switch_set: SwitchSet class ACATAHSwitchSetRequest(SwitchSetRequestBase): break_start_time: str break_end_time: str class ACATAHSwitchSetResponse(SwitchSetResponseBase): pass class ACVTSFSwitchSetRequest(SwitchSetRequestBase): pass class ACVTSFSwitchSetResponse(SwitchSetResponseBase): pass