Source code for vent.alarm.rule

"""
Class to declare alarm rules
"""

from vent.alarm import AlarmType, AlarmSeverity

[docs]class Alarm_Rule(object): """ * name of rule * conditions: ((alarm_type, (condition_1, condition_2)), ...) * persistent (bool): if True, alarm will not be visually dismissed until alarm conditions are no longer true * latch (bool): if True, alarm severity cannot be decremented until user manually dismisses * silencing/overriding rules """ def __init__(self, name: AlarmType, conditions, latch=True, persistent=True, technical=False): super(Alarm_Rule, self).__init__() self.name = name self.conditions = conditions self.technical = technical self.latch = latch self.persistent = persistent self._severity = AlarmSeverity.OFF
[docs] def check(self, sensor_values): """ Check all of our :attr:`.conditions` . Args: sensor_values: Returns: """ active_severity = AlarmSeverity.OFF for severity, condition in self.conditions: active = condition.check(sensor_values) if active: if severity.value > active_severity.value: active_severity = severity self._severity = active_severity return active_severity
@property def severity(self): """ Last Alarm Severity from ``.check()`` Returns: :class:`.AlarmSeverity` """ return self._severity
[docs] def reset(self): for _, condition in self.conditions: condition.reset()