Skip to main content

MQTT setup

MQTT is a lightweight and simple publish-subscribe messaging protocol, ideal for IOT devices. esp32m makes use of MQTT for many purposes, such as:

  • feeding sensor readings into external time-series databases;
  • remote logging;
  • controlling ESP32 remotely via MQTT API. The size of MQTT client in the compiled binary is pretty small (about 50KB), so it is a good idea to include it in your application.

Server setup​

We use Mosquitto server, but it is possible to use any other that follows MQTT protocol. Mosquitto requires zero configuration and works with esp32m out-of-the-box.

Client setup​

Add the following code to your main.cpp to enable MQTT API:

#include <esp32m/net/mqtt.hpp>
#include <esp32m/ui/mqtt.hpp>

...

net::useMqtt();

// If you also want to enable UI for MQTT
new Ui(&ui::Mqtt::instance());

In the UI:

import { startUi, Mqtt } from "esp32m/ui";

startUi({ plugins: [Mqtt] });

By default, MQTT client module looks for mqtt.lan name on your local network. You can just add this name to the /etc/hosts file on the machine with the MQTT server, or add static name to your local DNS. Alternatively, you can pass URL of your MQTT server to the net::useMqtt(); command, it would be something like mqtt://192.168.0.10. Another option is to configure MQTT client from within the esp32m UI: click on the MQTT Client link in the sidebar menu, enter the details and click Save button:

mqtt-settings

if the connection succeeds, you should see the following box in a couple of seconds:

mqtt-settings