1
0
Fork 0

improve rule configuration format

master
Bob Carroll 2022-07-29 19:31:22 -05:00
parent 7cc193ef00
commit 43766d754a
1 changed files with 8 additions and 9 deletions

View File

@ -38,18 +38,17 @@ async def apply_rule(rule, client):
name = rule.get('name')
logging.debug(f'Begin applying rule: {name}')
for s in rule.get('scene', []):
topic = s.get('topic')
data = s.get('data')
retain = s.get('retain', False)
for light, payload in rule.get('scene', {}).items():
payload = {k: v
for k, v in payload.items()
if k in ['mode', 'brightness', 'effect']}
logging.debug(f'Publishing to {topic}: {data}')
if topic is None or data is None:
if not len(payload):
logging.warn(f'Light {light} payload is malformed')
continue
elif isinstance(data, dict):
data = umsgpack.packb(data)
await client.publish(topic, data, retain=retain)
logging.debug(f'Setting state for light {light}: {payload}')
await client.publish(f'light/{light}/set', umsgpack.packb(payload))
logging.debug(f'End applying rule: {name}')