Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
January 6, 2022 10:16 pm GMT

Create an ESP32 based smart device with Arduino and MQTT

Introduction

This article will show you how to quickly create an ESP32 based "smart device", using Arduino, by creating a simple application that basically connects your WiFi router, then a MQTT server, and publishes a message every five seconds.

Of course, you can use any other WiFi enabled board.
I chose the ESP32 because I recently bought a LiliGo TTGO ESP32 board, without any specific project in mind.
This is the board I use: http://www.lilygo.cn/prod_view.aspx?Id=1126

Configuration

Board

First, we need to add support to our ESP32 board.

  • In the Arduino preferences, in the Additional Boards Manager URLs field, add: https://dl.espressif.com/dl/package_esp32_index.json
  • In the Tools menu, open the Boards Manager and look for esp32, then install it.
  • Still in the Tools menu, choose your board (TTGO LoRa32-OLED V1 in my case)

Libraries

  • In the Sketch menu, select Manage Libraries...
  • Install library PubSubClient

Code

Configuration

Headers

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

Definitions

Let's define our WiFi SSID, password, and the MQTT server
informations (hostname, port, username, password, client).

#define ssid          "MyWiFi" #define password      "MyWifiPassword"#define mqtt_host     "MyMQTTServer"#define mqtt_port     1883#define mqtt_client   "ArduinoCl"#define mqtt_user     "julzor"#define mqtt_password "SomePassword"

Global variables

WiFiClient espClient;PubSubClient cli = PubSubClient(espClient);

Connecting to WiFi

void setup_wifi(){  WiFi.begin(ssid, password);  while (WiFi.status() != WL_CONNECTED)   {    delay(500);  }}

Connecting to MQTT

void setup_mqtt(){  cli.setServer(mqtt_host, mqtt_port);  if (cli.connect(mqtt_client, mqtt_user, mqtt_password))  {    // Now we're connected to the MQTT server    // Let's publish a first message...    cli.publish("test/hello", "hello world");  }}

Putting it all together

Setup

void setup(){    Serial.begin(115200);    delay(10);    setup_wifi();    setup_mqtt();}

Loop

long last = 0;void loop() {  if (!cli.connected())  {    // We were disconnected, let's reconnect    delay(1000);    setup_mqtt();  }  else  {    cli.loop();    long now = millis();    if (now - last > 5000)    {      last = now;      cli.publish("test/ping", "Ping");    }  }}

Conclusion

You should now have a working application that does nothing but send a ping message on your MQTT server. That's a start!

In another article, I will show you how I use my useless smart device with Node-RED, a Raspberry Pi, and Alexa.


Original Link: https://dev.to/julzor42/create-an-esp32-based-smart-device-with-arduino-and-mqtt-3lkh

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To