Change script to dog barking

This commit is contained in:
Tanner Collin 2022-06-27 17:13:24 -06:00
parent c2d0c8e27b
commit bbf04d6397

36
main.py
View File

@ -15,16 +15,14 @@ import secrets
COOLDOWN = time.time() COOLDOWN = time.time()
CHIME = 'chime.ogg' CAMERAS = {
'NE-W-ZoneB': {
DOORBELLS = {
'647166': {
'name': 'Front Door', 'name': 'Front Door',
'sound': 'frontdoor.ogg', 'sound': 'barkLR.ogg',
}, },
'549660': { 'SE-N-ZoneB': {
'name': 'Back Door', 'name': 'Side Door',
'sound': 'backdoor.ogg', 'sound': 'barkRL.ogg',
} }
} }
@ -39,7 +37,7 @@ async def play_sound(filename):
await asyncio.sleep(0.1) await asyncio.sleep(0.1)
async def ring_bell(sound): async def bark(sound):
global COOLDOWN global COOLDOWN
if time.time() - COOLDOWN < 5.0: if time.time() - COOLDOWN < 5.0:
logging.info('Cooldown skipping.') logging.info('Cooldown skipping.')
@ -48,22 +46,16 @@ async def ring_bell(sound):
await asyncio.sleep(0.1) await asyncio.sleep(0.1)
await play_sound(CHIME)
await play_sound(sound) await play_sound(sound)
await asyncio.sleep(0.75) logging.info('Done barking.')
await play_sound(CHIME)
await play_sound(sound)
logging.info('Done ringing.')
async def process_mqtt(message): async def process_mqtt(message):
text = message.payload.decode() text = message.payload.decode()
topic = message.topic topic = message.topic
logging.info('MQTT topic: %s, message: %s', topic, text) logging.info('MQTT topic: %s, message: %s', topic, text)
if not topic.startswith('rtl_433'): if not topic.startswith('iot/cameras'):
logging.info('Invalid topic, returning') logging.info('Invalid topic, returning')
return return
@ -75,21 +67,21 @@ async def process_mqtt(message):
id_ = str(data.get('id', '')) id_ = str(data.get('id', ''))
if id_ not in DOORBELLS: if id_ not in CAMERAS:
logging.info('Invalid id, returning') logging.info('Invalid id, returning')
return return
doorbell = DOORBELLS[id_] camera = CAMERAS[id_]
logging.info('Ringing %s...', doorbell['name']) logging.info('Ringing %s...', camera['name'])
await ring_bell(doorbell['sound']) await ring_bell(doorbell['sound'])
async def fetch_mqtt(): async def fetch_mqtt():
await asyncio.sleep(3) await asyncio.sleep(3)
async with Client('localhost') as client: async with Client('192.168.0.100') as client:
async with client.filtered_messages('#') as messages: async with client.filtered_messages('iot/cameras') as messages:
await client.subscribe('#') await client.subscribe('#')
async for message in messages: async for message in messages:
loop = asyncio.get_event_loop() loop = asyncio.get_event_loop()