annotate bots/doorbell.py @ 1:2a288d2cb88c

add unread_to_mqtt bridge
author drewp@bigasterisk.com
date Tue, 11 Feb 2025 19:20:47 -0800
parents 96f842f12121
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
drewp@bigasterisk.com
parents:
diff changeset
1 import asyncio
drewp@bigasterisk.com
parents:
diff changeset
2 import logging
drewp@bigasterisk.com
parents:
diff changeset
3
drewp@bigasterisk.com
parents:
diff changeset
4 import aiomqtt
drewp@bigasterisk.com
parents:
diff changeset
5
drewp@bigasterisk.com
parents:
diff changeset
6 from bigastbot import BigAstBot
drewp@bigasterisk.com
parents:
diff changeset
7
drewp@bigasterisk.com
parents:
diff changeset
8 logging.basicConfig(level=logging.INFO,
drewp@bigasterisk.com
parents:
diff changeset
9 format='%(asctime)s %(levelname)s %(name)s %(message)s',
drewp@bigasterisk.com
parents:
diff changeset
10 datefmt='%Y-%m-%d %H:%M:%S')
drewp@bigasterisk.com
parents:
diff changeset
11 log = logging.getLogger()
drewp@bigasterisk.com
parents:
diff changeset
12
drewp@bigasterisk.com
parents:
diff changeset
13
drewp@bigasterisk.com
parents:
diff changeset
14 async def main():
drewp@bigasterisk.com
parents:
diff changeset
15 bot = BigAstBot(email='doorbell-bot@chat.bigasterisk.com')
drewp@bigasterisk.com
parents:
diff changeset
16
drewp@bigasterisk.com
parents:
diff changeset
17 async with aiomqtt.Client("mqtt2.bigasterisk.com", ) as client:
drewp@bigasterisk.com
parents:
diff changeset
18 await client.subscribe("doorbell/button")
drewp@bigasterisk.com
parents:
diff changeset
19 log.info("waiting for messages")
drewp@bigasterisk.com
parents:
diff changeset
20 async for message in client.messages:
drewp@bigasterisk.com
parents:
diff changeset
21 if message.payload == b'pressed':
drewp@bigasterisk.com
parents:
diff changeset
22 ret = bot.send_to_channel(channelName="front-door",
drewp@bigasterisk.com
parents:
diff changeset
23 topic="doorbell",
drewp@bigasterisk.com
parents:
diff changeset
24 content="🔔 ring!")
drewp@bigasterisk.com
parents:
diff changeset
25 log.info(f"sent: {ret!r}")
drewp@bigasterisk.com
parents:
diff changeset
26
drewp@bigasterisk.com
parents:
diff changeset
27
drewp@bigasterisk.com
parents:
diff changeset
28 asyncio.run(main())