Activate buttons when door is opened

This commit is contained in:
T
2025-09-06 00:30:35 +02:00
parent d485491f22
commit 4bbb323f30

View File

@@ -191,7 +191,7 @@ class StateMenu:
else: else:
self.strip = neopixel.NeoPixel(board.D18, 24, brightness=0.5, pixel_order=neopixel.GRB, auto_write=False) 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_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 = { self.doors = {
"oben": Door("10.42.1.28", "open", "close"), "oben": Door("10.42.1.28", "open", "close"),
@@ -207,16 +207,18 @@ class StateMenu:
self.timeout = None self.timeout = None
self.next_state = None self.next_state = None
def button_pressed(self, area): def button_pressed(self, btn):
if self.state == StateMenu.OFF: if self.state == StateMenu.OFF:
self.set_state(StateMenu.SHOW_STATE, 10) 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: elif self.state == StateMenu.SHOW_STATE:
self.set_state(StateMenu.CHANGE, 10) self.set_state(StateMenu.CHANGE, 10)
self.change_target = area self.change_target = btn
elif self.state == StateMenu.CHANGE: elif self.state == StateMenu.CHANGE:
self.set_state(StateMenu.PROGRESS, 5) self.set_state(StateMenu.PROGRESS, 5)
self.next_state = StateMenu.SHOW_STATE 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) print(self.change_target, self.target_state)
if self.target_state == "open": if self.target_state == "open":
@@ -292,7 +294,6 @@ def main():
try: try:
while True: while True:
if not btn_oben.value: if not btn_oben.value:
if not btn_locked: if not btn_locked:
menu.button_pressed("oben") menu.button_pressed("oben")
@@ -306,6 +307,7 @@ def main():
if door_sense.value != menu.doors["unten"].door_sense_state: if door_sense.value != menu.doors["unten"].door_sense_state:
menu.doors["unten"].door_sense_state = door_sense.value menu.doors["unten"].door_sense_state = door_sense.value
menu.button_pressed("door_sense")
menu.mqtt.client.publish("foobar/unten/foodoor/door", menu.mqtt.client.publish("foobar/unten/foodoor/door",
{True: "open", False: "closed"}[menu.doors["unten"].door_sense_state], {True: "open", False: "closed"}[menu.doors["unten"].door_sense_state],
retain=True) retain=True)