forked from espressif/esp-idf
examples/protocols/mqtt: use common network component
This commit is contained in:
@@ -2,6 +2,10 @@
|
|||||||
# in this exact order for cmake to work correctly
|
# in this exact order for cmake to work correctly
|
||||||
cmake_minimum_required(VERSION 3.5)
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
|
||||||
|
# (Not part of the boilerplate)
|
||||||
|
# This example uses an extra component for common functions such as Wi-Fi and Ethernet connection.
|
||||||
|
set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/common_components/protocol_examples_common)
|
||||||
|
|
||||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||||
|
|
||||||
project(mqtt_publish)
|
project(mqtt_publish)
|
||||||
|
@@ -4,4 +4,6 @@
|
|||||||
#
|
#
|
||||||
PROJECT_NAME := mqtt_publish
|
PROJECT_NAME := mqtt_publish
|
||||||
|
|
||||||
|
EXTRA_COMPONENT_DIRS = $(IDF_PATH)/examples/common_components/protocol_examples_common
|
||||||
|
|
||||||
include $(IDF_PATH)/make/project.mk
|
include $(IDF_PATH)/make/project.mk
|
||||||
|
@@ -22,16 +22,10 @@ This example can be executed on any ESP32 board, the only required interface is
|
|||||||
|
|
||||||
### Configure the project
|
### Configure the project
|
||||||
|
|
||||||
```
|
* Run `make menuconfig` (or `idf.py menuconfig` if using CMake build system)
|
||||||
make menuconfig
|
* Configure Wi-Fi or Ethernet under "Example Connection Configuration" menu. See "Establishing Wi-Fi or Ethernet Connection" section in [examples/protocols/README.md](../../README.md) for more details.
|
||||||
```
|
* When using Make build system, set `Default serial port` under `Serial flasher config`.
|
||||||
|
|
||||||
* Set serial port under Serial Flasher Options.
|
|
||||||
|
|
||||||
* Set ssid and password for the board to connect to AP.
|
|
||||||
|
|
||||||
* Set brokers for all 4 transports (TCP, SSL, WS, WSS), also set certificate if needed
|
* Set brokers for all 4 transports (TCP, SSL, WS, WSS), also set certificate if needed
|
||||||
|
|
||||||
* Set topics for publishing from and to ESP32
|
* Set topics for publishing from and to ESP32
|
||||||
|
|
||||||
### Build and Flash
|
### Build and Flash
|
||||||
|
@@ -1,17 +1,5 @@
|
|||||||
menu "Example Configuration"
|
menu "Example Configuration"
|
||||||
|
|
||||||
config WIFI_SSID
|
|
||||||
string "WiFi SSID"
|
|
||||||
default "myssid"
|
|
||||||
help
|
|
||||||
SSID (network name) for the example to connect to.
|
|
||||||
|
|
||||||
config WIFI_PASSWORD
|
|
||||||
string "WiFi Password"
|
|
||||||
default "mypassword"
|
|
||||||
help
|
|
||||||
WiFi password (WPA or WPA2) for the example to use.
|
|
||||||
|
|
||||||
config BROKER_SSL_URI
|
config BROKER_SSL_URI
|
||||||
string "Broker SSL URL"
|
string "Broker SSL URL"
|
||||||
default "mqtts://iot.eclipse.org:8883"
|
default "mqtts://iot.eclipse.org:8883"
|
||||||
|
@@ -13,7 +13,9 @@
|
|||||||
#include "esp_wifi.h"
|
#include "esp_wifi.h"
|
||||||
#include "esp_system.h"
|
#include "esp_system.h"
|
||||||
#include "nvs_flash.h"
|
#include "nvs_flash.h"
|
||||||
#include "esp_event_loop.h"
|
#include "esp_event.h"
|
||||||
|
#include "tcpip_adapter.h"
|
||||||
|
#include "protocol_examples_common.h"
|
||||||
|
|
||||||
#include "freertos/FreeRTOS.h"
|
#include "freertos/FreeRTOS.h"
|
||||||
#include "freertos/task.h"
|
#include "freertos/task.h"
|
||||||
@@ -30,7 +32,6 @@
|
|||||||
|
|
||||||
static const char *TAG = "PUBLISH_TEST";
|
static const char *TAG = "PUBLISH_TEST";
|
||||||
|
|
||||||
static EventGroupHandle_t wifi_event_group;
|
|
||||||
static EventGroupHandle_t mqtt_event_group;
|
static EventGroupHandle_t mqtt_event_group;
|
||||||
const static int CONNECTED_BIT = BIT0;
|
const static int CONNECTED_BIT = BIT0;
|
||||||
|
|
||||||
@@ -43,47 +44,6 @@ static size_t expected_published = 0;
|
|||||||
static size_t actual_published = 0;
|
static size_t actual_published = 0;
|
||||||
static int qos_test = 0;
|
static int qos_test = 0;
|
||||||
|
|
||||||
static esp_err_t wifi_event_handler(void *ctx, system_event_t *event)
|
|
||||||
{
|
|
||||||
switch (event->event_id) {
|
|
||||||
case SYSTEM_EVENT_STA_START:
|
|
||||||
esp_wifi_connect();
|
|
||||||
break;
|
|
||||||
case SYSTEM_EVENT_STA_GOT_IP:
|
|
||||||
xEventGroupSetBits(wifi_event_group, CONNECTED_BIT);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case SYSTEM_EVENT_STA_DISCONNECTED:
|
|
||||||
esp_wifi_connect();
|
|
||||||
xEventGroupClearBits(wifi_event_group, CONNECTED_BIT);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return ESP_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void wifi_init(void)
|
|
||||||
{
|
|
||||||
tcpip_adapter_init();
|
|
||||||
wifi_event_group = xEventGroupCreate();
|
|
||||||
ESP_ERROR_CHECK(esp_event_loop_init(wifi_event_handler, NULL));
|
|
||||||
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_init(&cfg));
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM));
|
|
||||||
wifi_config_t wifi_config = {
|
|
||||||
.sta = {
|
|
||||||
.ssid = CONFIG_WIFI_SSID,
|
|
||||||
.password = CONFIG_WIFI_PASSWORD,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config));
|
|
||||||
ESP_LOGI(TAG, "start the WIFI SSID:[%s]", CONFIG_WIFI_SSID);
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_start());
|
|
||||||
ESP_LOGI(TAG, "Waiting for wifi");
|
|
||||||
xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT, false, true, portMAX_DELAY);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if CONFIG_BROKER_CERTIFICATE_OVERRIDDEN == 1
|
#if CONFIG_BROKER_CERTIFICATE_OVERRIDDEN == 1
|
||||||
static const uint8_t iot_eclipse_org_pem_start[] = "-----BEGIN CERTIFICATE-----\n" CONFIG_BROKER_CERTIFICATE_OVERRIDE "\n-----END CERTIFICATE-----";
|
static const uint8_t iot_eclipse_org_pem_start[] = "-----BEGIN CERTIFICATE-----\n" CONFIG_BROKER_CERTIFICATE_OVERRIDE "\n-----END CERTIFICATE-----";
|
||||||
@@ -208,8 +168,16 @@ void app_main()
|
|||||||
esp_log_level_set("TRANSPORT", ESP_LOG_VERBOSE);
|
esp_log_level_set("TRANSPORT", ESP_LOG_VERBOSE);
|
||||||
esp_log_level_set("OUTBOX", ESP_LOG_VERBOSE);
|
esp_log_level_set("OUTBOX", ESP_LOG_VERBOSE);
|
||||||
|
|
||||||
nvs_flash_init();
|
ESP_ERROR_CHECK(nvs_flash_init());
|
||||||
wifi_init();
|
tcpip_adapter_init();
|
||||||
|
ESP_ERROR_CHECK(esp_event_loop_create_default());
|
||||||
|
|
||||||
|
/* This helper function configures Wi-Fi or Ethernet, as selected in menuconfig.
|
||||||
|
* Read "Establishing Wi-Fi or Ethernet Connection" section in
|
||||||
|
* examples/protocols/README.md for more information about this function.
|
||||||
|
*/
|
||||||
|
ESP_ERROR_CHECK(example_connect());
|
||||||
|
|
||||||
mqtt_app_start();
|
mqtt_app_start();
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
|
@@ -2,8 +2,11 @@
|
|||||||
# in this exact order for cmake to work correctly
|
# in this exact order for cmake to work correctly
|
||||||
cmake_minimum_required(VERSION 3.5)
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
|
||||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
# (Not part of the boilerplate)
|
||||||
|
# This example uses an extra component for common functions such as Wi-Fi and Ethernet connection.
|
||||||
|
set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/common_components/protocol_examples_common)
|
||||||
|
|
||||||
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||||
project(mqtt_ssl)
|
project(mqtt_ssl)
|
||||||
|
|
||||||
target_add_binary_data(mqtt_ssl.elf "main/iot_eclipse_org.pem" TEXT)
|
target_add_binary_data(mqtt_ssl.elf "main/iot_eclipse_org.pem" TEXT)
|
||||||
|
@@ -4,4 +4,6 @@
|
|||||||
#
|
#
|
||||||
PROJECT_NAME := mqtt_ssl
|
PROJECT_NAME := mqtt_ssl
|
||||||
|
|
||||||
|
EXTRA_COMPONENT_DIRS = $(IDF_PATH)/examples/common_components/protocol_examples_common
|
||||||
|
|
||||||
include $(IDF_PATH)/make/project.mk
|
include $(IDF_PATH)/make/project.mk
|
||||||
|
@@ -14,13 +14,9 @@ This example can be executed on any ESP32 board, the only required interface is
|
|||||||
|
|
||||||
### Configure the project
|
### Configure the project
|
||||||
|
|
||||||
```
|
* Run `make menuconfig` (or `idf.py menuconfig` if using CMake build system)
|
||||||
make menuconfig
|
* Configure Wi-Fi or Ethernet under "Example Connection Configuration" menu. See "Establishing Wi-Fi or Ethernet Connection" section in [examples/protocols/README.md](../../README.md) for more details.
|
||||||
```
|
* When using Make build system, set `Default serial port` under `Serial flasher config`.
|
||||||
|
|
||||||
* Set serial port under Serial Flasher Options.
|
|
||||||
|
|
||||||
* Set ssid and password for the board to connect to AP.
|
|
||||||
|
|
||||||
Note how to create a PEM certificate for iot.eclipse.org:
|
Note how to create a PEM certificate for iot.eclipse.org:
|
||||||
```
|
```
|
||||||
|
@@ -1,17 +1,5 @@
|
|||||||
menu "Example Configuration"
|
menu "Example Configuration"
|
||||||
|
|
||||||
config WIFI_SSID
|
|
||||||
string "WiFi SSID"
|
|
||||||
default "myssid"
|
|
||||||
help
|
|
||||||
SSID (network name) for the example to connect to.
|
|
||||||
|
|
||||||
config WIFI_PASSWORD
|
|
||||||
string "WiFi Password"
|
|
||||||
default "mypassword"
|
|
||||||
help
|
|
||||||
WiFi password (WPA or WPA2) for the example to use.
|
|
||||||
|
|
||||||
config BROKER_URI
|
config BROKER_URI
|
||||||
string "Broker URL"
|
string "Broker URL"
|
||||||
default "mqtts://iot.eclipse.org:8883"
|
default "mqtts://iot.eclipse.org:8883"
|
||||||
|
@@ -1,3 +1,12 @@
|
|||||||
|
/* MQTT over SSL Example
|
||||||
|
|
||||||
|
This example code is in the Public Domain (or CC0 licensed, at your option.)
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, this
|
||||||
|
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||||
|
CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
@@ -5,13 +14,14 @@
|
|||||||
#include "esp_wifi.h"
|
#include "esp_wifi.h"
|
||||||
#include "esp_system.h"
|
#include "esp_system.h"
|
||||||
#include "nvs_flash.h"
|
#include "nvs_flash.h"
|
||||||
#include "esp_event_loop.h"
|
#include "esp_event.h"
|
||||||
|
#include "tcpip_adapter.h"
|
||||||
|
#include "protocol_examples_common.h"
|
||||||
|
|
||||||
#include "freertos/FreeRTOS.h"
|
#include "freertos/FreeRTOS.h"
|
||||||
#include "freertos/task.h"
|
#include "freertos/task.h"
|
||||||
#include "freertos/semphr.h"
|
#include "freertos/semphr.h"
|
||||||
#include "freertos/queue.h"
|
#include "freertos/queue.h"
|
||||||
#include "freertos/event_groups.h"
|
|
||||||
|
|
||||||
#include "lwip/sockets.h"
|
#include "lwip/sockets.h"
|
||||||
#include "lwip/dns.h"
|
#include "lwip/dns.h"
|
||||||
@@ -22,52 +32,6 @@
|
|||||||
|
|
||||||
static const char *TAG = "MQTTS_EXAMPLE";
|
static const char *TAG = "MQTTS_EXAMPLE";
|
||||||
|
|
||||||
static EventGroupHandle_t wifi_event_group;
|
|
||||||
const static int CONNECTED_BIT = BIT0;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static esp_err_t wifi_event_handler(void *ctx, system_event_t *event)
|
|
||||||
{
|
|
||||||
switch (event->event_id) {
|
|
||||||
case SYSTEM_EVENT_STA_START:
|
|
||||||
esp_wifi_connect();
|
|
||||||
break;
|
|
||||||
case SYSTEM_EVENT_STA_GOT_IP:
|
|
||||||
xEventGroupSetBits(wifi_event_group, CONNECTED_BIT);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case SYSTEM_EVENT_STA_DISCONNECTED:
|
|
||||||
esp_wifi_connect();
|
|
||||||
xEventGroupClearBits(wifi_event_group, CONNECTED_BIT);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return ESP_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void wifi_init(void)
|
|
||||||
{
|
|
||||||
tcpip_adapter_init();
|
|
||||||
wifi_event_group = xEventGroupCreate();
|
|
||||||
ESP_ERROR_CHECK(esp_event_loop_init(wifi_event_handler, NULL));
|
|
||||||
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_init(&cfg));
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM));
|
|
||||||
wifi_config_t wifi_config = {
|
|
||||||
.sta = {
|
|
||||||
.ssid = CONFIG_WIFI_SSID,
|
|
||||||
.password = CONFIG_WIFI_PASSWORD,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config));
|
|
||||||
ESP_LOGI(TAG, "start the WIFI SSID:[%s]", CONFIG_WIFI_SSID);
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_start());
|
|
||||||
ESP_LOGI(TAG, "Waiting for wifi");
|
|
||||||
xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT, false, true, portMAX_DELAY);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if CONFIG_BROKER_CERTIFICATE_OVERRIDDEN == 1
|
#if CONFIG_BROKER_CERTIFICATE_OVERRIDDEN == 1
|
||||||
static const uint8_t iot_eclipse_org_pem_start[] = "-----BEGIN CERTIFICATE-----\n" CONFIG_BROKER_CERTIFICATE_OVERRIDE "\n-----END CERTIFICATE-----";
|
static const uint8_t iot_eclipse_org_pem_start[] = "-----BEGIN CERTIFICATE-----\n" CONFIG_BROKER_CERTIFICATE_OVERRIDE "\n-----END CERTIFICATE-----";
|
||||||
@@ -150,8 +114,15 @@ void app_main()
|
|||||||
esp_log_level_set("TRANSPORT", ESP_LOG_VERBOSE);
|
esp_log_level_set("TRANSPORT", ESP_LOG_VERBOSE);
|
||||||
esp_log_level_set("OUTBOX", ESP_LOG_VERBOSE);
|
esp_log_level_set("OUTBOX", ESP_LOG_VERBOSE);
|
||||||
|
|
||||||
nvs_flash_init();
|
ESP_ERROR_CHECK(nvs_flash_init());
|
||||||
wifi_init();
|
tcpip_adapter_init();
|
||||||
mqtt_app_start();
|
ESP_ERROR_CHECK(esp_event_loop_create_default());
|
||||||
|
|
||||||
|
/* This helper function configures Wi-Fi or Ethernet, as selected in menuconfig.
|
||||||
|
* Read "Establishing Wi-Fi or Ethernet Connection" section in
|
||||||
|
* examples/protocols/README.md for more information about this function.
|
||||||
|
*/
|
||||||
|
ESP_ERROR_CHECK(example_connect());
|
||||||
|
|
||||||
|
mqtt_app_start();
|
||||||
}
|
}
|
||||||
|
@@ -2,8 +2,11 @@
|
|||||||
# in this exact order for cmake to work correctly
|
# in this exact order for cmake to work correctly
|
||||||
cmake_minimum_required(VERSION 3.5)
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
|
||||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
# (Not part of the boilerplate)
|
||||||
|
# This example uses an extra component for common functions such as Wi-Fi and Ethernet connection.
|
||||||
|
set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/common_components/protocol_examples_common)
|
||||||
|
|
||||||
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||||
project(mqtt_ssl_mutual_auth)
|
project(mqtt_ssl_mutual_auth)
|
||||||
|
|
||||||
target_add_binary_data(${CMAKE_PROJECT_NAME}.elf "main/client.crt" TEXT)
|
target_add_binary_data(${CMAKE_PROJECT_NAME}.elf "main/client.crt" TEXT)
|
||||||
|
@@ -4,4 +4,6 @@
|
|||||||
#
|
#
|
||||||
PROJECT_NAME := mqtt_ssl_mutual_auth
|
PROJECT_NAME := mqtt_ssl_mutual_auth
|
||||||
|
|
||||||
|
EXTRA_COMPONENT_DIRS = $(IDF_PATH)/examples/common_components/protocol_examples_common
|
||||||
|
|
||||||
include $(IDF_PATH)/make/project.mk
|
include $(IDF_PATH)/make/project.mk
|
||||||
|
@@ -14,13 +14,9 @@ This example can be executed on any ESP32 board, the only required interface is
|
|||||||
|
|
||||||
### Configure the project
|
### Configure the project
|
||||||
|
|
||||||
```
|
* Run `make menuconfig` (or `idf.py menuconfig` if using CMake build system)
|
||||||
make menuconfig
|
* Configure Wi-Fi or Ethernet under "Example Connection Configuration" menu. See "Establishing Wi-Fi or Ethernet Connection" section in [examples/protocols/README.md](../../README.md) for more details.
|
||||||
```
|
* When using Make build system, set `Default serial port` under `Serial flasher config`.
|
||||||
|
|
||||||
* Set serial port under Serial Flasher Options.
|
|
||||||
|
|
||||||
* Set ssid and password for the board to connect to AP.
|
|
||||||
|
|
||||||
* Generate your client keys and certificate
|
* Generate your client keys and certificate
|
||||||
|
|
||||||
|
@@ -1,15 +0,0 @@
|
|||||||
menu "Example Configuration"
|
|
||||||
|
|
||||||
config WIFI_SSID
|
|
||||||
string "WiFi SSID"
|
|
||||||
default "myssid"
|
|
||||||
help
|
|
||||||
SSID (network name) for the example to connect to.
|
|
||||||
|
|
||||||
config WIFI_PASSWORD
|
|
||||||
string "WiFi Password"
|
|
||||||
default "mypassword"
|
|
||||||
help
|
|
||||||
WiFi password (WPA or WPA2) for the example to use.
|
|
||||||
|
|
||||||
endmenu
|
|
@@ -1,3 +1,11 @@
|
|||||||
|
/* MQTT Mutual Authentication Example
|
||||||
|
|
||||||
|
This example code is in the Public Domain (or CC0 licensed, at your option.)
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, this
|
||||||
|
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||||
|
CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
*/
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
@@ -5,13 +13,14 @@
|
|||||||
#include "esp_wifi.h"
|
#include "esp_wifi.h"
|
||||||
#include "esp_system.h"
|
#include "esp_system.h"
|
||||||
#include "nvs_flash.h"
|
#include "nvs_flash.h"
|
||||||
#include "esp_event_loop.h"
|
#include "esp_event.h"
|
||||||
|
#include "tcpip_adapter.h"
|
||||||
|
#include "protocol_examples_common.h"
|
||||||
|
|
||||||
#include "freertos/FreeRTOS.h"
|
#include "freertos/FreeRTOS.h"
|
||||||
#include "freertos/task.h"
|
#include "freertos/task.h"
|
||||||
#include "freertos/semphr.h"
|
#include "freertos/semphr.h"
|
||||||
#include "freertos/queue.h"
|
#include "freertos/queue.h"
|
||||||
#include "freertos/event_groups.h"
|
|
||||||
|
|
||||||
#include "lwip/sockets.h"
|
#include "lwip/sockets.h"
|
||||||
#include "lwip/dns.h"
|
#include "lwip/dns.h"
|
||||||
@@ -22,53 +31,6 @@
|
|||||||
|
|
||||||
static const char *TAG = "MQTTS_EXAMPLE";
|
static const char *TAG = "MQTTS_EXAMPLE";
|
||||||
|
|
||||||
static EventGroupHandle_t wifi_event_group;
|
|
||||||
const static int CONNECTED_BIT = BIT0;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static esp_err_t wifi_event_handler(void *ctx, system_event_t *event)
|
|
||||||
{
|
|
||||||
switch (event->event_id) {
|
|
||||||
case SYSTEM_EVENT_STA_START:
|
|
||||||
esp_wifi_connect();
|
|
||||||
break;
|
|
||||||
case SYSTEM_EVENT_STA_GOT_IP:
|
|
||||||
xEventGroupSetBits(wifi_event_group, CONNECTED_BIT);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case SYSTEM_EVENT_STA_DISCONNECTED:
|
|
||||||
esp_wifi_connect();
|
|
||||||
xEventGroupClearBits(wifi_event_group, CONNECTED_BIT);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return ESP_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void wifi_init(void)
|
|
||||||
{
|
|
||||||
tcpip_adapter_init();
|
|
||||||
wifi_event_group = xEventGroupCreate();
|
|
||||||
ESP_ERROR_CHECK(esp_event_loop_init(wifi_event_handler, NULL));
|
|
||||||
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_init(&cfg));
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM));
|
|
||||||
wifi_config_t wifi_config = {
|
|
||||||
.sta = {
|
|
||||||
.ssid = CONFIG_WIFI_SSID,
|
|
||||||
.password = CONFIG_WIFI_PASSWORD,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config));
|
|
||||||
ESP_LOGI(TAG, "start the WIFI SSID:[%s]", CONFIG_WIFI_SSID);
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_start());
|
|
||||||
ESP_LOGI(TAG, "Waiting for wifi");
|
|
||||||
xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT, false, true, portMAX_DELAY);
|
|
||||||
}
|
|
||||||
|
|
||||||
extern const uint8_t client_cert_pem_start[] asm("_binary_client_crt_start");
|
extern const uint8_t client_cert_pem_start[] asm("_binary_client_crt_start");
|
||||||
extern const uint8_t client_cert_pem_end[] asm("_binary_client_crt_end");
|
extern const uint8_t client_cert_pem_end[] asm("_binary_client_crt_end");
|
||||||
extern const uint8_t client_key_pem_start[] asm("_binary_client_key_start");
|
extern const uint8_t client_key_pem_start[] asm("_binary_client_key_start");
|
||||||
@@ -148,8 +110,15 @@ void app_main()
|
|||||||
esp_log_level_set("TRANSPORT", ESP_LOG_VERBOSE);
|
esp_log_level_set("TRANSPORT", ESP_LOG_VERBOSE);
|
||||||
esp_log_level_set("OUTBOX", ESP_LOG_VERBOSE);
|
esp_log_level_set("OUTBOX", ESP_LOG_VERBOSE);
|
||||||
|
|
||||||
nvs_flash_init();
|
ESP_ERROR_CHECK(nvs_flash_init());
|
||||||
wifi_init();
|
tcpip_adapter_init();
|
||||||
mqtt_app_start();
|
ESP_ERROR_CHECK(esp_event_loop_create_default());
|
||||||
|
|
||||||
|
/* This helper function configures Wi-Fi or Ethernet, as selected in menuconfig.
|
||||||
|
* Read "Establishing Wi-Fi or Ethernet Connection" section in
|
||||||
|
* examples/protocols/README.md for more information about this function.
|
||||||
|
*/
|
||||||
|
ESP_ERROR_CHECK(example_connect());
|
||||||
|
|
||||||
|
mqtt_app_start();
|
||||||
}
|
}
|
||||||
|
@@ -2,6 +2,9 @@
|
|||||||
# in this exact order for cmake to work correctly
|
# in this exact order for cmake to work correctly
|
||||||
cmake_minimum_required(VERSION 3.5)
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
|
||||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
# (Not part of the boilerplate)
|
||||||
|
# This example uses an extra component for common functions such as Wi-Fi and Ethernet connection.
|
||||||
|
set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/common_components/protocol_examples_common)
|
||||||
|
|
||||||
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||||
project(mqtt_tcp)
|
project(mqtt_tcp)
|
@@ -4,4 +4,6 @@
|
|||||||
#
|
#
|
||||||
PROJECT_NAME := mqtt_tcp
|
PROJECT_NAME := mqtt_tcp
|
||||||
|
|
||||||
|
EXTRA_COMPONENT_DIRS = $(IDF_PATH)/examples/common_components/protocol_examples_common
|
||||||
|
|
||||||
include $(IDF_PATH)/make/project.mk
|
include $(IDF_PATH)/make/project.mk
|
||||||
|
@@ -14,13 +14,9 @@ This example can be executed on any ESP32 board, the only required interface is
|
|||||||
|
|
||||||
### Configure the project
|
### Configure the project
|
||||||
|
|
||||||
```
|
* Run `make menuconfig` (or `idf.py menuconfig` if using CMake build system)
|
||||||
make menuconfig
|
* Configure Wi-Fi or Ethernet under "Example Connection Configuration" menu. See "Establishing Wi-Fi or Ethernet Connection" section in [examples/protocols/README.md](../../README.md) for more details.
|
||||||
```
|
* When using Make build system, set `Default serial port` under `Serial flasher config`.
|
||||||
|
|
||||||
* Set serial port under Serial Flasher Options.
|
|
||||||
|
|
||||||
* Set ssid and password for the board to connect to AP.
|
|
||||||
|
|
||||||
### Build and Flash
|
### Build and Flash
|
||||||
|
|
||||||
|
@@ -1,17 +1,5 @@
|
|||||||
menu "Example Configuration"
|
menu "Example Configuration"
|
||||||
|
|
||||||
config WIFI_SSID
|
|
||||||
string "WiFi SSID"
|
|
||||||
default "myssid"
|
|
||||||
help
|
|
||||||
SSID (network name) for the example to connect to.
|
|
||||||
|
|
||||||
config WIFI_PASSWORD
|
|
||||||
string "WiFi Password"
|
|
||||||
default "mypassword"
|
|
||||||
help
|
|
||||||
WiFi password (WPA or WPA2) for the example to use.
|
|
||||||
|
|
||||||
config BROKER_URL
|
config BROKER_URL
|
||||||
string "Broker URL"
|
string "Broker URL"
|
||||||
default "mqtt://iot.eclipse.org"
|
default "mqtt://iot.eclipse.org"
|
||||||
|
@@ -1,3 +1,12 @@
|
|||||||
|
/* MQTT (over TCP) Example
|
||||||
|
|
||||||
|
This example code is in the Public Domain (or CC0 licensed, at your option.)
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, this
|
||||||
|
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||||
|
CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
@@ -5,13 +14,14 @@
|
|||||||
#include "esp_wifi.h"
|
#include "esp_wifi.h"
|
||||||
#include "esp_system.h"
|
#include "esp_system.h"
|
||||||
#include "nvs_flash.h"
|
#include "nvs_flash.h"
|
||||||
#include "esp_event_loop.h"
|
#include "esp_event.h"
|
||||||
|
#include "tcpip_adapter.h"
|
||||||
|
#include "protocol_examples_common.h"
|
||||||
|
|
||||||
#include "freertos/FreeRTOS.h"
|
#include "freertos/FreeRTOS.h"
|
||||||
#include "freertos/task.h"
|
#include "freertos/task.h"
|
||||||
#include "freertos/semphr.h"
|
#include "freertos/semphr.h"
|
||||||
#include "freertos/queue.h"
|
#include "freertos/queue.h"
|
||||||
#include "freertos/event_groups.h"
|
|
||||||
|
|
||||||
#include "lwip/sockets.h"
|
#include "lwip/sockets.h"
|
||||||
#include "lwip/dns.h"
|
#include "lwip/dns.h"
|
||||||
@@ -22,9 +32,6 @@
|
|||||||
|
|
||||||
static const char *TAG = "MQTT_EXAMPLE";
|
static const char *TAG = "MQTT_EXAMPLE";
|
||||||
|
|
||||||
static EventGroupHandle_t wifi_event_group;
|
|
||||||
const static int CONNECTED_BIT = BIT0;
|
|
||||||
|
|
||||||
|
|
||||||
static esp_err_t mqtt_event_handler(esp_mqtt_event_handle_t event)
|
static esp_err_t mqtt_event_handler(esp_mqtt_event_handle_t event)
|
||||||
{
|
{
|
||||||
@@ -76,48 +83,6 @@ static esp_err_t mqtt_event_handler(esp_mqtt_event_handle_t event)
|
|||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static esp_err_t wifi_event_handler(void *ctx, system_event_t *event)
|
|
||||||
{
|
|
||||||
switch (event->event_id) {
|
|
||||||
case SYSTEM_EVENT_STA_START:
|
|
||||||
esp_wifi_connect();
|
|
||||||
break;
|
|
||||||
case SYSTEM_EVENT_STA_GOT_IP:
|
|
||||||
xEventGroupSetBits(wifi_event_group, CONNECTED_BIT);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case SYSTEM_EVENT_STA_DISCONNECTED:
|
|
||||||
esp_wifi_connect();
|
|
||||||
xEventGroupClearBits(wifi_event_group, CONNECTED_BIT);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return ESP_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void wifi_init(void)
|
|
||||||
{
|
|
||||||
tcpip_adapter_init();
|
|
||||||
wifi_event_group = xEventGroupCreate();
|
|
||||||
ESP_ERROR_CHECK(esp_event_loop_init(wifi_event_handler, NULL));
|
|
||||||
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_init(&cfg));
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM));
|
|
||||||
wifi_config_t wifi_config = {
|
|
||||||
.sta = {
|
|
||||||
.ssid = CONFIG_WIFI_SSID,
|
|
||||||
.password = CONFIG_WIFI_PASSWORD,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config));
|
|
||||||
ESP_LOGI(TAG, "start the WIFI SSID:[%s]", CONFIG_WIFI_SSID);
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_start());
|
|
||||||
ESP_LOGI(TAG, "Waiting for wifi");
|
|
||||||
xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT, false, true, portMAX_DELAY);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void mqtt_app_start(void)
|
static void mqtt_app_start(void)
|
||||||
{
|
{
|
||||||
esp_mqtt_client_config_t mqtt_cfg = {
|
esp_mqtt_client_config_t mqtt_cfg = {
|
||||||
@@ -168,7 +133,15 @@ void app_main()
|
|||||||
esp_log_level_set("TRANSPORT", ESP_LOG_VERBOSE);
|
esp_log_level_set("TRANSPORT", ESP_LOG_VERBOSE);
|
||||||
esp_log_level_set("OUTBOX", ESP_LOG_VERBOSE);
|
esp_log_level_set("OUTBOX", ESP_LOG_VERBOSE);
|
||||||
|
|
||||||
nvs_flash_init();
|
ESP_ERROR_CHECK(nvs_flash_init());
|
||||||
wifi_init();
|
tcpip_adapter_init();
|
||||||
|
ESP_ERROR_CHECK(esp_event_loop_create_default());
|
||||||
|
|
||||||
|
/* This helper function configures Wi-Fi or Ethernet, as selected in menuconfig.
|
||||||
|
* Read "Establishing Wi-Fi or Ethernet Connection" section in
|
||||||
|
* examples/protocols/README.md for more information about this function.
|
||||||
|
*/
|
||||||
|
ESP_ERROR_CHECK(example_connect());
|
||||||
|
|
||||||
mqtt_app_start();
|
mqtt_app_start();
|
||||||
}
|
}
|
||||||
|
@@ -2,6 +2,9 @@
|
|||||||
# in this exact order for cmake to work correctly
|
# in this exact order for cmake to work correctly
|
||||||
cmake_minimum_required(VERSION 3.5)
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
|
||||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
# (Not part of the boilerplate)
|
||||||
|
# This example uses an extra component for common functions such as Wi-Fi and Ethernet connection.
|
||||||
|
set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/common_components/protocol_examples_common)
|
||||||
|
|
||||||
project(mqtt_websocket)
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||||
|
project(mqtt_websocket)
|
||||||
|
@@ -4,4 +4,6 @@
|
|||||||
#
|
#
|
||||||
PROJECT_NAME := mqtt_websocket
|
PROJECT_NAME := mqtt_websocket
|
||||||
|
|
||||||
|
EXTRA_COMPONENT_DIRS = $(IDF_PATH)/examples/common_components/protocol_examples_common
|
||||||
|
|
||||||
include $(IDF_PATH)/make/project.mk
|
include $(IDF_PATH)/make/project.mk
|
||||||
|
@@ -14,13 +14,9 @@ This example can be executed on any ESP32 board, the only required interface is
|
|||||||
|
|
||||||
### Configure the project
|
### Configure the project
|
||||||
|
|
||||||
```
|
* Run `make menuconfig` (or `idf.py menuconfig` if using CMake build system)
|
||||||
make menuconfig
|
* Configure Wi-Fi or Ethernet under "Example Connection Configuration" menu. See "Establishing Wi-Fi or Ethernet Connection" section in [examples/protocols/README.md](../../README.md) for more details.
|
||||||
```
|
* When using Make build system, set `Default serial port` under `Serial flasher config`.
|
||||||
|
|
||||||
* Set serial port under Serial Flasher Options.
|
|
||||||
|
|
||||||
* Set ssid and password for the board to connect to AP.
|
|
||||||
|
|
||||||
### Build and Flash
|
### Build and Flash
|
||||||
|
|
||||||
|
@@ -1,17 +1,5 @@
|
|||||||
menu "Example Configuration"
|
menu "Example Configuration"
|
||||||
|
|
||||||
config WIFI_SSID
|
|
||||||
string "WiFi SSID"
|
|
||||||
default "myssid"
|
|
||||||
help
|
|
||||||
SSID (network name) for the example to connect to.
|
|
||||||
|
|
||||||
config WIFI_PASSWORD
|
|
||||||
string "WiFi Password"
|
|
||||||
default "mypassword"
|
|
||||||
help
|
|
||||||
WiFi password (WPA or WPA2) for the example to use.
|
|
||||||
|
|
||||||
config BROKER_URI
|
config BROKER_URI
|
||||||
string "Broker URL"
|
string "Broker URL"
|
||||||
default "ws://iot.eclipse.org:80/ws"
|
default "ws://iot.eclipse.org:80/ws"
|
||||||
|
@@ -1,3 +1,11 @@
|
|||||||
|
/* MQTT over Websockets Example
|
||||||
|
|
||||||
|
This example code is in the Public Domain (or CC0 licensed, at your option.)
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, this
|
||||||
|
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||||
|
CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
*/
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
@@ -5,13 +13,14 @@
|
|||||||
#include "esp_wifi.h"
|
#include "esp_wifi.h"
|
||||||
#include "esp_system.h"
|
#include "esp_system.h"
|
||||||
#include "nvs_flash.h"
|
#include "nvs_flash.h"
|
||||||
#include "esp_event_loop.h"
|
#include "esp_event.h"
|
||||||
|
#include "tcpip_adapter.h"
|
||||||
|
#include "protocol_examples_common.h"
|
||||||
|
|
||||||
#include "freertos/FreeRTOS.h"
|
#include "freertos/FreeRTOS.h"
|
||||||
#include "freertos/task.h"
|
#include "freertos/task.h"
|
||||||
#include "freertos/semphr.h"
|
#include "freertos/semphr.h"
|
||||||
#include "freertos/queue.h"
|
#include "freertos/queue.h"
|
||||||
#include "freertos/event_groups.h"
|
|
||||||
|
|
||||||
#include "lwip/sockets.h"
|
#include "lwip/sockets.h"
|
||||||
#include "lwip/dns.h"
|
#include "lwip/dns.h"
|
||||||
@@ -22,9 +31,6 @@
|
|||||||
|
|
||||||
static const char *TAG = "MQTTWS_EXAMPLE";
|
static const char *TAG = "MQTTWS_EXAMPLE";
|
||||||
|
|
||||||
static EventGroupHandle_t wifi_event_group;
|
|
||||||
const static int CONNECTED_BIT = BIT0;
|
|
||||||
|
|
||||||
|
|
||||||
static esp_err_t mqtt_event_handler(esp_mqtt_event_handle_t event)
|
static esp_err_t mqtt_event_handler(esp_mqtt_event_handle_t event)
|
||||||
{
|
{
|
||||||
@@ -73,47 +79,6 @@ static esp_err_t mqtt_event_handler(esp_mqtt_event_handle_t event)
|
|||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static esp_err_t wifi_event_handler(void *ctx, system_event_t *event)
|
|
||||||
{
|
|
||||||
switch (event->event_id) {
|
|
||||||
case SYSTEM_EVENT_STA_START:
|
|
||||||
esp_wifi_connect();
|
|
||||||
break;
|
|
||||||
case SYSTEM_EVENT_STA_GOT_IP:
|
|
||||||
xEventGroupSetBits(wifi_event_group, CONNECTED_BIT);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case SYSTEM_EVENT_STA_DISCONNECTED:
|
|
||||||
esp_wifi_connect();
|
|
||||||
xEventGroupClearBits(wifi_event_group, CONNECTED_BIT);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return ESP_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void wifi_init(void)
|
|
||||||
{
|
|
||||||
tcpip_adapter_init();
|
|
||||||
wifi_event_group = xEventGroupCreate();
|
|
||||||
ESP_ERROR_CHECK(esp_event_loop_init(wifi_event_handler, NULL));
|
|
||||||
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_init(&cfg));
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM));
|
|
||||||
wifi_config_t wifi_config = {
|
|
||||||
.sta = {
|
|
||||||
.ssid = CONFIG_WIFI_SSID,
|
|
||||||
.password = CONFIG_WIFI_PASSWORD,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config));
|
|
||||||
ESP_LOGI(TAG, "start the WIFI SSID:[%s]", CONFIG_WIFI_SSID);
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_start());
|
|
||||||
ESP_LOGI(TAG, "Waiting for wifi");
|
|
||||||
xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT, false, true, portMAX_DELAY);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void mqtt_app_start(void)
|
static void mqtt_app_start(void)
|
||||||
{
|
{
|
||||||
@@ -141,7 +106,15 @@ void app_main()
|
|||||||
esp_log_level_set("TRANSPORT", ESP_LOG_VERBOSE);
|
esp_log_level_set("TRANSPORT", ESP_LOG_VERBOSE);
|
||||||
esp_log_level_set("OUTBOX", ESP_LOG_VERBOSE);
|
esp_log_level_set("OUTBOX", ESP_LOG_VERBOSE);
|
||||||
|
|
||||||
nvs_flash_init();
|
ESP_ERROR_CHECK(nvs_flash_init());
|
||||||
wifi_init();
|
tcpip_adapter_init();
|
||||||
|
ESP_ERROR_CHECK(esp_event_loop_create_default());
|
||||||
|
|
||||||
|
/* This helper function configures Wi-Fi or Ethernet, as selected in menuconfig.
|
||||||
|
* Read "Establishing Wi-Fi or Ethernet Connection" section in
|
||||||
|
* examples/protocols/README.md for more information about this function.
|
||||||
|
*/
|
||||||
|
ESP_ERROR_CHECK(example_connect());
|
||||||
|
|
||||||
mqtt_app_start();
|
mqtt_app_start();
|
||||||
}
|
}
|
||||||
|
@@ -2,8 +2,11 @@
|
|||||||
# in this exact order for cmake to work correctly
|
# in this exact order for cmake to work correctly
|
||||||
cmake_minimum_required(VERSION 3.5)
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
|
||||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
# (Not part of the boilerplate)
|
||||||
|
# This example uses an extra component for common functions such as Wi-Fi and Ethernet connection.
|
||||||
|
set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/common_components/protocol_examples_common)
|
||||||
|
|
||||||
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||||
project(mqtt_websocket_secure)
|
project(mqtt_websocket_secure)
|
||||||
|
|
||||||
target_add_binary_data(mqtt_websocket_secure.elf "main/iot_eclipse_org.pem" TEXT)
|
target_add_binary_data(mqtt_websocket_secure.elf "main/iot_eclipse_org.pem" TEXT)
|
||||||
|
@@ -4,4 +4,6 @@
|
|||||||
#
|
#
|
||||||
PROJECT_NAME := mqtt_websocket_secure
|
PROJECT_NAME := mqtt_websocket_secure
|
||||||
|
|
||||||
|
EXTRA_COMPONENT_DIRS = $(IDF_PATH)/examples/common_components/protocol_examples_common
|
||||||
|
|
||||||
include $(IDF_PATH)/make/project.mk
|
include $(IDF_PATH)/make/project.mk
|
||||||
|
@@ -13,13 +13,9 @@ This example can be executed on any ESP32 board, the only required interface is
|
|||||||
|
|
||||||
### Configure the project
|
### Configure the project
|
||||||
|
|
||||||
```
|
* Run `make menuconfig` (or `idf.py menuconfig` if using CMake build system)
|
||||||
make menuconfig
|
* Configure Wi-Fi or Ethernet under "Example Connection Configuration" menu. See "Establishing Wi-Fi or Ethernet Connection" section in [examples/protocols/README.md](../../README.md) for more details.
|
||||||
```
|
* When using Make build system, set `Default serial port` under `Serial flasher config`.
|
||||||
|
|
||||||
* Set serial port under Serial Flasher Options.
|
|
||||||
|
|
||||||
* Set ssid and password for the board to connect to AP.
|
|
||||||
|
|
||||||
Note how to create a PEM certificate for iot.eclipse.org:
|
Note how to create a PEM certificate for iot.eclipse.org:
|
||||||
|
|
||||||
|
@@ -1,17 +1,5 @@
|
|||||||
menu "Example Configuration"
|
menu "Example Configuration"
|
||||||
|
|
||||||
config WIFI_SSID
|
|
||||||
string "WiFi SSID"
|
|
||||||
default "myssid"
|
|
||||||
help
|
|
||||||
SSID (network name) for the example to connect to.
|
|
||||||
|
|
||||||
config WIFI_PASSWORD
|
|
||||||
string "WiFi Password"
|
|
||||||
default "mypassword"
|
|
||||||
help
|
|
||||||
WiFi password (WPA or WPA2) for the example to use.
|
|
||||||
|
|
||||||
config BROKER_URI
|
config BROKER_URI
|
||||||
string "Broker URL"
|
string "Broker URL"
|
||||||
default "wss://iot.eclipse.org:443/ws"
|
default "wss://iot.eclipse.org:443/ws"
|
||||||
|
@@ -1,3 +1,11 @@
|
|||||||
|
/* MQTT over Secure Websockets Example
|
||||||
|
|
||||||
|
This example code is in the Public Domain (or CC0 licensed, at your option.)
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, this
|
||||||
|
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||||
|
CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
*/
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
@@ -5,13 +13,14 @@
|
|||||||
#include "esp_wifi.h"
|
#include "esp_wifi.h"
|
||||||
#include "esp_system.h"
|
#include "esp_system.h"
|
||||||
#include "nvs_flash.h"
|
#include "nvs_flash.h"
|
||||||
#include "esp_event_loop.h"
|
#include "esp_event.h"
|
||||||
|
#include "tcpip_adapter.h"
|
||||||
|
#include "protocol_examples_common.h"
|
||||||
|
|
||||||
#include "freertos/FreeRTOS.h"
|
#include "freertos/FreeRTOS.h"
|
||||||
#include "freertos/task.h"
|
#include "freertos/task.h"
|
||||||
#include "freertos/semphr.h"
|
#include "freertos/semphr.h"
|
||||||
#include "freertos/queue.h"
|
#include "freertos/queue.h"
|
||||||
#include "freertos/event_groups.h"
|
|
||||||
|
|
||||||
#include "lwip/sockets.h"
|
#include "lwip/sockets.h"
|
||||||
#include "lwip/dns.h"
|
#include "lwip/dns.h"
|
||||||
@@ -22,52 +31,6 @@
|
|||||||
|
|
||||||
static const char *TAG = "MQTTWSS_EXAMPLE";
|
static const char *TAG = "MQTTWSS_EXAMPLE";
|
||||||
|
|
||||||
static EventGroupHandle_t wifi_event_group;
|
|
||||||
const static int CONNECTED_BIT = BIT0;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static esp_err_t wifi_event_handler(void *ctx, system_event_t *event)
|
|
||||||
{
|
|
||||||
switch (event->event_id) {
|
|
||||||
case SYSTEM_EVENT_STA_START:
|
|
||||||
esp_wifi_connect();
|
|
||||||
break;
|
|
||||||
case SYSTEM_EVENT_STA_GOT_IP:
|
|
||||||
xEventGroupSetBits(wifi_event_group, CONNECTED_BIT);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case SYSTEM_EVENT_STA_DISCONNECTED:
|
|
||||||
esp_wifi_connect();
|
|
||||||
xEventGroupClearBits(wifi_event_group, CONNECTED_BIT);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return ESP_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void wifi_init(void)
|
|
||||||
{
|
|
||||||
tcpip_adapter_init();
|
|
||||||
wifi_event_group = xEventGroupCreate();
|
|
||||||
ESP_ERROR_CHECK(esp_event_loop_init(wifi_event_handler, NULL));
|
|
||||||
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_init(&cfg));
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM));
|
|
||||||
wifi_config_t wifi_config = {
|
|
||||||
.sta = {
|
|
||||||
.ssid = CONFIG_WIFI_SSID,
|
|
||||||
.password = CONFIG_WIFI_PASSWORD,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config));
|
|
||||||
ESP_LOGI(TAG, "start the WIFI SSID:[%s]", CONFIG_WIFI_SSID);
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_start());
|
|
||||||
ESP_LOGI(TAG, "Waiting for wifi");
|
|
||||||
xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT, false, true, portMAX_DELAY);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if CONFIG_BROKER_CERTIFICATE_OVERRIDDEN == 1
|
#if CONFIG_BROKER_CERTIFICATE_OVERRIDDEN == 1
|
||||||
static const uint8_t iot_eclipse_org_pem_start[] = "-----BEGIN CERTIFICATE-----\n" CONFIG_BROKER_CERTIFICATE_OVERRIDE "\n-----END CERTIFICATE-----";
|
static const uint8_t iot_eclipse_org_pem_start[] = "-----BEGIN CERTIFICATE-----\n" CONFIG_BROKER_CERTIFICATE_OVERRIDE "\n-----END CERTIFICATE-----";
|
||||||
@@ -149,7 +112,15 @@ void app_main()
|
|||||||
esp_log_level_set("TRANSPORT", ESP_LOG_VERBOSE);
|
esp_log_level_set("TRANSPORT", ESP_LOG_VERBOSE);
|
||||||
esp_log_level_set("OUTBOX", ESP_LOG_VERBOSE);
|
esp_log_level_set("OUTBOX", ESP_LOG_VERBOSE);
|
||||||
|
|
||||||
nvs_flash_init();
|
ESP_ERROR_CHECK(nvs_flash_init());
|
||||||
wifi_init();
|
tcpip_adapter_init();
|
||||||
|
ESP_ERROR_CHECK(esp_event_loop_create_default());
|
||||||
|
|
||||||
|
/* This helper function configures Wi-Fi or Ethernet, as selected in menuconfig.
|
||||||
|
* Read "Establishing Wi-Fi or Ethernet Connection" section in
|
||||||
|
* examples/protocols/README.md for more information about this function.
|
||||||
|
*/
|
||||||
|
ESP_ERROR_CHECK(example_connect());
|
||||||
|
|
||||||
mqtt_app_start();
|
mqtt_app_start();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user