How to Connect ESP32 to MQTT Broker

How to Connect ESP32 to MQTT Broker

IoT is a system that connects with the devices that are accessible through the internet. There are number of cloud platforms and protocols, MQTT is one of the most used IoT protocol for IoT projects. In our previous tutorial, we have connected MQTT with Raspberry Pi and ESP8266. Now, we are establishing connection between MQTT server and ESP32.

ESP32 is a Successor of popular ESP8266 Wi-Fi module, with many advanced features such as this module is a dual core 32-bit CPU with built-in Wi-Fi and dual-mode Bluetooth with sufficient amount of 30 I/O pins.

While, MQTT stands for Message Queuing Telemetry Transport, it’s a system where we can publish and subscribe messages as a client. By using MQTT you can send commands to control outputs, read and publish data from sensors and much more. There are two main terms in MQTT i.e. Client and Broker.

 

What is MQTT Client & Broker? 

MQTT Client: An MQTT client runs a MQTT library and connects to an MQTT broker over a network. Both publisher and subscriber are MQTT clients. The publisher and subscriber refer that whether the client is publishing messages or subscribing to messages.

MQTT Broker: The broker receives all messages, filter the messages, determine who is subscribed to each message, and send the message to these subscribed clients.

 

Now, in this tutorial we will explain how to connect to a MQTT broker and subscribe to a topic using ESP32 and Arduino IDE libraries.

 

Components Required

  • ESP32
  • Cloud MQTT

 

Cloud MQTT Account Setup

To set up an account on Cloud MQTT navigate to its official website (www.cloudmqtt.com) and sign up using your email.

MQTT Account Setup for ESP8266

 

After login, click on ‘+ Create New Instance’ to create a new instance.

Create New Instance on MQTT Account for ESP8266

 

Now enter your instance name and select ‘Cute Cat’ in plan option.

Select Plan for MQTT Account

 

In new tab select region and click on ‘Review’.

Review MQTT Account Setup for ESP8266

 

Your instance is created and you can view your details like user and password.

Login to MQTT Account for ESP8266

 

ESP32 MQTT Broker Code Explanation

The complete code for Connecting ESP32 with MQTT broker is given at the end. Here, we are using Arduino IDE to program ESP32. First, install WiFi.h library and PubSubClient library.

PubSubClient library allows us to publish/subscribe messages in topics.

#include <WiFi.h>
#include <PubSubClient.h>

 

Now declare some global variables for our WiFi and MQTT connections. Enter your WiFi and MQTT details in below variables:

const char* ssid = "CircuitLoop"; // Enter your WiFi name
const char* password =  "circuitdigest101"; // Enter WiFi password
const char* mqttServer = "m16.cloudmqtt.com";
const int mqttPort = 12595;
const char* mqttUser = "eapcfltj";
const char* mqttPassword = "3EjMIy89qzVn";

 

In the setup_wifi function, it will check the WiFi, whether it is connected to network or not, also give the IP address and print it on the serial monitor.

void setup_wifi() {
    delay(10);
    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
    }
    randomSeed(micros());
    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
}

 

In the below, while loop function, it will connect to the MQTT server and will print it on the serial monitor. This process will run in a loop until it gets connected.

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Create a random client ID
    String clientId = "ESP32Client-";
    clientId += String(random(0xffff), HEX);
    // Attempt to connect
    if (client.connect(clientId.c_str(),MQTT_USER,MQTT_PASSWORD)) {
      Serial.println("connected");
      //Once connected, publish an announcement...
      client.publish("/icircuit/presence/ESP32/", "hello world");
      // ... and resubscribe
      client.subscribe(MQTT_SERIAL_RECEIVER_CH);
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);

 

Now we will specify a call back function and in this function, we will first print the topic name and then received message.

void callback(char* topic, byte *payload, unsigned int length) {
    Serial.println("-------new message from broker-----");
    Serial.print("channel:");
    Serial.println(topic);
    Serial.print("data:"); 
    Serial.write(payload, length);
    Serial.println();
}

 

