on_ratio.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from typing import Dict
  2. from httpx import AsyncClient
  3. from loguru import logger
  4. class OffRatioController:
  5. def __init__(self, target: float, return_air: float, period_num: int, last_off_ratio: float):
  6. super(OffRatioController, self).__init__()
  7. self.target = target
  8. self.return_air = return_air
  9. self.period_num = period_num
  10. self.last_off_ratio = last_off_ratio
  11. def select_mode(self) -> str:
  12. if self.target < self.return_air:
  13. mode = 'off'
  14. else:
  15. if self.target - self.return_air > 1:
  16. mode = 'normal'
  17. else:
  18. mode = 'off_ratio'
  19. return mode
  20. def select_speed(self, last_return_air: float) -> str:
  21. mode = self.select_mode()
  22. if mode == 'off':
  23. speed = 'off'
  24. elif mode == 'normal':
  25. if (self.return_air - last_return_air) / 10 > 0.053:
  26. speed = 'medium'
  27. else:
  28. speed = 'high'
  29. else:
  30. speed = 'medium'
  31. return speed
  32. def select_water_valve(self) -> bool:
  33. mode = self.select_mode()
  34. if mode == 'off':
  35. switch = True
  36. elif mode == 'normal':
  37. switch = False
  38. else:
  39. switch = True
  40. return switch
  41. def calculate_off_ratio(self) -> float: