class Buzzer: def __init__(self, pin=None): self.pin = pin self.enabled = False self.pattern = None def on(self): self.enabled = True if self.pin: self.pin.value(1) def off(self): self.enabled = False self.pattern = None if self.pin: self.pin.value(0) def set_pattern(self, pattern): self.pattern = pattern self.enabled = pattern is not None def update_from_alarm_view(self, alarm_view): if alarm_view.should_buzz(): self.set_pattern("critical") else: self.off()