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))