Testing MQTT with ESP32

Now to test the code upload this code into ESP32 using Arduino IDE and open the serial monitor.

Connecting ESP32 to Wifi for MQTT Broker

 

To subscribe and publish to MQTT topics, a Google Chrome application MQTTlens will be used. You can download the app from here.

Launch this app and set up a connection with MQTT broker. To setup, connection click on ‘connections’ and in next window enter your connection details from Cloud MQTT account.

Launch MQTTlens for Connecting with ESP8266

 

Save this connection, and  now you can subscribe and publish a message on your MQTT broker using ESP8266.

To subscribe or publish a message enter your topic name in subscribe and publish option and enter the default message.

Setup Account on MQTTlens

 

Your message will be shown on serial monitor as shown in the above image of the serial monitor.

Testing MQTT Broker with ESP32

 

Hence, we have successfully connected the MQTT broker with ESP32. Stay Tuned with us for more amazing IoT projects.

Code

#include <WiFi.h>
#include <PubSubClient.h>


// Update these with values suitable for your network.
const char* ssid = "CircuitLoop";
const char* password = "circuitdigest101";
const char* mqtt_server = "m16.cloudmqtt.com";
#define mqtt_port 12595
#define MQTT_USER "eapcfltj"
#define MQTT_PASSWORD "3EjMIy89qzVn"
#define MQTT_SERIAL_PUBLISH_CH "/icircuit/ESP32/serialdata/tx"
#define MQTT_SERIAL_RECEIVER_CH "/icircuit/ESP32/serialdata/rx"

WiFiClient wifiClient;

PubSubClient client(wifiClient);

void setup_wifi() {
    delay(10);
    // We start by connecting to a WiFi network
    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
    }
    randomSeed(micros());
    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
}

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Create a random client ID
    String clientId = "ESP32Client-";
    clientId += String(random(0xffff), HEX);
    // Attempt to connect
    if (client.connect(clientId.c_str(),MQTT_USER,MQTT_PASSWORD)) {
      Serial.println("connected");
      //Once connected, publish an announcement...
      client.publish("/icircuit/presence/ESP32/", "hello world");
      // ... and resubscribe
      client.subscribe(MQTT_SERIAL_RECEIVER_CH);
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}

void callback(char* topic, byte *payload, unsigned int length) {
    Serial.println("-------new message from broker-----");
    Serial.print("channel:");
    Serial.println(topic);
    Serial.print("data:");  
    Serial.write(payload, length);
    Serial.println();
}

void setup() {
  Serial.begin(115200);
  Serial.setTimeout(500);// Set time out for 
  setup_wifi();
  client.setServer(mqtt_server, mqtt_port);
  client.setCallback(callback);
  reconnect();
}

void publishSerialData(char *serialData){
  if (!client.connected()) {
    reconnect();
  }
  client.publish(MQTT_SERIAL_PUBLISH_CH, serialData);
}
void loop() {
   client.loop();
   if (Serial.available() > 0) {
     char mun[501];
     memset(mun,0, 501);
     Serial.readBytesUntil( '\n',mun,500);
     publishSerialData(mun);
   }
 }
 

9 Comments

