Python example
Here you can find a python script example that handles communication with a broker.
#!/usr/bin/env python3
import paho.mqtt.client as mqtt
import time
def on_connect(client, userdata, flags, rc):
global dev_id_enc
print("rc"+str(rc))
if rc==0:
print(dev_id+": connected ok")
def on_message(client, userdata, msg):
array = msg.payload.decode().split(',')
global dev_id
print("<<<<<<<<<<<<< The IoT service RECEIVES something")
print(str(array))
print(str(msg.topic))
if msg.topic == 'admin/provider/'+str(dev_id):
global password
password = array[0]
print("2. "+ dev_id+": password received - " +password)
if __name__ == '__main__':
password = ''
# The IoT device knows his own dev_id
dev_id = "asdfasdf"
# 0. First connection for credential retrieval
client = mqtt.Client()
client.on_connect=on_connect
client.on_message=on_message
client.user_data_set('')
client.connect("broker.airtrace.io",1883,60)
client.subscribe("admin/provider/" + str(dev_id))
# 1. We do not have token, so first we need to get one by asking admin/provider topic
client.loop_start()
res = client.publish("admin/provider", dev_id)
print("1. >>>>>>>>>>>>> The IoT service does not have password. Connect to admin/provider topic and request one.")
time.sleep(10)
client.loop_stop()
client.disconnect()
# 1. Second connection (authenticated) for data submission
client2 = mqtt.Client()
client2.on_connect=on_connect
client2.on_message=on_message
print(dev_id, password)
client2.username_pw_set(dev_id, password)
client2.connect("broker.airtrace.io",1884,60)
client2.loop_start()
# Sending data
i = 0
while i < 5:
payload = "200,c8y_Radon,R,16,,2021-11-07T00:30:06Z"
print(
"3. >>>>>>>>>>>>> The IoT publishes messages in the topic admin/data")
res = client2.publish('admin/data/'+dev_id, payload)
time.sleep(1)
i = i + 1
client2.loop_stop()
client2.disconnect()
Last updated