30 lines
874 B
Python
30 lines
874 B
Python
|
import logging
|
||
|
|
||
|
|
||
|
class base(dict):
|
||
|
"""A base device for all devicetypes
|
||
|
|
||
|
Args:
|
||
|
mqtt_client (mqtt.mqtt_client): A MQTT Client instance
|
||
|
topic (str): the base topic for this device
|
||
|
"""
|
||
|
PROPERTIES = []
|
||
|
|
||
|
def __init__(self, mqtt_client, topic, **kwargs):
|
||
|
super().__init__()
|
||
|
self.mqtt_client = mqtt_client
|
||
|
self.topic = topic
|
||
|
for key in kwargs:
|
||
|
setattr(self, key, kwargs[key])
|
||
|
#
|
||
|
self.logger = logging.getLogger('devices')
|
||
|
for entry in self.topic.split('/'):
|
||
|
self.logger = self.logger.getChild(entry)
|
||
|
|
||
|
def __set__(self, key, data):
|
||
|
if key in self.PROPERTIES:
|
||
|
self.logger.debug("Setting new property %s to %s", key, repr(data))
|
||
|
self[key] = data
|
||
|
else:
|
||
|
self.logger.warning("Ignoring unsupported property %s", key)
|