Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The Message Queuing Telemetry Transport ( MQTT ) protocol defines a lightweight and simple and lightweight messaging protocol designed for limited devices and networks with low bandwidth, unreliable networks or high latency, or unreliable networks. The MQTT client uses publish and subscribe methods to communicate over a TCP connection with the MQTT message broker (hereinafter referred to as the MQTT server).

Info

MQTT AT commands are implemented according to MQTT version 3.1.1.

Note

Secure MQTT is not supported

1. Example: Unencrypted, unauthenticated

Code Block
languagepy
# Translates a domain name into an IP address using an existing DNS.
> AT+UDNSRN=0,"broker.emqx.io"
< +UDNSRN: "3.82.39.163", "44.195.202.69"
< OK

# Enable URCs 
> AT+CEREG=2
< OK

# Read network registration status
> AT+CEREG?
< +CEREG: 2,2
< OK

# Read network registration status. Wait of +CEREG: 2,5...
> AT+CEREG?
< +CEREG: 2,5,"AB80","819965",9
< OK

# Check the module connected to the network
> AT+CGATT?
< +CGATT: 1
< OK

# Check to see if the PDP context has been activated.
> AT+CGACT?
< +CGACT: 1,1
< OK

# Read IP address from module
> AT+CGDCONT?
< +CGDCONT: 1,"IP","vgesace.nb.iot","10.254.46.241",0,0,0,0,0,0
< OK

# Set MQTT unique client ID. In the example IMEI from device
> AT+UMQTT=0,"350857128129037"
< +UMQTT: 0,1
< OK

# Set MQTT local TCP port number
> AT+UMQTT=1,1883
< +UMQTT: 1,1
< OK

# Set remote MQTT server's name
> AT+UMQTT=2,"broker.emqx.io"
< +UMQTT: 2,1
< OK

# Set remote MQTT server's IP address
> AT+UMQTT=3,"44.195.202.69",1883
< +UMQTT: 3,1
< OK

# Connect to the broker
> AT+UMQTTC=1
< +UMQTTC: 1,1
< OK

< +UUMQTTC: 1,0

""" Repeat the command "AT+UMQTTC=1" if the URC "+UUMQTTC: 1,0" does not arrive. """

# Subscribe to MQTT topic filter
> AT+UMQTTC=4,0,"/exelonix/test"
< +UMQTTC: 4,1
< OK

< +UUMQTTC: 4,1,0,"/exelonix/test"

# Publish MQTT message to topic name
> AT+UMQTTC=2,0,0,"/exelonix/test","MQTT message"
< +UMQTTC: 2,1
< OK

# Wait of asynchronous notification (URC) of the reception of an MQTT message
< +UUMQTTCM: 6,1

# Read MQTT messages received
> AT+UMQTTC=6
< +UMQTTC: 6,1
< OK

< +UUMQTTCM: 6,1

< Topic:/exelonix/test
< Msg:MQTT message

# Disconnect from the broker
> AT+UMQTTC=0
< +UMQTTC: 0,1
< OK

2. Example: Unencrypted, authenticated

Code Block
# Translates a domain name into an IP address using an existing DNS.
> AT+UDNSRN=0,"test.mosquitto.org"
< +UDNSRN: "91.121.93.94"
< OK

# Enable URCs
> AT+CEREG=2
< OK

# Read network registration status
> AT+CEREG?
< +CEREG: 2,2
< OK

# Read network registration status. Wait of +CEREG: 2,5...
> AT+CEREG?
< +CEREG: 2,5,"A9F0","819901",7
< OK

# Check the module connected to the network
> AT+CGATT?
< +CGATT: 1
< OK

# Check to see if the PDP context has been activated.
> AT+CGACT?
< +CGACT: 1,1
< OK

# Read IP address from module
> AT+CGDCONT?
< +CGDCONT: 1,"IP","vgesace.nb.iot","10.254.46.27",0,0,0,0,0,0
< OK

# Set MQTT unique client ID. In the example IMEI from device
AT+UMQTT=0,"350857128129037"
+UMQTT: 0,1
OK

# Set MQTT local TCP port number
AT+UMQTT=1,1884
+UMQTT: 1,1
OK

# Set remote MQTT server's name
AT+UMQTT=2,"test.mosquitto.org"
+UMQTT: 2,1
OK

# Set remote MQTT server's IP address
AT+UMQTT=3,"91.121.93.94",1884
+UMQTT: 3,1
OK

# Set User name and password
AT+UMQTT=4,"rw","readwrite"
+UMQTT: 4,1
OK

# Connect to the broker
AT+UMQTTC=1
+UMQTTC: 1,1
OK

+UUMQTTC: 1,0

""" Repeat the command "AT+UMQTTC=1" if the URC "+UUMQTTC: 1,0" does not arrive. """

# Subscribe to MQTT topic filter
AT+UMQTTC=4,0,"/exelonix/test"
+UMQTTC: 4,1
OK

+UUMQTTC: 4,1,0,"/exelonix/test"

# Publish MQTT message to topic name
AT+UMQTTC=2,0,0,"/exelonix/test","MQTT message"
+UMQTTC: 2,1
OK

# Wait of asynchronous notification (URC) of the reception of an MQTT message
+UUMQTTCM: 6,1

# Read MQTT messages received
AT+UMQTTC=6
+UMQTTC: 6,1
OK

+UUMQTTCM: 6,1

Topic:/exelonix/test

Msg:MQTT message

# Disconnect from the broker
> AT+UMQTTC=0
< +UMQTTC: 0,1
< OK