import paho.mqtt.client as mqtt import json import base64 from cayennelpp import LppFrame import datetime def on_connect(client, userdata, flags, rc): if rc == 0: print("Connected to MQTT broker") client.subscribe(topic) else: print("Failed to connect, return code %d\n", rc) def on_message(client, userdata, message): #print("Received message: ", str(message.payload.decode("utf-8"))) parsed_json = json.loads(str(message.payload.decode("utf-8"))) data_part = parsed_json["data"] # print("Data:", data_part) decoded_data = base64.b64decode(data_part) #print("data :", decoded_data.hex()) bytearray_data = bytearray.fromhex(decoded_data.hex()) frame = LppFrame().from_bytes(bytearray_data) print(datetime.datetime.now()) for d in frame.data: print(d) print("---------------------------------") def read_config(config_file): with open(config_file, 'r') as f: config = json.load(f) return config if __name__ == "__main__": config = read_config('mqtt_config.json') broker_address = config['broker_address'] port = config['port'] topic = config['topic'] client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect(broker_address, port) client.loop_forever()