from typing import Dict from httpx import AsyncClient from loguru import logger class OffRatioController: def __init__(self, target: float, return_air: float, period_num: int, last_off_ratio: float): super(OffRatioController, self).__init__() self.target = target self.return_air = return_air self.period_num = period_num self.last_off_ratio = last_off_ratio def select_mode(self) -> str: if self.target < self.return_air: mode = 'off' else: if self.target - self.return_air > 1: mode = 'normal' else: mode = 'off_ratio' return mode def select_speed(self, last_return_air: float) -> str: mode = self.select_mode() if mode == 'off': speed = 'off' elif mode == 'normal': if (self.return_air - last_return_air) / 10 > 0.053: speed = 'medium' else: speed = 'high' else: speed = 'medium' return speed def select_water_valve(self) -> bool: mode = self.select_mode() if mode == 'off': switch = True elif mode == 'normal': switch = False else: switch = True return switch def calculate_off_ratio(self) -> float: