48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
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()
|
|
|