# -*- coding: utf-8 -*- from loguru import logger from app.models.domain.devices import ACVTSFSwitchSetRequest from app.controllers.equipment.switch import Switch, fetch_data, send_switch_command from app.schemas.equipment import VentilationFan class VentilationFanSwitch(Switch): def __init__(self, equipment: VentilationFan): super(VentilationFanSwitch, self).__init__(equipment) @logger.catch() async def ventilation_fan_switch_control(project_id: str, equipment_id: str) -> None: equip_params, day_type = await fetch_data(project_id, equipment_id) is_workday = True if day_type.get('day_type') == 'WeekDay' else False action = await VentilationFanSwitch(VentilationFan(**equip_params)).build_next_action(is_workday) if not is_workday: action = 'off' logger.debug(f'VTSF-{equipment_id}: {action}') await send_switch_command(project_id, equipment_id, action) @logger.catch() async def build_acvtsf_switch_set(params: ACVTSFSwitchSetRequest) -> str: vrf = VentilationFan( running_status=params.running_status, in_cloud_status=params.in_cloud_status, on_time=params.on_time, off_time=params.off_time, ) action = await VentilationFanSwitch(vrf).build_next_action(params.is_workday) if not params.is_workday: action = 'off' return action