Rewrite OG Buttons
This commit is contained in:
12
ug/button.py
12
ug/button.py
@@ -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,
|
||||
|
Reference in New Issue
Block a user