• Stars
    star
    113
  • Rank 310,115 (Top 7 %)
  • Language
    C
  • License
    MIT License
  • Created over 5 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

MQTT Broker for esp-idf

esp-idf-mqtt-broker

MQTT Broker for esp-idf.
This project use Mongoose networking library.
I forked from here.
However, with the release of mongoose ver7, I rewrote it.
Your fork is welcome.

Installation overview

  1. In this project directory, create a components directory.

  2. In the components directory, clone Mongoose version 7.9:

git clone -b 7.9 https://github.com/cesanta/mongoose.git
  1. In the new Mongoose directory, create a CMakeLists.txt file containing:
idf_component_register(SRCS "mongoose.c" PRIV_REQUIRES esp_timer INCLUDE_DIRS ".")
  1. Compile this project.

Software requiment

  • mongoose version 7.9.
    The version of mongoose is written here.

  • ESP-IDF V4.4/V5.0.
    ESP-IDF V5.0 is required when using ESP32-C2.

Installation

git clone https://github.com/nopnop2002/esp-idf-mqtt-broker
cd esp-idf-mqtt-broker
mkdir components
cd components/
git clone -b 7.9 https://github.com/cesanta/mongoose.git
cd mongoose/
echo "idf_component_register(SRCS \"mongoose.c\" PRIV_REQUIRES esp_timer INCLUDE_DIRS \".\")" > CMakeLists.txt
cd ../..
idf.py set-target {esp32/esp32s2/esp32s3/esp32c2/esp32c3}
idf.py menuconfig
idf.py flash monitor

Application Setting

config-1

Station Mode

config-2

SSID:SSID of your Wifi router
ESP32 get IP using DHCP.

Station Mode of Static Address

config-3

SSID:SSID of your Wifi router
ESP32 set your specific IP.

Access Point Mode

config-4

SSID:SSID of ESP32
ESP32 have 192.168.4.1.

Using mDNS hostname

You can connect using the mDNS hostname instead of the IP address.

  • esp-idf V4.3 or earlier
    You will need to manually change the mDNS strict mode according to this instruction.
  • esp-idf V4.4
    If you set CONFIG_MDNS_STRICT_MODE = y in sdkconfig.defaults, the firmware will be built with MDNS_STRICT_MODE.
    If MDNS_STRICT_MODE is not set, mDNS name resolution will not be possible after long-term operation.
  • esp-idf V4.4.1
    mDNS component has been updated.
    If you set CONFIG_MDNS_STRICT_MODE = y in sdkconfig.defaults, the firmware will be built with MDNS_STRICT_MODE.
    Even if MDNS_STRICT_MODE is set, mDNS name resolution will not be possible after long-term operation.
  • esp-idf V5.0 or later
    mDNS component has been updated.
    Long-term operation is possible without setting MDNS_STRICT_MODE.
    The following lines in sdkconfig.defaults should be removed before menuconfig.
    CONFIG_MDNS_STRICT_MODE=y

mdns-1

mdns-2

You can change mDNS hostname using menuconfig.

config-5

Start Built-In MQTT Subscriber

config-6

Start Built-In MQTT Publisher

config-7

Limitations

  • will topics
    will qos and will retain are ignored.

  • Unsupported MQTT request
    Do not respond to these MQTT requests:
    PUBREC
    PUBREL
    PUBCOMP

Publish using mosquitto-clients

$ sudo apt install mosquitto-clients moreutils
$ chmod 777 ./mqtt_sub.sh
$ ./mqtt_pub.sh

Subscribe using mosquitto-clients

$ sudo apt install mosquitto-clients moreutils
$ chmod 777 ./mqtt_sub.sh
$ ./mqtt_sub.sh
23/02/19 12:35:16 topic 2023/02/19-12:35:16
23/02/19 12:35:17 topic 2023/02/19-12:35:17
23/02/19 12:35:18 topic 2023/02/19-12:35:18
23/02/19 12:35:19 topic 2023/02/19-12:35:19
23/02/19 12:35:21 topic 2023/02/19-12:35:20

