diff options
Diffstat (limited to 'src/home/mqtt/temphum.py')
-rw-r--r-- | src/home/mqtt/temphum.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/home/mqtt/temphum.py b/src/home/mqtt/temphum.py new file mode 100644 index 0000000..b9b2eb9 --- /dev/null +++ b/src/home/mqtt/temphum.py @@ -0,0 +1,33 @@ +import paho.mqtt.client as mqtt +import re + +from .payload.temphum import ( + TempHumDataPayload +) +from .esp import MqttEspBase + + +class MqttTempHum(MqttEspBase): + TOPIC_LEAF = 'temphum' + + def on_message(self, client: mqtt.Client, userdata, msg): + if super().on_message(client, userdata, msg): + return + + try: + match = re.match(self.get_mqtt_topics(['data']), msg.topic) + if not match: + return + + device_id = match.group(1) + subtopic = match.group(2) + + message = None + if subtopic == 'data': + message = TempHumDataPayload.unpack(msg.payload) + + if message and self._message_callback: + self._message_callback(device_id, message) + + except Exception as e: + self._logger.exception(str(e)) |