alarm.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. # -*- coding: utf-8 -*-
  2. """
  3. alarm
  4. ~~~~~
  5. This module contains the ATFC alarm logic.
  6. """
  7. from abc import ABC, abstractmethod
  8. class Alarm(ABC):
  9. """The base Alarm"""
  10. def __init__(self, params):
  11. self._params = params
  12. def get(self, property_name):
  13. return self._params.get(property_name)
  14. def set_alarm(self, category):
  15. self._params.update({'alarm_type': category})
  16. @abstractmethod
  17. def procedure(self):
  18. raise NotImplementedError
  19. class FanCoilUnitAlarm(Alarm):
  20. def __init__(self, params):
  21. super().__init__(params)
  22. def procedure(self):
  23. if self.get('water_valve_switch') == 1:
  24. if 0 not in self.get('water_valve_history_status'):
  25. return
  26. if len(set(self.get('tap_history_status'))) <= 1:
  27. return
  28. air_temp_diff = self.get('return_air_temp') - abs(self.get('supply_air_temp'))
  29. water_temp_diff = self.get('water_out_temp') - abs(self.get('water_in_temp'))
  30. if air_temp_diff > 12 and water_temp_diff < 5:
  31. self.set_alarm(1)
  32. return