
Getting started with the XBee Smart Modem Development Kit
Get started with MQTT
Digi XBee3 Cellular LTE-M Global Smart Modem User Guide
34
You can verify the response from the broker as a CONNACK by comparing it to the structure of a
CONNACK packet in the MQTT documentation, which is available at
open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718081)
Example: send messages (publish) with MQTT
A basic Python example of a node publishing (sending) a message is:
mqttc = mqtt.Client("digitest")
# Create instance of client with client ID
“digitest”
mqttc.connect("m2m.eclipse.org", 1883)
# Connect to (broker, port, keepalive-
time)
mqttc.loop_start()
# Start networking daemon
mqttc.publish("digitest/test1", "Hello, World!")
# Publish message to “digitest
/test1” topic
mqttc.loop_stop()
# Kill networking daemon
Note
You can easily copy and paste code from the online version of this Guide. Use caution with the
PDF version, as it may not maintain essential indentations.
This example imports the MQTT library, allowing you to use the MQTT protocol via APIs in the library,
such as the
connect()
,
subscribe()
, and
publish()
methods.
The second line creates an instance of the client, named
mqttc
. The client ID is the argument you
passed in:
digitest
(this is optional).
In line 3, the client connects to a public broker, in this case
m2m.eclipse.org
, on port
1883
(the default
MQTT port, or 8883 for MQTT over SSL). There are many publicly available brokers available, you can
find a list of them here:
https://github.com/mqtt/mqtt.github.io/wiki/brokers
.
Line 4 starts the networking daemon with
client.loop_start()
to handle the background
network/data tasks.
Finally, the client publishes its message
Hello, World!
to the broker under the topic
digitest/backlog/test1
. Any nodes (devices, phones, computers, even microcontrollers) subscribed to
that same topic on the same broker receive the message.
Once no more messages need to be published, the last line stops the network daemon with
client.loop_stop()
.
Example: receive messages (subscribe) with MQTT
This example describes how a client would receive messages from within a specific topic on the
broker:
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
# The callback for when the client
connects to the broker
print("Connected with result code {0}".format(str(rc)))
# Print result of
connection attempt
client.subscribe("digitest/test1")
# Subscribe to the topic
“digitest/test1”, receive any messages published on it
def on_message(client, userdata, msg):
# The callback for when a PUBLISH message
is received from the server.
print("Message received-> " + msg.topic + " " + str(msg.payload))
# Print a