{"id":13337946,"url":"https://github.com/khoih-prog/AsyncMQTT_ESP32","last_synced_at":"2025-03-11T08:32:10.572Z","repository":{"id":64901720,"uuid":"579291142","full_name":"khoih-prog/AsyncMQTT_ESP32","owner":"khoih-prog","description":"Arduino Library for ESP32/S2/S3/C3 asynchronous MQTT client implementation. This library, ported to support ESP32/S2/S3/C3, WT32_ETH01 (ESP32 + LAN8720), ESP32 using LwIP ENC28J60, W5500, W6100 or LAN8720. Supporting TLS/SSL for MQTTS Client","archived":true,"fork":false,"pushed_at":"2023-01-10T00:59:28.000Z","size":1492,"stargazers_count":21,"open_issues_count":0,"forks_count":8,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-23T20:11:27.575Z","etag":null,"topics":["async","async-mqtt","async-mqtt-client","async-mqtts","esp32","esp32-c3","esp32-s2","esp32-s3","fingerprint","lwip","lwip-enc28j60","lwip-ethernet","lwip-lan8720","lwip-w5500","lwip-w6100","ssl","tls","w5500","w6100","wt32-eth01"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/khoih-prog.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-12-17T07:36:35.000Z","updated_at":"2024-09-10T13:05:20.000Z","dependencies_parsed_at":"2023-02-08T16:16:30.405Z","dependency_job_id":null,"html_url":"https://github.com/khoih-prog/AsyncMQTT_ESP32","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khoih-prog%2FAsyncMQTT_ESP32","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khoih-prog%2FAsyncMQTT_ESP32/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khoih-prog%2FAsyncMQTT_ESP32/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khoih-prog%2FAsyncMQTT_ESP32/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/khoih-prog","download_url":"https://codeload.github.com/khoih-prog/AsyncMQTT_ESP32/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243000841,"owners_count":20219752,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","async-mqtt","async-mqtt-client","async-mqtts","esp32","esp32-c3","esp32-s2","esp32-s3","fingerprint","lwip","lwip-enc28j60","lwip-ethernet","lwip-lan8720","lwip-w5500","lwip-w6100","ssl","tls","w5500","w6100","wt32-eth01"],"created_at":"2024-07-29T19:15:16.355Z","updated_at":"2025-03-11T08:32:10.237Z","avatar_url":"https://github.com/khoih-prog.png","language":"C++","funding_links":["https://www.buymeacoffee.com/khoihprog6"],"categories":[],"sub_categories":[],"readme":"# AsyncMQTT_ESP32 Library\n\n[![arduino-library-badge](https://www.ardu-badge.com/badge/AsyncMQTT_ESP32.svg?)](https://www.ardu-badge.com/AsyncMQTT_ESP32)\n[![GitHub release](https://img.shields.io/github/release/khoih-prog/AsyncMQTT_ESP32.svg)](https://github.com/khoih-prog/AsyncMQTT_ESP32/releases)\n[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](#Contributing)\n[![GitHub issues](https://img.shields.io/github/issues/khoih-prog/AsyncMQTT_ESP32.svg)](http://github.com/khoih-prog/AsyncMQTT_ESP32/issues)\n\n\n\u003ca href=\"https://www.buymeacoffee.com/khoihprog6\" title=\"Donate to my libraries using BuyMeACoffee\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Donate to my libraries using BuyMeACoffee\" style=\"height: 50px !important;width: 181px !important;\" \u003e\u003c/a\u003e\n\u003ca href=\"https://www.buymeacoffee.com/khoihprog6\" title=\"Donate to my libraries using BuyMeACoffee\"\u003e\u003cimg src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-orange.svg?logo=buy-me-a-coffee\u0026logoColor=FFDD00\" style=\"height: 20px !important;width: 200px !important;\" \u003e\u003c/a\u003e\n\n---\n---\n\n## Table of Contents\n\n* [Why do we need this AsyncMQTT_ESP32 library](#why-do-we-need-this-AsyncMQTT_ESP32-library)\n  * [Features](#features)\n  * [Why Async is better](#why-async-is-better)\n  * [Currently supported Boards](#currently-supported-boards)\n  * [To-be-supported Boards](#To-be-supported-Boards)\n* [Changelog](changelog.md)\n* [Prerequisites](#prerequisites)\n* [Installation](#installation)\n  * [Use Arduino Library Manager](#use-arduino-library-manager)\n  * [Manual Install](#manual-install)\n  * [VS Code \u0026 PlatformIO](#vs-code--platformio)\n* [HOWTO Use analogRead() with ESP32 running WiFi and/or BlueTooth (BT/BLE)](#howto-use-analogread-with-esp32-running-wifi-andor-bluetooth-btble)\n  * [1. ESP32 has 2 ADCs, named ADC1 and ADC2](#1--esp32-has-2-adcs-named-adc1-and-adc2)\n  * [2. ESP32 ADCs functions](#2-esp32-adcs-functions)\n  * [3. ESP32 WiFi uses ADC2 for WiFi functions](#3-esp32-wifi-uses-adc2-for-wifi-functions)\n* [Basic Usage](#Basic-Usage)\n* [How to connect W5500, W6100 or ENC28J60 to ESP32_S2/S3/C3](#How-to-connect-W5500-W6100-or-ENC28J60-to-ESP32_S2S3C3)\n* [Examples](#examples)\n  * [1. For ESP32](#1-for-ESP32)\n    * [1. FullyFeatured_ESP32](examples/ESP32/FullyFeatured_ESP32)\n    * [2. FullyFeaturedSSL_ESP32](examples/ESP32/FullyFeaturedSSL_ESP32)\n  * [2. For WT32_ETH01](#2-for-WT32_ETH01)\n    * [1. FullyFeatured_WT32_ETH01](examples/WT32_ETH01/FullyFeatured_WT32_ETH01)\n    * [2. FullyFeaturedSSL_WT32_ETH01](examples/WT32_ETH01/FullyFeaturedSSL_WT32_ETH01)\n  * [3. For ESP32_ENC](#3-for-ESP32_ENC)\n    * [1. FullyFeatured_ESP32_ENC](examples/ESP32_ENC/FullyFeatured_ESP32_ENC)\n    * [2. FullyFeaturedSSL_ESP32_ENC](examples/ESP32_ENC/FullyFeaturedSSL_ESP32_ENC)\n  * [4. For ESP32_W5500](#4-for-ESP32_W5500)\n    * [1. FullyFeatured_ESP32_W5500](examples/ESP32_W5500/FullyFeatured_ESP32_W5500)\n    * [2. FullyFeaturedSSL_ESP32_W5500](examples/ESP32_W5500/FullyFeaturedSSL_ESP32_W5500)\n  * [5. For ESP32_SC_ENC](#5-for-ESP32_SC_ENC)\n    * [1. FullyFeatured_ESP32_SC_ENC](examples/ESP32_SC_ENC/FullyFeatured_ESP32_SC_ENC)\n    * [2. FullyFeaturedSSL_ESP32_SC_ENC](examples/ESP32_SC_ENC/FullyFeaturedSSL_ESP32_SC_ENC)\n  * [6. For ESP32_SC_W5500](#6-for-ESP32_SC_W5500)\n    * [1. FullyFeatured_ESP32_SC_W5500](examples/ESP32_SC_W5500/FullyFeatured_ESP32_SC_W5500)\n    * [2. FullyFeaturedSSL_ESP32_SC_W5500](examples/ESP32_SC_W5500/FullyFeaturedSSL_ESP32_SC_W5500)\n  * [7. For ESP32_W6100](#7-for-ESP32_W6100)\n    * [1. FullyFeatured_ESP32_W6100](examples/ESP32_W6100/FullyFeatured_ESP32_W6100)\n    * [2. FullyFeaturedSSL_ESP32_W6100](examples/ESP32_W6100/FullyFeaturedSSL_ESP32_W6100)\n  * [8. For ESP32_SC_W6100](#8-for-ESP32_SC_W6100)\n    * [1. FullyFeatured_ESP32_SC_W6100](examples/ESP32_SC_W6100/FullyFeatured_ESP32_SC_W6100)\n    * [2. FullyFeaturedSSL_ESP32_SC_W6100](examples/ESP32_SC_W6100/FullyFeaturedSSL_ESP32_SC_W6100)\n* [Example FullyFeaturedSSL_ESP32_SC_W5500](#example-FullyFeaturedSSL_ESP32_SC_W5500)\n  * [1. File FullyFeaturedSSL_ESP32_SC_W5500.ino](#1-file-FullyFeaturedSSL_ESP32_SC_W5500ino)\n  * [2. File defines.h](#2-file-definesh)\n* [Debug Terminal Output Samples](#debug-terminal-output-samples)\n  * [ 1. FullyFeature_ESP32_SC_W5500 on ESP32S3_DEV with ESP32_S3_W5500](#1-FullyFeature_ESP32_SC_W5500-on-ESP32S3_DEV-with-ESP32_S3_W5500)\n  * [ 2. FullyFeatureSSL_ESP32_SC_W5500 on ESP32S3_DEV with ESP32_S3_W5500](#2-FullyFeatureSSL_ESP32_SC_W5500-on-ESP32S3_DEV-with-ESP32_S3_W5500)\n  * [ 3. FullyFeature_ESP32_SC_ENC on ESP32S3_DEV with ESP32_S3_ENC28J60](#3-FullyFeature_ESP32_SC_ENC-on-ESP32S3_DEV-with-ESP32_S3_ENC28J60)\n  * [ 4. FullyFeatureSSL_ESP32_SC_ENC on ESP32S3_DEV with ESP32_S3_ENC28J60](#4-FullyFeatureSSL_ESP32_SC_ENC-on-ESP32S3_DEV-with-ESP32_S3_ENC28J60)\n  * [ 5. FullyFeatureSSL_WT32_ETH01 on WT32-ETH01 with ETH_PHY_LAN8720](#5-FullyFeatureSSL_WT32_ETH01-on-WT32-ETH01-with-ETH_PHY_LAN8720)\n  * [ 6. FullyFeatureSSL_ESP32_SC_W5500 on ESP32S2_DEV with ESP32_S2_W5500](#6-FullyFeatureSSL_ESP32_SC_W5500-on-ESP32S2_DEV-with-ESP32_S2_W5500)\n  * [ 7. FullyFeatureSSL_ESP32_SC_W5500 on ESP32C3_DEV with ESP32_C3_W5500](#7-FullyFeatureSSL_ESP32_SC_W5500-on-ESP32C3_DEV-with-ESP32_C3_W5500)\n  * [ 8. FullyFeatureSSL_ESP32_SC_ENC on ESP32C3_DEV with ESP32_C3_ENC28J60](#8-FullyFeatureSSL_ESP32_SC_ENC-on-ESP32C3_DEV-with-ESP32_C3_ENC28J60)\n  * [ 9. FullyFeature_ESP32_W6100 on ESP32_DEV with ESP32_W6100](#9-FullyFeature_ESP32_W6100-on-ESP32_DEV-with-ESP32_W6100)\n  * [10. FullyFeatureSSL_ESP32_SC_W6100 on ESP32S3_DEV with ESP32_S3_W6100](#10-FullyFeatureSSL_ESP32_SC_W6100-on-ESP32S3_DEV-with-ESP32_S3_W6100)\n* [Debug](#debug)\n* [Troubleshooting](#troubleshooting)\n* [Issues](#issues)\n* [TO DO](#to-do)\n* [DONE](#done)\n* [Contributions and Thanks](#contributions-and-thanks)\n* [Contributing](#contributing)\n* [License](#license)\n* [Copyright](#copyright)\n\n---\n---\n\n### Why do we need this [AsyncMQTT_ESP32 library](https://github.com/khoih-prog/AsyncMQTT_ESP32)\n\n#### Features\n\nThis [**AsyncMQTT_ESP32 library**](https://github.com/khoih-prog/AsyncMQTT_ESP32) is based on and modified from [**Marvin Roger's async-mqtt-client Library**](https://github.com/marvinroger/async-mqtt-client), to provide support to `ESP32/S2/S3/C3` boards using WiFi or `LwIP W5500 / W6100 / ENC28J60 / LAN8720 Ethernet`\n\n#### Why Async is better\n\n- Using asynchronous network means that you can handle **more than one connection at the same time**\n- **You are called once the request is ready and parsed**\n- When you send the response, you are **immediately ready** to handle other connections while the server is taking care of sending the response in the background\n- **Speed is OMG**\n- **Easy to use API, HTTP Basic and Digest MD5 Authentication (default), ChunkedResponse**\n- Easily extensible to handle **any type of content**\n- Supports Continue 100\n- **Async WebSocket plugin offering different locations without extra servers or ports**\n- Async EventSource (Server-Sent Events) plugin to send events to the browser\n- URL Rewrite plugin for conditional and permanent url rewrites\n- ServeStatic plugin that supports cache, Last-Modified, default index and more\n- Simple template processing engine to handle templates\n\n\n---\n\n### Currently Supported Boards\n\n#### 1. ESP32/S2/S3/C3 using WiFi\n\n1. **ESP32 (ESP32-DEV, etc.)**\n\n#### 2. ESP32 using LwIP ENC28J60, W5500, W6100 or LAN8720\n\n1. **ESP32 (ESP32-DEV, etc.)**\n\n#### 3. **WT32_ETH01** using ESP32-based boards and LAN8720 Ethernet\n\n#### 4. ESP32S3 using LwIP W5500, W6100 or ENC28J60\n\n1. **ESP32-S3 (ESP32S3_DEV, ESP32_S3_BOX, UM TINYS3, UM PROS3, UM FEATHERS3, etc.)**\n\n#### 5. ESP32S2 using LwIP W5500, W6100 or ENC28J60\n\n1. **ESP32-S2 (ESP32S2_DEV, etc.)**\n\n#### 6. ESP32C3 using LwIP W5500, W6100 or ENC28J60\n\n1. **ESP32-C3 (ESP32C3_DEV, etc.)**\n\n\n--- \n\n#### ESP32S3_DEV\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/khoih-prog/AsyncMQTT_ESP32/raw/main/Images/ESP32S3_DEV.png\"\u003e\n\u003c/p\u003e\n\n#### ESP32S2_DEV\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/khoih-prog/AsyncMQTT_ESP32/raw/main/Images/ESP32S2_DEV.png\"\u003e\n\u003c/p\u003e \n\n\n#### ESP32C3_DEV\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/khoih-prog/AsyncMQTT_ESP32/raw/main/Images/ESP32_C3_DevKitC_02.png\"\u003e\n\u003c/p\u003e \n\n\n---\n\n##### W6100\n\n`FULL_DUPLEX, 100Mbps`\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/khoih-prog/AsyncMQTT_ESP32/raw/main/Images/W6100.png\"\u003e\n\u003c/p\u003e\n\n\n---\n\n##### W5500\n\n`FULL_DUPLEX, 100Mbps`\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/khoih-prog/AsyncMQTT_ESP32/raw/main/Images/W5500.png\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/khoih-prog/AsyncMQTT_ESP32/raw/main/Images/W5500_small.png\"\u003e\n\u003c/p\u003e \n\n---\n\n##### ENC28J60\n\n`FULL_DUPLEX, 10Mbps`\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/khoih-prog/AsyncMQTT_ESP32/raw/main/Images/ENC28J60.png\"\u003e\n\u003c/p\u003e\n \n \n \n---\n\n### To-be Supported Boards\n\n#### 1. New ESP32 using LwIP W5500, W6100 or ENC28J60\n\n\n---\n---\n \n## Prerequisites\n\n 1. [`Arduino IDE 1.8.19+` for Arduino](https://github.com/arduino/Arduino). [![GitHub release](https://img.shields.io/github/release/arduino/Arduino.svg)](https://github.com/arduino/Arduino/releases/latest)\n 2. [`ESP32 Core 2.0.6+`](https://github.com/espressif/arduino-esp32) for ESP32-based boards. [![Latest release](https://img.shields.io/github/release/espressif/arduino-esp32.svg)](https://github.com/espressif/arduino-esp32/releases/latest/)\n 3. [`AsyncTCP v1.1.1+`](https://github.com/me-no-dev/AsyncTCP) for ESP32. To install manually for Arduno IDE\n 4. [`AsyncTCP_SSL v1.3.1+`](https://github.com/khoih-prog/AsyncTCP_SSL) for ESP32. [![GitHub release](https://img.shields.io/github/release/khoih-prog/AsyncTCP_SSL.svg)](https://github.com/khoih-prog/AsyncTCP_SSL/releases)\n 5. [`WebServer_WT32_ETH01 v1.5.1+`](https://github.com/khoih-prog/WebServer_WT32_ETH01) for ESP32-based WT32_ETH01 using **either ESP32 core v2.0.0+ or v1.0.6-**. [![GitHub release](https://img.shields.io/github/release/khoih-prog/WebServer_WT32_ETH01.svg)](https://github.com/khoih-prog/WebServer_WT32_ETH01/releases)\n 6. [`WebServer_ESP32_ENC library v1.5.1+`](https://github.com/khoih-prog/WebServer_ESP32_ENC) if necessary to use ESP32 boards using `LwIP ENC28J60` Ethernet. To install, check [![arduino-library-badge](https://www.ardu-badge.com/badge/WebServer_ESP32_ENC.svg?)](https://www.ardu-badge.com/WebServer_ESP32_ENC)\n 7. [`WebServer_ESP32_W5500 library v1.5.2+`](https://github.com/khoih-prog/WebServer_ESP32_W5500) if necessary to use ESP32 boards using `LwIP W5500` Ethernet. To install, check [![arduino-library-badge](https://www.ardu-badge.com/badge/WebServer_ESP32_W5500.svg?)](https://www.ardu-badge.com/WebServer_ESP32_W5500)\n 8. [`WebServer_ESP32_SC_ENC library v1.2.0+`](https://github.com/khoih-prog/WebServer_ESP32_SC_ENC) if necessary to use `ESP32_S2/S3/C3` boards using `LwIP ENC28J60` Ethernet. To install, check [![arduino-library-badge](https://www.ardu-badge.com/badge/WebServer_ESP32_SC_ENC.svg?)](https://www.ardu-badge.com/WebServer_ESP32_SC_ENC)\n 9. [`WebServer_ESP32_SC_W5500 library v1.2.1+`](https://github.com/khoih-prog/WebServer_ESP32_SC_W5500) if necessary to use `ESP32_S2/S3/C3` boards using `LwIP W5500` Ethernet. To install, check [![arduino-library-badge](https://www.ardu-badge.com/badge/WebServer_ESP32_SC_W5500.svg?)](https://www.ardu-badge.com/WebServer_ESP32_SC_W5500)\n10. [`WebServer_ESP32_W6100 library v1.5.2+`](https://github.com/khoih-prog/WebServer_ESP32_W6100) if necessary to use ESP32 boards using `LwIP W6100` Ethernet. To install, check [![arduino-library-badge](https://www.ardu-badge.com/badge/WebServer_ESP32_W6100.svg?)](https://www.ardu-badge.com/WebServer_ESP32_W6100)\n11. [`WebServer_ESP32_SC_W6100 library v1.2.1+`](https://github.com/khoih-prog/WebServer_ESP32_SC_W6100) if necessary to use `ESP32_S2/S3/C3` boards using `LwIP W6100` Ethernet. To install, check [![arduino-library-badge](https://www.ardu-badge.com/badge/WebServer_ESP32_SC_W6100.svg?)](https://www.ardu-badge.com/WebServer_ESP32_SC_W6100)\n\n---\n---\n\n## Installation\n\n### Use Arduino Library Manager\nThe best and easiest way is to use `Arduino Library Manager`. Search for `AsyncMQTT_ESP32`, then select / install the latest version.\nYou can also use this link [![arduino-library-badge](https://www.ardu-badge.com/badge/AsyncMQTT_ESP32.svg?)](https://www.ardu-badge.com/AsyncMQTT_ESP32) for more detailed instructions.\n\n### Manual Install\n\nAnother way to install is to:\n\n1. Navigate to [**AsyncMQTT_ESP32**](https://github.com/khoih-prog/AsyncMQTT_ESP32) page.\n2. Download the latest release `AsyncMQTT_ESP32-main.zip`.\n3. Extract the zip file to `AsyncMQTT_ESP32-main` directory \n4. Copy whole `AsyncMQTT_ESP32-main` folder to Arduino libraries' directory such as `~/Arduino/libraries/`.\n\n### VS Code \u0026 PlatformIO:\n\n1. Install [VS Code](https://code.visualstudio.com/)\n2. Install [PlatformIO](https://platformio.org/platformio-ide)\n3. Install [**AsyncMQTT_ESP32** library](https://registry.platformio.org/libraries/khoih-prog/AsyncMQTT_ESP32) by using [Library Manager](https://registry.platformio.org/libraries/khoih-prog/AsyncMQTT_ESP32/installation). Search for **AsyncMQTT_ESP32** in [Platform.io Author's Libraries](https://platformio.org/lib/search?query=author:%22Khoi%20Hoang%22)\n4. Use included [platformio.ini](platformio/platformio.ini) file from examples to ensure that all dependent libraries will installed automatically. Please visit documentation for the other options and examples at [Project Configuration File](https://docs.platformio.org/page/projectconf.html)\n\n\n---\n---\n\n\n### HOWTO Use analogRead() with ESP32 running WiFi and/or BlueTooth (BT/BLE)\n\nPlease have a look at [**ESP_WiFiManager Issue 39: Not able to read analog port when using the autoconnect example**](https://github.com/khoih-prog/ESP_WiFiManager/issues/39) to have more detailed description and solution of the issue.\n\n#### 1.  ESP32 has 2 ADCs, named ADC1 and ADC2\n\n#### 2. ESP32 ADCs functions\n\n- `ADC1` controls `ADC` function for pins **GPIO32-GPIO39**\n- `ADC2` controls `ADC` function for pins **GPIO0, 2, 4, 12-15, 25-27**\n\n#### 3.. ESP32 WiFi uses ADC2 for WiFi functions\n\nLook in file [**adc_common.c**](https://github.com/espressif/esp-idf/blob/master/components/driver/adc_common.c#L61)\n\n\u003e In ADC2, there're two locks used for different cases:\n\u003e 1. lock shared with app and Wi-Fi:\n\u003e    ESP32:\n\u003e         When Wi-Fi using the ADC2, we assume it will never stop, so app checks the lock and returns immediately if failed.\n\u003e    ESP32S2:\n\u003e         The controller's control over the ADC is determined by the arbiter. There is no need to control by lock.\n\u003e \n\u003e 2. lock shared between tasks:\n\u003e    when several tasks sharing the ADC2, we want to guarantee\n\u003e    all the requests will be handled.\n\u003e    Since conversions are short (about 31us), app returns the lock very soon,\n\u003e    we use a spinlock to stand there waiting to do conversions one by one.\n\u003e \n\u003e adc2_spinlock should be acquired first, then adc2_wifi_lock or rtc_spinlock.\n\n\n- In order to use `ADC2` for other functions, we have to **acquire complicated firmware locks and very difficult to do**\n- So, it's not advisable to use `ADC2` with WiFi/BlueTooth (BT/BLE).\n- Use `ADC1`, and pins **GPIO32-GPIO39**\n- If somehow it's a must to use those pins serviced by `ADC2` (**GPIO0, 2, 4, 12, 13, 14, 15, 25, 26 and 27**), use the **fix mentioned at the end** of [**ESP_WiFiManager Issue 39: Not able to read analog port when using the autoconnect example**](https://github.com/khoih-prog/ESP_WiFiManager/issues/39) to work with ESP32 WiFi/BlueTooth (BT/BLE).\n\n    \n---\n---\n\n## Basic Usage\n\nPlease check [API documentation](https://github.com/khoih-prog/AsyncMQTT_ESP32/blob/main/docs/2.-API-reference.md).\n\n\n---\n---\n\n\n### How to connect W5500, W6100 or ENC28J60 to ESP32_S2/S3/C3\n\n##### W6100\n\n`FULL_DUPLEX, 100Mbps`\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/khoih-prog/AsyncMQTT_ESP32/raw/main/Images/W6100.png\"\u003e\n\u003c/p\u003e\n\n---\n\n\n#### W5500\n\n`FULL_DUPLEX, 100Mbps`\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/khoih-prog/AsyncMQTT_ESP32/raw/main/Images/W5500.png\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/khoih-prog/AsyncMQTT_ESP32/raw/main/Images/W5500_small.png\"\u003e\n\u003c/p\u003e \n\n---\n\n#### ENC28J60\n\n`FULL_DUPLEX, 10Mbps`\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/khoih-prog/AsyncMQTT_ESP32/raw/main/Images/ENC28J60.png\"\u003e\n\u003c/p\u003e\n \n \n---\n\n#### ESP32S3_DEV\n\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/khoih-prog/AsyncMQTT_ESP32/raw/main/Images/ESP32S3_DEV.png\"\u003e\n\u003c/p\u003e \n\n\nYou can change the `INT` pin to another one. Default is `GPIO4`\n\n```cpp\n// Must connect INT to GPIOxx or not working\n#define INT_GPIO            4\n```\n\n|W5500, W6100 or ENC28J60|\u003c---\u003e|ESP32_S3|\n|:-:|:-:|:-:|\n|MOSI|\u003c---\u003e|GPIO11|\n|MISO|\u003c---\u003e|GPIO13|\n|SCK|\u003c---\u003e|GPIO12|\n|CS/SS|\u003c---\u003e|GPIO10|\n|INT|\u003c---\u003e|GPIO4|\n|RST|\u003c---\u003e|RST|\n|GND|\u003c---\u003e|GND|\n|3.3V|\u003c---\u003e|3.3V|\n\n---\n\n#### ESP32S2_DEV\n\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/khoih-prog/AsyncMQTT_ESP32/raw/main/Images/ESP32S2_DEV.png\"\u003e\n\u003c/p\u003e \n\n\nYou can change the `INT` pin to another one. Default is `GPIO4`\n\n```cpp\n// Must connect INT to GPIOxx or not working\n#define INT_GPIO            4\n```\n\n|W5500, W6100 or ENC28J60|\u003c---\u003e|ESP32_S2|\n|:-:|:-:|:-:|\n|MOSI|\u003c---\u003e|GPIO35|\n|MISO|\u003c---\u003e|GPIO37|\n|SCK|\u003c---\u003e|GPIO36|\n|CS/SS|\u003c---\u003e|GPIO34|\n|INT|\u003c---\u003e|GPIO4|\n|RST|\u003c---\u003e|RST|\n|GND|\u003c---\u003e|GND|\n|3.3V|\u003c---\u003e|3.3V|\n\n\n---\n\n#### ESP32C3_DEV\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/khoih-prog/AsyncMQTT_ESP32/raw/main/Images/ESP32_C3_DevKitC_02.png\"\u003e\n\u003c/p\u003e \n\n\nYou can change the `INT` pin to another one. Default is `GPIO4`\n\n```cpp\n// Must connect INT to GPIOxx or not working\n#define INT_GPIO            10\n```\n\n|W5500, W6100 or ENC28J60|\u003c---\u003e|ESP32_C3|\n|:-:|:-:|:-:|\n|MOSI|\u003c---\u003e|GPIO6|\n|MISO|\u003c---\u003e|GPIO5|\n|SCK|\u003c---\u003e|GPIO4|\n|CS/SS|\u003c---\u003e|GPIO7|\n|INT|\u003c---\u003e|GPIO10|\n|RST|\u003c---\u003e|RST|\n|GND|\u003c---\u003e|GND|\n|3.3V|\u003c---\u003e|3.3V|\n\n---\n---\n\n### Examples\n\n#### 1. For ESP32\n\n 1. [FullyFeatured_ESP32](examples/ESP32/FullyFeatured_ESP32)\n 2. [FullyFeaturedSSL_ESP32](examples/ESP32/FullyFeaturedSSL_ESP32)\n\n#### 2. For WT32_ETH01\n\n 1. [FullyFeatured_WT32_ETH01](examples/WT32_ETH01/FullyFeatured_WT32_ETH01)\n 2. [FullyFeaturedSSL_WT32_ETH01](examples/WT32_ETH01/FullyFeaturedSSL_WT32_ETH01)\n \n#### 3. For ESP32_ENC\n\n 1. [FullyFeatured_ESP32_ENC](examples/ESP32_ENC/FullyFeatured_ESP32_ENC)\n 2. [FullyFeaturedSSL_ESP32_ENC](examples/ESP32_ENC/FullyFeaturedSSL_ESP32_ENC)\n \n#### 4. For ESP32_W5500\n\n 1. [FullyFeatured_ESP32_W5500](examples/ESP32_W5500/FullyFeatured_ESP32_W5500)\n 2. [FullyFeaturedSSL_ESP32_W5500](examples/ESP32_W5500/FullyFeaturedSSL_ESP32_W5500)\n \n#### 5. For ESP32_SC_ENC\n\n 1. [FullyFeatured_ESP32_SC_ENC](examples/ESP32_SC_ENC/FullyFeatured_ESP32_SC_ENC)\n 2. [FullyFeaturedSSL_ESP32_SC_ENC](examples/ESP32_SC_ENC/FullyFeaturedSSL_ESP32_SC_ENC)\n \n#### 6. For ESP32_SC_W5500\n\n 1. [FullyFeatured_ESP32_SC_W5500](examples/ESP32_SC_W5500/FullyFeatured_ESP32_SC_W5500)\n 2. [FullyFeaturedSSL_ESP32_SC_W5500](examples/ESP32_SC_W5500/FullyFeaturedSSL_ESP32_SC_W5500)\n\n#### 7. For ESP32_W6100\n\n 1. [FullyFeatured_ESP32_W6100](examples/ESP32_W6100/FullyFeatured_ESP32_W6100)\n 2. [FullyFeaturedSSL_ESP32_W6100](examples/ESP32_W6100/FullyFeaturedSSL_ESP32_W6100)\n \n#### 8. For ESP32_SC_W6100\n\n 1. [FullyFeatured_ESP32_SC_W6100](examples/ESP32_SC_W6100/FullyFeatured_ESP32_SC_W6100)\n 2. [FullyFeaturedSSL_ESP32_SC_W6100](examples/ESP32_SC_W6100/FullyFeaturedSSL_ESP32_SC_W6100)  \n      \n---\n---\n\n### Example [FullyFeaturedSSL_ESP32_SC_W5500](examples/ESP32_SC_W5500/FullyFeaturedSSL_ESP32_SC_W5500)\n\n#### 1. File [FullyFeaturedSSL_ESP32_SC_W5500.ino](examples/ESP32_SC_W5500/FullyFeaturedSSL_ESP32_SC_W5500/FullyFeaturedSSL_ESP32_SC_W5500.ino)\n\nhttps://github.com/khoih-prog/AsyncMQTT_ESP32/blob/4a9f8bcdb04e6c0c329bda40896afd4d7d8e31c7/examples/ESP32_SC_W5500/FullyFeaturedSSL_ESP32_SC_W5500/FullyFeaturedSSL_ESP32_SC_W5500.ino#L14-L283\n\n\n\n#### 2. File [defines.h](examples/ESP32_SC_W5500/FullyFeaturedSSL_ESP32_SC_W5500/defines.h)\n\nhttps://github.com/khoih-prog/AsyncMQTT_ESP32/blob/4a9f8bcdb04e6c0c329bda40896afd4d7d8e31c7/examples/ESP32_SC_W5500/FullyFeaturedSSL_ESP32_SC_W5500/defines.h#L13-L90\n\n\n---\n---\n\n### Debug Terminal Output Samples\n\n#### 1. FullyFeature_ESP32_SC_W5500 on ESP32S3_DEV with ESP32_S3_W5500\n\nThis is terminal debug output when running [FullyFeatured_ESP32_SC_W5500](examples/ESP32_SC_W5500/FullyFeatured_ESP32_SC_W5500) on **ESP32S3_DEV** with `LwIP W5500`, connecting to `broker.emqx.io` MQTT server.\n\n```cpp\nStarting FullyFeature_ESP32_SC_W5500 on ESP32S3_DEV with ESP32_S3_W5500\nWebServer_ESP32_SC_W5500 v1.2.1 for core v2.0.0+\nAsyncMQTT_ESP32 v1.10.0 for ESP32 core v2.0.0+\nETH starting\nETH connected\nETH got IP\nIP address: 192.168.2.108\nConnecting to MQTT...\nConnected to MQTT broker: broker.emqx.io, port: 1883\nPubTopic: async-mqtt/ESP32_SC_W5500_Pub\n************************************************\nSession present: 0\nSubscribing at QoS 2, packetId: 1\nPublishing at QoS 0\nPublishing at QoS 1, packetId: 2\nPublishing at QoS 2, packetId: 3\n************************************************\nSubscribe acknowledged.\n  packetId: 1\n  qos: 2\nPublish received.\n  topic: async-mqtt/ESP32_SC_W5500_Pub\n  qos: 0\n  dup: 0\n  retain: 0\n  len: 16\n  index: 0\n  total: 16\nPublish acknowledged.\n  packetId: 2\nPublish received.\n  topic: async-mqtt/ESP32_SC_W5500_Pub\n  qos: 1\n  dup: 0\n  retain: 0\n  len: 6\n  index: 0\n  total: 6\nPublish received.\n  topic: async-mqtt/ESP32_SC_W5500_Pub\n  qos: 2\n  dup: 0\n  retain: 0\n  len: 6\n  index: 0\n  total: 6\nPublish acknowledged.\n  packetId: 3\n```\n\n---\n\n#### 2. FullyFeatureSSL_ESP32_SC_W5500 on ESP32S3_DEV with ESP32_S3_W5500\n\nThis is terminal debug output when running [FullyFeaturedSSL_ESP32_SC_W5500](examples/ESP32_SC_W5500/FullyFeaturedSSL_ESP32_SC_W5500) on **ESP32S3_DEV** with `LwIP W5500`, connecting to `broker.emqx.io` secured MQTTS server (port 8883)\n\n\n```cpp\nStarting FullyFeatureSSL_ESP32_SC_W5500 on ESP32S3_DEV with ESP32_S3_W5500\nWebServer_ESP32_SC_W5500 v1.2.1 for core v2.0.0+\nAsyncMQTT_ESP32 v1.10.0 for ESP32 core v2.0.0+\nETH starting\nETH connected\nETH got IP\nIP address: 192.168.2.125\nConnecting to MQTT...\nConnected to MQTT broker: broker.emqx.io, port: 8883\nPubTopic: async-mqtt/ESP32_W5500_SSL_Pub\n************************************************\nSession present: 0\nSubscribing at QoS 2, packetId: 1\nPublishing at QoS 0\nPublishing at QoS 1, packetId: 2\nPublishing at QoS 2, packetId: 3\n************************************************\nSubscribe acknowledged.\n  packetId: 1\n  qos: 2\nPublish received.\n  topic: async-mqtt/ESP32_W5500_SSL_Pub\n  qos: 0\n  dup: 0\n  retain: 0\n  len: 16\n  index: 0\n  total: 16\nPublish acknowledged\n  packetId: 2\nPublish received.\n  topic: async-mqtt/ESP32_W5500_SSL_Pub\n  qos: 1\n  dup: 0\n  retain: 0\n  len: 6\n  index: 0\n  total: 6\nPublish received.\n  topic: async-mqtt/ESP32_W5500_SSL_Pub\n  qos: 2\n  dup: 0\n  retain: 0\n  len: 6\n  index: 0\n  total: 6\nPublish acknowledged\n  packetId: 3\n```\n\n---\n\n#### 3. FullyFeature_ESP32_SC_ENC on ESP32S3_DEV with ESP32_S3_ENC28J60\n\nThis is terminal debug output when running [FullyFeatured_ESP32_SC_ENC](examples/ESP32_SC_ENC/FullyFeatured_ESP32_SC_ENC) on **ESP32S3_DEV** with `LwIP ENC28J60`, connecting to `broker.emqx.io` MQTT server.\n\n```cpp\nStarting FullyFeature_ESP32_SC_ENC on ESP32S3_DEV with ESP32_S3_ENC28J60\nWebServer_ESP32_SC_ENC v1.2.0 for core v2.0.0+\nAsyncMQTT_ESP32 v1.10.0 for ESP32 core v2.0.0+\nETH starting\nETH connected\nETH got IP\nIP address: 192.168.2.88\nConnecting to MQTT...\nConnected to MQTT broker: broker.emqx.io, port: 1883\nPubTopic: async-mqtt/ESP32_SC_ENC_Pub\n************************************************\nSession present: 0\nSubscribing at QoS 2, packetId: 1\nPublishing at QoS 0\nPublishing at QoS 1, packetId: 2\nPublishing at QoS 2, packetId: 3\n************************************************\nSubscribe acknowledged.\n  packetId: 1\n  qos: 2\nPublish received.\n  topic: async-mqtt/ESP32_SC_ENC_Pub\n  qos: 0\n  dup: 0\n  retain: 0\n  len: 14\n  index: 0\n  total: 14\nPublish acknowledged.\n  packetId: 2\nPublish received.\n  topic: async-mqtt/ESP32_SC_ENC_Pub\n  qos: 1\n  dup: 0\n  retain: 0\n  len: 6\n  index: 0\n  total: 6\nPublish received.\n  topic: async-mqtt/ESP32_SC_ENC_Pub\n  qos: 2\n  dup: 0\n  retain: 0\n  len: 6\n  index: 0\n  total: 6\nPublish acknowledged.\n  packetId: 3\n```\n\n---\n\n#### 4. FullyFeatureSSL_ESP32_SC_ENC on ESP32S3_DEV with ESP32_S3_ENC28J60\n\nThis is terminal debug output when running [FullyFeaturedSSL_ESP32_SC_ENC](examples/ESP32_SC_ENC/FullyFeaturedSSL_ESP32_SC_ENC) on **ESP32S3_DEV** with `LwIP ENC28J60`, connecting to `broker.emqx.io` secured MQTTS server (port 8883)\n\n\n```cpp\nStarting FullyFeatureSSL_ESP32_SC_ENC on ESP32S3_DEV with ESP32_S3_ENC28J60\nWebServer_ESP32_SC_ENC v1.2.0 for core v2.0.0+\nAsyncMQTT_ESP32 v1.10.0 for ESP32 core v2.0.0+\nETH starting\nETH connected\nETH got IP\nIP address: 192.168.2.109\nConnecting to MQTT...\nConnected to MQTT broker: broker.emqx.io, port: 8883\nPubTopic: async-mqtt/ESP32_SC_ENC_SSL_Pub\n************************************************\nSession present: 0\nSubscribing at QoS 2, packetId: 1\nPublishing at QoS 0\nPublishing at QoS 1, packetId: 2\nPublishing at QoS 2, packetId: 3\n************************************************\nSubscribe acknowledged.\n  packetId: 1\n  qos: 2\nPublish received.\n  topic: async-mqtt/ESP32_SC_ENC_SSL_Pub\n  qos: 0\n  dup: 0\n  retain: 0\n  len: 17\n  index: 0\n  total: 17\nPublish acknowledged\n  packetId: 2\nPublish received.\n  topic: async-mqtt/ESP32_SC_ENC_SSL_Pub\n  qos: 1\n  dup: 0\n  retain: 0\n  len: 6\n  index: 0\n  total: 6\nPublish received.\n  topic: async-mqtt/ESP32_SC_ENC_SSL_Pub\n  qos: 2\n  dup: 0\n  retain: 0\n  len: 6\n  index: 0\n  total: 6\nPublish acknowledged\n  packetId: 3\n```\n\n---\n\n#### 5. FullyFeatureSSL_WT32_ETH01 on WT32-ETH01 with ETH_PHY_LAN8720\n\nThis is terminal debug output when running [FullyFeaturedSSL_WT32_ETH01](examples/WT32_ETH01/FullyFeaturedSSL_WT32_ETH01) on **WT32-ETH01** connecting to `broker.emqx.io` secured MQTT server (port 8883)\n\n\n```cpp\nStarting FullyFeatureSSL_WT32_ETH01 on WT32-ETH01 with ETH_PHY_LAN8720\nWebServer_WT32_ETH01 v1.5.1 for core v2.0.0+\nAsyncMQTT_ESP32 v1.10.0 for ESP32 core v2.0.0+\nETH starting\nETH connected\nETH got IP\nIP address: 192.168.2.97\nConnecting to MQTT...\nConnected to MQTT broker: broker.emqx.io, port: 8883\nPubTopic: async-mqtt/WT32_ETH01_SSL_Pub\n************************************************\nSession present: 0\nSubscribing at QoS 2, packetId: 1\nPublishing at QoS 0\nPublishing at QoS 1, packetId: 2\nPublishing at QoS 2, packetId: 3\n************************************************\nSubscribe acknowledged.\n  packetId: 1\n  qos: 2\nPublish received.\n  topic: async-mqtt/WT32_ETH01_SSL_Pub\n  qos: 0\n  dup: 0\n  retain: 0\n  len: 15\n  index: 0\n  total: 15\nPublish acknowledged\n  packetId: 2\nPublish received.\n  topic: async-mqtt/WT32_ETH01_SSL_Pub\n  qos: 1\n  dup: 0\n  retain: 0\n  len: 6\n  index: 0\n  total: 6\nPublish received.\n  topic: async-mqtt/WT32_ETH01_SSL_Pub\n  qos: 2\n  dup: 0\n  retain: 0\n  len: 6\n  index: 0\n  total: 6\nPublish acknowledged\n  packetId: 3\n```\n\n\n---\n\n#### 6. FullyFeatureSSL_ESP32_SC_W5500 on ESP32S2_DEV with ESP32_S2_W5500\n\nThis is terminal debug output when running [FullyFeaturedSSL_ESP32_SC_W5500](examples/ESP32_SC_W5500/FullyFeaturedSSL_ESP32_SC_W5500) on **ESP32S2_DEV** connecting to `broker.emqx.io` secured MQTT server (port 8883)\n\n\n```cpp\nStarting FullyFeatureSSL_ESP32_SC_W5500 on ESP32S2_DEV with ESP32_S2_W5500\nWebServer_ESP32_SC_W5500 v1.2.1 for core v2.0.0+\nAsyncMQTT_ESP32 v1.10.0 for ESP32 core v2.0.0+\nUsing built-in mac_eth = 7E:DF:A1:08:32:C9\nETH starting\nETH connected\nETH got IP\nIP address: 192.168.2.133\nConnecting to MQTT...\nConnected to MQTT broker: broker.emqx.io, port: 8883\nPubTopic: async-mqtt/ESP32_W5500_SSL_Pub\n************************************************\nSession present: 0\nSubscribing at QoS 2, packetId: 1\nPublishing at QoS 0\nPublishing at QoS 1, packetId: 2\nPublishing at QoS 2, packetId: 3\n************************************************\nSubscribe acknowledged.\n  packetId: 1\n  qos: 2\nPublish received.\n  topic: async-mqtt/ESP32_W5500_SSL_Pub\n  qos: 2\n  dup: 0\n  retain: 1\n  len: 6\n  index: 0\n  total: 6\nPublish received.\n  topic: async-mqtt/ESP32_W5500_SSL_Pub\n  qos: 0\n  dup: 0\n  retain: 0\n  len: 16\n  index: 0\n  total: 16\nPublish acknowledged\n  packetId: 2\nPublish received.\n  topic: async-mqtt/ESP32_W5500_SSL_Pub\n  qos: 1\n  dup: 0\n  retain: 0\n  len: 6\n  index: 0\n  total: 6\nPublish received.\n  topic: async-mqtt/ESP32_W5500_SSL_Pub\n  qos: 2\n  dup: 0\n  retain: 0\n  len: 6\n  index: 0\n  total: 6\nPublish acknowledged\n  packetId: 3\n```\n\n\n---\n\n#### 7. FullyFeatureSSL_ESP32_SC_W5500 on ESP32C3_DEV with ESP32_C3_W5500\n\nThis is terminal debug output when running [FullyFeaturedSSL_ESP32_SC_W5500](examples/ESP32_SC_W5500/FullyFeaturedSSL_ESP32_SC_W5500) on **ESP32C3_DEV** connecting to `broker.emqx.io` secured MQTT server (port 8883)\n\n\n```cpp\nStarting FullyFeatureSSL_ESP32_SC_W5500 on ESP32C3_DEV with ESP32_C3_W5500\nWebServer_ESP32_SC_W5500 v1.2.1 for core v2.0.0+\nAsyncMQTT_ESP32 v1.10.0 for ESP32 core v2.0.0+\nUsing built-in mac_eth = 7C:DF:A1:BC:BC:53\nETH starting\nETH connected\nETH got IP\nIP address: 192.168.2.135\nConnecting to MQTT...\nConnected to MQTT broker: broker.emqx.io, port: 8883\nPubTopic: async-mqtt/ESP32_W5500_SSL_Pub\n************************************************\nSession present: 0\nSubscribing at QoS 2, packetId: 1\nPublishing at QoS 0\nPublishing at QoS 1, packetId: 2\nPublishing at QoS 2, packetId: 3\n************************************************\nSubscribe acknowledged.\n  packetId: 1\n  qos: 2\nPublish received.\n  topic: async-mqtt/ESP32_W5500_SSL_Pub\n  qos: 2\n  dup: 0\n  retain: 1\n  len: 6\n  index: 0\n  total: 6\nPublish received.\n  topic: async-mqtt/ESP32_W5500_SSL_Pub\n  qos: 0\n  dup: 0\n  retain: 0\n  len: 16\n  index: 0\n  total: 16\nPublish acknowledged\n  packetId: 2\nPublish received.\n  topic: async-mqtt/ESP32_W5500_SSL_Pub\n  qos: 1\n  dup: 0\n  retain: 0\n  len: 6\n  index: 0\n  total: 6\nPublish received.\n  topic: async-mqtt/ESP32_W5500_SSL_Pub\n  qos: 2\n  dup: 0\n  retain: 0\n  len: 6\n  index: 0\n  total: 6\nPublish acknowledged\n  packetId: 3\n```\n\n\n---\n\n#### 8. FullyFeatureSSL_ESP32_SC_ENC on ESP32C3_DEV with ESP32_C3_ENC28J60\n\nThis is terminal debug output when running [FullyFeaturedSSL_ESP32_SC_ENC](examples/ESP32_SC_ENC/FullyFeaturedSSL_ESP32_SC_ENC) on **ESP32C3_DEV** connecting to `broker.emqx.io` secured MQTT server (port 8883)\n\n\n```cpp\nStarting FullyFeatureSSL_ESP32_SC_ENC on ESP32C3_DEV with ESP32_C3_ENC28J60\nWebServer_ESP32_SC_ENC v1.2.0 for core v2.0.0+\nAsyncMQTT_ESP32 v1.10.0 for ESP32 core v2.0.0+\nUsing built-in mac_eth = 7C:DF:A1:DA:66:87\nETH starting\nETH connected\nETH got IP\nIP address: 192.168.2.136\nConnecting to MQTT...\nConnected to MQTT broker: broker.emqx.io, port: 8883\nPubTopic: async-mqtt/ESP32_SC_ENC_SSL_Pub\n************************************************\nSession present: 0\nSubscribing at QoS 2, packetId: 1\nPublishing at QoS 0\nPublishing at QoS 1, packetId: 2\nPublishing at QoS 2, packetId: 3\n************************************************\nSubscribe acknowledged.\n  packetId: 1\n  qos: 2\nPublish received.\n  topic: async-mqtt/ESP32_SC_ENC_SSL_Pub\n  qos: 2\n  dup: 0\n  retain: 1\n  len: 6\n  index: 0\n  total: 6\nPublish received.\n  topic: async-mqtt/ESP32_SC_ENC_SSL_Pub\n  qos: 0\n  dup: 0\n  retain: 0\n  len: 17\n  index: 0\n  total: 17\nPublish acknowledged\n  packetId: 2\nPublish received.\n  topic: async-mqtt/ESP32_SC_ENC_SSL_Pub\n  qos: 1\n  dup: 0\n  retain: 0\n  len: 6\n  index: 0\n  total: 6\nPublish received.\n  topic: async-mqtt/ESP32_SC_ENC_SSL_Pub\n  qos: 2\n  dup: 0\n  retain: 0\n  len: 6\n  index: 0\n  total: 6\nPublish acknowledged\n  packetId: 3\n```\n\n\n---\n\n#### 9. FullyFeature_ESP32_W6100 on ESP32_DEV with ESP32_W6100\n\nThis is terminal debug output when running [FullyFeatured_ESP32_W6100](examples/ESP32_W6100/FullyFeatured_ESP32_W6100) on **ESP32_DEV** connecting to `broker.emqx.io` secured MQTT server (port 1883)\n\n\n```cpp\nStarting FullyFeature_ESP32_W6100 on ESP32_DEV with ESP32_W6100\nWebServer_ESP32_W6100 v1.5.2 for core v2.0.0+\nAsyncMQTT_ESP32 v1.10.0 for ESP32 core v2.0.0+\nETH starting\nETH connected\nETH got IP\nIP address: 192.168.2.158\nConnecting to MQTT...\nConnected to MQTT broker: broker.emqx.io, port: 1883\nPubTopic: async-mqtt/ESP32_W6100_Pub\n************************************************\nSession present: 0\nSubscribing at QoS 2, packetId: 1\nPublishing at QoS 0\nPublishing at QoS 1, packetId: 2\nPublishing at QoS 2, packetId: 3\n************************************************\nSubscribe acknowledged.\n  packetId: 1\n  qos: 2\nPublish received.\n  topic: async-mqtt/ESP32_W6100_Pub\n  qos: 0\n  dup: 0\n  retain: 0\n  len: 16\n  index: 0\n  total: 16\nPublish acknowledged.\n  packetId: 2\nPublish received.\n  topic: async-mqtt/ESP32_W6100_Pub\n  qos: 1\n  dup: 0\n  retain: 0\n  len: 6\n  index: 0\n  total: 6\nPublish received.\n  topic: async-mqtt/ESP32_W6100_Pub\n  qos: 2\n  dup: 0\n  retain: 0\n  len: 6\n  index: 0\n  total: 6\nPublish acknowledged.\n  packetId: 3\n```\n\n\n---\n\n#### 10. FullyFeatureSSL_ESP32_SC_W6100 on ESP32S3_DEV with ESP32_S3_W6100\n\nThis is terminal debug output when running [FullyFeaturedSSL_ESP32_SC_W6100](examples/ESP32_SC_W6100/FullyFeaturedSSL_ESP32_SC_W6100) on **ESP32S3_DEV** connecting to `broker.emqx.io` secured MQTT server (port 8883)\n\n\n```cpp\nStarting FullyFeatureSSL_ESP32_SC_W6100 on ESP32S3_DEV with ESP32_S3_W6100\nWebServer_ESP32_SC_W6100 v1.2.1 for core v2.0.0+\nAsyncMQTT_ESP32 v1.10.0 for ESP32 core v2.0.0+\nETH starting\nETH connected\nETH got IP\nIP address: 192.168.2.92\nConnecting to MQTT...\nConnected to MQTT broker: broker.emqx.io, port: 8883\nPubTopic: async-mqtt/ESP32_W6100_SSL_Pub\n************************************************\nSession present: 0\nSubscribing at QoS 2, packetId: 1\nPublishing at QoS 0\nPublishing at QoS 1, packetId: 2\nPublishing at QoS 2, packetId: 3\n************************************************\nSubscribe acknowledged.\n  packetId: 1\n  qos: 2\nPublish received.\n  topic: async-mqtt/ESP32_W6100_SSL_Pub\n  qos: 2\n  dup: 0\n  retain: 1\n  len: 6\n  index: 0\n  total: 6\nPublish received.\n  topic: async-mqtt/ESP32_W6100_SSL_Pub\n  qos: 0\n  dup: 0\n  retain: 0\n  len: 16\n  index: 0\n  total: 16\nPublish acknowledged\n  packetId: 2\nPublish received.\n  topic: async-mqtt/ESP32_W6100_SSL_Pub\n  qos: 1\n  dup: 0\n  retain: 0\n  len: 6\n  index: 0\n  total: 6\nPublish received.\n  topic: async-mqtt/ESP32_W6100_SSL_Pub\n  qos: 2\n  dup: 0\n  retain: 0\n  len: 6\n  index: 0\n  total: 6\nPublish acknowledged\n  packetId: 3\n```\n\n\n---\n---\n\n### Debug\n\nDebug is enabled by default on Serial. Debug Level from 0 to 4. To disable, change the _MYSQL_LOGLEVEL_ to 0\n\n```cpp\n#define ASYNC_MQTT_DEBUG_PORT               Serial\n\n// Debug Level from 0 to 4\n#define _ASYNC_MQTT_LOGLEVEL_               1\n```\n\n---\n\n### Troubleshooting\n\nIf you get compilation errors, more often than not, you may need to install a newer version of the core for Arduino boards.\n\nSometimes, the library will only work if you update the board core to the latest version because I am using newly added functions.\n\n\n---\n---\n\n\n### Issues ###\n\nSubmit issues to: [AsyncMQTT_ESP32 issues](https://github.com/khoih-prog/AsyncMQTT_ESP32/issues)\n\n---\n---\n\n### TO DO\n\n 1. Bug fixing.\n\n---\n\n### DONE\n\n 1. Add support to any `ESP32/S2/S3/C3` boards using WiFi with `SSL/TLS`\n 2. Add support to `ESP32` boards using `LwIP W5500 / ENC28J60 / LAN8720 Ethernet` with `SSL/TLS`\n 3. Add support to `ESP32S3` boards using `LwIP W5500 / ENC28J60 / LAN8720 Ethernet` with `SSL/TLS`\n 4. Add support to `ESP32S2` boards using `LwIP W5500 / ENC28J60 / LAN8720 Ethernet` with `SSL/TLS`\n 5. Add support to `ESP32C3` boards using `LwIP W5500 / ENC28J60 / LAN8720 Ethernet` with `SSL/TLS`\n 6. Add support to `ESP32` and `ESP32S2/S3/C3` boards using `LwIP W6100 Ethernet` with `SSL/TLS`\n \n \n---\n---\n\n### Contributions and Thanks\n\n1. Based on and modified from [**Marvin Roger's async-mqtt-client Library**](https://github.com/marvinroger/async-mqtt-client)\n\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/marvinroger\"\u003e\u003cimg src=\"https://github.com/marvinroger.png\" width=\"100px;\" alt=\"marvinroger\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003e⭐️ Marvin Roger\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003c/td\u003e\n  \u003c/tr\u003e \n\u003c/table\u003e\n\n---\n\n### Contributing\n\nIf you want to contribute to this project:\n\n- Report bugs and errors\n- Ask for enhancements\n- Create issues and pull requests\n- Tell other people about this library\n\n---\n\n### License\n\n- Many of the credits go to original author [Marvin Roger](https://github.com/marvinroger)\n\n- The library is licensed under [MIT](https://github.com/khoih-prog/AsyncMQTT_ESP32/blob/main/LICENSE)\n\n---\n\n## Copyright\n\n1. Copyright (c) 2017- Marvin Roger\n2. Copyright (c) 2022- Khoi Hoang\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhoih-prog%2FAsyncMQTT_ESP32","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkhoih-prog%2FAsyncMQTT_ESP32","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhoih-prog%2FAsyncMQTT_ESP32/lists"}