aboutsummaryrefslogtreecommitdiff
path: root/src/home/mqtt/temphum.py
blob: 69bafb2f65a1008b0b8038dbd966cbe3efac1a42 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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))