videv initialisation and periodic status publishing
This commit is contained in:
parent
882ea0230c
commit
2ec5487f00
16
base.py
16
base.py
@ -1,5 +1,6 @@
|
|||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
import task
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from config import APP_NAME as ROOT_LOGGER_NAME
|
from config import APP_NAME as ROOT_LOGGER_NAME
|
||||||
@ -16,7 +17,7 @@ class common_base(dict):
|
|||||||
self.__callback_list__ = []
|
self.__callback_list__ = []
|
||||||
self.logger = logging.getLogger(ROOT_LOGGER_NAME).getChild("devices")
|
self.logger = logging.getLogger(ROOT_LOGGER_NAME).getChild("devices")
|
||||||
|
|
||||||
def add_callback(self, key, data, callback, on_change_only=False):
|
def add_callback(self, key, data, callback, on_change_only=False, init_now=False):
|
||||||
"""
|
"""
|
||||||
key: key or None for all keys
|
key: key or None for all keys
|
||||||
data: data or None for all data
|
data: data or None for all data
|
||||||
@ -24,6 +25,8 @@ class common_base(dict):
|
|||||||
cb_tup = (key, data, callback, on_change_only)
|
cb_tup = (key, data, callback, on_change_only)
|
||||||
if cb_tup not in self.__callback_list__:
|
if cb_tup not in self.__callback_list__:
|
||||||
self.__callback_list__.append(cb_tup)
|
self.__callback_list__.append(cb_tup)
|
||||||
|
if init_now and self.get(key) is not None:
|
||||||
|
callback(self, key, self[key])
|
||||||
|
|
||||||
def set(self, key, data, block_callback=[]):
|
def set(self, key, data, block_callback=[]):
|
||||||
if key in self.keys():
|
if key in self.keys():
|
||||||
@ -58,6 +61,13 @@ class videv_base(mqtt_base):
|
|||||||
super().__init__(mqtt_client, topic, default_values=default_values)
|
super().__init__(mqtt_client, topic, default_values=default_values)
|
||||||
self.__display_dict__ = {}
|
self.__display_dict__ = {}
|
||||||
self.__control_dict__ = {}
|
self.__control_dict__ = {}
|
||||||
|
self.__periodic__ = task.periodic(300, self.send_all)
|
||||||
|
self.__periodic__.run()
|
||||||
|
|
||||||
|
def send_all(self, rt):
|
||||||
|
for key in self:
|
||||||
|
if self[key] is not None:
|
||||||
|
self.__tx__(key, self[key])
|
||||||
|
|
||||||
def add_display(self, my_key, ext_device, ext_key, on_change_only=True):
|
def add_display(self, my_key, ext_device, ext_key, on_change_only=True):
|
||||||
"""
|
"""
|
||||||
@ -69,12 +79,12 @@ class videv_base(mqtt_base):
|
|||||||
# store information to identify callback from ext_device
|
# store information to identify callback from ext_device
|
||||||
self.__display_dict__[(id(ext_device[0]), ext_key)] = my_key
|
self.__display_dict__[(id(ext_device[0]), ext_key)] = my_key
|
||||||
# register a callback to listen for data from external device
|
# register a callback to listen for data from external device
|
||||||
ext_device[0].add_callback(ext_key, None, self.__rx_ext_device_data__, on_change_only)
|
ext_device[0].add_callback(ext_key, None, self.__rx_ext_device_data__, on_change_only, init_now=True)
|
||||||
else:
|
else:
|
||||||
# store information to identify callback from ext_device
|
# store information to identify callback from ext_device
|
||||||
self.__display_dict__[(id(ext_device), ext_key)] = my_key
|
self.__display_dict__[(id(ext_device), ext_key)] = my_key
|
||||||
# register a callback to listen for data from external device
|
# register a callback to listen for data from external device
|
||||||
ext_device.add_callback(ext_key, None, self.__rx_ext_device_data__, on_change_only)
|
ext_device.add_callback(ext_key, None, self.__rx_ext_device_data__, on_change_only, init_now=True)
|
||||||
# send initial display data to videv interface
|
# send initial display data to videv interface
|
||||||
data = ext_device.get(ext_key)
|
data = ext_device.get(ext_key)
|
||||||
if data is not None:
|
if data is not None:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user