Relay alarm events instead of alarm state

This commit is contained in:
polyfloyd 2025-06-04 13:40:25 +02:00
parent a1a197c7ee
commit 6282851acb

View file

@ -88,7 +88,6 @@ async def np(ctx):
async def run_events(mqtt_host): async def run_events(mqtt_host):
retained = { retained = {
"bitlair/alarm",
"bitlair/doorduino/doorbell", "bitlair/doorduino/doorbell",
"bitlair/doorduino/dooropen", # Unused. Payload is 0|1 like the doorbell. "bitlair/doorduino/dooropen", # Unused. Payload is 0|1 like the doorbell.
"bitlair/doorduino/lockstate", "bitlair/doorduino/lockstate",
@ -96,9 +95,14 @@ async def run_events(mqtt_host):
"bitlair/state", "bitlair/state",
"bitlair/state/djo", "bitlair/state/djo",
} }
non_retained = {
"bitlair/alarm/events",
}
async with aiomqtt.Client(mqtt_host) as mq: async with aiomqtt.Client(mqtt_host) as mq:
await asyncio.gather(*[mq.subscribe(topic) for topic in retained]) await asyncio.gather(
*[mq.subscribe(topic) for topic in retained | non_retained]
)
async for msg in mq.messages: async for msg in mq.messages:
# Retained messages trigger an initial message on connecting. Prevent relaying them to Discord on startup. # Retained messages trigger an initial message on connecting. Prevent relaying them to Discord on startup.
if str(msg.topic) in retained: if str(msg.topic) in retained:
@ -107,8 +111,9 @@ async def run_events(mqtt_host):
payload = msg.payload.decode("ascii") payload = msg.payload.decode("ascii")
if msg.topic.matches("bitlair/alarm"): if msg.topic.matches("bitlair/alarm/events"):
yield f"Alarm: {payload}" if not payload.startswith("RP"): # Ignore communication tests.
yield f"Alarm event: {payload}"
elif msg.topic.matches("bitlair/state"): elif msg.topic.matches("bitlair/state"):
yield f"Bitlair is now {payload.upper()}" yield f"Bitlair is now {payload.upper()}"
elif msg.topic.matches("bitlair/state/djo"): elif msg.topic.matches("bitlair/state/djo"):