opcua-with-python/opcua2mqtt/MqttPublish.py
Wolfgang Hottgenroth 8e0a525beb debug
2022-02-04 22:13:19 +01:00

31 lines
1.0 KiB
Python

from threading import Event
from loguru import logger
from MqttBase import AbstractMqttPublisher
from queue import Empty
LOOP_SLICE = 0.1 # seconds
class MqttPublish(AbstractMqttPublisher):
def __init__(self, config, queue):
super().__init__(config)
self.queue = queue
self.topicPre = self.config["publishTopicPrefix"]
def localLoop(self):
while not self.killBill:
try:
dataObject = self.queue.get(timeout=LOOP_SLICE)
if not dataObject.isValid():
logger.error("invalid dataObject received: drop it")
else:
topic = self.topicPre + '/' + dataObject.getTopicPost()
payload = dataObject.getPayload()
self.client.publish(topic, payload)
logger.debug("mqtt message sent: {} -> {}".format(topic, payload))
except Empty:
if self.killBill:
logger.error("killbill received")
break