Notify topic of will using mosquitto-clients

  • In Terminal #1, do the following:
$ mosquitto_sub -v -h esp32-broker.local -p 1883  -t "topic/#" --will-topic "topic/will" --will-payload "GOODBYE"
  • Open new terminal. In Terminal #2, do the following:
$ mosquitto_sub -v -h esp32-broker.local -p 1883  -t "topic/#"
  • Press Control+C in Terminal #1:

  • The following is displayed in Terminal #2:

topic/will GOODBYE

Unsubscribe using python and paho

$ pip install paho
$ python unsub_example.py

Connected with result code 0
subscribe hoge

Received message 'b'test'' on topic 'hoge/1' with QoS 1
unsubscribe hoge, subscribe fuga

Received message 'b'test'' on topic 'fuga/1' with QoS 1
unsubscribe fuga, subscribe hoge

First, it subscribes to the topic [hoge/#].
When it receives the topic [hoge/1], it unsubscribes [hoge/#] and subscribes to [fuga/#].
When it receives the topic [fuga/1], it unsubscribes [fuga/#] and subscribes to [hoge/#] again.

Screen Shot

The message flows like this:
PUBLISH->BROKER->SUBSCRIBE
ScreenShot

More Repositories

1

esp-idf-st7789

ST7789 Driver for esp-idf
C
207
star
2

Arduino-STM32-CAN

Can Example for Arduino Core STM32
C++
203
star
3

esp-idf-ssd1306

SSD1306/SH1106 Driver for esp-idf
C
187
star
4

esp-idf-ili9340

SPI TFT and XPT2046 touch screen controller driver for esp-idf
C
128
star
5

esp-idf-CANBus-Monitor

Monitor Canbus traffic
C
114
star
6

esp-idf-parallel-tft

8bit parallel TFT & 4-line resistance touch screen Driver for esp-idf using i2s paralell mode
C
100
star
7

esp-idf-json

Example of JSON Serialize and Deserialize in ESP-IDF
C
96
star
8

esp-idf-sx126x

SX1262/SX1268/LLCC68 Low Power Long Range Transceiver driver for esp-idf
C
83
star
9

esp-idf-sx127x

SX1276/77/78/79 Low Power Long Range Transceiver driver for esp-idf
C
73
star
10

STM32_TFT_8bit

STM32F103 8bit parallel TFT Library for Arduino_STM32
C++
53
star
11

esp-idf-mirf

nRF24L01 Driver for esp-idf
C
51
star
12

Raspberry-ili9325

Parallel TFT Shield Library for wiringPi
C
49
star
13

esp-idf-mpu6050-dmp

A demo showing the pose of the mpu6050 in 3D using esp-idf
C++
43
star
14

esp-idf-cc1101

CC1101 Low-Power Sub-1 GHz RF Transceiver driver for esp-idf
C
42
star
15

esp-idf-video-streaming

Capture video from a USB camera using ESP-IDF
C
42
star
16

esp8266_ethernet

Example of using SPI Ethernet module with esp8266
C++
42
star
17

esp-idf-net-logging

Redirect esp-idf logging to the network
C
41
star
18

Raspberry-ssd1306

ssd1306 Command Line Tool for Raspberry Pi
C
40
star
19

esp-idf-can2mqtt

CANbus to mqtt bridge using esp32
C
40
star
20

Raspberry-W25Q64

SPI Flash Memory W25Q64 Access Library for RaspberryPi
C
39
star
21

esp-idf-ftpClient

ftp client for esp-idf
C
37
star
22

esp-idf-w25q64

SPI Flash Memory W25Q64 Access Library for esp-idf
C
36
star
23

esp-idf-can2http

CANbus to http bridge using esp32
C
36
star
24

Arduino-ESPAT-TCP

TCP/UDP Applicaton for Arduino using ESP8266's AT firmware.
C++
35
star
25

wiringpi-tft-tool

TFT Command Line Tool for Raspberry Pi
C
35
star
26

esp-idf-ftpServer

ftp server for esp-idf using FAT file system
C
34
star
27

Raspberry-ili9340spi

ILI9340 SPI TFT Library & XPT2046 Touch Screen Library for Raspberry
C
33
star
28

Arduino-LoRa-Ra01S

An Arduino Library for LoRa Communication using SX1262/1268
C++
33
star
29

Arduino-STM32-Ethernet-LAN8720

Ethernet on STM32 using external PHY
C++
32
star
30

esp-idf-protocol-buffer

Example of Google Protocol Buffers Serialize and Deserialize with ESP-IDF
C
30
star
31

esp-idf-espnow-gateway

Gateway between esp-now and MQTT using esp-idf
C
27
star
32

esp-idf-m5stickC

M5StickC ST7735S Driver for esp-idf
C
27
star
33

esp-idf-ds3231

DS3231 RTC Driver for esp-idf
C
26
star
34

Arduino-CANBus-Monitor

mcp2515 canbus module to Monitor Canbus traffic
C++
26
star
35

esp-idf-can2usb

CANbus to USB bridge using esp32
C
26
star
36

esp-idf-uart2bt

UART to Bluetooth bridge for ESP-IDF
C
25
star
37

SC16IS752

Driver for SC16IS752
C
24
star
38

Robotell-USB-CAN-Python

Python program for USB-CAN Adapter
Python
24
star
39

esp-idf-web-form

WEB Form example for ESP-IDF
C
23
star
40

esp-idf-http-camera

Take a picture and Publish it via HTTP
C
23
star
41

esp-idf-rc-switch

315/433MHz ASK RF driver for esp-idf
C
21
star
42

esp-idf-smb-client

SMB client example for esp-idf
C
21
star
43

OrangePi-ZERO-FAN-HAT

Cooling FAN HAT for OrangePi ZERO
20
star
44

esp-idf-GPS-Repeater

Transfer GPS NMAE messages over Wifi
C
19
star
45

esp-idf-24c

Two-Wire Serial EEPROM Access Library for esp-idf
C
18
star
46

Raspberry-ili9225spi

ILI9225 SPI TFT Library for RaspberryPi/OrangePi
C
18
star
47

esp-idf-wifi-apsta

WIFI_MODE_APSTA example with esp-idf
C
18
star
48

esp-idf-GPS-View

GPS NMEA Viewer for M5Stack
C
17
star
49

Arduino-STM32-8bitTFT

8bit parallel TFT Library for Arduino_Core_STM32
C++
17
star
50

esp-idf-pwm-slider

PWM Slider Bar Control using ESP-IDF
C
16
star
51

esp-idf-mqtt-camera

Take a picture and Publish it via MQTT
C
16
star
52

esp-idf-ftp-camera

Take a picture and Publish it via FTP
C
15
star
53

esp-idf-web-chart

Real-time data visualization using esp-idf
C
15
star
54

esp-idf-benchmark

Dhrystone/Whetstone benchmark for esp-idf
C
15
star
55

esp-idf-ssh-client

ssh client for esp-idf
C
15
star
56

esp-idf-m5stickC-Plus

M5StickC-Plus ST7789V2 Driver for ESP-IDF
C++
15
star
57

esp-idf-web-serial

Serial Monitor for esp-idf
C
14
star
58

esp-idf-a2dp-source

ESP32 Bluetooth A2DP-SOURCE for esp-idf
C
14
star
59

Arduino-SI4432

Arduino library for SILICON LABS SI443x
C++
14
star
60

Arduino-STM32-nRF24L01

Arduino stm32 support files for nRF24L01 RF modules
C++
13
star
61

esp-idf-multipart-upload

A multipart file upload example for esp-idf
C
13
star
62

esp-idf-irSend

M5Stick and M5StickC(+) as a remote control transmitter
C
12
star
63

esp-idf-can2websocket

Brows CAN-Frame using esp-idf
C
12
star
64

esp-idf-ds1302

DS1302 RTC Driver for esp-idf
C
12
star
65

Raspberry-pcd8544

pcd8544 Command Line Tool for Raspberry Pi / Orange Pi
C
12
star
66

esp-idf-nrf905

nRF905 Single chip 433/868/915MHz Transceiver Driver for esp-idf
C
11
star
67

esp-idf-candump

CAN Dump for esp-idf
C
11
star
68

esp-idf-sh1107

sh1107 Driver for esp-idf
C
11
star
69

esp-idf-bmi160

A demo showing the pose of the bmi160 6DoF IMU sensor in 3D using esp-idf
C
11
star
70

esp-idf-vs1053

VS1053 Driver for esp-idf
C
10
star
71

Arduino-STM32-Ethernet

Arduino stm32 example for W5x00 ethernet modules
C++
10
star
72

esp-idf-ultrasonic

Ultrasonic distance sensor for ESP-IDF
C
10
star
73

esp-idf-lsm6ds3

A demo showing the pose of the lsm6ds3 6DoF IMU sensor in 3D using esp-idf
C
10
star
74

esp-idf-zlib

Example compression and decompression using zlib
C
10
star
75

esp-idf-pcf8563

PCF8563 RTC Driver for esp-idf
C
10
star
76

STM32_GD2

FT800/FT81X TFT Library for Arduino_STM32
C
9
star
77

esp-idf-Bluetooth-SPP

Classic Bluetooth SPP example for esp-idf
C
9
star
78

esp-idf-web-gpio

GPIO control using web browser
C
9
star
79

ESP8266-UART-to-UART-Bridge

C++
9
star
80

esp-idf-qr-code-generator

QR Code generator for esp-idf
C
9
star
81

esp-idf-rf69

RFM69 ISM Transceiver driver for esp-idf
C
9
star
82

esp8266-mpd-client

MPD client example for ESP8266/ESP32.
C++
9
star
83

esp-idf-cc2500

CC2500 Low-Cost Low-Power 2.4 GHz RF Transceiver driver for esp-idf
C
8
star
84

esp-idf-video-snapshot

Capture still images from a USB camera using ESP-IDF
C
8
star
85

esp-idf-sql-client

SQL database access example for esp-idf
C
8
star
86

pwmlib-opi

PWM C Library for H3/H2+ Sunxi SoC
C
8
star
87

esp-idf-DFPlayerMini

DFPlayer - A Mini MP3 Player For ESP-IDF
C
8
star
88

Raspberry-at24c

Two-Wire Serial EEPROM Access Library for RaspberryPi
C
8
star
89

esp-idf-mqtt-client

GUI MQTT Client for esp-idf
C
8
star
90

esp-idf-voice-control

Demonstration of voice control of esp32
C
7
star
91

esp-idf-mpr121

MPR121 Capacitive Touch Driver for esp-idf
C
7
star
92

esp-idf-smtp-camera

Take a picture and Publish it via SMTP.
C
7
star
93

esp-idf-93Cx6

Three-Wire Serial EEPROM Access Library for esp-idf
C
7
star
94

esp-idf-sc16is750

sc16is750/752 driver for esp-idf
C
7
star
95

esp-idf-world-weather

Display the weather forecast on M5STACK
C
7
star
96

esp-idf-ds1307

DS1307 RTC Driver for esp-idf
C
6
star
97

esp-idf-mcp3002

Driver for A/D converter with SPI serial interface
C
6
star
98

Raspberry-93Cx6

Three-Wire Serial EEPROM Access Library for RaspberryPi
C
6
star
99

Raspberry-HT1621B

HT1621B Segment LED Example Code for RaspberryPi
C
6
star
100

esp-idf-irAEHA

M5Stick and M5StickC as a remote control transmitter
C
6
star