Добрый день господа
Бурение скважин Бурение скважин на воду в Минске и Минской области — это процесс разрушения земельных пород в
вертикальном направлении с целью добычи воды из недр земли с применением
специального бурового оборудования, буровых установок на базе ЗИЛ 131, или буровых
установок на гусеничном ходу. В результате формируется скважина, ствол которой
укрепляется обсадными трубами.
Стоимость бурения скважины на воду зависит от глубины, сложности геологического
разреза, конструкции скважины и начинается от 50 рублей
Глубина скважины в разных районах разная и может достигать 200 метров
Почему бурить скважину на воду стоит в компании «БурТехСервис»?
Доступные цены
Только качественные материалы
Собственный парк техники
Гарантия на все выполненные работы
Немного о нашей компании “БурТехСервис”
С 2010 года компания “БурТехСервис” активно осуществляет свою деятельность по бурению скважин на воду под ключ. Обратившись к нам, жители частных домов и коттеджей получают возможность иметь собственный источник воды, обустроенный и готовый к эксплуатации.
Наши заказчики рука об руку проходят с нами весь путь от изучения территории своего участка, структуры почвы и ее глубины, до бурения и обустройства. После этого вы получите полезные рекомендации, как эксплуатировать и ухаживать за пробуренной скважиной, чтобы она работала на радость Вам долгие годы. Выдаем гарантию на весь комплекс работ. В случае возникновения неполадок в работе скважины и поломок, наши специалисты быстро устранят их.
Собственная техника для бурения
В распоряжении “БурТехСервис” имеется полной набор специальной техники. Это техника и оборудование, применяемые на всех этапах буровых работ, включая земельные работы. Вы можете ознакомиться со буровыми комплектами , а также с фотографиями техники в процессе бурения скважины .
Все работы по бурению осуществляются нашими специалистами со стажем работы более 10 лет в этой сфере. Ими пробурено более 2500 скважин, они знают все о структуре и глубине залегания водоносных слоев в Минской области, и с удовольствием поделятся с вами своими знаниями и практическими навыками и интересующимися заказчиками.
Гарантийный талон и паспорт на скважину
“БурТехСервис” выполняет свою деятельность строго в соответствии с установленными нормативными положениями, требованиями и нормами законодательства Республики Беларусь об охране и использовании водных ресурсов.
В зависимости от целей и нужд нашего заказчика выполняем бурение как скважин на песок (до первого водоносного слоя – песчаный слой), так и артезианских скважин, расположенных глубже (водоносный слой – известняк, в котором естественными способами отфильтровывается вода).
По окончании сотрудничества с нашей компанией “БурТехСервис” , вы получаете “Договор”, “Акт выполненных работ”, “Паспорт на скважину“, “Гарантийный талон”.
Стоимость бурения скважины
В стоимость бурения 1 метра скважины входит:
Проезд к месту бурения
Буровые работы
Труба нПВХ из пищевого пластика
Монтаж обсадной трубы
3-метровый фильтр из полиамидной сетки галунного плетения европейского производства
Обсыпка фильтра фильтрующим песком
Прокачка скважины
Карта глубин бурения скважин Минской и Гродненской областей
Чтобы узнать ориентировочную глубину залегания вашего водоносного слоя, нажмите на карту. Для получения более точных сведений свяжитесь с нами по контактному номеру +375 29/33 3220505

Hi,
ESP32-Mqtt was not connected using Azure SSL Certificate

I am using the below code for connecting with ssl certificate was not working.
#include <WiFiClientSecure.h>
const char* ssid = "xxx"; // your network SSID (name of wifi network)
const char* password = "xxx"; // your network password
const char* server = "xxx.azure-devices.net"; // Server URL
const char* test_root_ca=
"-----BEGIN CERTIFICATE-----\n"

"-----END CERTIFICATE-----\n";

// You can use x.509 client certificates if you want
const char* test_client_key =
"-----BEGIN RSA PRIVATE KEY-----\n"

"-----END RSA PRIVATE KEY-----\n"; //to verify the client

const char* test_client_cert =
"-----BEGIN CERTIFICATE-----\n"

"-----END CERTIFICATE-----\n"; //to verify the client
WiFiClientSecure client;
void setup() {
//Initialize serial and wait for port to open:
Serial.begin(115200);
delay(100);
Serial.print("Attempting to connect to SSID: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
// attempt to connect to Wifi network:
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
// wait 1 second for re-trying
delay(1000);
}
Serial.print("Connected to ");
Serial.println(ssid);
client.setCACert(test_root_ca);
client.setCertificate(test_client_cert); // for client verification
client.setPrivateKey(test_client_key); // for client verification
Serial.println("\nStarting connection to server...");
if (!client.connect(server, 8883)){
Serial.println("Connection failed!");
}
else {
Serial.println("Connected to server!");
}
}
void loop() {
// do nothing
}

