Main Content

Get Started with MQTT

This example shows how to establish a secure connection in MATLAB® with an MQTT broker and communicate with the MQTT broker.

ThingSpeak™ is used as the broker in this example.

Message Queuing Telemetry Transport (MQTT) is an OASIS standard messaging protocol for the Internet of Things (IoT). It is designed as an extremely lightweight publish/subscribe messaging transport that is ideal for connecting remote devices with a small code footprint and minimal network bandwidth.

ThingSpeak is an IoT analytics platform service that allows you to aggregate, visualize, and analyze live data streams in the cloud. You can send data to ThingSpeak from your devices, create instant visualization of live data, and send alerts.

Set Up the Broker and Get a Root Certificate

To establish a connection with ThingSpeak, see Create a ThingSpeak MQTT Device (ThingSpeak). After creating the ThingSpeak MQTT device, you can get its Client ID, Username and Password from it. Assign those values in MATLAB.

clientID = "Your Client ID";
userName = "Your Username";
password = "Your Password";

Download the root certificate from as described in How to Download Root Certificate for Use With Industrial Communication Toolbox MQTT Functions. Get the path of the downloaded root certificate. The location and file name extension depends on the browser you use. For example, using Edge you might set rootCert like this:

rootCert = "C:\Downloads\DigiCert Global Root CA.crt";

The certificate saved from Firefox® might have the file extension .pem.

Create an MQTT Client and Connect to the Broker with SSL

Prepare the broker address and port number you want to connect. In this case, set up a secure connection to ThingSpeak via SSL with an appropriate port number.

brokerAddress = "ssl://";
port = 8883;

Create an MQTT client using the mqttclient function.

mqClient = mqttclient(brokerAddress, Port = port, ClientID = clientID,...
           Username = userName, Password = password, CARootCertificate = rootCert);

Note that the Connected property indicates the connection to the broker has been established.

ans = int32

Subscribe to a Topic

With the connected MQTT client, use the subscribe function to subscribe to the topic of interest. The displayed table shows the subscribed topic. For details about the topics to subscribe to in ThingSpeak, see Subscribe to a Channel Field Feed (ThingSpeak).

topicToSub = "channels/1393455/subscribe/fields/field2";
subscribe(mqClient, topicToSub)
ans=1×3 table
                      Topic                       QualityOfService    Callback
    __________________________________________    ________________    ________

    "channels/1393455/subscribe/fields/field2"           0               ""   

Write to a Topic

To verify that the subscription is successful, make sure a message written to the subscribed topic is received by the MQTT client.

Use the write function to write messages to the topic of interest. For details about the topics to write to in ThingSpeak, see Publish to a Channel Field Feed (ThingSpeak).

topicToWrite = "channels/1393455/publish/fields/field2";
msg = "70";
write(mqClient, topicToWrite, msg)

Peek at the MQTT Client

Use the peek function to view the most recently received message for all subscribed topics in the MQTT client. The displayed timetable indicates the MQTT client has successfully received the message from the broker.

ans=1×2 timetable
            Time                              Topic                       Data
    ____________________    __________________________________________    ____

    06-Jan-2022 10:42:29    "channels/1393455/subscribe/fields/field2"    "70"

Close the MQTT Client

Close the connection to ThingSpeak by clearing the MQTT client variable from the workspace.

clear mqClient