mqtt_message.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import json
  2. class MqttMessage:
  3. """
  4. Represents an MQTT message with a topic, payload, and origin.
  5. This class is used to construct and manage MQTT messages, including their
  6. serialization to JSON format. It provides an interface to handle MQTT
  7. messages, allowing for easy manipulation of the message topic, payload, and
  8. origin.
  9. Attributes:
  10. topic (str): The topic associated with the MQTT message.
  11. payload (dict): The payload data of the MQTT message.
  12. origin (str): The origin of the MQTT message, 'sim' or 'real'.
  13. """
  14. def __init__(self, message: str | None = None, origin: str = 'sim'):
  15. self.topic: str = ""
  16. self.payload: dict = dict()
  17. self.origin: str = origin
  18. if message is not None:
  19. message = json.loads(message)
  20. self.topic = message['topic']
  21. self.payload = json.loads(message['payload'])
  22. if 'origin' in message:
  23. self.origin = message['origin']
  24. def to_json(self) -> str:
  25. total_msg = dict()
  26. total_msg['topic'] = self.topic
  27. total_msg['payload'] = self.payload
  28. total_msg['origin'] = self.origin
  29. return json.dumps(total_msg)
  30. def __str__(self) -> str:
  31. return f"{type(self).__name__}(origin='{self.origin}', topic='{self.topic}', payload={self.payload})"
  32. def __repr__(self) -> str:
  33. return f"{type(self).__name__}(origin='{self.origin}', topic='{self.topic}', payload={self.payload})"