based on Can't Decode Uplink Message from MQTT client
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
import chirpstack_api.gw as gateway
import re
import pprint
def on_log(client, userdata, level, buf):
print("log: ", buf)
def on_connect(client, userdata, flags, rc):
if rc==0:
print("connected ok")
client.subscribe("gateway/+/event/+")
client.on_message = on_message
else:
print("not connected", rc)
#------------------------------------------------------------------------------------------------
def on_disconnect(client, userdata, flags, rc=0):
print("disconnect result code "+str(rc))
#------------------------------------------------------------------------------------------------
def on_message(client, userdata, msg):
m = re.match(r"^gateway\/(\w+)\/event\/up",msg.topic)
if m:
frame = gateway.UplinkFrame()
frame.ParseFromString(msg.payload)
pp = pprint.PrettyPrinter(indent=4)
print("message received \n")
pp.pprint(frame)
#------------------------------------------------------------------------------------------------
def on_subscribe(client, userdata, mid, granted_qos, properties=None):
print("Subscribed: " + str(mid) + " " + str(granted_qos))
client = mqtt.Client("chirpstack-debugger") #create new instance
client.on_message = on_message
client.on_log = on_log
client.on_connect = on_connect
client.on_disconnect = on_disconnect
# if using tls - remember to change the port to 8883
# client.tls_set()
# client.tls_insecure_set(True)
client.username_pw_set("YOUR_USERNAME", "YOUR_PASSWORD")
client.connect("YOUR_MQTT_BROKER_ADDRESS", 1883, 60)
client.loop_forever()