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 | ||
---|---|---|
| ||
# 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 |