import threading import paho.mqtt.client as mqtt from logger import Logger import json import datetime from time import mktime class MyEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, datetime.datetime): return str(obj) return json.JSONEncoder.default(self, obj) class RePublisher(threading.Thread): def __init__(self, queue, broker): threading.Thread.__init__(self) self.queue = queue self.broker = broker self.setDaemon(True) def run(self): client = mqtt.Client() client.connect(self.broker, 1883, 60) client.loop_start() while True: try: msg = self.queue.get() dataBlock = msg['data'] if 'decodedTelegram' in dataBlock: del dataBlock['decodedTelegram'] if 'telegram' in dataBlock: del dataBlock['telegram'] client.publish("IoT/ParsedData", json.dumps(msg, cls=MyEncoder)) Logger.log("RePublisher has sent data") except Exception, e: Logger.log("Unexcepted exception %s in RePublisher: %s" % (e.__class__.__name__, str(e)))