You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kmftools/energie/mqtt_publisher.py

37 lines
1.4 KiB

import paho.mqtt.client as mqtt
class MQTTPublisher:
def __init__(self, config, logger):
self.broker = config["broker"]
self.port = config["port"]
self.username = config["username"]
self.password = config["password"]
self.logger = logger
def publish(self, message, topic):
"""Publiceert een bericht naar het MQTT-topic."""
try:
self.logger.debug(f"Verbinden met MQTT broker {self.broker}...")
client = mqtt.Client()
# Authenticatie toevoegen
client.username_pw_set(self.username, self.password)
client.connect(self.broker, self.port, 60)
self.logger.debug(
f"Verbonden met MQTT broker op poort {self.port}.")
# Zet het bericht om naar een string als het geen string is
# Zorg ervoor dat het bericht een string is
message_str = str(message)
self.logger.debug(f"Publiceren naar MQTT-topic: {topic}")
# Publiceer de string versie van het bericht
client.publish(topic, message_str)
self.logger.debug(
f"Bericht gepubliceerd naar {topic}: {message_str}")
client.disconnect()
self.logger.debug("Verbinding met MQTT broker gesloten.")
except Exception as e:
self.logger.error(f"MQTT fout: {e}")