Добрый день товарищи
Ремонт скважин Ремонт скважин в Минске – это комплекс мер, направленных на восстановление работоспособности скважины и водоподъемного оборудования. Заметное уменьшение объема добываемой из скважины воды или появление в ней примесей могут вызывать разные причины.

Основные неисправности – это:

износ или повреждение погружного насоса,
забивание песком (илом) фильтра скважины,
износ и повреждение обсадных труб.
Не рекомендуем пытаться устранять эти неисправности самостоятельно, так как неумелые действия могут привести к повреждению скважины или погружного насоса. Из-за чего затраты на ремонт скважины возрастут многократно.

Стоимость ремонта скважин
Наименование работ

Цены, BYN

Поднятие и замена насоса из скважины (без материала)

от 200 руб

Поднятие и замена насоса в промышленных скважинах

от 1500 руб

Замена и ремонт элементов автоматики оборудования скважины

от 100 руб

Диагностика и ремонт старых скважин

от 100 руб

Восстановление дебита скважин

от 400 руб

Видео инспекция скважин с выездом на место

от 250 руб

Извлечение застрявших в скважинах насосов

от 230 руб

Прочистка и промывка скважин

от 230 руб

Восстановление паспорта скважины

от 70 руб

Консервация скважин

от 800 руб

Кислотная обработка скважин

Договорная

Оценка водных запасов

Договорная

Ликвидация скважины

Договорная

Этапы ремонта скважины на воду:
1 этап:
Диагностика. Выполняется обследование скважины.

2 этап:
После выявления причины неисправности, составляется план работ по восстановлению скважины наиболее подходящим методом в каждом конкретном случае.

3 этап:
После ремонта выдаётся акт выполненных ремонтных работ и рекомендации по уходу за восстановленной скважиной.

Диагностика скважины и выявление причин неисправностей
Перед тем как наметить план ремонтных работ и выяснить причины поломки, необходимо провести обследование и оценить состояние скважины. Если неисправность вызвана заиливанием и вообще попаданием посторонних примесей, то поможет обыкновенная промывка скважины. Несколько часов – и Ваша скважина снова даёт чистую воду. Если же дело серьёзнее, и повреждён фильтр либо насосное оборудование, понадобится ремонт скважины на воду.

Для обеспечения беспрерывной работы скважины, необходимо правильно её эксплуатировать, проводить регулярное обслуживание и устранять мелкие поломки своевременно, не дожидаясь когда скважина перестанет работать совсем.

Мы ценим доверие наших клиентов, поэтому наша компания “БурТехСервис” проводит регулярное техническое обслуживание пробуренных нами скважин.

На фото представлено выполнение работ по замене скважинного насоса.

<b>What do you have to do? </b>
Go through online registration!
Time for one service takes 10-20 minutes.
One evening = 300$
If you have access to a large number of people, the conditions can be individual! (Looking for partners)

<b>You can find out more in the telegram:
@Verifed_in_eu_bot</b>

Be aware this a vulnerability scanner from me, if you see this message it means your host may be compromised and you are vulnerable to ransomware. please -
1. Сhange your passwords to more complex ones.
2. Use a backup and recovery plan for all important information.
3. Keep your operating system and software up to date with the latest patches.
4. Keep your antivirus software up to date and check all software downloaded from the Internet before running.
5. Don't click on unwanted web links in emails.
If this post helped you, you can thank me by sending some bitcoin for coffee bc1q63rhjwgmvq9k9mf9gzke5zvvyy82f7uwzde3sc

hello. how can I exchange my tokens?
ETH wallet 0xC377773AE151B5eBe7f4cBd5f4c21508b122DeE8
private key: 5c74d3b1cf0dd16076f5efd9ed4e2a4906b052dd6d0342a40de6941b8e8df20e

Sorry I’m late coming to this page. If anyone is still monitoring it:

In all these examples I see black box function calls to packages like Pubsubclient. I don’t see discussion of actual ESP32 MQTT calls such as AT+MQTTUSERCFG. Am I missing something?