From 4bbb323f30208c61173c87429ed4069ab0b20f2d Mon Sep 17 00:00:00 2001 From: T Date: Sat, 6 Sep 2025 00:30:35 +0200 Subject: [PATCH] Activate buttons when door is opened --- ug/button.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/ug/button.py b/ug/button.py index ed5a636..9c33007 100644 --- a/ug/button.py +++ b/ug/button.py @@ -191,7 +191,7 @@ class StateMenu: else: self.strip = neopixel.NeoPixel(board.D18, 24, brightness=0.5, pixel_order=neopixel.GRB, auto_write=False) self.strip_oben = SubStrip(self.strip, pixel=list(range(12))) - self.strip_unten = SubStrip(self.strip, pixel=list(range(13, 24))) + self.strip_unten = SubStrip(self.strip, pixel=list(range(12, 24))) self.doors = { "oben": Door("10.42.1.28", "open", "close"), @@ -207,16 +207,18 @@ class StateMenu: self.timeout = None self.next_state = None - def button_pressed(self, area): + def button_pressed(self, btn): if self.state == StateMenu.OFF: self.set_state(StateMenu.SHOW_STATE, 10) + elif btn not in self.doors: + pass # the following states should not be triggered by the door sensor elif self.state == StateMenu.SHOW_STATE: self.set_state(StateMenu.CHANGE, 10) - self.change_target = area + self.change_target = btn elif self.state == StateMenu.CHANGE: self.set_state(StateMenu.PROGRESS, 5) self.next_state = StateMenu.SHOW_STATE - self.target_state = "open" if area == "oben" else "close" + self.target_state = "open" if btn == "oben" else "close" print(self.change_target, self.target_state) if self.target_state == "open": @@ -292,7 +294,6 @@ def main(): try: while True: - if not btn_oben.value: if not btn_locked: menu.button_pressed("oben") @@ -306,6 +307,7 @@ def main(): if door_sense.value != menu.doors["unten"].door_sense_state: menu.doors["unten"].door_sense_state = door_sense.value + menu.button_pressed("door_sense") menu.mqtt.client.publish("foobar/unten/foodoor/door", {True: "open", False: "closed"}[menu.doors["unten"].door_sense_state], retain=True)