send lixie_clock config upon boot

This commit is contained in:
iou1name 2020-05-15 19:06:31 -04:00
parent fdb6d65220
commit 84fcb20f49
2 changed files with 13 additions and 11 deletions

View File

@ -4,11 +4,10 @@ Data models for different device types managed by the Juice IOT hub.
"""
import re
import json
import requests
import tools
import requests
class Network(list):
"""
Represents a network of IOT devices.
@ -166,7 +165,7 @@ class LightStrip(Device):
animation_rotate_count = 1,
animation_delay = 200,
async def mqtt_callback(self, app, msg):
def mqtt_callback(self, app, msg):
topic = msg.topic.split('/')
payload = msg.payload.decode('utf8')
@ -236,7 +235,7 @@ class LightStrip(Device):
save_network(network)
res = {'event': 'neopixel', 'data': data}
await app.send_json_all(res)
app.loop.create_task(app.send_json_all(res))
class NeoPixel(SubDevice):
@ -261,7 +260,7 @@ class LixieClock(Device):
self.time_offset = -5
self.display_number = 0
async def mqtt_callback(self, app, msg):
def mqtt_callback(self, app, msg):
topic = msg.topic.split('/')
payload = msg.payload.decode('utf8')
@ -288,10 +287,17 @@ class LixieClock(Device):
data['change_mode'] = 'time_offset'
data['time_offset'] = int(payload)
self.time_offset = int(payload)
elif topic[1] == 'helo':
app['mqtt'].publish(topic[0] + '/' + self.display_mode, '')
if self.display_mode == 'number':
app['mqtt'].publish(topic[0] + '/number', self.display_number)
app['mqtt'].publish(topic[0] + '/time_offset', self.time_offset)
color = ','.join([str(n) for n in self.color])
app['mqtt'].publish(topic[0] + '/color', color)
save_network(network)
res = {'event': 'lixie_clock', 'data': data}
await app.send_json_all(res)
app.loop.create_task(app.send_json_all(res))
class LixieDisplay(SubDevice):

View File

@ -2,8 +2,6 @@
"""
Contains MQTT funtionality.
"""
import asyncio
import paho.mqtt.client as mqtt
from models import network
@ -21,9 +19,7 @@ def on_message(client, userdata, msg):
root = msg.topic.partition('/')[0]
devices = [device for device in network if root == device.mqtt_root]
for device in devices:
coro = device.mqtt_callback(client.app, msg)
future = asyncio.run_coroutine_threadsafe(coro, client.app.loop)
future.result()
device.mqtt_callback(client.app, msg)
def init_client(app):