Rewrite OG Buttons

This commit is contained in:
T
2025-09-11 15:36:04 +02:00
parent 4bbb323f30
commit fe3d3967a8
4 changed files with 257 additions and 167 deletions

View File

@@ -126,6 +126,7 @@ class DoorLocal(Door):
class FoodoorMQTT:
def __init__(self, areas):
self.areas = areas
self.message_cbs = []
self.client = mqtt.Client()
self.client.on_connect = self.on_connect
@@ -158,6 +159,8 @@ class FoodoorMQTT:
def on_message(self, client, userdata, msg):
print(f"MQTT-Server Message: {msg.topic} {msg.payload.decode()}")
self._data[msg.topic] = msg.payload.decode()
for cb in self.message_cbs:
cb(msg.topic)
def get_door(self, area):
return self._data.get(f"foobar/{area}/foodoor/status")
@@ -179,8 +182,10 @@ class StateMenu:
self.anim = []
self.timeout = None
self.next_state = None
self.reset_state()
self.mqtt = FoodoorMQTT(["oben", "unten"])
self.mqtt.message_cbs.append(lambda *_: self.draw())
if SIM:
self.mqtt.connect("127.0.0.1")
else:
@@ -233,9 +238,11 @@ class StateMenu:
self.draw()
def set_state(self, state, timeout):
def set_state(self, state, timeout=None):
self.state = state
self.timeout = time.monotonic() + timeout
self.timeout = None
if timeout is not None:
self.timeout = time.monotonic() + timeout
def draw(self):
self.anim.clear()
@@ -251,7 +258,6 @@ class StateMenu:
Chase(self.strip_unten, 0.5, color=color.RED, size=1, spacing=11),
]
elif self.state == StateMenu.PROGRESS:
self.strip_oben.fill(color.GREEN if self.mqtt.is_open("oben") else color.RED)
if self.change_target == "oben":
self.strip_unten.fill(color.GREEN if self.mqtt.is_open("unten") else color.RED)
self.anim = [Chase(self.strip_oben, 0.05, size=1,