basic.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. # -*- coding: utf-8 -*-
  2. import numpy as np
  3. from app.models.domain.devices import ACATAHFreqSetRequest
  4. from app.schemas.equipment import AHU
  5. from app.schemas.system import ACAT
  6. class AHUController:
  7. def __init__(self, equipment: AHU | None, system: ACAT | None):
  8. super(AHUController, self).__init__()
  9. self._equipment = equipment
  10. self._system = system
  11. async def build_freq_set(self, supply_air_temperature_set_duration: list[float], hot_rate: float) -> float:
  12. extent = 5
  13. if (
  14. self._equipment.freq_set is None
  15. or self._system.supply_static_press is None
  16. or self._system.supply_static_press_set is None
  17. ):
  18. temp_freq_set = 80.0
  19. else:
  20. pre_fan_freq_set = self._equipment.freq_set
  21. if self._system.supply_static_press < self._system.supply_static_press_set - extent:
  22. temp_freq_set = pre_fan_freq_set + 2
  23. elif self._system.supply_static_press > self._system.supply_static_press_set + extent:
  24. temp_freq_set = pre_fan_freq_set - 2
  25. else:
  26. temp_freq_set = pre_fan_freq_set
  27. temperature_value_list = np.array(supply_air_temperature_set_duration)
  28. freq_upper_limit = 90.0
  29. if (
  30. temperature_value_list.size > 0
  31. and np.all(temperature_value_list == temperature_value_list[0])
  32. and temperature_value_list[0] <= 18.0
  33. and hot_rate >= 0.5
  34. ):
  35. freq_upper_limit = 100.0
  36. freq_set = min(temp_freq_set, freq_upper_limit)
  37. self._equipment.freq_set = freq_set
  38. return freq_set
  39. async def build_acatah_freq_set(params: ACATAHFreqSetRequest) -> float:
  40. acat_system = ACAT(
  41. supply_static_press=params.system_supply_static_press,
  42. supply_static_press_set=params.system_supply_static_press_set,
  43. )
  44. ahu = AHU(freq_set=params.current_freq_set)
  45. ahu_controller = AHUController(ahu, acat_system)
  46. new_freq_set = await ahu_controller.build_freq_set(
  47. params.supply_air_temperature_set_list, params.spaces_hot_rate
  48. )
  49. return new_freq_set