├── _chk_partitions ├── partitions.cmd ├── partitions_arduino.csv └── partitions.php ├── img ├── Espressif_01.png ├── Espressif_02.png ├── z2m_01_all.png ├── esp32c6_zigbee.jpg ├── esp32c6_zigbee.png ├── ssd1306_zigbee.jpg ├── ssd1306_esp32c6.jpg ├── Espressif_ESP32C6_01.png ├── Espressif_ESP32C6_02.png ├── Espressif_ESP32C6_03.png ├── Espressif_ESP32C6_04.png ├── Espressif_ESP32C6_05.png ├── Espressif_ESP32C6_06.png ├── Espressif_ESP32C6_07.png ├── Espressif_ESP32C6_08.png ├── z2m_06_MIKE.ESP32-C6_01.png ├── z2m_07_MIKE.ESP32-C6_02.png ├── z2m_08_MIKE.ESP32-C6_03.png └── z2m_09_MIKE.ESP32-C6_04.png ├── main ├── CMakeLists.txt ├── ds18b20_main.h ├── idf_component.yml ├── zigbee_image.h ├── zigbee_connected.h ├── zigbee_disconnected.h ├── bh1750.h ├── ds18b20_main.c ├── esp32c6_zigbee.h ├── zigbee_logo.h ├── bh1750.c └── esp32c6_zigbee.c ├── components └── bmx280 │ ├── CMakeLists.txt │ ├── LICENSE │ ├── README.md │ ├── include │ ├── bmx280.h │ └── bmx280_bits.h │ ├── Kconfig │ └── bmx280.c ├── .vscode ├── settings.json └── c_cpp_properties.json ├── CMakeLists.txt ├── .gitignore ├── partitions.csv ├── .cproject ├── README.md └── sdkconfig /_chk_partitions/partitions.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | php -f partitions.php %1 > partitions.log 3 | -------------------------------------------------------------------------------- /img/Espressif_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozolin/ESP32C6_Zigbee/HEAD/img/Espressif_01.png -------------------------------------------------------------------------------- /img/Espressif_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozolin/ESP32C6_Zigbee/HEAD/img/Espressif_02.png -------------------------------------------------------------------------------- /img/z2m_01_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozolin/ESP32C6_Zigbee/HEAD/img/z2m_01_all.png -------------------------------------------------------------------------------- /img/esp32c6_zigbee.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozolin/ESP32C6_Zigbee/HEAD/img/esp32c6_zigbee.jpg -------------------------------------------------------------------------------- /img/esp32c6_zigbee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozolin/ESP32C6_Zigbee/HEAD/img/esp32c6_zigbee.png -------------------------------------------------------------------------------- /img/ssd1306_zigbee.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozolin/ESP32C6_Zigbee/HEAD/img/ssd1306_zigbee.jpg -------------------------------------------------------------------------------- /img/ssd1306_esp32c6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozolin/ESP32C6_Zigbee/HEAD/img/ssd1306_esp32c6.jpg -------------------------------------------------------------------------------- /img/Espressif_ESP32C6_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozolin/ESP32C6_Zigbee/HEAD/img/Espressif_ESP32C6_01.png -------------------------------------------------------------------------------- /img/Espressif_ESP32C6_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozolin/ESP32C6_Zigbee/HEAD/img/Espressif_ESP32C6_02.png -------------------------------------------------------------------------------- /img/Espressif_ESP32C6_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozolin/ESP32C6_Zigbee/HEAD/img/Espressif_ESP32C6_03.png -------------------------------------------------------------------------------- /img/Espressif_ESP32C6_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozolin/ESP32C6_Zigbee/HEAD/img/Espressif_ESP32C6_04.png -------------------------------------------------------------------------------- /img/Espressif_ESP32C6_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozolin/ESP32C6_Zigbee/HEAD/img/Espressif_ESP32C6_05.png -------------------------------------------------------------------------------- /img/Espressif_ESP32C6_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozolin/ESP32C6_Zigbee/HEAD/img/Espressif_ESP32C6_06.png -------------------------------------------------------------------------------- /img/Espressif_ESP32C6_07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozolin/ESP32C6_Zigbee/HEAD/img/Espressif_ESP32C6_07.png -------------------------------------------------------------------------------- /img/Espressif_ESP32C6_08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozolin/ESP32C6_Zigbee/HEAD/img/Espressif_ESP32C6_08.png -------------------------------------------------------------------------------- /img/z2m_06_MIKE.ESP32-C6_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozolin/ESP32C6_Zigbee/HEAD/img/z2m_06_MIKE.ESP32-C6_01.png -------------------------------------------------------------------------------- /img/z2m_07_MIKE.ESP32-C6_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozolin/ESP32C6_Zigbee/HEAD/img/z2m_07_MIKE.ESP32-C6_02.png -------------------------------------------------------------------------------- /img/z2m_08_MIKE.ESP32-C6_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozolin/ESP32C6_Zigbee/HEAD/img/z2m_08_MIKE.ESP32-C6_03.png -------------------------------------------------------------------------------- /img/z2m_09_MIKE.ESP32-C6_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mozolin/ESP32C6_Zigbee/HEAD/img/z2m_09_MIKE.ESP32-C6_04.png -------------------------------------------------------------------------------- /main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB_RECURSE app_sources ${CMAKE_SOURCE_DIR}/main/*.*) 2 | 3 | idf_component_register(SRCS ${app_sources}) -------------------------------------------------------------------------------- /components/bmx280/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | idf_component_register( 3 | SRCS bmx280.c 4 | INCLUDE_DIRS "include" 5 | REQUIRES driver 6 | ) 7 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "idf.adapterTargetName": "esp32c6", 3 | "idf.portWin": "COM5", 4 | "idf.flashType": "UART", 5 | "files.associations": { 6 | "esp_zigbee_zcl_common.h": "c" 7 | } 8 | } -------------------------------------------------------------------------------- /main/ds18b20_main.h: -------------------------------------------------------------------------------- 1 | 2 | #include "onewire_bus.h" 3 | #include "ds18b20.h" 4 | 5 | #define ONEWIRE_BUS_GPIO 4 6 | #define ONEWIRE_MAX_DS18B20 3 7 | #define TAG_DS18B20 "DS18B20" 8 | 9 | void ds18b20_init_task(); 10 | void ds18b20_show(); 11 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.16) 4 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 5 | project(esp32c6_zigbee) 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .cache 2 | compile_commands.json 3 | *.swp 4 | 5 | # ESP-IDF default build directory name 6 | build 7 | build/ 8 | build_*/ 9 | sdkconfig.old 10 | sdkconfig.defaults 11 | dependencies.lock 12 | managed_components 13 | __pycache__/ 14 | out/ 15 | _build/ 16 | 17 | pytest_embedded_log/ 18 | # VS Code Settings 19 | #.vscode/ 20 | 21 | # clangd set 22 | .clangd 23 | compile_commands.json 24 | .clang-format 25 | 26 | # pre-commit 27 | .pre-commit-config.yaml 28 | .metadata 29 | -------------------------------------------------------------------------------- /_chk_partitions/partitions_arduino.csv: -------------------------------------------------------------------------------- 1 | # Name, Type, SubType, Offset, Size, Flags 2 | nvs, data, nvs, 0x9000, 0x5000, 3 | otadata, data, ota, 0xe000, 0x2000, 4 | app0, app, ota_0, 0x10000, 0x280000, 5 | spiffs, data, spiffs, 0x290000, 0x15A000, 6 | zb_storage, data, fat, 0x3EA000, 0x4000, 7 | zb_fct, data, fat, 0x3EE000, 0x1000, 8 | rcp_fw, data, spiffs, 0x3EF000, 0x1000, 9 | coredump, data, coredump, 0x3F0000, 0x10000, 10 | -------------------------------------------------------------------------------- /main/idf_component.yml: -------------------------------------------------------------------------------- 1 | ## IDF Component Manager Manifest File 2 | dependencies: 3 | #espressif/bh1750: "^1.0.3" 4 | espressif/button: "^3.2.0" 5 | espressif/ds18b20: "^0.1.1" 6 | espressif/esp-zboss-lib: "~0.6.2" 7 | espressif/esp-zigbee-lib: "~0.9.5" 8 | espressif/led_strip: "^2.5.3" 9 | espressif/onewire_bus: "^1.0.1" 10 | espressif/ssd1306: "1.0.5" 11 | #espressif/esp-zboss-lib: "~0.6.0" 12 | #espressif/esp-zigbee-lib: "~0.9.3" 13 | ## Required IDF version 14 | idf: 15 | version: "~5.1.2" 16 | -------------------------------------------------------------------------------- /main/zigbee_image.h: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // File generated by LCD Assistant 3 | // http://en.radzio.dxp.pl/bitmap_converter/ 4 | //------------------------------------------------------------------------------ 5 | 6 | const unsigned char zigbee_image [] = { 7 | 0x07, 0xE0, 0x1F, 0xF8, 0x00, 0x0C, 0x3F, 0xC6, 0x7F, 0x82, 0xFF, 0x07, 0xFE, 0x0F, 0xFC, 0x1F, 8 | 0xF8, 0x3F, 0xF0, 0x7F, 0xE0, 0xFF, 0x41, 0xFE, 0x63, 0xF8, 0x38, 0x08, 0x1F, 0xF8, 0x07, 0xE0 9 | }; 10 | -------------------------------------------------------------------------------- /main/zigbee_connected.h: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // File generated by LCD Assistant 3 | // http://en.radzio.dxp.pl/bitmap_converter/ 4 | //------------------------------------------------------------------------------ 5 | 6 | const unsigned char zigbee_connected [] = { 7 | 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x1F, 0xF8, 0x7C, 0x3E, 0xF0, 0x0F, 0xC7, 0xE3, 0x0F, 0xF0, 8 | 0x1C, 0x38, 0x11, 0x88, 0x07, 0xE0, 0x06, 0x60, 0x04, 0x20, 0x01, 0x80, 0x01, 0x80, 0x00, 0x00 9 | }; 10 | -------------------------------------------------------------------------------- /main/zigbee_disconnected.h: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // File generated by LCD Assistant 3 | // http://en.radzio.dxp.pl/bitmap_converter/ 4 | //------------------------------------------------------------------------------ 5 | 6 | const unsigned char zigbee_disconnected [] = { 7 | 0x00, 0x00, 0x01, 0x80, 0x07, 0xE0, 0x1F, 0xF8, 0x7D, 0xBE, 0xF1, 0x8F, 0xC7, 0xE3, 0x0F, 0xF0, 8 | 0x1D, 0xB8, 0x11, 0x88, 0x07, 0xE0, 0x07, 0xE0, 0x04, 0x20, 0x01, 0x80, 0x01, 0x80, 0x00, 0x00 9 | }; 10 | -------------------------------------------------------------------------------- /partitions.csv: -------------------------------------------------------------------------------- 1 | # Name, Type, SubType, Offset, Size, Flags 2 | # Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap 3 | # CONFIG_PARTITION_TABLE_OFFSET=0x8000 (32K) + 0x1000 = 36K 4 | # 36K + 24K + 4K + 16K + 1K = 81K 5 | # 2000K - 81K = 1919K (/2 = 959.5K - for "factory" and "ota" apps) 6 | # => actually each of apps = !!! 900K !!! 7 | nvs, data, nvs, , 24K, 8 | phy_init, data, phy, , 4K, 9 | factory, app, factory, , 900K, 10 | zb_storage, data, fat, , 16K, 11 | zb_fct, data, fat, , 1K, 12 | ota_0, app, ota_0, , 900K, 13 | ota_1, app, ota_1, , 900K, 14 | -------------------------------------------------------------------------------- /.vscode/c_cpp_properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "configurations": [ 3 | { 4 | "name": "Windows", 5 | "cStandard": "c11", 6 | "cppStandard": "c++17", 7 | "includePath": [ 8 | "${config:idf.espIdfPath}/components/**", 9 | "${workspaceFolder}/**" 10 | ], 11 | "browse": { 12 | "path": [ 13 | "${config:idf.espIdfPath}/components" 14 | ], 15 | "limitSymbolsToIncludedHeaders": false 16 | }, 17 | "compileCommands": "${workspaceFolder}/build/compile_commands.json" 18 | } 19 | ], 20 | "version": 4 21 | } -------------------------------------------------------------------------------- /_chk_partitions/partitions.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /components/bmx280/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Halit Utku Maden 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /main/bh1750.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 pcbreflux. All Rights Reserved. 2 | * 3 | * This program is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, version 3. 6 | * 7 | * This program is distributed in the hope that it will be useful, but 8 | * WITHOUT ANY WARRANTY; without even the implied warranty of 9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 10 | * General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU General Public License 13 | * along with this program. If not, see . * 14 | */ 15 | #ifndef BH1750_H_ 16 | #define BH1750_H_ 17 | 18 | #include "bh1750.h" 19 | #define BH1750_ADDRESS1 0x23 20 | #define BH1750_ADDRESS2 0x5C 21 | #define BH1750_POWER_DOWN 0x00 22 | #define BH1750_POWER_ON 0x01 23 | #define BH1750_RESET 0x07 24 | #define BH1750_CONTINUOUS_HIGH_RES_MODE 0x10 25 | #define BH1750_CONTINUOUS_HIGH_RES_MODE_2 0x11 26 | #define BH1750_CONTINUOUS_LOW_RES_MODE 0x13 27 | #define BH1750_ONE_TIME_HIGH_RES_MODE 0x20 28 | #define BH1750_ONE_TIME_HIGH_RES_MODE_2 0x21 29 | #define BH1750_ONE_TIME_LOW_RES_MODE 0x23 30 | 31 | void bh1750_init(void); 32 | float bh1750_read(float *lVal, uint16_t *lRaw); 33 | void bh1750_deinit(void); 34 | 35 | #endif /* BH1750_H_ */ 36 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | URL: https://github.com/mozolin/esp32c6_zigbee 2 | 3 | # Example: BMX280 & DS18B20 & BH1750 sensors with ESP32-C6 (Espressif IDE) 4 | 5 | Zigbe2MQTT Settings: 6 | [Example: Zigbee2MQTT CC2538 settings for ESP32-C3, ESP32-C6 and CC2530](https://github.com/mozolin/Zigbee2MQTT_CC2538) 7 | 8 | # Make firmware for ESP32-C6 in Espressif IDE 9 | 10 | 1) The circuit might look like this 11 | ![](img/esp32c6_zigbee.png) 12 | 13 | 2) Install Espressif IDE (https://dl.espressif.com/dl/esp-idf/) 14 | 15 | 3) Open «Import» - «Existing IDF Project» 16 | ![](img/Espressif_01.png) 17 | 18 | 4) Choose the project folder 19 | ![](img/Espressif_02.png) 20 | 21 | 5) Set the correct COM-port to upload firmware 22 | ![](img/Espressif_ESP32C6_01.png) 23 | 24 | 6) Run the project (it will be built and uploaded into flash) 25 | ![](img/Espressif_ESP32C6_02.png) 26 | 27 | 7) The build and upload process can be viewed in the Console 28 | ![](img/Espressif_ESP32C6_03.png) 29 | ![](img/Espressif_ESP32C6_04.png) 30 | 31 | 8) Open the Terminal to view the software’s progress 32 | ![](img/Espressif_ESP32C6_05.png) 33 | 34 | 9) Set the correct COM-port for the Terminal 35 | ![](img/Espressif_ESP32C6_06.png) 36 | ![](img/Espressif_ESP32C6_07.png) 37 | 38 | 10) The Terminal connection can be disconnected at any time 39 | ![](img/Espressif_ESP32C6_08.png) 40 | 41 | ![](img/esp32c6_zigbee.jpg) 42 | ![](img/ssd1306_esp32c6.jpg) 43 | ![](img/ssd1306_zigbee.jpg) 44 | -------------------------------------------------------------------------------- /components/bmx280/README.md: -------------------------------------------------------------------------------- 1 | BMX280 for ESP-IDF 2 | ================== 3 | BMX280 is a basic I2C based driver for ESP32 devices licensed mostly under MIT. 4 | (See caption "License" for details.) 5 | 6 | Usage 7 | ----- 8 | Clone this repository or add it as a submodule into your components directory. 9 | Add the module as a requirement to your main module, or other modules. 10 | 11 | Example Code 12 | ------------ 13 | ```c 14 | #include "esp_log.h" 15 | #include "bmx280.h" 16 | 17 | void app_main(void) 18 | { 19 | // Entry Point 20 | //ESP_ERROR_CHECK(nvs_flash_init()); 21 | i2c_config_t i2c_cfg = { 22 | .mode = I2C_MODE_MASTER, 23 | .sda_io_num = GPIO_NUM_17, 24 | .scl_io_num = GPIO_NUM_16, 25 | .sda_pullup_en = false, 26 | .scl_pullup_en = false, 27 | 28 | .master = { 29 | .clk_speed = 100000 30 | } 31 | }; 32 | 33 | ESP_ERROR_CHECK(i2c_param_config(I2C_NUM_0, &i2c_cfg)); 34 | ESP_ERROR_CHECK(i2c_driver_install(I2C_NUM_0, I2C_MODE_MASTER, 0, 0, 0)); 35 | 36 | bmx280_t* bmx280 = bmx280_create(I2C_NUM_0); 37 | 38 | if (!bmx280) { 39 | ESP_LOGE("test", "Could not create bmx280 driver."); 40 | return; 41 | } 42 | 43 | ESP_ERROR_CHECK(bmx280_init(bmx280)); 44 | 45 | bmx280_config_t bmx_cfg = BMX280_DEFAULT_CONFIG; 46 | ESP_ERROR_CHECK(bmx280_configure(bmx280, &bmx_cfg)); 47 | 48 | while (1) 49 | { 50 | ESP_ERROR_CHECK(bmx280_setMode(bmx280, BMX280_MODE_FORCE)); 51 | do { 52 | vTaskDelay(pdMS_TO_TICKS(1)); 53 | } while(bmx280_isSampling(bmx280)); 54 | 55 | float temp = 0, pres = 0, hum = 0; 56 | ESP_ERROR_CHECK(bmx280_readoutFloat(bmx280, &temp, &pres, &hum)); 57 | 58 | ESP_LOGI("test", "Read Values: temp = %f, pres = %f, hum = %f", temp, pres, hum); 59 | } 60 | } 61 | ``` 62 | 63 | License 64 | ------- 65 | This repository contains a lot of code I have written which is licensed under 66 | MIT, however there are sections modified from the BME280 datasheet which is 67 | unclearly licensed. 68 | 69 | The unclearly licensed section is clearly marked with two comments. Any code 70 | between `// HERE BE DRAGONS` and `// END OF DRAGONS` contains modified versions 71 | of the Bosch Sensortec code. 72 | 73 | Please take note of this in production. -------------------------------------------------------------------------------- /main/ds18b20_main.c: -------------------------------------------------------------------------------- 1 | #include "onewire_bus.h" 2 | #include "ds18b20.h" 3 | 4 | #include "esp_log.h" 5 | #include "freertos/FreeRTOS.h" 6 | #include "freertos/task.h" 7 | #include "ds18b20_main.h" 8 | 9 | //extern float temp_ds18b20; 10 | float temp_ds18b20 = 0; 11 | float ds18b20_temperature_list[ONEWIRE_MAX_DS18B20]; 12 | int ds18b20_device_num = 0; 13 | ds18b20_device_handle_t ds18b20s[ONEWIRE_MAX_DS18B20]; 14 | 15 | 16 | void ds18b20_init_task() 17 | { 18 | //ESP_LOGI(TAG_DS18B20, "It starts..."); 19 | //-- install 1-wire bus 20 | onewire_bus_handle_t bus = NULL; 21 | onewire_bus_config_t bus_config = { 22 | .bus_gpio_num = ONEWIRE_BUS_GPIO, 23 | }; 24 | onewire_bus_rmt_config_t rmt_config = { 25 | //-- 1byte ROM command + 8byte ROM number + 1byte device command 26 | .max_rx_bytes = 10, 27 | }; 28 | ESP_ERROR_CHECK(onewire_new_bus_rmt(&bus_config, &rmt_config, &bus)); 29 | 30 | onewire_device_iter_handle_t iter = NULL; 31 | onewire_device_t next_onewire_device; 32 | esp_err_t search_result = ESP_OK; 33 | 34 | //-- create 1-wire device iterator, which is used for device search 35 | ESP_ERROR_CHECK(onewire_new_device_iter(bus, &iter)); 36 | //ESP_LOGI(TAG_DS18B20, "Device iterator created, start searching..."); 37 | do { 38 | search_result = onewire_device_iter_get_next(iter, &next_onewire_device); 39 | //-- found a new device, let's check if we can upgrade it to a DS18B20 40 | if(search_result == ESP_OK) { 41 | ds18b20_config_t ds_cfg = {}; 42 | //-- check if the device is a DS18B20, if so, return the ds18b20 handle 43 | if(ds18b20_new_device(&next_onewire_device, &ds_cfg, &ds18b20s[ds18b20_device_num]) == ESP_OK) { 44 | ESP_LOGI(TAG_DS18B20, "Found a DS18B20[%d], address: %016llX", ds18b20_device_num, next_onewire_device.address); 45 | ds18b20_device_num++; 46 | } else { 47 | ESP_LOGW(TAG_DS18B20, "Found an unknown device, address: %016llX", next_onewire_device.address); 48 | } 49 | } 50 | } while (search_result != ESP_ERR_NOT_FOUND); 51 | ESP_ERROR_CHECK(onewire_del_device_iter(iter)); 52 | ESP_LOGI(TAG_DS18B20, "Searching done, %d DS18B20 device(s) found", ds18b20_device_num); 53 | 54 | //vTaskDelay(5000 / portTICK_PERIOD_MS); 55 | vTaskDelete(NULL); 56 | } 57 | 58 | void ds18b20_show() 59 | { 60 | //ESP_LOGW(TAG_DS18B20, "Showing: %d DS18B20 device(s)", ds18b20_device_num); 61 | for(int i = 0; i < ds18b20_device_num; i ++) { 62 | //ESP_LOGW(TAG_DS18B20, "...1[%d]", i); 63 | //-- DS18B20_RESOLUTION_9B ... DS18B20_RESOLUTION_12B 64 | ESP_ERROR_CHECK(ds18b20_set_resolution(ds18b20s[i], DS18B20_RESOLUTION_9B)); 65 | 66 | ESP_ERROR_CHECK(ds18b20_trigger_temperature_conversion(ds18b20s[i])); 67 | //ESP_LOGW(TAG_DS18B20, "...2[%d]", i); 68 | ESP_ERROR_CHECK(ds18b20_get_temperature(ds18b20s[i], &temp_ds18b20)); 69 | //ESP_LOGW(TAG_DS18B20, "...3, Temperature read from DS18B20[%d]: %.2fC", i, temp_ds18b20); 70 | 71 | //-- make a list of DS18B20 temperature 72 | ds18b20_temperature_list[i] = temp_ds18b20; 73 | } 74 | //vTaskDelay(5000 / portTICK_PERIOD_MS); 75 | } 76 | -------------------------------------------------------------------------------- /main/esp32c6_zigbee.h: -------------------------------------------------------------------------------- 1 | #include "esp_zigbee_core.h" 2 | 3 | #define MANUFACTURER_NAME "Espressif Systems" 4 | #define MODEL_NAME "MIKE.ESP32-C6" 5 | #define FIRMWARE_VERSION "1.2.3" 6 | 7 | //-- the max amount of connected devices 8 | #define MAX_CHILDREN 10 9 | //-- enable the install code policy for security 10 | #define INSTALLCODE_POLICY_ENABLE false 11 | //-- main sensor endpoint 12 | #define BMX280_SENSOR_ENDPOINT 1 13 | //-- whether or not to use the BH1750 sensor at all 14 | #define USE_BH1750_SENSOR true 15 | //-- BH1750 sensor endpoint 16 | #define BH1750_SENSOR_ENDPOINT 5 17 | //-- whether or not to use a custom endpoint for the BH1750 sensor 18 | #define USE_BH1750_CUSTOM_ENDPOINT false 19 | //-- LED GPIO 20 | #define CONFIG_BLINK_GPIO 5 21 | #define BLINK_GPIO CONFIG_BLINK_GPIO 22 | /*********************************************************** 23 | 24 | Update attribute (refresh sensor?) interval in seconds 25 | 26 | DEPENDS ON "ONEWIRE_MAX_DS18B20" (ds18b20_main.h): 27 | If too many DS18B20 sensors are expected (are set), it 28 | may cause the zigbee task to fail! 29 | 30 | *************************************************************/ 31 | #define UPDATE_ATTR_INTERVAL 20 32 | //-- Zigbee primary channel mask use in the example 33 | #define ESP_ZB_PRIMARY_CHANNEL_MASK ESP_ZB_TRANSCEIVER_ALL_CHANNELS_MASK 34 | //-- The attribute indicates the file version of the downloaded image on the device 35 | #define OTA_UPGRADE_MANUFACTURER 0x1001 36 | //-- The attribute indicates the value for the manufacturer of the device 37 | #define OTA_UPGRADE_IMAGE_TYPE 0x1011 38 | //-- The attribute indicates the file version of the running firmware image on the device 39 | #define OTA_UPGRADE_FILE_VERSION 0x01010101 40 | //-- The parameter indicates the version of hardware 41 | #define OTA_UPGRADE_HW_VERSION 0x0101 42 | //-- The parameter indicates the maximum data size of query block image 43 | #define OTA_UPGRADE_MAX_DATA_SIZE 64 44 | 45 | 46 | #if !defined CONFIG_ZB_ZCZR 47 | #error Define ZB_ZCZR in idf.py menuconfig to compile light (Router) source code. 48 | #endif 49 | 50 | 51 | #define ESP_ZB_ZR_CONFIG() \ 52 | { \ 53 | .esp_zb_role = ESP_ZB_DEVICE_TYPE_ROUTER, \ 54 | .install_code_policy = INSTALLCODE_POLICY_ENABLE, \ 55 | .nwk_cfg.zczr_cfg = { \ 56 | .max_children = MAX_CHILDREN, \ 57 | }, \ 58 | } 59 | 60 | #define ESP_ZB_DEFAULT_RADIO_CONFIG() \ 61 | { \ 62 | .radio_mode = RADIO_MODE_NATIVE, \ 63 | } 64 | 65 | #define ESP_ZB_DEFAULT_HOST_CONFIG() \ 66 | { \ 67 | .host_connection_mode = HOST_CONNECTION_MODE_NONE, \ 68 | } 69 | -------------------------------------------------------------------------------- /main/zigbee_logo.h: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // File generated by LCD Assistant 3 | // http://en.radzio.dxp.pl/bitmap_converter/ 4 | //------------------------------------------------------------------------------ 5 | 6 | const unsigned char zigbee [] = { 7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 9 | 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 10 | 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 11 | 0x01, 0xFC, 0x7F, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 12 | 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 13 | 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 14 | 0x07, 0xFF, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 15 | 0x0F, 0xFF, 0xC0, 0x30, 0x01, 0xFF, 0xC7, 0x80, 0xF1, 0xC7, 0x8F, 0x00, 0x1F, 0x00, 0x0F, 0x00, 16 | 0x0F, 0xFF, 0x80, 0x70, 0x01, 0xFF, 0xE7, 0x83, 0xF9, 0xE7, 0xBF, 0x80, 0x7F, 0xC0, 0x3F, 0xE0, 17 | 0x1F, 0xFF, 0x00, 0xF8, 0x01, 0xFF, 0xE7, 0x87, 0xFF, 0xE7, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xF0, 18 | 0x1F, 0xFE, 0x01, 0xF8, 0x01, 0xFF, 0xE7, 0x8F, 0xFF, 0xE7, 0xFF, 0xE1, 0xFF, 0xF0, 0xFF, 0xF8, 19 | 0x1F, 0xFC, 0x03, 0xF8, 0x00, 0x07, 0xC7, 0x8F, 0x87, 0xE7, 0xC1, 0xF3, 0xE0, 0xF1, 0xF0, 0x78, 20 | 0x1F, 0xF8, 0x07, 0xF8, 0x00, 0x0F, 0x87, 0x9F, 0x03, 0xE7, 0x80, 0xF3, 0xC0, 0x79, 0xE0, 0x78, 21 | 0x1F, 0xF0, 0x0F, 0xF8, 0x00, 0x1F, 0x07, 0x9E, 0x03, 0xE7, 0x80, 0xF3, 0xC3, 0xF9, 0xC3, 0xFC, 22 | 0x1F, 0xE0, 0x1F, 0xF8, 0x00, 0x3E, 0x07, 0x9E, 0x01, 0xE7, 0x80, 0xF3, 0xDF, 0xFB, 0xDF, 0xF8, 23 | 0x1F, 0xC0, 0x3F, 0xF8, 0x00, 0x7C, 0x07, 0x9E, 0x01, 0xE7, 0x80, 0xF3, 0xFF, 0x83, 0xFF, 0xC0, 24 | 0x1F, 0x80, 0x7F, 0xF8, 0x00, 0xFC, 0x07, 0x9F, 0x03, 0xE7, 0x80, 0xF3, 0xFC, 0x01, 0xFE, 0x00, 25 | 0x1F, 0x00, 0xFF, 0xF8, 0x01, 0xF8, 0x07, 0x9F, 0x03, 0xE7, 0xC1, 0xF3, 0xE0, 0x41, 0xF0, 0x00, 26 | 0x1E, 0x01, 0xFF, 0xF0, 0x03, 0xF0, 0x07, 0x8F, 0x87, 0xE7, 0xE3, 0xE1, 0xF0, 0xE1, 0xF0, 0xE0, 27 | 0x0C, 0x03, 0xFF, 0xF0, 0x03, 0xFF, 0xE7, 0x8F, 0xFF, 0xE7, 0xFF, 0xE1, 0xFF, 0xF0, 0xFF, 0xF0, 28 | 0x0C, 0x07, 0xFF, 0xF0, 0x03, 0xFF, 0xE7, 0x87, 0xFD, 0xE7, 0xFF, 0xC0, 0xFF, 0xE0, 0x7F, 0xF0, 29 | 0x06, 0x0F, 0xFE, 0x00, 0x03, 0xFF, 0xE7, 0x83, 0xF9, 0xE7, 0x9F, 0x80, 0x3F, 0x80, 0x1F, 0xC0, 30 | 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 31 | 0x01, 0xF0, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 32 | 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 33 | 0x00, 0x7F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 34 | 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 35 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 36 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 37 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 38 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 39 | }; 40 | -------------------------------------------------------------------------------- /components/bmx280/include/bmx280.h: -------------------------------------------------------------------------------- 1 | /** 2 | * BMX280 - BME280 & BMP280 Driver for Esspressif ESP-32. 3 | * 4 | * MIT License 5 | * 6 | * Copyright (C) 2020 Halit Utku Maden 7 | * Please contact at 8 | */ 9 | 10 | #ifndef _BMX280_H_ 11 | #define _BMX280_H_ 12 | 13 | #ifdef __cplusplus 14 | extern "C" { 15 | #endif 16 | 17 | #include 18 | #include 19 | #include "driver/i2c.h" 20 | #include "sdkconfig.h" 21 | 22 | #define BMXAPI extern 23 | extern SemaphoreHandle_t i2c_semaphore; 24 | 25 | /** 26 | * Anonymous structure to driver settings. 27 | */ 28 | typedef struct bmx280_t bmx280_t; 29 | 30 | #include "bmx280_bits.h" 31 | 32 | /** 33 | * Create an instance of the BMX280 driver. 34 | * @param port The I2C port to use. 35 | * @return A non-null pointer to the driver structure on success. 36 | */ 37 | BMXAPI bmx280_t* bmx280_create(i2c_port_t port); 38 | /** 39 | * Destroy your the instance. 40 | * @param bmx280 The instance to destroy. 41 | */ 42 | BMXAPI void bmx280_close(bmx280_t* bmx280); 43 | 44 | /** 45 | * Probe for the sensor and read calibration data. 46 | * @param bmx280 Driver structure. 47 | */ 48 | BMXAPI esp_err_t bmx280_init(bmx280_t* bmx280); 49 | /** 50 | * Configure the sensor with the given parameters. 51 | * @param bmx280 Driver structure. 52 | * @param configuration The configuration to use. 53 | */ 54 | BMXAPI esp_err_t bmx280_configure(bmx280_t* bmx280, bmx280_config_t *cfg); 55 | 56 | /** 57 | * Set the sensor mode of operation. 58 | * @param bmx280 Driver structure. 59 | * @param mode The mode to set the sensor to. 60 | */ 61 | BMXAPI esp_err_t bmx280_setMode(bmx280_t* bmx280, bmx280_mode_t mode); 62 | /** 63 | * Get the sensor current mode of operation. 64 | * @param bmx280 Driver structure. 65 | * @param mode Pointer to write current mode to. 66 | */ 67 | BMXAPI esp_err_t bmx280_getMode(bmx280_t* bmx280, bmx280_mode_t* mode); 68 | 69 | /** 70 | * Returns true if sensor is currently sampling environment conditions. 71 | * @param bmx280 Driver structure. 72 | */ 73 | BMXAPI bool bmx280_isSampling(bmx280_t* bmx280); 74 | 75 | /** 76 | * Read sensor values as fixed point numbers. 77 | * @param bmx280 Driver structure. 78 | * @param temperature The temperature in C (0.01 degree C increments) 79 | * @param pressure The pressure in Pa (1/256 Pa increments) 80 | * @param humidity The humidity in %RH (1/1024 %RH increments) (UINT32_MAX when invlaid.) 81 | */ 82 | BMXAPI esp_err_t bmx280_readout(bmx280_t *bmx280, int32_t *temperature, uint32_t *pressure, uint32_t *humidity); 83 | 84 | /** 85 | * Convert sensor readout to floating point values. 86 | * @param tin Input temperature. 87 | * @param pin Input pressure. 88 | * @param hin Input humidity. 89 | * @param tout Output temperature. (C) 90 | * @param pout Output pressure. (Pa) 91 | * @param hout Output humidity. (%Rh) 92 | */ 93 | static inline void bmx280_readout2float(int32_t* tin, uint32_t *pin, uint32_t *hin, float *tout, float *pout, float *hout) 94 | { 95 | if (tin && tout) 96 | *tout = (float)*tin * 0.01f; 97 | if (pin && pout) 98 | *pout = (float)*pin * (1.0f/256.0f); 99 | if (hin && hout) 100 | *hout = (*hin == UINT32_MAX) ? -1.0f : (float)*hin * (1.0f/1024.0f); 101 | } 102 | 103 | /** 104 | * Read sensor values as floating point numbers. 105 | * @param bmx280 Driver structure. 106 | * @param temperature The temperature in C. 107 | * @param pressure The pressure in Pa. 108 | * @param humidity The humidity in %RH. 109 | */ 110 | static inline esp_err_t bmx280_readoutFloat(bmx280_t *bmx280, float* temperature, float* pressure, float* humidity) 111 | { 112 | int32_t t; uint32_t p, h; 113 | esp_err_t err = bmx280_readout(bmx280, &t, &p, &h); 114 | 115 | if (err == ESP_OK) 116 | { 117 | bmx280_readout2float(&t, &p, &h, temperature, pressure, humidity); 118 | } 119 | 120 | return err; 121 | } 122 | 123 | #ifdef __cplusplus 124 | }; 125 | #endif 126 | 127 | #endif 128 | -------------------------------------------------------------------------------- /components/bmx280/Kconfig: -------------------------------------------------------------------------------- 1 | menu "BMX280 Options" 2 | choice BMX280_EXPECT_DEVICE 3 | prompt "Installed Sensor Model" 4 | help 5 | Set to the model of the sensor you are using (if you know it). 6 | default BMX280_EXPECT_DETECT 7 | config BMX280_EXPECT_DETECT 8 | bool "Auto" 9 | config BMX280_EXPECT_BME280 10 | bool "BME280" 11 | config BMX280_EXPECT_BMP280 12 | bool "BMP280" 13 | endchoice 14 | 15 | choice BMX280_ADDRESS 16 | prompt "I2C Slave Address" 17 | help 18 | Set the slave address of the sensor if you know it. The driver can 19 | automatically detect it if you don't know. 20 | default BMX280_ADDRESS_DETECT 21 | config BMX280_ADDRESS_DETECT 22 | bool "Auto" 23 | config BMX280_ADDERSS_LO 24 | bool "0x76 (SDO LOW)" 25 | config BMX280_ADDERSS_HI 26 | bool "0x77 (SDO HIGH)" 27 | endchoice 28 | 29 | config BMX280_TIMEOUT 30 | int "Read/Write Timeout" 31 | default 5 32 | help 33 | Number of ticks to wait for I2C read/write operations. 34 | 35 | menu "Default Configuration" 36 | choice BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING 37 | prompt "Temperature Oversampling" 38 | default BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING_X2 39 | help 40 | Refer to BMP280/BME280 Datasheet for more information. 41 | config BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING_NONE 42 | bool "None" 43 | config BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING_X1 44 | bool "x1" 45 | config BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING_X2 46 | bool "x2" 47 | config BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING_X4 48 | bool "x4" 49 | config BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING_X8 50 | bool "x8" 51 | config BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING_X16 52 | bool "x16" 53 | endchoice 54 | 55 | choice BMX280_DEFAULT_PRESSURE_OVERSAMPLING 56 | prompt "Pressure Oversampling" 57 | default BMX280_DEFAULT_PRESSURE_OVERSAMPLING_X16 58 | help 59 | Refer to BMP280/BME280 Datasheet for more information. 60 | config BMX280_DEFAULT_PRESSURE_OVERSAMPLING_NONE 61 | bool "None" 62 | config BMX280_DEFAULT_PRESSURE_OVERSAMPLING_X1 63 | bool "x1" 64 | config BMX280_DEFAULT_PRESSURE_OVERSAMPLING_X2 65 | bool "x2" 66 | config BMX280_DEFAULT_PRESSURE_OVERSAMPLING_X4 67 | bool "x4" 68 | config BMX280_DEFAULT_PRESSURE_OVERSAMPLING_X8 69 | bool "x8" 70 | config BMX280_DEFAULT_PRESSURE_OVERSAMPLING_X16 71 | bool "x16" 72 | endchoice 73 | 74 | choice BMX280_DEFAULT_STANDBY 75 | prompt "Cyclic Measurement Standby Time" 76 | default BMX280_DEFAULT_STANDBY_0M5 77 | help 78 | Refer to BMP280/BME280 Datasheet for more information. 79 | config BMX280_DEFAULT_STANDBY_0M5 80 | bool "0.5ms" 81 | config BMX280_DEFAULT_STANDBY_62M5 82 | bool "62.5ms" 83 | config BMX280_DEFAULT_STANDBY_125M 84 | bool "125ms" 85 | config BMX280_DEFAULT_STANDBY_250M 86 | bool "250ms" 87 | config BMX280_DEFAULT_STANDBY_500M 88 | bool "500ms" 89 | config BMX280_DEFAULT_STANDBY_1000M 90 | bool "1000ms" 91 | config BMX280_DEFAULT_STANDBY_10M 92 | bool "BMP280: 2000ms // BME280: 10ms" 93 | config BMX280_DEFAULT_STANDBY_20M 94 | bool "BMP280: 4000ms // BME280: 20ms" 95 | endchoice 96 | 97 | choice BMX280_DEFAULT_IIR 98 | prompt "IIR Filter Sensitivity" 99 | default BMX280_DEFAULT_IIR_X16 100 | help 101 | Refer to BMP280/BME280 Datasheet for more information. 102 | config BMX280_DEFAULT_IIR_NONE 103 | bool "Filter Off" 104 | config BMX280_DEFAULT_IIR_X2 105 | bool "x2" 106 | config BMX280_DEFAULT_IIR_X4 107 | bool "x4" 108 | config BMX280_DEFAULT_IIR_X8 109 | bool "x8" 110 | config BMX280_DEFAULT_IIR_X16 111 | bool "x16" 112 | endchoice 113 | 114 | menu "BME280 Specific Options" 115 | depends on !(BMX280_EXPECT_BMP280) 116 | 117 | choice BMX280_DEFAULT_HUMIDITY_OVERSAMPLING 118 | prompt "Humidity Oversampling" 119 | default BMX280_DEFAULT_HUMIDITY_OVERSAMPLING_X1 120 | help 121 | Refer to BME280 Datasheet for more information. 122 | config BMX280_DEFAULT_HUMIDITY_OVERSAMPLING_NONE 123 | bool "None" 124 | config BMX280_DEFAULT_HUMIDITY_OVERSAMPLING_X1 125 | bool "x1" 126 | config BMX280_DEFAULT_HUMIDITY_OVERSAMPLING_X2 127 | bool "x2" 128 | config BMX280_DEFAULT_HUMIDITY_OVERSAMPLING_X4 129 | bool "x4" 130 | config BMX280_DEFAULT_HUMIDITY_OVERSAMPLING_X8 131 | bool "x8" 132 | config BMX280_DEFAULT_HUMIDITY_OVERSAMPLING_X16 133 | bool "x16" 134 | endchoice 135 | endmenu 136 | endmenu 137 | endmenu -------------------------------------------------------------------------------- /components/bmx280/include/bmx280_bits.h: -------------------------------------------------------------------------------- 1 | /** 2 | * BMX280 - BME280 & BMP280 Driver for Esspressif ESP-32. 3 | * 4 | * MIT License 5 | * 6 | * Copyright (C) 2020 Halit Utku Maden 7 | * Please contact at 8 | */ 9 | 10 | #ifndef _BMX280_DEFAULT_H_ 11 | #define _BMX280_DEFAULT_H_ 12 | #ifndef _BMX280_H_ 13 | #error Never include "bmx280_bits.h" by itself. Remove this reference and use "bmx280.h" instead. 14 | #endif 15 | 16 | typedef enum bmx280_tsmpl_t { 17 | BMX280_TEMPERATURE_OVERSAMPLING_NONE = 0x0, 18 | BMX280_TEMPERATURE_OVERSAMPLING_X1, 19 | BMX280_TEMPERATURE_OVERSAMPLING_X2, 20 | BMX280_TEMPERATURE_OVERSAMPLING_X4, 21 | BMX280_TEMPERATURE_OVERSAMPLING_X8, 22 | BMX280_TEMPERATURE_OVERSAMPLING_X16, 23 | } bmx280_tsmpl_t; 24 | 25 | typedef enum bmx280_psmpl_t { 26 | BMX280_PRESSURE_OVERSAMPLING_NONE = 0x0, 27 | BMX280_PRESSURE_OVERSAMPLING_X1, 28 | BMX280_PRESSURE_OVERSAMPLING_X2, 29 | BMX280_PRESSURE_OVERSAMPLING_X4, 30 | BMX280_PRESSURE_OVERSAMPLING_X8, 31 | BMX280_PRESSURE_OVERSAMPLING_X16, 32 | } bmx280_psmpl_t; 33 | 34 | #if !(CONFIG_BMX280_EXPECT_BMP280) 35 | typedef enum bme280_hsmpl_t { 36 | BMX280_HUMIDITY_OVERSAMPLING_NONE = 0x0, 37 | BMX280_HUMIDITY_OVERSAMPLING_X1, 38 | BMX280_HUMIDITY_OVERSAMPLING_X2, 39 | BMX280_HUMIDITY_OVERSAMPLING_X4, 40 | BMX280_HUMIDITY_OVERSAMPLING_X8, 41 | BMX280_HUMIDITY_OVERSAMPLING_X16, 42 | } bme280_hsmpl_t; 43 | #endif 44 | 45 | typedef enum bmx280_tstby_t { 46 | BMX280_STANDBY_0M5 = 0x0, 47 | BMX280_STANDBY_62M5, 48 | BMX280_STANDBY_125M, 49 | BMX280_STANDBY_250M, 50 | BMX280_STANDBY_500M, 51 | BMX280_STANDBY_1000M, 52 | BME280_STANDBY_10M, 53 | BME280_STANDBY_20M, 54 | BMP280_STANDBY_2000M = BME280_STANDBY_10M, 55 | BMP280_STANDBY_4000M = BME280_STANDBY_20M, 56 | } bmx280_tstby_t; 57 | 58 | typedef enum bmx280_iirf_t { 59 | BMX280_IIR_NONE = 0x0, 60 | BMX280_IIR_X1, 61 | BMX280_IIR_X2, 62 | BMX280_IIR_X4, 63 | BMX280_IIR_X8, 64 | BMX280_IIR_X16, 65 | } bmx280_iirf_t; 66 | 67 | typedef enum bmx280_mode_t { 68 | /** Sensor does no measurements. */ 69 | BMX280_MODE_SLEEP = 0, 70 | /** Sensor is in a forced measurement cycle. Sleeps after finishing. */ 71 | BMX280_MODE_FORCE = 1, 72 | /** Sensor does measurements. Never sleeps. */ 73 | BMX280_MODE_CYCLE = 3, 74 | } bmx280_mode_t; 75 | 76 | typedef struct bmx280_config_t { 77 | bmx280_tsmpl_t t_sampling; 78 | bmx280_psmpl_t p_sampling; 79 | bmx280_tstby_t t_standby; 80 | bmx280_iirf_t iir_filter; 81 | #if !(CONFIG_BMX280_EXPECT_BMP280) 82 | bme280_hsmpl_t h_sampling; 83 | #endif 84 | } bmx280_config_t; 85 | 86 | #if (CONFIG_BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING_NONE) 87 | #define BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING BMX280_TEMPERATURE_OVERSAMPLING_NONE 88 | #elif (CONFIG_BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING_X1) 89 | #define BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING BMX280_TEMPERATURE_OVERSAMPLING_X1 90 | #elif (CONFIG_BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING_X2) 91 | #define BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING BMX280_TEMPERATURE_OVERSAMPLING_X2 92 | #elif (CONFIG_BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING_X4) 93 | #define BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING BMX280_TEMPERATURE_OVERSAMPLING_X4 94 | #elif (CONFIG_BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING_X8) 95 | #define BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING BMX280_TEMPERATURE_OVERSAMPLING_X8 96 | #else 97 | #define BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING BMX280_TEMPERATURE_OVERSAMPLING_X16 98 | #endif 99 | 100 | #if CONFIG_BMX280_DEFAULT_PRESSURE_OVERSAMPLING_NONE 101 | #define BMX280_DEFAULT_PRESSURE_OVERSAMPLING BMX280_PRESSURE_OVERSAMPLING_NONE 102 | #elif CONFIG_BMX280_DEFAULT_PRESSURE_OVERSAMPLING_X1 103 | #define BMX280_DEFAULT_PRESSURE_OVERSAMPLING BMX280_PRESSURE_OVERSAMPLING_X1 104 | #elif CONFIG_BMX280_DEFAULT_PRESSURE_OVERSAMPLING_X2 105 | #define BMX280_DEFAULT_PRESSURE_OVERSAMPLING BMX280_PRESSURE_OVERSAMPLING_X2 106 | #elif CONFIG_BMX280_DEFAULT_PRESSURE_OVERSAMPLING_X4 107 | #define BMX280_DEFAULT_PRESSURE_OVERSAMPLING BMX280_PRESSURE_OVERSAMPLING_X4 108 | #elif CONFIG_BMX280_DEFAULT_PRESSURE_OVERSAMPLING_X8 109 | #define BMX280_DEFAULT_PRESSURE_OVERSAMPLING BMX280_PRESSURE_OVERSAMPLING_X8 110 | #else 111 | #define BMX280_DEFAULT_PRESSURE_OVERSAMPLING BMX280_PRESSURE_OVERSAMPLING_X16 112 | #endif 113 | 114 | #if (CONFIG_BMX280_DEFAULT_STANDBY_0M5) 115 | #define BMX280_DEFAULT_STANDBY BMX280_STANDBY_0M5 116 | #elif (CONFIG_BMX280_DEFAULT_STANDBY_62M5) 117 | #define BMX280_DEFAULT_STANDBY BMX280_STANDBY_62M5 118 | #elif (CONFIG_BMX280_DEFAULT_STANDBY_125M) 119 | #define BMX280_DEFAULT_STANDBY BMX280_STANDBY_125M 120 | #elif (CONFIG_BMX280_DEFAULT_STANDBY_250M) 121 | #define BMX280_DEFAULT_STANDBY BMX280_STANDBY_250M 122 | #elif (CONFIG_BMX280_DEFAULT_STANDBY_500M) 123 | #define BMX280_DEFAULT_STANDBY BMX280_STANDBY_500M 124 | #elif (CONFIG_BMX280_DEFAULT_STANDBY_1000M) 125 | #define BMX280_DEFAULT_STANDBY BMX280_STANDBY_1000M 126 | #elif (CONFIG_BMX280_DEFAULT_STANDBY_10M) 127 | #define BMX280_DEFAULT_STANDBY BME280_STANDBY_10M 128 | #else 129 | #define BMX280_DEFAULT_STANDBY BMX280_STANDBY_20M 130 | #endif 131 | 132 | #if (CONFIG_BMX280_DEFAULT_IIR_NONE) 133 | #define BMX280_DEFAULT_IIR BMX280_IIR_NONE 134 | #elif (CONFIG_BMX280_DEFAULT_IIR_X2) 135 | #define BMX280_DEFAULT_IIR BMX280_IIR_X2 136 | #elif (CONFIG_BMX280_DEFAULT_IIR_X4) 137 | #define BMX280_DEFAULT_IIR BMX280_IIR_X4 138 | #elif (CONFIG_BMX280_DEFAULT_IIR_X8) 139 | #define BMX280_DEFAULT_IIR BMX280_IIR_X8 140 | #else 141 | #define BMX280_DEFAULT_IIR BMX280_IIR_X16 142 | #endif 143 | 144 | #ifndef CONFIG_BMX280_EXPECT_BMP280 145 | #if (CONFIG_BMX280_DEFAULT_HUMIDITY_OVERSAMPLING_NONE) 146 | #define BMX280_DEFAULT_HUMIDITY_OVERSAMPLING BMX280_HUMIDITY_OVERSAMPLING_NONE 147 | #elif (CONFIG_BMX280_DEFAULT_HUMIDITY_OVERSAMPLING_X1) 148 | #define BMX280_DEFAULT_HUMIDITY_OVERSAMPLING BMX280_HUMIDITY_OVERSAMPLING_X1 149 | #elif (CONFIG_BMX280_DEFAULT_HUMIDITY_OVERSAMPLING_X2) 150 | #define BMX280_DEFAULT_HUMIDITY_OVERSAMPLING BMX280_HUMIDITY_OVERSAMPLING_X2 151 | #elif (CONFIG_BMX280_DEFAULT_HUMIDITY_OVERSAMPLING_X4) 152 | #define BMX280_DEFAULT_HUMIDITY_OVERSAMPLING BMX280_HUMIDITY_OVERSAMPLING_X4 153 | #elif (CONFIG_BMX280_DEFAULT_HUMIDITY_OVERSAMPLING_X8) 154 | #define BMX280_DEFAULT_HUMIDITY_OVERSAMPLING BMX280_HUMIDITY_OVERSAMPLING_X8 155 | #else 156 | #define BMX280_DEFAULT_HUMIDITY_OVERSAMPLING BMX280_HUMIDITY_OVERSAMPLING_X16 157 | #endif 158 | #endif 159 | 160 | #if !(CONFIG_BMX280_EXPECT_BMP280) 161 | #define BMX280_DEFAULT_CONFIG ((bmx280_config_t) { BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING, BMX280_DEFAULT_PRESSURE_OVERSAMPLING, BMX280_DEFAULT_STANDBY, BMX280_DEFAULT_IIR, BMX280_DEFAULT_HUMIDITY_OVERSAMPLING }) 162 | #else 163 | #define BMX280_DEFAULT_CONFIG ((bmx280_config_t) { BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING, BMX280_DEFAULT_PRESSURE_OVERSAMPLING, BMX280_DEFAULT_STANDBY, BMX280_DEFAULT_IIR}) 164 | #endif 165 | 166 | #endif 167 | -------------------------------------------------------------------------------- /main/bh1750.c: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 pcbreflux. All Rights Reserved. 2 | * 3 | * This program is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, version 3. 6 | * 7 | * This program is distributed in the hope that it will be useful, but 8 | * WITHOUT ANY WARRANTY; without even the implied warranty of 9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 10 | * General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU General Public License 13 | * along with this program. If not, see . * 14 | */ 15 | #include 16 | #include 17 | 18 | #include "sdkconfig.h" 19 | #include "esp_log.h" 20 | #include "driver/i2c.h" 21 | 22 | #include "freertos/FreeRTOS.h" 23 | #include "freertos/task.h" 24 | 25 | #include "bh1750.h" 26 | 27 | static const char *TAG_BH1750 = "BH1750"; 28 | 29 | #define I2C_ADDR BH1750_ADDRESS1 30 | #define BH1750_MODE BH1750_CONTINUOUS_HIGH_RES_MODE 31 | 32 | //#define PIN_SDA 21 33 | //#define PIN_SCL 22 34 | //#define I2C_MASTER_NUM I2C_NUM_1 /*!< I2C port number for master dev */ 35 | #define PIN_SDA 6 36 | #define PIN_SCL 7 37 | #define I2C_MASTER_NUM 0 /*!< I2C port number for master dev */ 38 | #define I2C_MASTER_TX_BUF_DISABLE 0 /*!< I2C master do not need buffer */ 39 | #define I2C_MASTER_RX_BUF_DISABLE 0 /*!< I2C master do not need buffer */ 40 | #define I2C_MASTER_FREQ_HZ 10000 /*!< I2C master clock frequency */ 41 | #define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave*/ 42 | #define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */ 43 | #define ACK_VAL 0x0 /*!< I2C ack value */ 44 | #define NACK_VAL 0x1 /*!< I2C nack value */ 45 | 46 | int bh1750_I2C_write(uint8_t dev_addr, uint8_t reg_addr, uint8_t *reg_data, uint8_t cnt); 47 | int bh1750_I2C_read(uint8_t dev_addr, uint8_t reg_addr, uint8_t *reg_data, uint8_t cnt); 48 | 49 | void bh1750_reset(void) 50 | { 51 | ESP_LOGE(TAG_BH1750, "reset"); 52 | bh1750_I2C_write(I2C_ADDR, BH1750_POWER_ON, NULL, 0); 53 | bh1750_I2C_write(I2C_ADDR, BH1750_RESET, NULL, 0); 54 | //-- sleep 10ms 55 | vTaskDelay(10 / portTICK_PERIOD_MS); 56 | } 57 | 58 | //float bh1750_read(void) 59 | float bh1750_read(float *arrLuxVal, uint16_t *arrLuxRaw) 60 | { 61 | uint8_t buf[32]; 62 | uint8_t mode = BH1750_MODE; 63 | uint8_t sleepms = 1; 64 | uint8_t resdiv = 1; 65 | float luxVal = 0; 66 | int ret = -1; 67 | 68 | switch (mode) { 69 | case BH1750_CONTINUOUS_HIGH_RES_MODE: 70 | break; 71 | case BH1750_ONE_TIME_HIGH_RES_MODE: 72 | sleepms = 180; 73 | break; 74 | case BH1750_CONTINUOUS_HIGH_RES_MODE_2: 75 | break; 76 | case BH1750_ONE_TIME_HIGH_RES_MODE_2: 77 | sleepms = 180; 78 | resdiv = 2; 79 | break; 80 | case BH1750_CONTINUOUS_LOW_RES_MODE: 81 | sleepms = 24; 82 | break; 83 | case BH1750_ONE_TIME_LOW_RES_MODE: 84 | sleepms = 50; 85 | break; 86 | } 87 | 88 | ret = bh1750_I2C_write(I2C_ADDR, mode, NULL, 0); 89 | if(ret != ESP_OK) { 90 | ESP_LOGW(TAG_BH1750, "BH1750 Reset-1"); 91 | bh1750_reset(); 92 | return -1; 93 | } 94 | 95 | vTaskDelay(sleepms / portTICK_PERIOD_MS); // sleep ms 96 | ret = bh1750_I2C_read(I2C_ADDR, 0xFF, buf, 2); 97 | if(ret != ESP_OK) { 98 | ESP_LOGW(TAG_BH1750, "BH1750 Reset-2"); 99 | bh1750_reset(); 100 | return 0; 101 | } 102 | uint16_t luxRaw = (uint16_t)(((uint16_t)(buf[0]<<8))|((uint16_t)buf[1])); 103 | luxVal = (float)luxRaw/1.2/resdiv; 104 | //ESP_LOGI(TAG_BH1750, "sensraw=%u | lux=%f | resdiv=%d", luxRaw, luxVal, resdiv); 105 | 106 | //-- variables to be returned 107 | arrLuxVal[0] = luxVal; 108 | arrLuxRaw[0] = luxRaw; 109 | 110 | return luxVal; 111 | } 112 | 113 | void bh1750_init(void) 114 | { 115 | i2c_config_t conf; 116 | conf.mode = I2C_MODE_MASTER; 117 | ESP_LOGI(TAG_BH1750, "sda_io_num %d", PIN_SDA); 118 | conf.sda_io_num = PIN_SDA; 119 | conf.sda_pullup_en = GPIO_PULLUP_ENABLE; 120 | ESP_LOGI(TAG_BH1750, "scl_io_num %d", PIN_SCL); 121 | conf.scl_io_num = PIN_SCL; 122 | conf.scl_pullup_en = GPIO_PULLUP_ENABLE; 123 | ESP_LOGI(TAG_BH1750, "clk_speed %d", I2C_MASTER_FREQ_HZ); 124 | conf.master.clk_speed = I2C_MASTER_FREQ_HZ; 125 | ESP_LOGI(TAG_BH1750, "i2c_param_config %d", conf.mode); 126 | ESP_ERROR_CHECK(i2c_param_config(I2C_MASTER_NUM, &conf)); 127 | ESP_LOGI(TAG_BH1750, "i2c_driver_install %d", I2C_MASTER_NUM); 128 | ESP_ERROR_CHECK(i2c_driver_install(I2C_MASTER_NUM, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0)); 129 | } 130 | 131 | void bh1750_deinit(void) 132 | { 133 | ESP_LOGI(TAG_BH1750, "i2c_driver_delete"); 134 | ESP_ERROR_CHECK(i2c_driver_delete(I2C_MASTER_NUM)); 135 | } 136 | 137 | /* \Brief: The function is used as I2C bus read 138 | * \Return : Status of the I2C read 139 | * \param dev_addr : The device address of the sensor 140 | * \param reg_addr : Address of the first register, will data is going to be read 141 | * \param reg_data : This data read from the sensor, which is hold in an array 142 | * \param cnt : The no of data byte of to be read 143 | */ 144 | int bh1750_I2C_write(uint8_t dev_addr, uint8_t reg_addr, uint8_t *reg_data, uint8_t cnt) 145 | { 146 | int ret = 0; 147 | 148 | ESP_LOGD(TAG_BH1750, "bh1750_I2C_write I2CAddress 0x%02X len %d reg 0x%02X", dev_addr,cnt,reg_addr); 149 | if(cnt>0 && reg_data != NULL && LOG_LOCAL_LEVEL >= ESP_LOG_DEBUG) { 150 | for(int pos = 0; pos < cnt; pos++) { 151 | printf("0x%02X ",*(reg_data + pos)); 152 | } 153 | printf("\n"); 154 | } 155 | i2c_cmd_handle_t cmd = i2c_cmd_link_create(); 156 | i2c_master_start(cmd); 157 | i2c_master_write_byte(cmd, dev_addr<<1| I2C_MASTER_WRITE, ACK_CHECK_EN); 158 | i2c_master_write_byte(cmd, reg_addr, ACK_CHECK_EN); 159 | if(cnt>0 && reg_data != NULL) { 160 | i2c_master_write(cmd, reg_data, cnt, ACK_CHECK_EN); 161 | } 162 | i2c_master_stop(cmd); 163 | ret = i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, 1000 / portTICK_PERIOD_MS); 164 | i2c_cmd_link_delete(cmd); 165 | if(ret != ESP_OK) { 166 | ESP_LOGE(TAG_BH1750, "bh1750_I2C_write write data fail I2CAddress 0x%02X len %d reg 0x%02X", dev_addr,cnt,reg_addr); 167 | } 168 | 169 | return ret; 170 | } 171 | 172 | /* \Brief: The function is used as I2C bus read 173 | * \Return : Status of the I2C read 174 | * \param dev_addr : The device address of the sensor 175 | * \param reg_addr : Address of the first register, will data is going to be read 176 | * \param reg_data : This data read from the sensor, which is hold in an array 177 | * \param cnt : The no of data byte of to be read 178 | */ 179 | int bh1750_I2C_read(uint8_t dev_addr, uint8_t reg_addr, uint8_t *reg_data, uint8_t cnt) 180 | { 181 | int ret = 0; 182 | int pos; 183 | i2c_cmd_handle_t cmd; 184 | 185 | ESP_LOGD(TAG_BH1750, "bh1750_I2C_read I2CAddress 0x%02X len %d reg 0x%02X", dev_addr,cnt,reg_addr); 186 | 187 | if(reg_addr!=0xFF) { 188 | cmd = i2c_cmd_link_create(); 189 | i2c_master_start(cmd); 190 | i2c_master_write_byte(cmd, dev_addr<<1| I2C_MASTER_WRITE, ACK_CHECK_EN); 191 | i2c_master_write_byte(cmd, reg_addr, ACK_CHECK_EN); 192 | i2c_master_stop(cmd); 193 | ret = i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, 1000 / portTICK_PERIOD_MS); 194 | i2c_cmd_link_delete(cmd); 195 | if(ret != ESP_OK) { 196 | ESP_LOGE(TAG_BH1750, "bh1750_I2C_read write reg fail %d",ret); 197 | return ret; 198 | } 199 | } 200 | 201 | cmd = i2c_cmd_link_create(); 202 | i2c_master_start(cmd); 203 | i2c_master_write_byte(cmd, dev_addr<<1| I2C_MASTER_READ, ACK_CHECK_EN); 204 | for(pos = 0; pos < (cnt-1); pos++) { 205 | i2c_master_read_byte(cmd, reg_data + pos, ACK_VAL); 206 | } 207 | i2c_master_read_byte(cmd, reg_data + cnt -1, NACK_VAL); 208 | i2c_master_stop(cmd); 209 | ret = i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, 1000 / portTICK_PERIOD_MS); 210 | i2c_cmd_link_delete(cmd); 211 | if(ret != ESP_OK) { 212 | ESP_LOGE(TAG_BH1750, "bh1750_I2C_read read data fail %d",ret); 213 | return ret; 214 | } 215 | if(LOG_LOCAL_LEVEL >= ESP_LOG_DEBUG) { 216 | for(pos = 0; pos < cnt; pos++) { 217 | printf("0x%02X ",*(reg_data + pos)); 218 | } 219 | printf("\n"); 220 | } 221 | 222 | return ret; 223 | } 224 | -------------------------------------------------------------------------------- /components/bmx280/bmx280.c: -------------------------------------------------------------------------------- 1 | /** 2 | * BMX280 - BME280 & BMP280 Driver for Esspressif ESP-32. 3 | * 4 | * MIT License 5 | * 6 | * Copyright (C) 2020 Halit Utku Maden 7 | * Please contact at 8 | */ 9 | 10 | // LEGAL NOTE: 11 | // Any code between below the caption "// HERE BE DRAGONS" and above the caption 12 | // "// END OF DRAGONS" contains modified versions of code owned by Bosch 13 | // Sensortec GmbH and it is not clearly licensed, therefore this code is not 14 | // covered by the MIT of this repository. Use at your own risk. 15 | 16 | #include "bmx280.h" 17 | #include "esp_log.h" 18 | 19 | #include 20 | #include 21 | #include 22 | 23 | // [BME280] Register address of humidity least significant byte. 24 | #define BMX280_REG_HUMI_LSB 0xFE 25 | // [BME280] Register address of humidity most significant byte. 26 | #define BMX280_REG_HUMI_MSB 0xFD 27 | 28 | // Register address of temperature fraction significant byte. 29 | #define BMX280_REG_TEMP_XSB 0xFC 30 | // Register address of temperature least significant byte. 31 | #define BMX280_REG_TEMP_LSB 0xFB 32 | // Register address of temperature most significant byte. 33 | #define BMX280_REG_TEMP_MSB 0xFA 34 | 35 | // Register address of pressure fraction significant byte. 36 | #define BMX280_REG_PRES_XSB 0xF9 37 | // Register address of pressure least significant byte. 38 | #define BMX280_REG_PRES_LSB 0xF8 39 | // Register address of pressure most significant byte. 40 | #define BMX280_REG_PRES_MSB 0xF7 41 | 42 | // Register address of sensor configuration. 43 | #define BMX280_REG_CONFIG 0xF5 44 | // Register address of sensor measurement control. 45 | #define BMX280_REG_MESCTL 0xF4 46 | // Register address of sensor status. 47 | #define BMX280_REG_STATUS 0xF3 48 | // [BME280] Register address of humidity control. 49 | #define BMX280_REG_HUMCTL 0xF2 50 | 51 | // [BME280] Register address of calibration constants. (high bank) 52 | #define BMX280_REG_CAL_HI 0xE1 53 | // Register address of calibration constants. (low bank) 54 | #define BMX280_REG_CAL_LO 0x88 55 | 56 | // Register address for sensor reset. 57 | #define BMX280_REG_RESET 0xE0 58 | // Chip reset vector. 59 | #define BMX280_RESET_VEC 0xB6 60 | 61 | // Register address for chip identification number. 62 | #define BMX280_REG_CHPID 0xD0 63 | // Value of REG_CHPID for BME280 64 | #define BME280_ID 0x60 65 | // Value of REG_CHPID for BMP280 (Engineering Sample 1) 66 | #define BMP280_ID0 0x56 67 | // Value of REG_CHPID for BMP280 (Engineering Sample 2) 68 | #define BMP280_ID1 0x57 69 | // Value of REG_CHPID for BMP280 (Production) 70 | #define BMP280_ID2 0x58 71 | 72 | struct bmx280_t{ 73 | // I2C port. 74 | i2c_port_t i2c_port; 75 | // Slave Address of sensor. 76 | uint8_t slave; 77 | // Chip ID of sensor 78 | uint8_t chip_id; 79 | // Compensation data 80 | struct { 81 | uint16_t T1; 82 | int16_t T2; 83 | int16_t T3; 84 | uint16_t P1; 85 | int16_t P2; 86 | int16_t P3; 87 | int16_t P4; 88 | int16_t P5; 89 | int16_t P6; 90 | int16_t P7; 91 | int16_t P8; 92 | int16_t P9; 93 | #if !(CONFIG_BMX280_EXPECT_BMP280) 94 | uint8_t H1; 95 | int16_t H2; 96 | uint8_t H3; 97 | int16_t H4; 98 | int16_t H5; 99 | int8_t H6; 100 | #endif 101 | } cmps; 102 | // Storage for a variable proportional to temperature. 103 | int32_t t_fine; 104 | }; 105 | 106 | /** 107 | * Macro that identifies a chip id as BME280 or BMP280 108 | * @note Only use when the chip is verified to be either a BME280 or BMP280. 109 | * @see bmx280_verify 110 | * @param chip_id The chip id. 111 | */ 112 | #define bmx280_isBME(chip_id) ((chip_id) == BME280_ID) 113 | /** 114 | * Macro to verify a the chip id matches with the expected values. 115 | * @note Use when the chip needs to be verified as a BME280 or BME280. 116 | * @see bmx280_isBME 117 | * @param chip_id The chip id. 118 | */ 119 | #define bmx280_verify(chip_id) (((chip_id) == BME280_ID) || ((chip_id) == BMP280_ID2) || ((chip_id) == BMP280_ID1) || ((chip_id) == BMP280_ID0)) 120 | 121 | /** 122 | * Returns false if the sensor was not found. 123 | * @param bmx280 The driver structure. 124 | */ 125 | #define bmx280_validate(bmx280) (!(bmx280->slave == 0xDE && bmx280->chip_id == 0xAD)) 126 | 127 | /** 128 | * Read from sensor. 129 | * @param bmx280 Driver Sturcture. 130 | * @param addr Register address. 131 | * @param dout Data to read. 132 | * @param size The number of bytes to read. 133 | * @returns Error codes. 134 | */ 135 | static esp_err_t bmx280_read(bmx280_t *bmx280, uint8_t addr, uint8_t *dout, size_t size) 136 | { 137 | esp_err_t err; 138 | i2c_cmd_handle_t cmd = i2c_cmd_link_create(); 139 | if (cmd) 140 | { 141 | // Write register address 142 | i2c_master_start(cmd); 143 | i2c_master_write_byte(cmd, bmx280->slave | I2C_MASTER_WRITE, true); 144 | i2c_master_write_byte(cmd, addr, true); 145 | 146 | // Read Registers 147 | i2c_master_start(cmd); 148 | i2c_master_write_byte(cmd, bmx280->slave | I2C_MASTER_READ, true); 149 | i2c_master_read(cmd, dout, size, I2C_MASTER_LAST_NACK); 150 | i2c_master_stop(cmd); 151 | 152 | xSemaphoreTake(i2c_semaphore, portMAX_DELAY); 153 | err = i2c_master_cmd_begin(bmx280->i2c_port, cmd, CONFIG_BMX280_TIMEOUT); 154 | xSemaphoreGive(i2c_semaphore); 155 | i2c_cmd_link_delete(cmd); 156 | return err; 157 | } 158 | else 159 | { 160 | return ESP_ERR_NO_MEM; 161 | } 162 | } 163 | 164 | static esp_err_t bmx280_write(bmx280_t* bmx280, uint8_t addr, const uint8_t *din, size_t size) 165 | { 166 | esp_err_t err; 167 | i2c_cmd_handle_t cmd = i2c_cmd_link_create(); 168 | if (cmd) 169 | { 170 | for (int i = 0; i < size; i++) 171 | { 172 | i2c_master_start(cmd); 173 | i2c_master_write_byte(cmd, bmx280->slave | I2C_MASTER_WRITE, true); 174 | // Register 175 | i2c_master_write_byte(cmd, addr + i, true); 176 | //Data 177 | i2c_master_write_byte(cmd, din[i], true); 178 | } 179 | i2c_master_stop(cmd); 180 | 181 | xSemaphoreTake(i2c_semaphore, portMAX_DELAY); 182 | err = i2c_master_cmd_begin(bmx280->i2c_port, cmd, CONFIG_BMX280_TIMEOUT); 183 | xSemaphoreGive(i2c_semaphore); 184 | i2c_cmd_link_delete(cmd); 185 | return err; 186 | } 187 | else 188 | { 189 | return ESP_ERR_NO_MEM; 190 | } 191 | } 192 | 193 | static esp_err_t bmx280_probe_address(bmx280_t *bmx280) 194 | { 195 | esp_err_t err = bmx280_read(bmx280, BMX280_REG_CHPID, &bmx280->chip_id, sizeof bmx280->chip_id); 196 | 197 | if (err == ESP_OK) 198 | { 199 | if ( 200 | #if CONFIG_BMX280_EXPECT_BME280 201 | bmx280->chip_id == BME280_ID 202 | #elif CONFIG_BMX280_EXPECT_BMP280 203 | bmx280->chip_id == BMP280_ID2 || bmx280->chip_id == BMP280_ID1 || bmx280->chip_id == BMP280_ID0 204 | #else 205 | bmx280_verify(bmx280->chip_id) 206 | #endif 207 | ) 208 | { 209 | ESP_LOGI("bmx280", "Probe success: address=%hhx, id=%hhx", bmx280->slave, bmx280->chip_id); 210 | return ESP_OK; 211 | } 212 | else 213 | { 214 | err = ESP_ERR_NOT_FOUND; 215 | } 216 | } 217 | 218 | ESP_LOGW("bmx280", "Probe failure: address=%hhx, id=%hhx, reason=%s", bmx280->slave, bmx280->chip_id, esp_err_to_name(err)); 219 | return err; 220 | } 221 | 222 | static esp_err_t bmx280_probe(bmx280_t *bmx280) 223 | { 224 | ESP_LOGI("bmx280", "Probing for BMP280/BME280 sensors on I2C %d", bmx280->i2c_port); 225 | 226 | #if CONFIG_BMX280_ADDRESS_HI 227 | bmx280->slave = 0xEE; 228 | return bmx280_probe_address(bmx280); 229 | #elif CONFIG_BMX280_ADDRESS_LO 230 | bmx280->slave = 0xEC; 231 | return bmx280_probe_address(bmx280); 232 | #else 233 | esp_err_t err; 234 | bmx280->slave = 0xEC; 235 | if ((err = bmx280_probe_address(bmx280)) != ESP_OK) 236 | { 237 | bmx280->slave = 0xEE; 238 | if ((err = bmx280_probe_address(bmx280)) != ESP_OK) 239 | { 240 | ESP_LOGE("bmx280", "Sensor not found."); 241 | bmx280->slave = 0xDE; 242 | bmx280->chip_id = 0xAD; 243 | } 244 | } 245 | return err; 246 | #endif 247 | } 248 | 249 | static esp_err_t bmx280_reset(bmx280_t *bmx280) 250 | { 251 | const static uint8_t din[] = { BMX280_RESET_VEC }; 252 | return bmx280_write(bmx280, BMX280_REG_RESET, din, sizeof din); 253 | } 254 | 255 | static esp_err_t bmx280_calibrate(bmx280_t *bmx280) 256 | { 257 | // Honestly, the best course of action is to read the high and low banks 258 | // into a buffer, then put them in the calibration values. Makes code 259 | // endian agnostic, and overcomes struct packing issues. 260 | // Also the BME280 high bank is weird. 261 | // 262 | // Write and pray to optimizations is my new motto. 263 | 264 | ESP_LOGI("bmx280", "Reading out calibration values..."); 265 | 266 | esp_err_t err; 267 | uint8_t buf[26]; 268 | 269 | // Low Bank 270 | err = bmx280_read(bmx280, BMX280_REG_CAL_LO, buf, sizeof buf); 271 | 272 | if (err != ESP_OK) return err; 273 | 274 | ESP_LOGI("bmx280", "Read Low Bank."); 275 | 276 | bmx280->cmps.T1 = buf[0] | (buf[1] << 8); 277 | bmx280->cmps.T2 = buf[2] | (buf[3] << 8); 278 | bmx280->cmps.T3 = buf[4] | (buf[5] << 8); 279 | bmx280->cmps.P1 = buf[6] | (buf[7] << 8); 280 | bmx280->cmps.P2 = buf[8] | (buf[9] << 8); 281 | bmx280->cmps.P3 = buf[10] | (buf[11] << 8); 282 | bmx280->cmps.P4 = buf[12] | (buf[13] << 8); 283 | bmx280->cmps.P5 = buf[14] | (buf[15] << 8); 284 | bmx280->cmps.P6 = buf[16] | (buf[17] << 8); 285 | bmx280->cmps.P7 = buf[18] | (buf[19] << 8); 286 | bmx280->cmps.P8 = buf[20] | (buf[21] << 8); 287 | bmx280->cmps.P9 = buf[22] | (buf[23] << 8); 288 | 289 | #if !(CONFIG_BMX280_EXPECT_BMP280) 290 | 291 | #if CONFIG_BMX280_EXPECT_DETECT 292 | if (bmx280_isBME(bmx280->chip_id)) // Only conditional for detect scenario. 293 | #endif 294 | { 295 | // First get H1 out of the way. 296 | bmx280->cmps.H1 = buf[23]; 297 | 298 | err = bmx280_read(bmx280, BMX280_REG_CAL_HI, buf, 7); 299 | 300 | if (err != ESP_OK) return err; 301 | 302 | ESP_LOGI("bmx280", "Read High Bank."); 303 | 304 | bmx280->cmps.H2 = buf[0] | (buf[1] << 8); 305 | bmx280->cmps.H3 = buf[2]; 306 | bmx280->cmps.H4 = (buf[3] << 4) | (buf[4] & 0x0F); 307 | bmx280->cmps.H5 = (buf[4] >> 4) | (buf[5] << 4); 308 | bmx280->cmps.H6 = buf[6]; 309 | } 310 | 311 | #endif 312 | 313 | return ESP_OK; 314 | } 315 | 316 | bmx280_t* bmx280_create(i2c_port_t port) 317 | { 318 | bmx280_t* bmx280 = malloc(sizeof(bmx280_t)); 319 | if (bmx280) 320 | { 321 | memset(bmx280, 0, sizeof(bmx280_t)); 322 | 323 | bmx280->i2c_port = port; 324 | bmx280->slave = 0xDE; 325 | bmx280->chip_id = 0xAD; 326 | } 327 | return bmx280; 328 | } 329 | 330 | void bmx280_close(bmx280_t *bmx280) 331 | { 332 | free(bmx280); 333 | } 334 | 335 | esp_err_t bmx280_init(bmx280_t* bmx280) 336 | { 337 | if (bmx280 == NULL) return ESP_ERR_INVALID_ARG; 338 | 339 | esp_err_t error = bmx280_probe(bmx280) || bmx280_reset(bmx280); 340 | 341 | if (error == ESP_OK) 342 | { 343 | // Give the sensor 10 ms delay to reset. 344 | vTaskDelay(pdMS_TO_TICKS(10)); 345 | 346 | // Read calibration data. 347 | bmx280_calibrate(bmx280); 348 | 349 | ESP_LOGI("bmx280", "Dumping calibration..."); 350 | ESP_LOG_BUFFER_HEX("bmx280", &bmx280->cmps, sizeof(bmx280->cmps)); 351 | } 352 | 353 | return error; 354 | } 355 | 356 | esp_err_t bmx280_configure(bmx280_t* bmx280, bmx280_config_t *cfg) 357 | { 358 | if (bmx280 == NULL || cfg == NULL) return ESP_ERR_INVALID_ARG; 359 | if (!bmx280_validate(bmx280)) return ESP_ERR_INVALID_STATE; 360 | 361 | // Always set ctrl_meas first. 362 | uint8_t num = (cfg->t_sampling << 5) | (cfg->p_sampling << 2) | BMX280_MODE_SLEEP; 363 | esp_err_t err = bmx280_write(bmx280, BMX280_REG_MESCTL, &num, sizeof num); 364 | 365 | if (err) return err; 366 | 367 | // We can set cfg now. 368 | num = (cfg->t_standby << 5) | (cfg->iir_filter << 2); 369 | err = bmx280_write(bmx280, BMX280_REG_CONFIG, &num, sizeof num); 370 | 371 | if (err) return err; 372 | 373 | #if !(CONFIG_BMX280_EXPECT_BMP280) 374 | #if CONFIG_BMX280_EXPECT_DETECT 375 | if (bmx280_isBME(bmx280->chip_id)) 376 | #elif CONFIG_BMX280_EXPECT_BME280 377 | #endif 378 | { 379 | num = cfg->h_sampling; 380 | err = bmx280_write(bmx280, BMX280_REG_HUMCTL, &num, sizeof(num)); 381 | 382 | if (err) return err; 383 | } 384 | #endif 385 | 386 | // f = 0; 387 | return ESP_OK; 388 | } 389 | 390 | esp_err_t bmx280_setMode(bmx280_t* bmx280, bmx280_mode_t mode) 391 | { 392 | uint8_t ctrl_mes; 393 | esp_err_t err; 394 | 395 | if ((err = bmx280_read(bmx280, BMX280_REG_MESCTL, &ctrl_mes, 1)) != ESP_OK) 396 | return err; 397 | 398 | ctrl_mes = (ctrl_mes & (~3)) | mode; 399 | 400 | return bmx280_write(bmx280, BMX280_REG_MESCTL, &ctrl_mes, 1); 401 | } 402 | 403 | esp_err_t bmx280_getMode(bmx280_t* bmx280, bmx280_mode_t* mode) 404 | { 405 | uint8_t ctrl_mes; 406 | esp_err_t err; 407 | 408 | if ((err = bmx280_read(bmx280, BMX280_REG_MESCTL, &ctrl_mes, 1)) != ESP_OK) 409 | return err; 410 | 411 | ctrl_mes &= 3; 412 | 413 | switch (ctrl_mes) 414 | { 415 | default: 416 | *mode = ctrl_mes; break; 417 | case (BMX280_MODE_FORCE + 1): 418 | *mode = BMX280_MODE_FORCE; break; 419 | } 420 | 421 | return ESP_OK; 422 | } 423 | 424 | bool bmx280_isSampling(bmx280_t* bmx280) 425 | { 426 | uint8_t status; 427 | if (bmx280_read(bmx280, BMX280_REG_STATUS, &status, 1) == ESP_OK) 428 | return (status & (1 << 3)) != 0; 429 | else 430 | return false; 431 | } 432 | 433 | 434 | // LEGAL NOTE: 435 | // Any code between below the caption "// HERE BE DRAGONS" and above the caption 436 | // "// END OF DRAGONS" contains modified versions of code owned by Bosch 437 | // Sensortec GmbH and it is not clearly licensed, therefore this code is not 438 | // covered by the MIT of this repository. Use at your own risk. 439 | 440 | // HERE BE DRAGONS 441 | // This code is revised from the Bosch code within the datasheet of the BME280. 442 | // I do not understand it enough to tell you what it does. 443 | // No touchies. 444 | 445 | // Returns temperature in DegC, resolution is 0.01 DegC. Output value of “5123” equals 51.23 DegC. 446 | // t_fine carries fine temperature as global value 447 | int32_t BME280_compensate_T_int32(bmx280_t *bmx280, int32_t adc_T) 448 | { 449 | int32_t var1, var2, T; 450 | var1 = ((((adc_T>>3) -((int32_t)bmx280->cmps.T1<<1))) * ((int32_t)bmx280->cmps.T2)) >> 11; 451 | var2 =(((((adc_T>>4) -((int32_t)bmx280->cmps.T1)) * ((adc_T>>4) -((int32_t)bmx280->cmps.T1))) >> 12) * ((int32_t)bmx280->cmps.T3)) >> 14; 452 | bmx280->t_fine = var1 + var2; 453 | T = (bmx280->t_fine * 5 + 128) >> 8; 454 | return T; 455 | } 456 | 457 | // Returns pressure in Pa as unsigned 32 bit integer in Q24.8 format (24 integer bits and 8 fractional bits). 458 | // Output value of “24674867” represents 24674867/256 = 96386.2 Pa = 963.862 hPa 459 | uint32_t BME280_compensate_P_int64(bmx280_t *bmx280, int32_t adc_P) 460 | { 461 | int64_t var1, var2, p; 462 | var1 = ((int64_t)bmx280->t_fine) -128000; 463 | var2 = var1 * var1 * (int64_t)bmx280->cmps.P6; 464 | var2 = var2 + ((var1*(int64_t)bmx280->cmps.P5)<<17); 465 | var2 = var2 + (((int64_t)bmx280->cmps.P4)<<35); 466 | var1 = ((var1 * var1 * (int64_t)bmx280->cmps.P3)>>8) + ((var1 * (int64_t)bmx280->cmps.P2)<<12); 467 | var1 = (((((int64_t)1)<<47)+var1))*((int64_t)bmx280->cmps.P1)>>33; 468 | if(var1 == 0){ 469 | return 0; // avoid exception caused by division by zero 470 | } 471 | p = 1048576-adc_P; 472 | p = (((p<<31)-var2)*3125)/var1; 473 | var1 = (((int64_t)bmx280->cmps.P9) * (p>>13) * (p>>13)) >> 25; 474 | var2 =(((int64_t)bmx280->cmps.P8) * p) >> 19; 475 | p = ((p + var1 + var2) >> 8) + (((int64_t)bmx280->cmps.P7)<<4); 476 | return (uint32_t)p; 477 | } 478 | 479 | #if !CONFIG_BMX280_EXPECT_BMP280 480 | 481 | // Returns humidity in %RH as unsigned 32 bit integer in Q22.10 format (22 integer and 10 fractional bits). 482 | // Output value of “47445” represents 47445/1024 = 46.333 %RH 483 | uint32_t bme280_compensate_H_int32(bmx280_t *bmx280, int32_t adc_H) 484 | { 485 | int32_t v_x1_u32r; 486 | v_x1_u32r = (bmx280->t_fine -((int32_t)76800)); 487 | v_x1_u32r = (((((adc_H << 14) -(((int32_t)bmx280->cmps.H4) << 20) -(((int32_t)bmx280->cmps.H5) * v_x1_u32r)) + ((int32_t)16384)) >> 15) * (((((((v_x1_u32r * ((int32_t)bmx280->cmps.H6)) >> 10) * (((v_x1_u32r * ((int32_t)bmx280->cmps.H3)) >> 11) + ((int32_t)32768))) >> 10) + ((int32_t)2097152)) * ((int32_t)bmx280->cmps.H2) + 8192) >> 14)); 488 | v_x1_u32r = (v_x1_u32r -(((((v_x1_u32r >> 15) * (v_x1_u32r >> 15)) >> 7) * ((int32_t)bmx280->cmps.H1)) >> 4)); 489 | v_x1_u32r = (v_x1_u32r < 0 ? 0 : v_x1_u32r); 490 | v_x1_u32r = (v_x1_u32r > 419430400? 419430400: v_x1_u32r); 491 | return(uint32_t)(v_x1_u32r>>12); 492 | } 493 | 494 | #endif 495 | 496 | // END OF DRAGONS 497 | 498 | esp_err_t bmx280_readout(bmx280_t *bmx280, int32_t *temperature, uint32_t *pressure, uint32_t *humidity) 499 | { 500 | if (bmx280 == NULL) return ESP_ERR_INVALID_ARG; 501 | if (!bmx280_validate(bmx280)) return ESP_ERR_INVALID_STATE; 502 | 503 | uint8_t buffer[3]; 504 | esp_err_t error; 505 | 506 | if (temperature) 507 | { 508 | if ((error = bmx280_read(bmx280, BMX280_REG_TEMP_MSB, buffer, 3)) != ESP_OK) 509 | return error; 510 | 511 | *temperature = BME280_compensate_T_int32(bmx280, 512 | (buffer[0] << 12) | (buffer[1] << 4) | (buffer[0] >> 4) 513 | ); 514 | } 515 | 516 | if (pressure) 517 | { 518 | if ((error = bmx280_read(bmx280, BMX280_REG_PRES_MSB, buffer, 3)) != ESP_OK) 519 | return error; 520 | 521 | *pressure = BME280_compensate_P_int64(bmx280, 522 | (buffer[0] << 12) | (buffer[1] << 4) | (buffer[0] >> 4) 523 | ); 524 | } 525 | 526 | #if !(CONFIG_BMX280_EXPECT_BMP280) 527 | #if CONFIG_BMX280_EXPECT_DETECT 528 | if (bmx280_isBME(bmx280->chip_id)) 529 | #elif CONFIG_BMX280_EXPECT_BME280 530 | #endif 531 | { 532 | if (humidity) 533 | { 534 | if ((error = bmx280_read(bmx280, BMX280_REG_HUMI_MSB, buffer, 2)) != ESP_OK) 535 | return error; 536 | 537 | *humidity = bme280_compensate_H_int32(bmx280, 538 | (buffer[0] << 8) | buffer[0] 539 | ); 540 | } 541 | } 542 | #if CONFIG_BMX280_EXPECT_DETECT 543 | else if (humidity) 544 | *humidity = UINT32_MAX; 545 | #endif 546 | #else 547 | if (humidity) 548 | *humidity = UINT32_MAX; 549 | #endif 550 | 551 | return ESP_OK; 552 | } 553 | -------------------------------------------------------------------------------- /main/esp32c6_zigbee.c: -------------------------------------------------------------------------------- 1 | #include "esp32c6_zigbee.h" 2 | #include "esp_check.h" 3 | #include "esp_err.h" 4 | #include "esp_log.h" 5 | #include "nvs_flash.h" 6 | #include "string.h" 7 | #include "freertos/FreeRTOS.h" 8 | #include "freertos/task.h" 9 | #include "zcl/esp_zigbee_zcl_common.h" 10 | #include "zigbee_logo.h" 11 | #include "zigbee_connected.h" 12 | #include "zigbee_disconnected.h" 13 | #include "zigbee_image.h" 14 | #include "iot_button.h" 15 | #include 16 | #include 17 | 18 | #include "driver/i2c.h" 19 | #include "ssd1306.h" 20 | #include "led_strip.h" 21 | #include "bmx280.h" 22 | #include "ds18b20_main.h" 23 | #if USE_BH1750_SENSOR 24 | #include "bh1750.h" 25 | #endif 26 | 27 | //------ Global definitions ----------- 28 | static char 29 | manufacturer[16], 30 | model[16], 31 | firmware_version[16]; 32 | bool 33 | time_updated = false, 34 | connected = false, 35 | ds18b20_found = false, 36 | updateAttributeStarted = false; 37 | int lcd_timeout = 30; 38 | uint8_t 39 | screen_number = 0, 40 | s_led_state = 0; 41 | uint16_t 42 | temperature = 0, 43 | humidity = 0, 44 | pressure = 0, 45 | temperature2 = 0, 46 | undefined_value = 0x8000; 47 | float 48 | t = 0, 49 | p = 0, 50 | h = 0, 51 | t2 = 0, 52 | //temp_ds18b20 = 0, 53 | l = 0; 54 | char strftime_buf[64]; 55 | static ssd1306_handle_t ssd1306_dev = NULL; 56 | SemaphoreHandle_t i2c_semaphore = NULL; 57 | static const char *TAG_ESP32C6 = "ESP32C6_ZIGBEE"; 58 | extern int ds18b20_device_num; 59 | extern float ds18b20_temperature_list[ONEWIRE_MAX_DS18B20]; 60 | #if USE_BH1750_SENSOR 61 | uint16_t lIntBH1750 = 0; 62 | float lBH1750 = 0; 63 | uint16_t lBH1750Raw = 0; 64 | 65 | //-- arrays for val and raw from bh1750_red() 66 | float arrlBH1750[1]; 67 | uint16_t arrlBH1750Raw[1]; 68 | //float lBH1750Data[2]; 69 | //static const char *TAG_BH1750 = "BH1750"; 70 | #endif 71 | //char degree[]="\u00b0"; 72 | //char degree[]=0xDF; 73 | //char degree[]="°"; 74 | 75 | 76 | static void blink_led(void) 77 | { 78 | gpio_set_level(BLINK_GPIO, s_led_state); 79 | } 80 | static void configure_led(void) 81 | { 82 | gpio_reset_pin(BLINK_GPIO); 83 | gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); 84 | } 85 | 86 | static void do_blink() 87 | { 88 | s_led_state = 1; 89 | blink_led(); 90 | 91 | vTaskDelay(500 / portTICK_PERIOD_MS); 92 | 93 | s_led_state = 0; 94 | blink_led(); 95 | //vTaskDelete(NULL); 96 | } 97 | 98 | static void button_single_click_cb(void *arg,void *usr_data) 99 | { 100 | ESP_LOGI("Button boot", "Single click, change screen to %d", screen_number); 101 | lcd_timeout = 30; 102 | screen_number = screen_number + 1; 103 | if( screen_number == 2) 104 | { 105 | screen_number = 0; 106 | } 107 | } 108 | 109 | static void button_long_press_cb(void *arg,void *usr_data) 110 | { 111 | ESP_LOGI("Button boot", "Long press, leave & reset"); 112 | esp_zb_factory_reset(); 113 | } 114 | 115 | void register_button() 116 | { 117 | //-- create GPIO button 118 | button_config_t gpio_btn_cfg = { 119 | .type = BUTTON_TYPE_GPIO, 120 | .long_press_time = CONFIG_BUTTON_LONG_PRESS_TIME_MS, 121 | .short_press_time = CONFIG_BUTTON_SHORT_PRESS_TIME_MS, 122 | .gpio_button_config = { 123 | .gpio_num = 9, 124 | .active_level = 0, 125 | }, 126 | }; 127 | 128 | button_handle_t gpio_btn = iot_button_create(&gpio_btn_cfg); 129 | if(NULL == gpio_btn) { 130 | ESP_LOGE("Button boot", "Button create failed"); 131 | } 132 | 133 | iot_button_register_cb(gpio_btn, BUTTON_SINGLE_CLICK, button_single_click_cb,NULL); 134 | iot_button_register_cb(gpio_btn, BUTTON_LONG_PRESS_START, button_long_press_cb, NULL); 135 | 136 | } 137 | 138 | esp_err_t i2c_master_init() 139 | { 140 | //-- Don't initialize twice! 141 | if(i2c_semaphore != NULL) { 142 | return ESP_FAIL; 143 | } 144 | 145 | i2c_semaphore = xSemaphoreCreateMutex(); 146 | if(i2c_semaphore == NULL) { 147 | return ESP_FAIL; 148 | } 149 | 150 | i2c_config_t i2c_config = { 151 | .mode = I2C_MODE_MASTER, 152 | .sda_io_num = GPIO_NUM_6, 153 | .scl_io_num = GPIO_NUM_7, 154 | .sda_pullup_en = GPIO_PULLUP_ENABLE, 155 | .scl_pullup_en = GPIO_PULLUP_ENABLE, 156 | .master.clk_speed = 1000000 157 | }; 158 | 159 | esp_err_t ret; 160 | 161 | ret = i2c_param_config(I2C_NUM_0, &i2c_config); 162 | if(ret != ESP_OK) 163 | { 164 | return ret; 165 | } 166 | 167 | ret = i2c_driver_install(I2C_NUM_0, I2C_MODE_MASTER, 0, 0, 0); 168 | if(ret != ESP_OK) 169 | { 170 | return ret; 171 | } 172 | 173 | return ESP_OK; 174 | } 175 | 176 | //--------- User task section ----------------- 177 | static void get_rtc_time() 178 | { 179 | time_t now; 180 | struct tm timeinfo; 181 | time(&now); 182 | localtime_r(&now, &timeinfo); 183 | strftime(strftime_buf, sizeof(strftime_buf), "%a %H:%M:%S", &timeinfo); 184 | } 185 | 186 | void lcd_screen_0() 187 | { 188 | ssd1306_refresh_gram(ssd1306_dev); 189 | ssd1306_clear_screen(ssd1306_dev, 0x00); 190 | 191 | char temp_data_str[100] = {0}; 192 | int i = 0; 193 | for(i = 0; i < ds18b20_device_num; i ++) { 194 | t2 = ds18b20_temperature_list[i]; 195 | sprintf(temp_data_str, "ds18b20[%d]: %.2f", i, t2); 196 | //ssd1306_draw_string(ssd1306_dev, 0, 26 + i * 12, (const uint8_t *)temp_data_str, 12, 1); 197 | ssd1306_draw_string(ssd1306_dev, 0, 15 + i * 12, (const uint8_t *)temp_data_str, 12, 1); 198 | } 199 | 200 | #if USE_BH1750_SENSOR 201 | //-- BH1750 202 | i = 3; //-- 4th row on SSD1036 203 | sprintf(temp_data_str, "bh1750: %.2f", lBH1750); 204 | ssd1306_draw_string(ssd1306_dev, 0, 15 + i * 12, (const uint8_t *)temp_data_str, 12, 1); 205 | #endif 206 | 207 | sprintf(temp_data_str, "%.2f, %.2f%%, %.0f", t, h, p/100); 208 | //ssd1306_draw_string(ssd1306_dev, 0, 14, (const uint8_t *)temp_data_str, 12, 1); 209 | ssd1306_draw_string(ssd1306_dev, 0, 5, (const uint8_t *)temp_data_str, 12, 1); 210 | //ESP_LOGI("4", "T2: %.2f, T: %.2f, H: %.2f, P: %.0f", t2, t, h, p); 211 | 212 | ssd1306_draw_bitmap(ssd1306_dev, 112, 48, zigbee_image, 16, 16); 213 | if (connected) 214 | { 215 | //ESP_LOGW("LCD", "CONNECTED!"); 216 | ssd1306_draw_bitmap(ssd1306_dev, 112, 0, zigbee_connected, 16, 16); 217 | } else { 218 | //ESP_LOGE("LCD", "NOT CONNECTED!"); 219 | ssd1306_draw_bitmap(ssd1306_dev, 112, 0, zigbee_disconnected, 16, 16); 220 | } 221 | ssd1306_refresh_gram(ssd1306_dev); 222 | } 223 | 224 | void lcd_screen_1() 225 | { 226 | ssd1306_refresh_gram(ssd1306_dev); 227 | ssd1306_clear_screen(ssd1306_dev, 0x00); 228 | ssd1306_draw_bitmap(ssd1306_dev, 112, 48, zigbee_image, 16, 16); 229 | if(connected) 230 | { 231 | if(time_updated) 232 | { 233 | get_rtc_time(); 234 | ESP_LOGI(TAG_ESP32C6, "The current date/time is: %s", strftime_buf); 235 | ssd1306_draw_string(ssd1306_dev, 5, 48, (const uint8_t *)strftime_buf, 16, 1); 236 | } 237 | 238 | char connected_str[16] = {0}; 239 | char PAN_ID[16] = {0}; 240 | char Channel[16] = {0}; 241 | sprintf(connected_str, " Connected"); 242 | sprintf(PAN_ID, "PAN ID : 0x%04hx", esp_zb_get_pan_id()); 243 | sprintf(Channel, "Channel: %d", esp_zb_get_current_channel()); 244 | ssd1306_draw_string(ssd1306_dev, 5, 0, (const uint8_t *)connected_str, 16, 1); 245 | ssd1306_draw_string(ssd1306_dev, 5, 16, (const uint8_t *)PAN_ID, 16, 1); 246 | ssd1306_draw_string(ssd1306_dev, 5, 32, (const uint8_t *)Channel, 16, 1); 247 | ssd1306_draw_bitmap(ssd1306_dev, 112, 0, zigbee_connected, 16, 16); 248 | } else { 249 | char disconnected_str[16] = {0}; 250 | sprintf(disconnected_str, " Disconnected"); 251 | ssd1306_draw_string(ssd1306_dev, 5, 16, (const uint8_t *)disconnected_str, 16, 1); 252 | ssd1306_draw_bitmap(ssd1306_dev, 112, 0, zigbee_disconnected, 16, 16); 253 | } 254 | ssd1306_refresh_gram(ssd1306_dev); 255 | } 256 | 257 | static void lcd_task(void *pvParameters) 258 | { 259 | //-- Start lcd 260 | ssd1306_dev = ssd1306_create(I2C_NUM_0, SSD1306_I2C_ADDRESS); 261 | ssd1306_refresh_gram(ssd1306_dev); 262 | ssd1306_clear_screen(ssd1306_dev, 0x00); 263 | 264 | ssd1306_draw_bitmap(ssd1306_dev, 0, 16, zigbee, 128, 32); 265 | ssd1306_refresh_gram(ssd1306_dev); 266 | vTaskDelay(1500 / portTICK_PERIOD_MS); 267 | 268 | while(1) 269 | { 270 | switch(screen_number) { 271 | case 0: 272 | //ESP_LOGI(TAG_ESP32C6, "Screen number 0 "); 273 | lcd_screen_0(); 274 | break; 275 | case 1: 276 | //ESP_LOGI(TAG_ESP32C6, "Screen number 1 "); 277 | lcd_screen_1(); 278 | break; 279 | default: 280 | ESP_LOGW(TAG_ESP32C6, "Default screen --------"); 281 | break; 282 | } 283 | lcd_timeout = lcd_timeout - 1; 284 | if(lcd_timeout <= 0) { 285 | screen_number = 0; 286 | } else { 287 | lcd_timeout = lcd_timeout - 1; 288 | //ESP_LOGI(TAG_ESP32C6, "lcd_timeout %d ", lcd_timeout); 289 | } 290 | vTaskDelay(1000 / portTICK_PERIOD_MS); 291 | } 292 | } 293 | 294 | #if USE_BH1750_SENSOR 295 | static void bh1750_task(void *pvParameters) 296 | { 297 | while(1) { 298 | bh1750_read(arrlBH1750, arrlBH1750Raw); 299 | lBH1750 = arrlBH1750[0]; 300 | lBH1750Raw = arrlBH1750Raw[0]; 301 | 302 | lIntBH1750 = (uint16_t)(lBH1750 * 10000); 303 | //ESP_LOGI(TAG_BH1750, "val:%.2f, int:%d, raw:%d", lBH1750, lIntBH1750, lBH1750Raw); 304 | 305 | vTaskDelay(5000 / portTICK_PERIOD_MS); 306 | } 307 | 308 | vTaskDelete(NULL); 309 | } 310 | #endif 311 | 312 | static void bmx280_task(void *pvParameters) 313 | { 314 | bmx280_t* bmx280 = bmx280_create(I2C_NUM_0); 315 | 316 | if(!bmx280) { 317 | ESP_LOGE("BMX280", "Could not create bmx280 driver."); 318 | return; 319 | } 320 | 321 | ESP_ERROR_CHECK(bmx280_init(bmx280)); 322 | bmx280_config_t bmx_cfg = BMX280_DEFAULT_CONFIG; 323 | ESP_ERROR_CHECK(bmx280_configure(bmx280, &bmx_cfg)); 324 | 325 | while(1) 326 | { 327 | ESP_ERROR_CHECK(bmx280_setMode(bmx280, BMX280_MODE_FORCE)); 328 | do { 329 | vTaskDelay(5000 / portTICK_PERIOD_MS); 330 | } while(bmx280_isSampling(bmx280)); 331 | //vTaskDelay(5000 / portTICK_PERIOD_MS); 332 | ESP_ERROR_CHECK(bmx280_readoutFloat(bmx280, &t, &p, &h)); 333 | //ESP_LOGI("BMX280", "Read Values: t = %.2f, p = %.1f, h = %.1f", t, p/100, h); 334 | temperature = (uint16_t)(t * 100); 335 | humidity = (uint16_t)(h * 100); 336 | pressure = (uint16_t)(p/100); 337 | 338 | ds18b20_show(); 339 | 340 | if(ds18b20_device_num > 0) { 341 | ds18b20_found = true; 342 | } 343 | 344 | char ds18b20_str[200] = {0}; 345 | char ds18b20_int[10] = {0}; 346 | //strcpy(ds18b20_str, ""); 347 | //strcpy(ds18b20_int, ""); 348 | for(int i = 0; i < ds18b20_device_num; i ++) { 349 | t2 = ds18b20_temperature_list[i]; 350 | //ESP_LOGI(TAG_DS18B20, "Temperature read from DS18B20[%d]: %.2fC", i, t2); 351 | if(strlen(ds18b20_str) > 0) { 352 | strcat(ds18b20_str, ", "); 353 | } 354 | sprintf(ds18b20_int, "%.2f", t2); 355 | strcat(ds18b20_str, ds18b20_int); 356 | } 357 | 358 | #if USE_BH1750_SENSOR 359 | ESP_LOGI("BMX280|DS18B20|BH1750", "T=%.2fC, H=%.2f%%, P=%.0fhPa | DS18B20: %d/%d dev(s) => %s | %.2fLux", t, h, p/100, ds18b20_device_num, ONEWIRE_MAX_DS18B20, ds18b20_str, lBH1750); 360 | #else 361 | ESP_LOGI("BMX280|DS18B20", "T=%.2fC, H=%.2f%%, P=%.0fhPa | DS18B20: %d/%d dev(s) => %s", t, h, p/100, ds18b20_device_num, ONEWIRE_MAX_DS18B20, ds18b20_str); 362 | #endif 363 | } 364 | } 365 | 366 | static void ds18b20_task(void *pvParameters) 367 | { 368 | while(1) 369 | { 370 | ds18b20_show(); 371 | 372 | if(ds18b20_device_num > 0) { 373 | ds18b20_found = true; 374 | } 375 | 376 | char ds18b20_str[200] = {0}; 377 | char ds18b20_int[10] = {0}; 378 | 379 | for(int i = 0; i < ds18b20_device_num; i ++) { 380 | t2 = ds18b20_temperature_list[i]; 381 | //ESP_LOGI(TAG_DS18B20, "Temperature read from DS18B20[%d]: %.2fC", i, t2); 382 | if(strlen(ds18b20_str) > 0) { 383 | strcat(ds18b20_str, ", "); 384 | } 385 | sprintf(ds18b20_int, "%.2f", t2); 386 | strcat(ds18b20_str, ds18b20_int); 387 | } 388 | 389 | vTaskDelay(5000 / portTICK_PERIOD_MS); 390 | } 391 | } 392 | 393 | 394 | //---------------------------------------- 395 | 396 | static void bdb_start_top_level_commissioning_cb(uint8_t mode_mask) 397 | { 398 | ESP_LOGW(TAG_ESP32C6, "bdb_start_top_level_commissioning_cb()"); 399 | ESP_ERROR_CHECK(esp_zb_bdb_start_top_level_commissioning(mode_mask)); 400 | } 401 | 402 | //-- Manual reporting attribute to coordinator 403 | static void reportAttribute(uint8_t srcEndpoint, uint8_t dstEndpoint, uint16_t clusterID, uint16_t attributeID, void *value, uint8_t value_length) 404 | { 405 | esp_zb_zcl_report_attr_cmd_t cmd = { 406 | .zcl_basic_cmd = { 407 | .dst_addr_u.addr_short = 0x0000, 408 | .src_endpoint = srcEndpoint, 409 | .dst_endpoint = dstEndpoint, 410 | }, 411 | .address_mode = ESP_ZB_APS_ADDR_MODE_16_ENDP_PRESENT, 412 | .clusterID = clusterID, 413 | .attributeID = attributeID, 414 | .cluster_role = ESP_ZB_ZCL_CLUSTER_SERVER_ROLE, 415 | }; 416 | esp_zb_zcl_attr_t *value_r = esp_zb_zcl_get_attribute(srcEndpoint, clusterID, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE, attributeID); 417 | memcpy(value_r->data_p, value, value_length); 418 | esp_zb_zcl_report_attr_cmd_req(&cmd); 419 | 420 | vTaskDelay(500 / portTICK_PERIOD_MS); 421 | } 422 | 423 | //-- Task for update attribute value 424 | void update_attribute() 425 | { 426 | while(1) 427 | { 428 | if(connected) 429 | { 430 | ESP_LOGW("UPD_ATTR", "CONNECTED!"); 431 | //ESP_LOGW(TAG_ESP32C6, "update_attribute(%d - %d - %d)", temperature, humidity, pressure); 432 | esp_zb_zcl_status_t state_tmp = esp_zb_zcl_set_attribute_val(BMX280_SENSOR_ENDPOINT, ESP_ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE, ESP_ZB_ZCL_ATTR_TEMP_MEASUREMENT_VALUE_ID, &temperature, false); 433 | if(state_tmp != ESP_ZB_ZCL_STATUS_SUCCESS) 434 | { 435 | ESP_LOGE(TAG_ESP32C6, "Setting temperature attribute failed!"); 436 | } else { 437 | reportAttribute(BMX280_SENSOR_ENDPOINT, BMX280_SENSOR_ENDPOINT, ESP_ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT, ESP_ZB_ZCL_ATTR_TEMP_MEASUREMENT_VALUE_ID, &temperature, 2); 438 | } 439 | esp_zb_zcl_status_t state_hum = esp_zb_zcl_set_attribute_val(BMX280_SENSOR_ENDPOINT, ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE, ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_VALUE_ID, &humidity, false); 440 | if(state_hum != ESP_ZB_ZCL_STATUS_SUCCESS) 441 | { 442 | ESP_LOGE(TAG_ESP32C6, "Setting humidity attribute failed!"); 443 | } else { 444 | reportAttribute(BMX280_SENSOR_ENDPOINT, BMX280_SENSOR_ENDPOINT, ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT, ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_VALUE_ID, &humidity, 2); 445 | } 446 | esp_zb_zcl_status_t state_press = esp_zb_zcl_set_attribute_val(BMX280_SENSOR_ENDPOINT, ESP_ZB_ZCL_CLUSTER_ID_PRESSURE_MEASUREMENT, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE, ESP_ZB_ZCL_ATTR_PRESSURE_MEASUREMENT_VALUE_ID, &pressure, false); 447 | if(state_press != ESP_ZB_ZCL_STATUS_SUCCESS) 448 | { 449 | ESP_LOGE(TAG_ESP32C6, "Setting pressure attribute failed!"); 450 | } else { 451 | reportAttribute(BMX280_SENSOR_ENDPOINT, BMX280_SENSOR_ENDPOINT, ESP_ZB_ZCL_CLUSTER_ID_PRESSURE_MEASUREMENT, ESP_ZB_ZCL_ATTR_PRESSURE_MEASUREMENT_VALUE_ID, &pressure, 2); 452 | } 453 | //ESP_LOGW("BMX280", "EP:%d", BMX280_SENSOR_ENDPOINT); 454 | 455 | //-- Write new temperature value for DS18B20 456 | for(int i = 0; i < ds18b20_device_num; i ++) { 457 | uint8_t DS18B20_SENSOR_ENDPOINT = BMX280_SENSOR_ENDPOINT + i + 1; 458 | 459 | //ESP_LOGE(TAG_ESP32C6, "UPDATE: DS18B20_SENSOR_ENDPOINT = %d", DS18B20_SENSOR_ENDPOINT); 460 | 461 | t2 = ds18b20_temperature_list[i]; 462 | temperature2 = t2 * 100; 463 | 464 | //ESP_LOGW(TAG_ESP32C6, "UPDATE[%d] WITH %.2f (%d)", i, t2, temperature2); 465 | 466 | esp_zb_zcl_status_t ds18b20_state = esp_zb_zcl_set_attribute_val(DS18B20_SENSOR_ENDPOINT, ESP_ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE, ESP_ZB_ZCL_ATTR_TEMP_MEASUREMENT_VALUE_ID, &temperature2, false); 467 | if(ds18b20_state != ESP_ZB_ZCL_STATUS_SUCCESS) { 468 | ESP_LOGE(TAG_ESP32C6, "Setting DS18B20[%d] attribute failed!", i); 469 | } else { 470 | reportAttribute(DS18B20_SENSOR_ENDPOINT, 1, ESP_ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT, ESP_ZB_ZCL_ATTR_TEMP_MEASUREMENT_VALUE_ID, &temperature2, 2); 471 | //reportAttribute(DS18B20_SENSOR_ENDPOINT, DS18B20_SENSOR_ENDPOINT, ESP_ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT, ESP_ZB_ZCL_ATTR_TEMP_MEASUREMENT_VALUE_ID, &temperature2, 2); 472 | } 473 | //ESP_LOGW(TAG_ESP32C6, "REPORT_DS18B20[%d] WITH %.2f (%d)", i, t2, temperature2); 474 | //ESP_LOGW("DS18B20", "EP:%d", DS18B20_SENSOR_ENDPOINT); 475 | } 476 | 477 | #if USE_BH1750_SENSOR 478 | #if !USE_BH1750_CUSTOM_ENDPOINT 479 | //-- BH1750 (EP #1) 480 | //ESP_LOGE(TAG_ESP32C6, "1"); 481 | esp_zb_zcl_status_t state_illum = esp_zb_zcl_set_attribute_val(BMX280_SENSOR_ENDPOINT, ESP_ZB_ZCL_CLUSTER_ID_ILLUMINANCE_MEASUREMENT, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE, ESP_ZB_ZCL_ATTR_ILLUMINANCE_MEASUREMENT_MEASURED_VALUE_ID, &lBH1750Raw, false); 482 | //ESP_LOGE(TAG_ESP32C6, "2"); 483 | if(state_illum != ESP_ZB_ZCL_STATUS_SUCCESS) { 484 | ESP_LOGE(TAG_ESP32C6, "Setting lIntBH1750 (EP:%d) attribute failed!", BMX280_SENSOR_ENDPOINT); 485 | } else { 486 | reportAttribute(BMX280_SENSOR_ENDPOINT, BMX280_SENSOR_ENDPOINT, ESP_ZB_ZCL_CLUSTER_ID_ILLUMINANCE_MEASUREMENT, ESP_ZB_ZCL_ATTR_ILLUMINANCE_MEASUREMENT_MEASURED_VALUE_ID, &lBH1750Raw, 2); 487 | //reportAttribute(1, 1, ESP_ZB_ZCL_CLUSTER_ID_ILLUMINANCE_MEASUREMENT, ESP_ZB_ZCL_ATTR_ILLUMINANCE_MEASUREMENT_MEASURED_VALUE_ID, &lBH1750Raw, 2); 488 | } 489 | //ESP_LOGW("BH1750", "EP:%d", BMX280_SENSOR_ENDPOINT); 490 | //ESP_LOGE(TAG_ESP32C6, "3"); 491 | #else 492 | //-- BH1750 (BH1750_SENSOR_ENDPOINT) 493 | //ESP_LOGE(TAG_ESP32C6, "1"); 494 | esp_zb_zcl_status_t state_illum = esp_zb_zcl_set_attribute_val(BH1750_SENSOR_ENDPOINT, ESP_ZB_ZCL_CLUSTER_ID_ILLUMINANCE_MEASUREMENT, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE, ESP_ZB_ZCL_ATTR_ILLUMINANCE_MEASUREMENT_MEASURED_VALUE_ID, &lBH1750Raw, false); 495 | //ESP_LOGE(TAG_ESP32C6, "2"); 496 | if(state_illum != ESP_ZB_ZCL_STATUS_SUCCESS) { 497 | ESP_LOGE(TAG_ESP32C6, "Setting lIntBH1750 (EP:%d) attribute failed!", BH1750_SENSOR_ENDPOINT); 498 | } else { 499 | reportAttribute(BH1750_SENSOR_ENDPOINT, 1, ESP_ZB_ZCL_CLUSTER_ID_ILLUMINANCE_MEASUREMENT, ESP_ZB_ZCL_ATTR_ILLUMINANCE_MEASUREMENT_MEASURED_VALUE_ID, &lBH1750Raw, 2); 500 | //reportAttribute(BH1750_SENSOR_ENDPOINT, BH1750_SENSOR_ENDPOINT, ESP_ZB_ZCL_CLUSTER_ID_ILLUMINANCE_MEASUREMENT, ESP_ZB_ZCL_ATTR_ILLUMINANCE_MEASUREMENT_MEASURED_VALUE_ID, &lBH1750Raw, 2); 501 | } 502 | //ESP_LOGE(TAG_ESP32C6, "3"); 503 | //ESP_LOGW("BH1750", "EP:%d", BH1750_SENSOR_ENDPOINT); 504 | #endif 505 | //ESP_LOGE(TAG_ESP32C6, "4"); 506 | #endif 507 | 508 | do_blink(); 509 | 510 | } else { 511 | ESP_LOGE("UPD_ATTR", "NOT CONNECTED!"); 512 | } 513 | 514 | vTaskDelay(UPDATE_ATTR_INTERVAL * 1000 / portTICK_PERIOD_MS); 515 | /* 516 | if(updateAttributeStarted) { 517 | vTaskDelay(UPDATE_ATTR_INTERVAL * 1000 / portTICK_PERIOD_MS); 518 | } else { 519 | vTaskDelay(5000 / portTICK_PERIOD_MS); 520 | 521 | } 522 | */ 523 | //-- first use of this function 524 | updateAttributeStarted = true; 525 | } 526 | } 527 | 528 | static esp_err_t zb_attribute_handler(const esp_zb_zcl_set_attr_value_message_t *message) 529 | { 530 | esp_err_t ret = ESP_OK; 531 | ESP_RETURN_ON_FALSE(message, ESP_FAIL, TAG_ESP32C6, "Empty message"); 532 | ESP_RETURN_ON_FALSE(message->info.status == ESP_ZB_ZCL_STATUS_SUCCESS, ESP_ERR_INVALID_ARG, TAG_ESP32C6, "Received message: error status(%d)", 533 | message->info.status); 534 | ESP_LOGI(TAG_ESP32C6, "Received message: endpoint(%d), cluster(0x%x), attribute(0x%x), data size(%d)", message->info.dst_endpoint, message->info.cluster, 535 | message->attribute.id, message->attribute.data.size); 536 | if(message->info.dst_endpoint == BMX280_SENSOR_ENDPOINT) { 537 | switch (message->info.cluster) { 538 | case ESP_ZB_ZCL_CLUSTER_ID_IDENTIFY: 539 | ESP_LOGI(TAG_ESP32C6, "Identify pressed"); 540 | break; 541 | default: 542 | ESP_LOGI(TAG_ESP32C6, "Message data: cluster(0x%x), attribute(0x%x) ", message->info.cluster, message->attribute.id); 543 | } 544 | } 545 | return ret; 546 | } 547 | 548 | static esp_err_t zb_read_attr_resp_handler(const esp_zb_zcl_cmd_read_attr_resp_message_t *message) 549 | { 550 | ESP_RETURN_ON_FALSE(message, ESP_FAIL, TAG_ESP32C6, "Empty message"); 551 | ESP_RETURN_ON_FALSE(message->info.status == ESP_ZB_ZCL_STATUS_SUCCESS, ESP_ERR_INVALID_ARG, TAG_ESP32C6, "Received message: error status(%d)", 552 | message->info.status); 553 | ESP_LOGI(TAG_ESP32C6, "Read attribute response: status(%d), cluster(0x%x), attribute(0x%x), type(0x%x), value(%d)", message->info.status, 554 | message->info.cluster, message->attribute.id, message->attribute.data.type, 555 | message->attribute.data.value ? *(uint8_t *)message->attribute.data.value : 0); 556 | if(message->info.dst_endpoint == BMX280_SENSOR_ENDPOINT) { 557 | switch (message->info.cluster) { 558 | case ESP_ZB_ZCL_CLUSTER_ID_TIME: 559 | ESP_LOGI(TAG_ESP32C6, "Server time recieved %lu", *(uint32_t*) message->attribute.data.value); 560 | struct timeval tv; 561 | //-- after adding OTA cluster time shifted to 1080 sec... strange issue ... 562 | tv.tv_sec = *(uint32_t*) message->attribute.data.value + 946684800 - 1080; 563 | //tv.tv_sec = *(uint32_t*) message->attribute.data.value + 946684800; 564 | settimeofday(&tv, NULL); 565 | time_updated = true; 566 | break; 567 | default: 568 | ESP_LOGI(TAG_ESP32C6, "Message data: cluster(0x%x), attribute(0x%x) ", message->info.cluster, message->attribute.id); 569 | } 570 | } 571 | return ESP_OK; 572 | } 573 | 574 | static esp_err_t zb_action_handler(esp_zb_core_action_callback_id_t callback_id, const void *message) 575 | { 576 | esp_err_t ret = ESP_OK; 577 | switch (callback_id) { 578 | case ESP_ZB_CORE_SET_ATTR_VALUE_CB_ID: 579 | ret = zb_attribute_handler((esp_zb_zcl_set_attr_value_message_t *)message); 580 | break; 581 | case ESP_ZB_CORE_CMD_READ_ATTR_RESP_CB_ID: 582 | ret = zb_read_attr_resp_handler((esp_zb_zcl_cmd_read_attr_resp_message_t *)message); 583 | break; 584 | default: 585 | ESP_LOGW(TAG_ESP32C6, "Receive Zigbee action(0x%x) callback", callback_id); 586 | break; 587 | } 588 | return ret; 589 | } 590 | 591 | void read_server_time() 592 | { 593 | esp_zb_zcl_read_attr_cmd_t read_req; 594 | read_req.address_mode = ESP_ZB_APS_ADDR_MODE_16_ENDP_PRESENT; 595 | read_req.attributeID = ESP_ZB_ZCL_ATTR_TIME_LOCAL_TIME_ID; 596 | read_req.clusterID = ESP_ZB_ZCL_CLUSTER_ID_TIME; 597 | read_req.zcl_basic_cmd.dst_endpoint = 1; 598 | read_req.zcl_basic_cmd.src_endpoint = 1; 599 | read_req.zcl_basic_cmd.dst_addr_u.addr_short = 0x0000; 600 | esp_zb_zcl_read_attr_cmd_req(&read_req); 601 | } 602 | 603 | void esp_zb_app_signal_handler(esp_zb_app_signal_t *signal_struct) 604 | { 605 | uint32_t *p_sg_p = signal_struct->p_app_signal; 606 | esp_err_t err_status = signal_struct->esp_err_status; 607 | esp_zb_app_signal_type_t sig_type = *p_sg_p; 608 | esp_zb_zdo_signal_leave_params_t *leave_params = NULL; 609 | switch (sig_type) { 610 | case ESP_ZB_BDB_SIGNAL_DEVICE_FIRST_START: 611 | case ESP_ZB_BDB_SIGNAL_DEVICE_REBOOT: 612 | case ESP_ZB_BDB_SIGNAL_STEERING: 613 | if(err_status != ESP_OK) { 614 | connected = false; 615 | ESP_LOGW(TAG_ESP32C6, "Stack %s failure with %s status, steering",esp_zb_zdo_signal_to_string(sig_type), esp_err_to_name(err_status)); 616 | esp_zb_scheduler_alarm((esp_zb_callback_t)bdb_start_top_level_commissioning_cb, ESP_ZB_BDB_MODE_NETWORK_STEERING, 1000); 617 | } else { 618 | //-- device auto start successfully and on a formed network 619 | connected = true; 620 | esp_zb_ieee_addr_t extended_pan_id; 621 | esp_zb_get_extended_pan_id(extended_pan_id); 622 | ESP_LOGI(TAG_ESP32C6, "Joined network successfully (Extended PAN ID: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x, PAN ID: 0x%04hx, Channel:%d)", 623 | extended_pan_id[7], extended_pan_id[6], extended_pan_id[5], extended_pan_id[4], 624 | extended_pan_id[3], extended_pan_id[2], extended_pan_id[1], extended_pan_id[0], 625 | esp_zb_get_pan_id(), esp_zb_get_current_channel()); 626 | read_server_time(); 627 | } 628 | break; 629 | case ESP_ZB_ZDO_SIGNAL_LEAVE: 630 | leave_params = (esp_zb_zdo_signal_leave_params_t *)esp_zb_app_signal_get_params(p_sg_p); 631 | if(leave_params->leave_type == ESP_ZB_NWK_LEAVE_TYPE_RESET) { 632 | ESP_LOGI(TAG_ESP32C6, "Reset device"); 633 | esp_zb_factory_reset(); 634 | } 635 | break; 636 | default: 637 | ESP_LOGI(TAG_ESP32C6, "ZDO signal: %s (0x%x), status: %s", esp_zb_zdo_signal_to_string(sig_type), sig_type, 638 | esp_err_to_name(err_status)); 639 | break; 640 | } 641 | } 642 | 643 | static void set_zcl_string(char *buffer, char *value) 644 | { 645 | buffer[0] = (char) strlen(value); 646 | memcpy(buffer + 1, value, buffer[0]); 647 | } 648 | 649 | void add_bx280_clusters(esp_zb_cluster_list_t *esp_zb_cluster_list) 650 | { 651 | //-- Temperature cluster 652 | esp_zb_attribute_list_t *esp_zb_temperature_meas_cluster = esp_zb_zcl_attr_list_create(ESP_ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT); 653 | esp_zb_temperature_meas_cluster_add_attr(esp_zb_temperature_meas_cluster, ESP_ZB_ZCL_ATTR_TEMP_MEASUREMENT_VALUE_ID, &undefined_value); 654 | esp_zb_temperature_meas_cluster_add_attr(esp_zb_temperature_meas_cluster, ESP_ZB_ZCL_ATTR_TEMP_MEASUREMENT_MIN_VALUE_ID, &undefined_value); 655 | esp_zb_temperature_meas_cluster_add_attr(esp_zb_temperature_meas_cluster, ESP_ZB_ZCL_ATTR_TEMP_MEASUREMENT_MAX_VALUE_ID, &undefined_value); 656 | 657 | //-- Humidity cluster 658 | esp_zb_attribute_list_t *esp_zb_humidity_meas_cluster = esp_zb_zcl_attr_list_create(ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT); 659 | esp_zb_humidity_meas_cluster_add_attr(esp_zb_humidity_meas_cluster, ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_VALUE_ID, &undefined_value); 660 | esp_zb_humidity_meas_cluster_add_attr(esp_zb_humidity_meas_cluster, ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_MIN_VALUE_ID, &undefined_value); 661 | esp_zb_humidity_meas_cluster_add_attr(esp_zb_humidity_meas_cluster, ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_MAX_VALUE_ID, &undefined_value); 662 | 663 | //-- Pressure cluster 664 | esp_zb_attribute_list_t *esp_zb_press_meas_cluster = esp_zb_zcl_attr_list_create(ESP_ZB_ZCL_CLUSTER_ID_PRESSURE_MEASUREMENT); 665 | esp_zb_pressure_meas_cluster_add_attr(esp_zb_press_meas_cluster, ESP_ZB_ZCL_ATTR_PRESSURE_MEASUREMENT_VALUE_ID, &undefined_value); 666 | esp_zb_pressure_meas_cluster_add_attr(esp_zb_press_meas_cluster, ESP_ZB_ZCL_ATTR_PRESSURE_MEASUREMENT_MIN_VALUE_ID, &undefined_value); 667 | esp_zb_pressure_meas_cluster_add_attr(esp_zb_press_meas_cluster, ESP_ZB_ZCL_ATTR_PRESSURE_MEASUREMENT_MAX_VALUE_ID, &undefined_value); 668 | 669 | #if USE_BH1750_SENSOR && !USE_BH1750_CUSTOM_ENDPOINT 670 | //-- BH1750 (BMX280_SENSOR_ENDPOINT): Create attributes list for BH1750 671 | esp_zb_attribute_list_t *bh1750_cluster = esp_zb_zcl_attr_list_create(ESP_ZB_ZCL_CLUSTER_ID_ILLUMINANCE_MEASUREMENT); 672 | esp_zb_illuminance_meas_cluster_add_attr(bh1750_cluster, ESP_ZB_ZCL_ATTR_ILLUMINANCE_MEASUREMENT_MEASURED_VALUE_ID, &undefined_value); 673 | esp_zb_illuminance_meas_cluster_add_attr(bh1750_cluster, ESP_ZB_ZCL_ATTR_ILLUMINANCE_MEASUREMENT_MIN_MEASURED_VALUE_ID, &undefined_value); 674 | esp_zb_illuminance_meas_cluster_add_attr(bh1750_cluster, ESP_ZB_ZCL_ATTR_ILLUMINANCE_MEASUREMENT_MAX_MEASURED_VALUE_ID, &undefined_value); 675 | #endif 676 | 677 | esp_zb_cluster_list_add_temperature_meas_cluster(esp_zb_cluster_list, esp_zb_temperature_meas_cluster, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE); 678 | esp_zb_cluster_list_add_humidity_meas_cluster(esp_zb_cluster_list, esp_zb_humidity_meas_cluster, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE); 679 | esp_zb_cluster_list_add_pressure_meas_cluster(esp_zb_cluster_list, esp_zb_press_meas_cluster, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE); 680 | #if USE_BH1750_SENSOR && !USE_BH1750_CUSTOM_ENDPOINT 681 | //-- BH1750 (BMX280_SENSOR_ENDPOINT): Add cluster list for BH1750 682 | esp_zb_cluster_list_add_illuminance_meas_cluster(esp_zb_cluster_list, bh1750_cluster, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE); 683 | #endif 684 | } 685 | 686 | void add_ds18d20_temperature_cluster(int i, esp_zb_ep_list_t *esp_zb_ep_list) 687 | { 688 | //-- Create attributes list for DS18B20 689 | esp_zb_attribute_list_t *ds18b20_cluster = esp_zb_zcl_attr_list_create(ESP_ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT); 690 | esp_zb_temperature_meas_cluster_add_attr(ds18b20_cluster, ESP_ZB_ZCL_ATTR_TEMP_MEASUREMENT_VALUE_ID, &undefined_value); 691 | esp_zb_temperature_meas_cluster_add_attr(ds18b20_cluster, ESP_ZB_ZCL_ATTR_TEMP_MEASUREMENT_MIN_VALUE_ID, &undefined_value); 692 | esp_zb_temperature_meas_cluster_add_attr(ds18b20_cluster, ESP_ZB_ZCL_ATTR_TEMP_MEASUREMENT_MAX_VALUE_ID, &undefined_value); 693 | //ESP_LOGE(TAG_ESP32C6, "ds18b20_cluster[%d]", i); 694 | 695 | //-- Create cluster list for DS18B20 696 | uint8_t DS18B20_SENSOR_ENDPOINT = BMX280_SENSOR_ENDPOINT + i + 1; 697 | //ESP_LOGE(TAG_ESP32C6, "DS18B20_SENSOR_ENDPOINT[%d] = %d", i, DS18B20_SENSOR_ENDPOINT); 698 | esp_zb_cluster_list_t *ds18b20_cluster_list = esp_zb_zcl_cluster_list_create(); 699 | esp_zb_cluster_list_add_temperature_meas_cluster(ds18b20_cluster_list, ds18b20_cluster, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE); 700 | esp_zb_ep_list_add_ep(esp_zb_ep_list, ds18b20_cluster_list, DS18B20_SENSOR_ENDPOINT, ESP_ZB_AF_HA_PROFILE_ID, ESP_ZB_HA_SIMPLE_SENSOR_DEVICE_ID); 701 | } 702 | 703 | //-- add custom BH1750_SENSOR_ENDPOINT 704 | #if USE_BH1750_SENSOR && USE_BH1750_CUSTOM_ENDPOINT 705 | void add_bh1750_illuminance_cluster(esp_zb_ep_list_t *esp_zb_ep_list) 706 | { 707 | //-- Create attributes list for BH1750 708 | esp_zb_attribute_list_t *bh1750_cluster = esp_zb_zcl_attr_list_create(ESP_ZB_ZCL_CLUSTER_ID_ILLUMINANCE_MEASUREMENT); 709 | esp_zb_illuminance_meas_cluster_add_attr(bh1750_cluster, ESP_ZB_ZCL_ATTR_ILLUMINANCE_MEASUREMENT_MEASURED_VALUE_ID, &undefined_value); 710 | esp_zb_illuminance_meas_cluster_add_attr(bh1750_cluster, ESP_ZB_ZCL_ATTR_ILLUMINANCE_MEASUREMENT_MIN_MEASURED_VALUE_ID, &undefined_value); 711 | esp_zb_illuminance_meas_cluster_add_attr(bh1750_cluster, ESP_ZB_ZCL_ATTR_ILLUMINANCE_MEASUREMENT_MAX_MEASURED_VALUE_ID, &undefined_value); 712 | //ESP_LOGE(TAG_ESP32C6, "bh1750_cluster[%d]", BH1750_SENSOR_ENDPOINT); 713 | 714 | //-- Create cluster list for BH1750 715 | esp_zb_cluster_list_t *bh1750_cluster_list = esp_zb_zcl_cluster_list_create(); 716 | esp_zb_cluster_list_add_illuminance_meas_cluster(bh1750_cluster_list, bh1750_cluster, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE); 717 | esp_zb_ep_list_add_ep(esp_zb_ep_list, bh1750_cluster_list, BH1750_SENSOR_ENDPOINT, ESP_ZB_AF_HA_PROFILE_ID, ESP_ZB_HA_SIMPLE_SENSOR_DEVICE_ID); 718 | } 719 | #endif 720 | 721 | static void esp_zb_task(void *pvParameters) 722 | { 723 | //-- initialize Zigbee stack 724 | esp_zb_cfg_t zb_nwk_cfg = ESP_ZB_ZR_CONFIG(); 725 | esp_zb_init(&zb_nwk_cfg); 726 | 727 | //-- basic cluster create with fully customized 728 | set_zcl_string(manufacturer, MANUFACTURER_NAME); 729 | set_zcl_string(model, MODEL_NAME); 730 | set_zcl_string(firmware_version, FIRMWARE_VERSION); 731 | 732 | esp_zb_attribute_list_t *esp_zb_basic_cluster = esp_zb_zcl_attr_list_create(ESP_ZB_ZCL_CLUSTER_ID_BASIC); 733 | esp_zb_basic_cluster_add_attr(esp_zb_basic_cluster, ESP_ZB_ZCL_ATTR_BASIC_MANUFACTURER_NAME_ID, manufacturer); 734 | esp_zb_basic_cluster_add_attr(esp_zb_basic_cluster, ESP_ZB_ZCL_ATTR_BASIC_MODEL_IDENTIFIER_ID, model); 735 | esp_zb_basic_cluster_add_attr(esp_zb_basic_cluster, ESP_ZB_ZCL_ATTR_BASIC_SW_BUILD_ID, firmware_version); 736 | 737 | //-- identify cluster create with fully customized 738 | uint8_t identyfi_id; 739 | identyfi_id = 0; 740 | esp_zb_attribute_list_t *esp_zb_identify_cluster = esp_zb_zcl_attr_list_create(ESP_ZB_ZCL_CLUSTER_ID_IDENTIFY); 741 | esp_zb_identify_cluster_add_attr(esp_zb_identify_cluster, ESP_ZB_ZCL_CMD_IDENTIFY_IDENTIFY_ID, &identyfi_id); 742 | 743 | //-- Time cluster 744 | esp_zb_attribute_list_t *esp_zb_server_time_cluster = esp_zb_zcl_attr_list_create(ESP_ZB_ZCL_CLUSTER_ID_TIME); 745 | 746 | /** Create ota client cluster with attributes. 747 | * Manufacturer code, image type and file version should match with configured values for server. 748 | * If the client values do not match with configured values then it shall discard the command and 749 | * no further processing shall continue. 750 | */ 751 | esp_zb_ota_cluster_cfg_t ota_cluster_cfg = { 752 | .ota_upgrade_downloaded_file_ver = OTA_UPGRADE_FILE_VERSION, 753 | .ota_upgrade_manufacturer = OTA_UPGRADE_MANUFACTURER, 754 | .ota_upgrade_image_type = OTA_UPGRADE_IMAGE_TYPE, 755 | }; 756 | esp_zb_attribute_list_t *esp_zb_ota_client_cluster = esp_zb_ota_cluster_create(&ota_cluster_cfg); 757 | //-- add client parameters to ota client cluster 758 | esp_zb_ota_upgrade_client_parameter_t ota_client_parameter_config = { 759 | //-- time interval for query next image request command 760 | .query_timer = ESP_ZB_ZCL_OTA_UPGRADE_QUERY_TIMER_COUNT_DEF, 761 | //-- version of hardware 762 | .hardware_version = OTA_UPGRADE_HW_VERSION, 763 | //-- maximum data size of query block image 764 | .max_data_size = OTA_UPGRADE_MAX_DATA_SIZE, 765 | }; 766 | void *ota_client_parameters = esp_zb_ota_client_parameter(&ota_client_parameter_config); 767 | esp_zb_ota_cluster_add_attr(esp_zb_ota_client_cluster, ESP_ZB_ZCL_ATTR_OTA_UPGRADE_CLIENT_PARAMETER_ID, ota_client_parameters); 768 | 769 | //-- Create full cluster list enabled on device 770 | esp_zb_cluster_list_t *esp_zb_cluster_list = esp_zb_zcl_cluster_list_create(); 771 | esp_zb_cluster_list_add_basic_cluster(esp_zb_cluster_list, esp_zb_basic_cluster, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE); 772 | esp_zb_cluster_list_add_identify_cluster(esp_zb_cluster_list, esp_zb_identify_cluster, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE); 773 | add_bx280_clusters(esp_zb_cluster_list); 774 | esp_zb_cluster_list_add_time_cluster(esp_zb_cluster_list, esp_zb_server_time_cluster, ESP_ZB_ZCL_CLUSTER_CLIENT_ROLE); 775 | esp_zb_cluster_list_add_ota_cluster(esp_zb_cluster_list, esp_zb_ota_client_cluster, ESP_ZB_ZCL_CLUSTER_CLIENT_ROLE); 776 | 777 | esp_zb_ep_list_t *esp_zb_ep_list = esp_zb_ep_list_create(); 778 | esp_zb_ep_list_add_ep(esp_zb_ep_list, esp_zb_cluster_list, BMX280_SENSOR_ENDPOINT, ESP_ZB_AF_HA_PROFILE_ID, ESP_ZB_HA_SIMPLE_SENSOR_DEVICE_ID); 779 | 780 | //-- Temperature DS18B20 cluster 781 | for(int i = 0; i < ONEWIRE_MAX_DS18B20; i ++) { 782 | add_ds18d20_temperature_cluster(i, esp_zb_ep_list); 783 | } 784 | 785 | #if USE_BH1750_SENSOR && USE_BH1750_CUSTOM_ENDPOINT 786 | //-- BH1750: create custom BH1750_SENSOR_ENDPOINT & add iluminance cluster 787 | add_bh1750_illuminance_cluster(esp_zb_ep_list); 788 | #endif 789 | 790 | //-- END 791 | esp_zb_device_register(esp_zb_ep_list); 792 | esp_zb_core_action_handler_register(zb_action_handler); 793 | esp_zb_set_primary_network_channel_set(ESP_ZB_PRIMARY_CHANNEL_MASK); 794 | ESP_ERROR_CHECK(esp_zb_start(true)); 795 | 796 | esp_zb_main_loop_iteration(); 797 | 798 | 799 | //vTaskDelay(10000 / portTICK_PERIOD_MS); 800 | } 801 | 802 | void app_main(void) 803 | { 804 | register_button(); 805 | ESP_ERROR_CHECK(i2c_master_init()); 806 | 807 | configure_led(); 808 | 809 | esp_zb_platform_config_t config = { 810 | .radio_config = ESP_ZB_DEFAULT_RADIO_CONFIG(), 811 | .host_config = ESP_ZB_DEFAULT_HOST_CONFIG(), 812 | }; 813 | ESP_ERROR_CHECK(nvs_flash_init()); 814 | ESP_ERROR_CHECK(esp_zb_platform_config(&config)); 815 | 816 | xTaskCreate(lcd_task, "lcd_task", 4096, NULL, 1, NULL); 817 | xTaskCreate(bmx280_task, "bmx280_task", 4096, NULL, 2, NULL); 818 | xTaskCreate(ds18b20_init_task, "ds18b20_init_task", 4096, NULL, 3, NULL); 819 | xTaskCreate(ds18b20_task, "ds18b20_task", 4096, NULL, 4, NULL); 820 | #if USE_BH1750_SENSOR 821 | xTaskCreate(bh1750_task, "bh1750_task", 4096, NULL, 5, NULL); 822 | #endif 823 | 824 | xTaskCreate(esp_zb_task, "Zigbee_main", 4096, NULL, 6, NULL); 825 | xTaskCreate(update_attribute, "Update_attribute_value", 4096, NULL, 7, NULL); 826 | } 827 | -------------------------------------------------------------------------------- /sdkconfig: -------------------------------------------------------------------------------- 1 | # 2 | # Automatically generated file. DO NOT EDIT. 3 | # Espressif IoT Development Framework (ESP-IDF) 5.1.2 Project Configuration 4 | # 5 | CONFIG_SOC_ADC_SUPPORTED=y 6 | CONFIG_SOC_DEDICATED_GPIO_SUPPORTED=y 7 | CONFIG_SOC_UART_SUPPORTED=y 8 | CONFIG_SOC_GDMA_SUPPORTED=y 9 | CONFIG_SOC_GPTIMER_SUPPORTED=y 10 | CONFIG_SOC_PCNT_SUPPORTED=y 11 | CONFIG_SOC_MCPWM_SUPPORTED=y 12 | CONFIG_SOC_TWAI_SUPPORTED=y 13 | CONFIG_SOC_ETM_SUPPORTED=y 14 | CONFIG_SOC_PARLIO_SUPPORTED=y 15 | CONFIG_SOC_BT_SUPPORTED=y 16 | CONFIG_SOC_IEEE802154_SUPPORTED=y 17 | CONFIG_SOC_ASYNC_MEMCPY_SUPPORTED=y 18 | CONFIG_SOC_USB_SERIAL_JTAG_SUPPORTED=y 19 | CONFIG_SOC_TEMP_SENSOR_SUPPORTED=y 20 | CONFIG_SOC_WIFI_SUPPORTED=y 21 | CONFIG_SOC_SUPPORTS_SECURE_DL_MODE=y 22 | CONFIG_SOC_ULP_SUPPORTED=y 23 | CONFIG_SOC_LP_CORE_SUPPORTED=y 24 | CONFIG_SOC_EFUSE_KEY_PURPOSE_FIELD=y 25 | CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y 26 | CONFIG_SOC_RTC_MEM_SUPPORTED=y 27 | CONFIG_SOC_I2S_SUPPORTED=y 28 | CONFIG_SOC_RMT_SUPPORTED=y 29 | CONFIG_SOC_SDM_SUPPORTED=y 30 | CONFIG_SOC_GPSPI_SUPPORTED=y 31 | CONFIG_SOC_LEDC_SUPPORTED=y 32 | CONFIG_SOC_I2C_SUPPORTED=y 33 | CONFIG_SOC_SYSTIMER_SUPPORTED=y 34 | CONFIG_SOC_SUPPORT_COEXISTENCE=y 35 | CONFIG_SOC_AES_SUPPORTED=y 36 | CONFIG_SOC_MPI_SUPPORTED=y 37 | CONFIG_SOC_SHA_SUPPORTED=y 38 | CONFIG_SOC_HMAC_SUPPORTED=y 39 | CONFIG_SOC_DIG_SIGN_SUPPORTED=y 40 | CONFIG_SOC_ECC_SUPPORTED=y 41 | CONFIG_SOC_FLASH_ENC_SUPPORTED=y 42 | CONFIG_SOC_SECURE_BOOT_SUPPORTED=y 43 | CONFIG_SOC_SDIO_SLAVE_SUPPORTED=y 44 | CONFIG_SOC_BOD_SUPPORTED=y 45 | CONFIG_SOC_APM_SUPPORTED=y 46 | CONFIG_SOC_PMU_SUPPORTED=y 47 | CONFIG_SOC_PAU_SUPPORTED=y 48 | CONFIG_SOC_LP_TIMER_SUPPORTED=y 49 | CONFIG_SOC_LP_AON_SUPPORTED=y 50 | CONFIG_SOC_LP_I2C_SUPPORTED=y 51 | CONFIG_SOC_XTAL_SUPPORT_40M=y 52 | CONFIG_SOC_AES_SUPPORT_DMA=y 53 | CONFIG_SOC_AES_GDMA=y 54 | CONFIG_SOC_AES_SUPPORT_AES_128=y 55 | CONFIG_SOC_AES_SUPPORT_AES_256=y 56 | CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y 57 | CONFIG_SOC_ADC_DIG_IIR_FILTER_SUPPORTED=y 58 | CONFIG_SOC_ADC_MONITOR_SUPPORTED=y 59 | CONFIG_SOC_ADC_DMA_SUPPORTED=y 60 | CONFIG_SOC_ADC_PERIPH_NUM=1 61 | CONFIG_SOC_ADC_MAX_CHANNEL_NUM=7 62 | CONFIG_SOC_ADC_ATTEN_NUM=4 63 | CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=1 64 | CONFIG_SOC_ADC_PATT_LEN_MAX=8 65 | CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12 66 | CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=12 67 | CONFIG_SOC_ADC_DIGI_IIR_FILTER_NUM=2 68 | CONFIG_SOC_ADC_DIGI_MONITOR_NUM=2 69 | CONFIG_SOC_ADC_DIGI_RESULT_BYTES=4 70 | CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4 71 | CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=83333 72 | CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=611 73 | CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=12 74 | CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 75 | CONFIG_SOC_ADC_CALIBRATION_V1_SUPPORTED=y 76 | CONFIG_SOC_ADC_SELF_HW_CALI_SUPPORTED=y 77 | CONFIG_SOC_ADC_CALIB_CHAN_COMPENS_SUPPORTED=y 78 | CONFIG_SOC_ADC_TEMPERATURE_SHARE_INTR=y 79 | CONFIG_SOC_BROWNOUT_RESET_SUPPORTED=y 80 | CONFIG_SOC_SHARED_IDCACHE_SUPPORTED=y 81 | CONFIG_SOC_CACHE_FREEZE_SUPPORTED=y 82 | CONFIG_SOC_CPU_CORES_NUM=1 83 | CONFIG_SOC_CPU_INTR_NUM=32 84 | CONFIG_SOC_CPU_HAS_FLEXIBLE_INTC=y 85 | CONFIG_SOC_INT_PLIC_SUPPORTED=y 86 | CONFIG_SOC_CPU_BREAKPOINTS_NUM=4 87 | CONFIG_SOC_CPU_WATCHPOINTS_NUM=4 88 | CONFIG_SOC_CPU_WATCHPOINT_SIZE=0x80000000 89 | CONFIG_SOC_CPU_HAS_PMA=y 90 | CONFIG_SOC_CPU_IDRAM_SPLIT_USING_PMP=y 91 | CONFIG_SOC_DS_SIGNATURE_MAX_BIT_LEN=3072 92 | CONFIG_SOC_DS_KEY_PARAM_MD_IV_LENGTH=16 93 | CONFIG_SOC_DS_KEY_CHECK_MAX_WAIT_US=1100 94 | CONFIG_SOC_GDMA_GROUPS=1 95 | CONFIG_SOC_GDMA_PAIRS_PER_GROUP=3 96 | CONFIG_SOC_GDMA_SUPPORT_ETM=y 97 | CONFIG_SOC_ETM_GROUPS=1 98 | CONFIG_SOC_ETM_CHANNELS_PER_GROUP=50 99 | CONFIG_SOC_GPIO_PORT=1 100 | CONFIG_SOC_GPIO_PIN_COUNT=31 101 | CONFIG_SOC_GPIO_SUPPORT_PIN_GLITCH_FILTER=y 102 | CONFIG_SOC_GPIO_FLEX_GLITCH_FILTER_NUM=8 103 | CONFIG_SOC_GPIO_SUPPORT_ETM=y 104 | CONFIG_SOC_GPIO_ETM_EVENTS_PER_GROUP=8 105 | CONFIG_SOC_GPIO_ETM_TASKS_PER_GROUP=8 106 | CONFIG_SOC_GPIO_SUPPORT_RTC_INDEPENDENT=y 107 | CONFIG_SOC_GPIO_SUPPORT_DEEPSLEEP_WAKEUP=y 108 | CONFIG_SOC_GPIO_DEEP_SLEEP_WAKE_VALID_GPIO_MASK=0 109 | CONFIG_SOC_GPIO_VALID_DIGITAL_IO_PAD_MASK=0x000000007FFFFF00 110 | CONFIG_SOC_GPIO_SUPPORT_FORCE_HOLD=y 111 | CONFIG_SOC_GPIO_SUPPORT_HOLD_SINGLE_IO_IN_DSLP=y 112 | CONFIG_SOC_RTCIO_PIN_COUNT=8 113 | CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y 114 | CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y 115 | CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y 116 | CONFIG_SOC_DEDIC_GPIO_OUT_CHANNELS_NUM=8 117 | CONFIG_SOC_DEDIC_GPIO_IN_CHANNELS_NUM=8 118 | CONFIG_SOC_DEDIC_PERIPH_ALWAYS_ENABLE=y 119 | CONFIG_SOC_I2C_NUM=1 120 | CONFIG_SOC_I2C_FIFO_LEN=32 121 | CONFIG_SOC_I2C_CMD_REG_NUM=8 122 | CONFIG_SOC_I2C_SUPPORT_SLAVE=y 123 | CONFIG_SOC_I2C_SUPPORT_HW_CLR_BUS=y 124 | CONFIG_SOC_I2C_SUPPORT_XTAL=y 125 | CONFIG_SOC_I2C_SUPPORT_RTC=y 126 | CONFIG_SOC_LP_I2C_NUM=1 127 | CONFIG_SOC_LP_I2C_FIFO_LEN=16 128 | CONFIG_SOC_I2S_NUM=1 129 | CONFIG_SOC_I2S_HW_VERSION_2=y 130 | CONFIG_SOC_I2S_SUPPORTS_XTAL=y 131 | CONFIG_SOC_I2S_SUPPORTS_PLL_F160M=y 132 | CONFIG_SOC_I2S_SUPPORTS_PCM=y 133 | CONFIG_SOC_I2S_SUPPORTS_PDM=y 134 | CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y 135 | CONFIG_SOC_I2S_PDM_MAX_TX_LINES=2 136 | CONFIG_SOC_I2S_SUPPORTS_TDM=y 137 | CONFIG_SOC_LEDC_SUPPORT_PLL_DIV_CLOCK=y 138 | CONFIG_SOC_LEDC_SUPPORT_XTAL_CLOCK=y 139 | CONFIG_SOC_LEDC_CHANNEL_NUM=6 140 | CONFIG_SOC_LEDC_TIMER_BIT_WIDTH=20 141 | CONFIG_SOC_LEDC_SUPPORT_FADE_STOP=y 142 | CONFIG_SOC_LEDC_GAMMA_CURVE_FADE_SUPPORTED=y 143 | CONFIG_SOC_LEDC_GAMMA_CURVE_FADE_RANGE_MAX=16 144 | CONFIG_SOC_LEDC_FADE_PARAMS_BIT_WIDTH=10 145 | CONFIG_SOC_MMU_PAGE_SIZE_CONFIGURABLE=y 146 | CONFIG_SOC_MMU_PERIPH_NUM=1 147 | CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=1 148 | CONFIG_SOC_MMU_DI_VADDR_SHARED=y 149 | CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 150 | CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 151 | CONFIG_SOC_PCNT_GROUPS=1 152 | CONFIG_SOC_PCNT_UNITS_PER_GROUP=4 153 | CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2 154 | CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2 155 | CONFIG_SOC_PCNT_SUPPORT_RUNTIME_THRES_UPDATE=y 156 | CONFIG_SOC_RMT_GROUPS=1 157 | CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=2 158 | CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=2 159 | CONFIG_SOC_RMT_CHANNELS_PER_GROUP=4 160 | CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=48 161 | CONFIG_SOC_RMT_SUPPORT_RX_PINGPONG=y 162 | CONFIG_SOC_RMT_SUPPORT_RX_DEMODULATION=y 163 | CONFIG_SOC_RMT_SUPPORT_TX_ASYNC_STOP=y 164 | CONFIG_SOC_RMT_SUPPORT_TX_LOOP_COUNT=y 165 | CONFIG_SOC_RMT_SUPPORT_TX_LOOP_AUTO_STOP=y 166 | CONFIG_SOC_RMT_SUPPORT_TX_SYNCHRO=y 167 | CONFIG_SOC_RMT_SUPPORT_TX_CARRIER_DATA_ONLY=y 168 | CONFIG_SOC_RMT_SUPPORT_XTAL=y 169 | CONFIG_SOC_RMT_SUPPORT_RC_FAST=y 170 | CONFIG_SOC_MCPWM_GROUPS=1 171 | CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3 172 | CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3 173 | CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2 174 | CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2 175 | CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2 176 | CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3 177 | CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y 178 | CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3 179 | CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3 180 | CONFIG_SOC_MCPWM_SWSYNC_CAN_PROPAGATE=y 181 | CONFIG_SOC_MCPWM_SUPPORT_ETM=y 182 | CONFIG_SOC_MCPWM_CAPTURE_CLK_FROM_GROUP=y 183 | CONFIG_SOC_PARLIO_GROUPS=1 184 | CONFIG_SOC_PARLIO_TX_UNITS_PER_GROUP=1 185 | CONFIG_SOC_PARLIO_RX_UNITS_PER_GROUP=1 186 | CONFIG_SOC_PARLIO_TX_UNIT_MAX_DATA_WIDTH=16 187 | CONFIG_SOC_PARLIO_RX_UNIT_MAX_DATA_WIDTH=16 188 | CONFIG_SOC_PARLIO_TX_RX_SHARE_INTERRUPT=y 189 | CONFIG_SOC_RSA_MAX_BIT_LEN=3072 190 | CONFIG_SOC_SHA_DMA_MAX_BUFFER_SIZE=3968 191 | CONFIG_SOC_SHA_SUPPORT_DMA=y 192 | CONFIG_SOC_SHA_SUPPORT_RESUME=y 193 | CONFIG_SOC_SHA_GDMA=y 194 | CONFIG_SOC_SHA_SUPPORT_SHA1=y 195 | CONFIG_SOC_SHA_SUPPORT_SHA224=y 196 | CONFIG_SOC_SHA_SUPPORT_SHA256=y 197 | CONFIG_SOC_SDM_GROUPS=1 198 | CONFIG_SOC_SDM_CHANNELS_PER_GROUP=4 199 | CONFIG_SOC_SDM_CLK_SUPPORT_PLL_F80M=y 200 | CONFIG_SOC_SDM_CLK_SUPPORT_XTAL=y 201 | CONFIG_SOC_SPI_PERIPH_NUM=2 202 | CONFIG_SOC_SPI_MAX_CS_NUM=6 203 | CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 204 | CONFIG_SOC_SPI_SUPPORT_DDRCLK=y 205 | CONFIG_SOC_SPI_SLAVE_SUPPORT_SEG_TRANS=y 206 | CONFIG_SOC_SPI_SUPPORT_CD_SIG=y 207 | CONFIG_SOC_SPI_SUPPORT_CONTINUOUS_TRANS=y 208 | CONFIG_SOC_SPI_SUPPORT_SLAVE_HD_VER2=y 209 | CONFIG_SOC_SPI_SUPPORT_CLK_XTAL=y 210 | CONFIG_SOC_SPI_SUPPORT_CLK_PLL_F80M=y 211 | CONFIG_SOC_SPI_SUPPORT_CLK_RC_FAST=y 212 | CONFIG_SOC_MEMSPI_IS_INDEPENDENT=y 213 | CONFIG_SOC_SPI_MAX_PRE_DIVIDER=16 214 | CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE=y 215 | CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND=y 216 | CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_RESUME=y 217 | CONFIG_SOC_SPI_MEM_SUPPORT_IDLE_INTR=y 218 | CONFIG_SOC_SPI_MEM_SUPPORT_SW_SUSPEND=y 219 | CONFIG_SOC_SPI_MEM_SUPPORT_CHECK_SUS=y 220 | CONFIG_SOC_SPI_MEM_SUPPORT_WRAP=y 221 | CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y 222 | CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y 223 | CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y 224 | CONFIG_SOC_SYSTIMER_COUNTER_NUM=2 225 | CONFIG_SOC_SYSTIMER_ALARM_NUM=3 226 | CONFIG_SOC_SYSTIMER_BIT_WIDTH_LO=32 227 | CONFIG_SOC_SYSTIMER_BIT_WIDTH_HI=20 228 | CONFIG_SOC_SYSTIMER_FIXED_DIVIDER=y 229 | CONFIG_SOC_SYSTIMER_SUPPORT_RC_FAST=y 230 | CONFIG_SOC_SYSTIMER_INT_LEVEL=y 231 | CONFIG_SOC_SYSTIMER_ALARM_MISS_COMPENSATE=y 232 | CONFIG_SOC_SYSTIMER_SUPPORT_ETM=y 233 | CONFIG_SOC_LP_TIMER_BIT_WIDTH_LO=32 234 | CONFIG_SOC_LP_TIMER_BIT_WIDTH_HI=16 235 | CONFIG_SOC_TIMER_GROUPS=2 236 | CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=1 237 | CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=54 238 | CONFIG_SOC_TIMER_GROUP_SUPPORT_XTAL=y 239 | CONFIG_SOC_TIMER_GROUP_SUPPORT_RC_FAST=y 240 | CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=2 241 | CONFIG_SOC_TIMER_SUPPORT_ETM=y 242 | CONFIG_SOC_MWDT_SUPPORT_XTAL=y 243 | CONFIG_SOC_TWAI_CONTROLLER_NUM=2 244 | CONFIG_SOC_TWAI_CLK_SUPPORT_XTAL=y 245 | CONFIG_SOC_TWAI_BRP_MIN=2 246 | CONFIG_SOC_TWAI_BRP_MAX=32768 247 | CONFIG_SOC_TWAI_SUPPORTS_RX_STATUS=y 248 | CONFIG_SOC_EFUSE_DIS_DOWNLOAD_ICACHE=y 249 | CONFIG_SOC_EFUSE_DIS_PAD_JTAG=y 250 | CONFIG_SOC_EFUSE_DIS_USB_JTAG=y 251 | CONFIG_SOC_EFUSE_DIS_DIRECT_BOOT=y 252 | CONFIG_SOC_EFUSE_SOFT_DIS_JTAG=y 253 | CONFIG_SOC_EFUSE_DIS_ICACHE=y 254 | CONFIG_SOC_EFUSE_BLOCK9_KEY_PURPOSE_QUIRK=y 255 | CONFIG_SOC_SECURE_BOOT_V2_RSA=y 256 | CONFIG_SOC_SECURE_BOOT_V2_ECC=y 257 | CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=3 258 | CONFIG_SOC_EFUSE_REVOKE_BOOT_KEY_DIGESTS=y 259 | CONFIG_SOC_SUPPORT_SECURE_BOOT_REVOKE_KEY=y 260 | CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=32 261 | CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES=y 262 | CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_128=y 263 | CONFIG_SOC_CRYPTO_DPA_PROTECTION_SUPPORTED=y 264 | CONFIG_SOC_UART_NUM=2 265 | CONFIG_SOC_UART_FIFO_LEN=128 266 | CONFIG_SOC_UART_BITRATE_MAX=5000000 267 | CONFIG_SOC_UART_SUPPORT_PLL_F80M_CLK=y 268 | CONFIG_SOC_UART_SUPPORT_RTC_CLK=y 269 | CONFIG_SOC_UART_SUPPORT_XTAL_CLK=y 270 | CONFIG_SOC_UART_SUPPORT_WAKEUP_INT=y 271 | CONFIG_SOC_UART_SUPPORT_FSM_TX_WAIT_SEND=y 272 | CONFIG_SOC_COEX_HW_PTI=y 273 | CONFIG_SOC_EXTERNAL_COEX_ADVANCE=y 274 | CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 275 | CONFIG_SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH=12 276 | CONFIG_SOC_PM_SUPPORT_WIFI_WAKEUP=y 277 | CONFIG_SOC_PM_SUPPORT_BEACON_WAKEUP=y 278 | CONFIG_SOC_PM_SUPPORT_BT_WAKEUP=y 279 | CONFIG_SOC_PM_SUPPORT_EXT1_WAKEUP=y 280 | CONFIG_SOC_PM_SUPPORT_CPU_PD=y 281 | CONFIG_SOC_PM_SUPPORT_MODEM_PD=y 282 | CONFIG_SOC_PM_SUPPORT_XTAL32K_PD=y 283 | CONFIG_SOC_PM_SUPPORT_RC32K_PD=y 284 | CONFIG_SOC_PM_SUPPORT_RC_FAST_PD=y 285 | CONFIG_SOC_PM_SUPPORT_VDDSDIO_PD=y 286 | CONFIG_SOC_PM_SUPPORT_TOP_PD=y 287 | CONFIG_SOC_PM_SUPPORT_HP_AON_PD=y 288 | CONFIG_SOC_PM_SUPPORT_MAC_BB_PD=y 289 | CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y 290 | CONFIG_SOC_PM_SUPPORT_PMU_MODEM_STATE=y 291 | CONFIG_SOC_PM_SUPPORT_DEEPSLEEP_CHECK_STUB_ONLY=y 292 | CONFIG_SOC_PM_CPU_RETENTION_BY_SW=y 293 | CONFIG_SOC_PM_MODEM_RETENTION_BY_REGDMA=y 294 | CONFIG_SOC_PM_RETENTION_HAS_CLOCK_BUG=y 295 | CONFIG_SOC_PM_PAU_LINK_NUM=4 296 | CONFIG_SOC_CLK_RC_FAST_SUPPORT_CALIBRATION=y 297 | CONFIG_SOC_MODEM_CLOCK_IS_INDEPENDENT=y 298 | CONFIG_SOC_CLK_XTAL32K_SUPPORTED=y 299 | CONFIG_SOC_CLK_OSC_SLOW_SUPPORTED=y 300 | CONFIG_SOC_CLK_RC32K_SUPPORTED=y 301 | CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_FAST_RC=y 302 | CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_XTAL=y 303 | CONFIG_SOC_TEMPERATURE_SENSOR_INTR_SUPPORT=y 304 | CONFIG_SOC_WIFI_HW_TSF=y 305 | CONFIG_SOC_WIFI_GCMP_SUPPORT=y 306 | CONFIG_SOC_WIFI_WAPI_SUPPORT=y 307 | CONFIG_SOC_WIFI_CSI_SUPPORT=y 308 | CONFIG_SOC_WIFI_MESH_SUPPORT=y 309 | CONFIG_SOC_WIFI_HE_SUPPORT=y 310 | CONFIG_SOC_BLE_SUPPORTED=y 311 | CONFIG_SOC_BLE_MESH_SUPPORTED=y 312 | CONFIG_SOC_ESP_NIMBLE_CONTROLLER=y 313 | CONFIG_SOC_BLE_50_SUPPORTED=y 314 | CONFIG_SOC_BLE_DEVICE_PRIVACY_SUPPORTED=y 315 | CONFIG_SOC_BLE_POWER_CONTROL_SUPPORTED=y 316 | CONFIG_SOC_BLE_PERIODIC_ADV_ENH_SUPPORTED=y 317 | CONFIG_SOC_BLUFI_SUPPORTED=y 318 | CONFIG_SOC_BLE_MULTI_CONN_OPTIMIZATION=y 319 | CONFIG_SOC_BLE_USE_WIFI_PWR_CLK_WORKAROUND=y 320 | CONFIG_SOC_PHY_COMBO_MODULE=y 321 | CONFIG_IDF_CMAKE=y 322 | CONFIG_IDF_TARGET_ARCH_RISCV=y 323 | CONFIG_IDF_TARGET_ARCH="riscv" 324 | CONFIG_IDF_TARGET="esp32c6" 325 | CONFIG_IDF_TARGET_ESP32C6=y 326 | CONFIG_IDF_FIRMWARE_CHIP_ID=0x000D 327 | 328 | # 329 | # Build type 330 | # 331 | CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y 332 | # CONFIG_APP_BUILD_TYPE_RAM is not set 333 | CONFIG_APP_BUILD_GENERATE_BINARIES=y 334 | CONFIG_APP_BUILD_BOOTLOADER=y 335 | CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y 336 | # CONFIG_APP_REPRODUCIBLE_BUILD is not set 337 | # CONFIG_APP_NO_BLOBS is not set 338 | # end of Build type 339 | 340 | # 341 | # Bootloader config 342 | # 343 | CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x0 344 | CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y 345 | # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set 346 | # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set 347 | # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set 348 | # CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set 349 | # CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set 350 | # CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set 351 | CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y 352 | # CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set 353 | # CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set 354 | CONFIG_BOOTLOADER_LOG_LEVEL=3 355 | # CONFIG_BOOTLOADER_FACTORY_RESET is not set 356 | # CONFIG_BOOTLOADER_APP_TEST is not set 357 | CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y 358 | CONFIG_BOOTLOADER_WDT_ENABLE=y 359 | # CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set 360 | CONFIG_BOOTLOADER_WDT_TIME_MS=9000 361 | # CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set 362 | # CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set 363 | # CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set 364 | # CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set 365 | CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 366 | # CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set 367 | CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y 368 | # end of Bootloader config 369 | 370 | # 371 | # Security features 372 | # 373 | CONFIG_SECURE_BOOT_V2_RSA_SUPPORTED=y 374 | CONFIG_SECURE_BOOT_V2_ECC_SUPPORTED=y 375 | CONFIG_SECURE_BOOT_V2_PREFERRED=y 376 | # CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set 377 | # CONFIG_SECURE_BOOT is not set 378 | # CONFIG_SECURE_FLASH_ENC_ENABLED is not set 379 | CONFIG_SECURE_ROM_DL_MODE_ENABLED=y 380 | # end of Security features 381 | 382 | # 383 | # Application manager 384 | # 385 | CONFIG_APP_COMPILE_TIME_DATE=y 386 | # CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set 387 | # CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set 388 | # CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set 389 | CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16 390 | # end of Application manager 391 | 392 | CONFIG_ESP_ROM_HAS_CRC_LE=y 393 | CONFIG_ESP_ROM_HAS_CRC_BE=y 394 | CONFIG_ESP_ROM_HAS_JPEG_DECODE=y 395 | CONFIG_ESP_ROM_UART_CLK_IS_XTAL=y 396 | CONFIG_ESP_ROM_USB_SERIAL_DEVICE_NUM=3 397 | CONFIG_ESP_ROM_HAS_RETARGETABLE_LOCKING=y 398 | CONFIG_ESP_ROM_GET_CLK_FREQ=y 399 | CONFIG_ESP_ROM_HAS_RVFPLIB=y 400 | CONFIG_ESP_ROM_HAS_HAL_WDT=y 401 | CONFIG_ESP_ROM_HAS_HAL_SYSTIMER=y 402 | CONFIG_ESP_ROM_HAS_HEAP_TLSF=y 403 | CONFIG_ESP_ROM_HAS_LAYOUT_TABLE=y 404 | CONFIG_ESP_ROM_HAS_SPI_FLASH=y 405 | CONFIG_ESP_ROM_HAS_REGI2C_BUG=y 406 | CONFIG_ESP_ROM_HAS_NEWLIB_NORMAL_FORMAT=y 407 | CONFIG_ESP_ROM_REV0_HAS_NO_ECDSA_INTERFACE=y 408 | CONFIG_ESP_ROM_WDT_INIT_PATCH=y 409 | CONFIG_ESP_ROM_NEEDS_SET_CACHE_MMU_SIZE=y 410 | CONFIG_ESP_ROM_RAM_APP_NEEDS_MMU_INIT=y 411 | 412 | # 413 | # Boot ROM Behavior 414 | # 415 | CONFIG_BOOT_ROM_LOG_ALWAYS_ON=y 416 | # CONFIG_BOOT_ROM_LOG_ALWAYS_OFF is not set 417 | # CONFIG_BOOT_ROM_LOG_ON_GPIO_HIGH is not set 418 | # CONFIG_BOOT_ROM_LOG_ON_GPIO_LOW is not set 419 | # end of Boot ROM Behavior 420 | 421 | # 422 | # Serial flasher config 423 | # 424 | # CONFIG_ESPTOOLPY_NO_STUB is not set 425 | # CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set 426 | # CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set 427 | CONFIG_ESPTOOLPY_FLASHMODE_DIO=y 428 | # CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set 429 | CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y 430 | CONFIG_ESPTOOLPY_FLASHMODE="dio" 431 | CONFIG_ESPTOOLPY_FLASHFREQ_80M=y 432 | # CONFIG_ESPTOOLPY_FLASHFREQ_40M is not set 433 | # CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set 434 | CONFIG_ESPTOOLPY_FLASHFREQ_80M_DEFAULT=y 435 | CONFIG_ESPTOOLPY_FLASHFREQ="80m" 436 | # CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set 437 | # CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set 438 | # CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set 439 | # CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set 440 | CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y 441 | # CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set 442 | # CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set 443 | # CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set 444 | CONFIG_ESPTOOLPY_FLASHSIZE="16MB" 445 | # CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set 446 | CONFIG_ESPTOOLPY_BEFORE_RESET=y 447 | # CONFIG_ESPTOOLPY_BEFORE_NORESET is not set 448 | CONFIG_ESPTOOLPY_BEFORE="default_reset" 449 | CONFIG_ESPTOOLPY_AFTER_RESET=y 450 | # CONFIG_ESPTOOLPY_AFTER_NORESET is not set 451 | CONFIG_ESPTOOLPY_AFTER="hard_reset" 452 | CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 453 | # end of Serial flasher config 454 | 455 | # 456 | # Partition Table 457 | # 458 | # CONFIG_PARTITION_TABLE_SINGLE_APP is not set 459 | # CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set 460 | # CONFIG_PARTITION_TABLE_TWO_OTA is not set 461 | CONFIG_PARTITION_TABLE_CUSTOM=y 462 | CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" 463 | CONFIG_PARTITION_TABLE_FILENAME="partitions.csv" 464 | CONFIG_PARTITION_TABLE_OFFSET=0x8000 465 | CONFIG_PARTITION_TABLE_MD5=y 466 | # end of Partition Table 467 | 468 | # 469 | # Compiler options 470 | # 471 | CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y 472 | # CONFIG_COMPILER_OPTIMIZATION_SIZE is not set 473 | # CONFIG_COMPILER_OPTIMIZATION_PERF is not set 474 | # CONFIG_COMPILER_OPTIMIZATION_NONE is not set 475 | CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y 476 | # CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set 477 | # CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set 478 | # CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB is not set 479 | CONFIG_COMPILER_FLOAT_LIB_FROM_RVFPLIB=y 480 | CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 481 | # CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set 482 | CONFIG_COMPILER_HIDE_PATHS_MACROS=y 483 | # CONFIG_COMPILER_CXX_EXCEPTIONS is not set 484 | # CONFIG_COMPILER_CXX_RTTI is not set 485 | CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y 486 | # CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set 487 | # CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set 488 | # CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set 489 | # CONFIG_COMPILER_WARN_WRITE_STRINGS is not set 490 | # CONFIG_COMPILER_SAVE_RESTORE_LIBCALLS is not set 491 | # CONFIG_COMPILER_DISABLE_GCC12_WARNINGS is not set 492 | # CONFIG_COMPILER_DUMP_RTL_FILES is not set 493 | # end of Compiler options 494 | 495 | # 496 | # Component config 497 | # 498 | 499 | # 500 | # Application Level Tracing 501 | # 502 | # CONFIG_APPTRACE_DEST_JTAG is not set 503 | CONFIG_APPTRACE_DEST_NONE=y 504 | # CONFIG_APPTRACE_DEST_UART1 is not set 505 | CONFIG_APPTRACE_DEST_UART_NONE=y 506 | CONFIG_APPTRACE_UART_TASK_PRIO=1 507 | CONFIG_APPTRACE_LOCK_ENABLE=y 508 | # end of Application Level Tracing 509 | 510 | # 511 | # Bluetooth 512 | # 513 | # CONFIG_BT_ENABLED is not set 514 | # end of Bluetooth 515 | 516 | # 517 | # Driver Configurations 518 | # 519 | 520 | # 521 | # Legacy ADC Configuration 522 | # 523 | # CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set 524 | 525 | # 526 | # Legacy ADC Calibration Configuration 527 | # 528 | # CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set 529 | # end of Legacy ADC Calibration Configuration 530 | # end of Legacy ADC Configuration 531 | 532 | # 533 | # SPI Configuration 534 | # 535 | # CONFIG_SPI_MASTER_IN_IRAM is not set 536 | CONFIG_SPI_MASTER_ISR_IN_IRAM=y 537 | # CONFIG_SPI_SLAVE_IN_IRAM is not set 538 | CONFIG_SPI_SLAVE_ISR_IN_IRAM=y 539 | # end of SPI Configuration 540 | 541 | # 542 | # TWAI Configuration 543 | # 544 | # CONFIG_TWAI_ISR_IN_IRAM is not set 545 | # end of TWAI Configuration 546 | 547 | # 548 | # Temperature sensor Configuration 549 | # 550 | # CONFIG_TEMP_SENSOR_SUPPRESS_DEPRECATE_WARN is not set 551 | # CONFIG_TEMP_SENSOR_ENABLE_DEBUG_LOG is not set 552 | # CONFIG_TEMP_SENSOR_ISR_IRAM_SAFE is not set 553 | # end of Temperature sensor Configuration 554 | 555 | # 556 | # UART Configuration 557 | # 558 | # CONFIG_UART_ISR_IN_IRAM is not set 559 | # end of UART Configuration 560 | 561 | # 562 | # GPIO Configuration 563 | # 564 | # CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set 565 | # end of GPIO Configuration 566 | 567 | # 568 | # Sigma Delta Modulator Configuration 569 | # 570 | # CONFIG_SDM_CTRL_FUNC_IN_IRAM is not set 571 | # CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set 572 | # CONFIG_SDM_ENABLE_DEBUG_LOG is not set 573 | # end of Sigma Delta Modulator Configuration 574 | 575 | # 576 | # GPTimer Configuration 577 | # 578 | CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=y 579 | # CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set 580 | # CONFIG_GPTIMER_ISR_IRAM_SAFE is not set 581 | # CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set 582 | # CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set 583 | # end of GPTimer Configuration 584 | 585 | # 586 | # PCNT Configuration 587 | # 588 | # CONFIG_PCNT_CTRL_FUNC_IN_IRAM is not set 589 | # CONFIG_PCNT_ISR_IRAM_SAFE is not set 590 | # CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set 591 | # CONFIG_PCNT_ENABLE_DEBUG_LOG is not set 592 | # end of PCNT Configuration 593 | 594 | # 595 | # RMT Configuration 596 | # 597 | # CONFIG_RMT_ISR_IRAM_SAFE is not set 598 | # CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set 599 | # CONFIG_RMT_ENABLE_DEBUG_LOG is not set 600 | # end of RMT Configuration 601 | 602 | # 603 | # MCPWM Configuration 604 | # 605 | # CONFIG_MCPWM_ISR_IRAM_SAFE is not set 606 | # CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set 607 | # CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set 608 | # CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set 609 | # end of MCPWM Configuration 610 | 611 | # 612 | # I2S Configuration 613 | # 614 | # CONFIG_I2S_ISR_IRAM_SAFE is not set 615 | # CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set 616 | # CONFIG_I2S_ENABLE_DEBUG_LOG is not set 617 | # end of I2S Configuration 618 | 619 | # 620 | # USB Serial/JTAG Configuration 621 | # 622 | # end of USB Serial/JTAG Configuration 623 | 624 | # 625 | # Parallel IO Configuration 626 | # 627 | # CONFIG_PARLIO_ENABLE_DEBUG_LOG is not set 628 | # CONFIG_PARLIO_ISR_IRAM_SAFE is not set 629 | # end of Parallel IO Configuration 630 | # end of Driver Configurations 631 | 632 | # 633 | # eFuse Bit Manager 634 | # 635 | # CONFIG_EFUSE_CUSTOM_TABLE is not set 636 | # CONFIG_EFUSE_VIRTUAL is not set 637 | CONFIG_EFUSE_MAX_BLK_LEN=256 638 | # end of eFuse Bit Manager 639 | 640 | # 641 | # ESP-TLS 642 | # 643 | CONFIG_ESP_TLS_USING_MBEDTLS=y 644 | CONFIG_ESP_TLS_USE_DS_PERIPHERAL=y 645 | # CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set 646 | # CONFIG_ESP_TLS_SERVER is not set 647 | # CONFIG_ESP_TLS_PSK_VERIFICATION is not set 648 | # CONFIG_ESP_TLS_INSECURE is not set 649 | # end of ESP-TLS 650 | 651 | # 652 | # ADC and ADC Calibration 653 | # 654 | # CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set 655 | # CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is not set 656 | # end of ADC and ADC Calibration 657 | 658 | # 659 | # Wireless Coexistence 660 | # 661 | CONFIG_ESP_COEX_SW_COEXIST_ENABLE=y 662 | # CONFIG_ESP_COEX_EXTERNAL_COEXIST_ENABLE is not set 663 | # end of Wireless Coexistence 664 | 665 | # 666 | # Common ESP-related 667 | # 668 | CONFIG_ESP_ERR_TO_NAME_LOOKUP=y 669 | # end of Common ESP-related 670 | 671 | # 672 | # Ethernet 673 | # 674 | CONFIG_ETH_ENABLED=y 675 | CONFIG_ETH_USE_SPI_ETHERNET=y 676 | # CONFIG_ETH_SPI_ETHERNET_DM9051 is not set 677 | # CONFIG_ETH_SPI_ETHERNET_W5500 is not set 678 | # CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set 679 | # CONFIG_ETH_USE_OPENETH is not set 680 | # CONFIG_ETH_TRANSMIT_MUTEX is not set 681 | # end of Ethernet 682 | 683 | # 684 | # Event Loop Library 685 | # 686 | # CONFIG_ESP_EVENT_LOOP_PROFILING is not set 687 | CONFIG_ESP_EVENT_POST_FROM_ISR=y 688 | CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y 689 | # end of Event Loop Library 690 | 691 | # 692 | # GDB Stub 693 | # 694 | # end of GDB Stub 695 | 696 | # 697 | # ESP HTTP client 698 | # 699 | CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y 700 | # CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set 701 | # CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH is not set 702 | # end of ESP HTTP client 703 | 704 | # 705 | # HTTP Server 706 | # 707 | CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 708 | CONFIG_HTTPD_MAX_URI_LEN=512 709 | CONFIG_HTTPD_ERR_RESP_NO_DELAY=y 710 | CONFIG_HTTPD_PURGE_BUF_LEN=32 711 | # CONFIG_HTTPD_LOG_PURGE_DATA is not set 712 | # CONFIG_HTTPD_WS_SUPPORT is not set 713 | # CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set 714 | # end of HTTP Server 715 | 716 | # 717 | # ESP HTTPS OTA 718 | # 719 | # CONFIG_ESP_HTTPS_OTA_DECRYPT_CB is not set 720 | # CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP is not set 721 | # end of ESP HTTPS OTA 722 | 723 | # 724 | # ESP HTTPS server 725 | # 726 | # CONFIG_ESP_HTTPS_SERVER_ENABLE is not set 727 | # end of ESP HTTPS server 728 | 729 | # 730 | # Hardware Settings 731 | # 732 | 733 | # 734 | # Chip revision 735 | # 736 | CONFIG_ESP32C6_REV_MIN_0=y 737 | # CONFIG_ESP32C6_REV_MIN_1 is not set 738 | CONFIG_ESP32C6_REV_MIN_FULL=0 739 | CONFIG_ESP_REV_MIN_FULL=0 740 | 741 | # 742 | # Maximum Supported ESP32-C6 Revision (Rev v0.99) 743 | # 744 | CONFIG_ESP32C6_REV_MAX_FULL=99 745 | CONFIG_ESP_REV_MAX_FULL=99 746 | # end of Chip revision 747 | 748 | # 749 | # MAC Config 750 | # 751 | CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y 752 | CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y 753 | CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y 754 | CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y 755 | CONFIG_ESP_MAC_ADDR_UNIVERSE_IEEE802154=y 756 | CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES_FOUR=y 757 | # CONFIG_ESP32C6_UNIVERSAL_MAC_ADDRESSES_TWO is not set 758 | CONFIG_ESP32C6_UNIVERSAL_MAC_ADDRESSES_FOUR=y 759 | CONFIG_ESP32C6_UNIVERSAL_MAC_ADDRESSES=4 760 | # end of MAC Config 761 | 762 | # 763 | # Sleep Config 764 | # 765 | # CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set 766 | CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y 767 | # CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU is not set 768 | CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y 769 | CONFIG_ESP_SLEEP_GPIO_ENABLE_INTERNAL_RESISTORS=y 770 | # end of Sleep Config 771 | 772 | # 773 | # RTC Clock Config 774 | # 775 | CONFIG_RTC_CLK_SRC_INT_RC=y 776 | # CONFIG_RTC_CLK_SRC_EXT_CRYS is not set 777 | # CONFIG_RTC_CLK_SRC_EXT_OSC is not set 778 | # CONFIG_RTC_CLK_SRC_INT_RC32K is not set 779 | CONFIG_RTC_CLK_CAL_CYCLES=1024 780 | # end of RTC Clock Config 781 | 782 | # 783 | # Peripheral Control 784 | # 785 | CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y 786 | # end of Peripheral Control 787 | 788 | # 789 | # ETM Configuration 790 | # 791 | # CONFIG_ETM_ENABLE_DEBUG_LOG is not set 792 | # end of ETM Configuration 793 | 794 | # 795 | # GDMA Configuration 796 | # 797 | # CONFIG_GDMA_CTRL_FUNC_IN_IRAM is not set 798 | # CONFIG_GDMA_ISR_IRAM_SAFE is not set 799 | # end of GDMA Configuration 800 | 801 | # 802 | # Main XTAL Config 803 | # 804 | CONFIG_XTAL_FREQ_40=y 805 | CONFIG_XTAL_FREQ=40 806 | # end of Main XTAL Config 807 | 808 | # 809 | # Crypto DPA Protection 810 | # 811 | CONFIG_ESP_CRYPTO_DPA_PROTECTION_AT_STARTUP=y 812 | CONFIG_ESP_CRYPTO_DPA_PROTECTION_LEVEL_LOW=y 813 | # CONFIG_ESP_CRYPTO_DPA_PROTECTION_LEVEL_MEDIUM is not set 814 | # CONFIG_ESP_CRYPTO_DPA_PROTECTION_LEVEL_HIGH is not set 815 | CONFIG_ESP_CRYPTO_DPA_PROTECTION_LEVEL=1 816 | # end of Crypto DPA Protection 817 | # end of Hardware Settings 818 | 819 | # 820 | # LCD and Touch Panel 821 | # 822 | 823 | # 824 | # LCD Touch Drivers are maintained in the IDF Component Registry 825 | # 826 | 827 | # 828 | # LCD Peripheral Configuration 829 | # 830 | CONFIG_LCD_PANEL_IO_FORMAT_BUF_SIZE=32 831 | # CONFIG_LCD_ENABLE_DEBUG_LOG is not set 832 | # end of LCD Peripheral Configuration 833 | # end of LCD and Touch Panel 834 | 835 | # 836 | # ESP NETIF Adapter 837 | # 838 | CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 839 | CONFIG_ESP_NETIF_TCPIP_LWIP=y 840 | # CONFIG_ESP_NETIF_LOOPBACK is not set 841 | CONFIG_ESP_NETIF_USES_TCPIP_WITH_BSD_API=y 842 | # CONFIG_ESP_NETIF_RECEIVE_REPORT_ERRORS is not set 843 | # CONFIG_ESP_NETIF_L2_TAP is not set 844 | # CONFIG_ESP_NETIF_BRIDGE_EN is not set 845 | # end of ESP NETIF Adapter 846 | 847 | # 848 | # Partition API Configuration 849 | # 850 | # end of Partition API Configuration 851 | 852 | # 853 | # PHY 854 | # 855 | CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y 856 | # CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set 857 | CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20 858 | CONFIG_ESP_PHY_MAX_TX_POWER=20 859 | # CONFIG_ESP_PHY_REDUCE_TX_POWER is not set 860 | # CONFIG_ESP_PHY_ENABLE_USB is not set 861 | CONFIG_ESP_PHY_RF_CAL_PARTIAL=y 862 | # CONFIG_ESP_PHY_RF_CAL_NONE is not set 863 | # CONFIG_ESP_PHY_RF_CAL_FULL is not set 864 | CONFIG_ESP_PHY_CALIBRATION_MODE=0 865 | # end of PHY 866 | 867 | # 868 | # Power Management 869 | # 870 | # CONFIG_PM_ENABLE is not set 871 | CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=y 872 | # CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP is not set 873 | # end of Power Management 874 | 875 | # 876 | # ESP PSRAM 877 | # 878 | 879 | # 880 | # ESP Ringbuf 881 | # 882 | # CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set 883 | # end of ESP Ringbuf 884 | 885 | # 886 | # ESP System Settings 887 | # 888 | # CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set 889 | # CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_120 is not set 890 | CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y 891 | CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 892 | # CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set 893 | CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y 894 | # CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set 895 | # CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set 896 | # CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set 897 | CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS=0 898 | CONFIG_ESP_SYSTEM_SINGLE_CORE_MODE=y 899 | CONFIG_ESP_SYSTEM_RTC_FAST_MEM_AS_HEAP_DEPCHECK=y 900 | CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP=y 901 | # CONFIG_ESP_SYSTEM_USE_EH_FRAME is not set 902 | 903 | # 904 | # Memory protection 905 | # 906 | CONFIG_ESP_SYSTEM_PMP_IDRAM_SPLIT=y 907 | # end of Memory protection 908 | 909 | CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 910 | CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 911 | CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 912 | CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y 913 | # CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set 914 | CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 915 | CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 916 | CONFIG_ESP_CONSOLE_UART_DEFAULT=y 917 | # CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG is not set 918 | # CONFIG_ESP_CONSOLE_UART_CUSTOM is not set 919 | # CONFIG_ESP_CONSOLE_NONE is not set 920 | # CONFIG_ESP_CONSOLE_SECONDARY_NONE is not set 921 | CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG=y 922 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG_ENABLED=y 923 | CONFIG_ESP_CONSOLE_UART=y 924 | CONFIG_ESP_CONSOLE_UART_NUM=0 925 | CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 926 | CONFIG_ESP_INT_WDT=y 927 | CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 928 | CONFIG_ESP_TASK_WDT_EN=y 929 | CONFIG_ESP_TASK_WDT_INIT=y 930 | # CONFIG_ESP_TASK_WDT_PANIC is not set 931 | CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 932 | CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y 933 | # CONFIG_ESP_PANIC_HANDLER_IRAM is not set 934 | # CONFIG_ESP_DEBUG_STUBS_ENABLE is not set 935 | CONFIG_ESP_DEBUG_OCDAWARE=y 936 | CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y 937 | 938 | # 939 | # Brownout Detector 940 | # 941 | CONFIG_ESP_BROWNOUT_DET=y 942 | CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7=y 943 | # CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set 944 | # CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set 945 | # CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set 946 | # CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set 947 | # CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set 948 | CONFIG_ESP_BROWNOUT_DET_LVL=7 949 | # end of Brownout Detector 950 | 951 | CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y 952 | # end of ESP System Settings 953 | 954 | # 955 | # IPC (Inter-Processor Call) 956 | # 957 | CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 958 | # end of IPC (Inter-Processor Call) 959 | 960 | # 961 | # High resolution timer (esp_timer) 962 | # 963 | # CONFIG_ESP_TIMER_PROFILING is not set 964 | CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y 965 | CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y 966 | CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 967 | CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 968 | # CONFIG_ESP_TIMER_SHOW_EXPERIMENTAL is not set 969 | CONFIG_ESP_TIMER_TASK_AFFINITY=0x0 970 | CONFIG_ESP_TIMER_TASK_AFFINITY_CPU0=y 971 | CONFIG_ESP_TIMER_ISR_AFFINITY=0x1 972 | CONFIG_ESP_TIMER_ISR_AFFINITY_CPU0=y 973 | # CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set 974 | CONFIG_ESP_TIMER_IMPL_SYSTIMER=y 975 | # end of High resolution timer (esp_timer) 976 | 977 | # 978 | # Wi-Fi 979 | # 980 | CONFIG_ESP_WIFI_ENABLED=y 981 | CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10 982 | CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32 983 | # CONFIG_ESP_WIFI_STATIC_TX_BUFFER is not set 984 | CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER=y 985 | CONFIG_ESP_WIFI_TX_BUFFER_TYPE=1 986 | CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32 987 | CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y 988 | # CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER is not set 989 | CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0 990 | CONFIG_ESP_WIFI_RX_MGMT_BUF_NUM_DEF=5 991 | # CONFIG_ESP_WIFI_CSI_ENABLED is not set 992 | CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y 993 | CONFIG_ESP_WIFI_TX_BA_WIN=6 994 | CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y 995 | CONFIG_ESP_WIFI_RX_BA_WIN=6 996 | CONFIG_ESP_WIFI_NVS_ENABLED=y 997 | CONFIG_ESP_WIFI_SOFTAP_BEACON_MAX_LEN=752 998 | CONFIG_ESP_WIFI_MGMT_SBUF_NUM=32 999 | CONFIG_ESP_WIFI_IRAM_OPT=y 1000 | CONFIG_ESP_WIFI_EXTRA_IRAM_OPT=y 1001 | CONFIG_ESP_WIFI_RX_IRAM_OPT=y 1002 | CONFIG_ESP_WIFI_ENABLE_WPA3_SAE=y 1003 | CONFIG_ESP_WIFI_ENABLE_SAE_PK=y 1004 | CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT=y 1005 | CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=y 1006 | # CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set 1007 | CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE=y 1008 | # CONFIG_ESP_WIFI_GCMP_SUPPORT is not set 1009 | # CONFIG_ESP_WIFI_GMAC_SUPPORT is not set 1010 | CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y 1011 | # CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set 1012 | CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM=7 1013 | CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS=y 1014 | CONFIG_ESP_WIFI_MBEDTLS_CRYPTO=y 1015 | CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=y 1016 | # CONFIG_ESP_WIFI_WAPI_PSK is not set 1017 | # CONFIG_ESP_WIFI_SUITE_B_192 is not set 1018 | # CONFIG_ESP_WIFI_11KV_SUPPORT is not set 1019 | # CONFIG_ESP_WIFI_MBO_SUPPORT is not set 1020 | # CONFIG_ESP_WIFI_DPP_SUPPORT is not set 1021 | # CONFIG_ESP_WIFI_11R_SUPPORT is not set 1022 | # CONFIG_ESP_WIFI_WPS_SOFTAP_REGISTRAR is not set 1023 | CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS=y 1024 | CONFIG_ESP_WIFI_ENABLE_WIFI_RX_MU_STATS=y 1025 | 1026 | # 1027 | # WPS Configuration Options 1028 | # 1029 | # CONFIG_ESP_WIFI_WPS_STRICT is not set 1030 | # CONFIG_ESP_WIFI_WPS_PASSPHRASE is not set 1031 | # end of WPS Configuration Options 1032 | 1033 | # CONFIG_ESP_WIFI_DEBUG_PRINT is not set 1034 | # CONFIG_ESP_WIFI_TESTING_OPTIONS is not set 1035 | CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=y 1036 | # end of Wi-Fi 1037 | 1038 | # 1039 | # Core dump 1040 | # 1041 | # CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set 1042 | # CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set 1043 | CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y 1044 | # end of Core dump 1045 | 1046 | # 1047 | # FAT Filesystem support 1048 | # 1049 | CONFIG_FATFS_VOLUME_COUNT=2 1050 | CONFIG_FATFS_LFN_NONE=y 1051 | # CONFIG_FATFS_LFN_HEAP is not set 1052 | # CONFIG_FATFS_LFN_STACK is not set 1053 | # CONFIG_FATFS_SECTOR_512 is not set 1054 | CONFIG_FATFS_SECTOR_4096=y 1055 | # CONFIG_FATFS_CODEPAGE_DYNAMIC is not set 1056 | CONFIG_FATFS_CODEPAGE_437=y 1057 | # CONFIG_FATFS_CODEPAGE_720 is not set 1058 | # CONFIG_FATFS_CODEPAGE_737 is not set 1059 | # CONFIG_FATFS_CODEPAGE_771 is not set 1060 | # CONFIG_FATFS_CODEPAGE_775 is not set 1061 | # CONFIG_FATFS_CODEPAGE_850 is not set 1062 | # CONFIG_FATFS_CODEPAGE_852 is not set 1063 | # CONFIG_FATFS_CODEPAGE_855 is not set 1064 | # CONFIG_FATFS_CODEPAGE_857 is not set 1065 | # CONFIG_FATFS_CODEPAGE_860 is not set 1066 | # CONFIG_FATFS_CODEPAGE_861 is not set 1067 | # CONFIG_FATFS_CODEPAGE_862 is not set 1068 | # CONFIG_FATFS_CODEPAGE_863 is not set 1069 | # CONFIG_FATFS_CODEPAGE_864 is not set 1070 | # CONFIG_FATFS_CODEPAGE_865 is not set 1071 | # CONFIG_FATFS_CODEPAGE_866 is not set 1072 | # CONFIG_FATFS_CODEPAGE_869 is not set 1073 | # CONFIG_FATFS_CODEPAGE_932 is not set 1074 | # CONFIG_FATFS_CODEPAGE_936 is not set 1075 | # CONFIG_FATFS_CODEPAGE_949 is not set 1076 | # CONFIG_FATFS_CODEPAGE_950 is not set 1077 | CONFIG_FATFS_CODEPAGE=437 1078 | CONFIG_FATFS_FS_LOCK=0 1079 | CONFIG_FATFS_TIMEOUT_MS=10000 1080 | CONFIG_FATFS_PER_FILE_CACHE=y 1081 | # CONFIG_FATFS_USE_FASTSEEK is not set 1082 | CONFIG_FATFS_VFS_FSTAT_BLKSIZE=0 1083 | # end of FAT Filesystem support 1084 | 1085 | # 1086 | # FreeRTOS 1087 | # 1088 | 1089 | # 1090 | # Kernel 1091 | # 1092 | # CONFIG_FREERTOS_SMP is not set 1093 | CONFIG_FREERTOS_UNICORE=y 1094 | CONFIG_FREERTOS_HZ=100 1095 | CONFIG_FREERTOS_OPTIMIZED_SCHEDULER=y 1096 | # CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set 1097 | # CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set 1098 | CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y 1099 | CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 1100 | CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 1101 | # CONFIG_FREERTOS_USE_IDLE_HOOK is not set 1102 | # CONFIG_FREERTOS_USE_TICK_HOOK is not set 1103 | CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 1104 | # CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY is not set 1105 | CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 1106 | CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 1107 | CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 1108 | CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 1109 | CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES=1 1110 | # CONFIG_FREERTOS_USE_TRACE_FACILITY is not set 1111 | # CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set 1112 | # end of Kernel 1113 | 1114 | # 1115 | # Port 1116 | # 1117 | CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y 1118 | # CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set 1119 | CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS=y 1120 | # CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set 1121 | CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y 1122 | CONFIG_FREERTOS_ISR_STACKSIZE=1536 1123 | CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y 1124 | CONFIG_FREERTOS_TICK_SUPPORT_SYSTIMER=y 1125 | CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL1=y 1126 | # CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL3 is not set 1127 | CONFIG_FREERTOS_SYSTICK_USES_SYSTIMER=y 1128 | # CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set 1129 | # CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH is not set 1130 | # CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set 1131 | CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y 1132 | # end of Port 1133 | 1134 | CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF 1135 | CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y 1136 | CONFIG_FREERTOS_DEBUG_OCDAWARE=y 1137 | # end of FreeRTOS 1138 | 1139 | # 1140 | # Hardware Abstraction Layer (HAL) and Low Level (LL) 1141 | # 1142 | CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y 1143 | # CONFIG_HAL_ASSERTION_DISABLE is not set 1144 | # CONFIG_HAL_ASSERTION_SILENT is not set 1145 | # CONFIG_HAL_ASSERTION_ENABLE is not set 1146 | CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 1147 | CONFIG_HAL_SYSTIMER_USE_ROM_IMPL=y 1148 | CONFIG_HAL_WDT_USE_ROM_IMPL=y 1149 | CONFIG_HAL_SPI_MASTER_FUNC_IN_IRAM=y 1150 | CONFIG_HAL_SPI_SLAVE_FUNC_IN_IRAM=y 1151 | # end of Hardware Abstraction Layer (HAL) and Low Level (LL) 1152 | 1153 | # 1154 | # Heap memory debugging 1155 | # 1156 | CONFIG_HEAP_POISONING_DISABLED=y 1157 | # CONFIG_HEAP_POISONING_LIGHT is not set 1158 | # CONFIG_HEAP_POISONING_COMPREHENSIVE is not set 1159 | CONFIG_HEAP_TRACING_OFF=y 1160 | # CONFIG_HEAP_TRACING_STANDALONE is not set 1161 | # CONFIG_HEAP_TRACING_TOHOST is not set 1162 | # CONFIG_HEAP_USE_HOOKS is not set 1163 | # CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set 1164 | CONFIG_HEAP_TLSF_USE_ROM_IMPL=y 1165 | # end of Heap memory debugging 1166 | 1167 | # 1168 | # IEEE 802.15.4 1169 | # 1170 | CONFIG_IEEE802154_ENABLED=y 1171 | CONFIG_IEEE802154_RX_BUFFER_SIZE=20 1172 | # CONFIG_IEEE802154_CCA_CARRIER is not set 1173 | CONFIG_IEEE802154_CCA_ED=y 1174 | # CONFIG_IEEE802154_CCA_CARRIER_OR_ED is not set 1175 | # CONFIG_IEEE802154_CCA_CARRIER_AND_ED is not set 1176 | CONFIG_IEEE802154_CCA_MODE=1 1177 | CONFIG_IEEE802154_CCA_THRESHOLD=-60 1178 | CONFIG_IEEE802154_PENDING_TABLE_SIZE=20 1179 | # CONFIG_IEEE802154_MULTI_PAN_ENABLE is not set 1180 | # CONFIG_IEEE802154_TIMING_OPTIMIZATION is not set 1181 | # CONFIG_IEEE802154_DEBUG is not set 1182 | # end of IEEE 802.15.4 1183 | 1184 | # 1185 | # Log output 1186 | # 1187 | # CONFIG_LOG_DEFAULT_LEVEL_NONE is not set 1188 | # CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set 1189 | # CONFIG_LOG_DEFAULT_LEVEL_WARN is not set 1190 | CONFIG_LOG_DEFAULT_LEVEL_INFO=y 1191 | # CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set 1192 | # CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set 1193 | CONFIG_LOG_DEFAULT_LEVEL=3 1194 | CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y 1195 | # CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set 1196 | # CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set 1197 | CONFIG_LOG_MAXIMUM_LEVEL=3 1198 | CONFIG_LOG_COLORS=y 1199 | CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y 1200 | # CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set 1201 | # end of Log output 1202 | 1203 | # 1204 | # LWIP 1205 | # 1206 | CONFIG_LWIP_LOCAL_HOSTNAME="espressif" 1207 | # CONFIG_LWIP_NETIF_API is not set 1208 | CONFIG_LWIP_TCPIP_TASK_PRIO=18 1209 | # CONFIG_LWIP_TCPIP_CORE_LOCKING is not set 1210 | # CONFIG_LWIP_CHECK_THREAD_SAFETY is not set 1211 | CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y 1212 | # CONFIG_LWIP_L2_TO_L3_COPY is not set 1213 | # CONFIG_LWIP_IRAM_OPTIMIZATION is not set 1214 | # CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION is not set 1215 | CONFIG_LWIP_TIMERS_ONDEMAND=y 1216 | CONFIG_LWIP_ND6=y 1217 | CONFIG_LWIP_MAX_SOCKETS=10 1218 | # CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set 1219 | # CONFIG_LWIP_SO_LINGER is not set 1220 | CONFIG_LWIP_SO_REUSE=y 1221 | CONFIG_LWIP_SO_REUSE_RXTOALL=y 1222 | # CONFIG_LWIP_SO_RCVBUF is not set 1223 | # CONFIG_LWIP_NETBUF_RECVINFO is not set 1224 | CONFIG_LWIP_IP4_FRAG=y 1225 | CONFIG_LWIP_IP6_FRAG=y 1226 | # CONFIG_LWIP_IP4_REASSEMBLY is not set 1227 | # CONFIG_LWIP_IP6_REASSEMBLY is not set 1228 | CONFIG_LWIP_IP_REASS_MAX_PBUFS=10 1229 | # CONFIG_LWIP_IP_FORWARD is not set 1230 | # CONFIG_LWIP_STATS is not set 1231 | CONFIG_LWIP_ESP_GRATUITOUS_ARP=y 1232 | CONFIG_LWIP_GARP_TMR_INTERVAL=60 1233 | CONFIG_LWIP_ESP_MLDV6_REPORT=y 1234 | CONFIG_LWIP_MLDV6_TMR_INTERVAL=40 1235 | CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 1236 | CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y 1237 | # CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set 1238 | CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y 1239 | # CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set 1240 | CONFIG_LWIP_DHCP_OPTIONS_LEN=68 1241 | CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=0 1242 | CONFIG_LWIP_DHCP_COARSE_TIMER_SECS=1 1243 | 1244 | # 1245 | # DHCP server 1246 | # 1247 | CONFIG_LWIP_DHCPS=y 1248 | CONFIG_LWIP_DHCPS_LEASE_UNIT=60 1249 | CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 1250 | # end of DHCP server 1251 | 1252 | # CONFIG_LWIP_AUTOIP is not set 1253 | CONFIG_LWIP_IPV4=y 1254 | CONFIG_LWIP_IPV6=y 1255 | # CONFIG_LWIP_IPV6_AUTOCONFIG is not set 1256 | CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 1257 | # CONFIG_LWIP_IPV6_FORWARD is not set 1258 | # CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set 1259 | CONFIG_LWIP_NETIF_LOOPBACK=y 1260 | CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 1261 | 1262 | # 1263 | # TCP 1264 | # 1265 | CONFIG_LWIP_MAX_ACTIVE_TCP=16 1266 | CONFIG_LWIP_MAX_LISTENING_TCP=16 1267 | CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y 1268 | CONFIG_LWIP_TCP_MAXRTX=12 1269 | CONFIG_LWIP_TCP_SYNMAXRTX=12 1270 | CONFIG_LWIP_TCP_MSS=1440 1271 | CONFIG_LWIP_TCP_TMR_INTERVAL=250 1272 | CONFIG_LWIP_TCP_MSL=60000 1273 | CONFIG_LWIP_TCP_FIN_WAIT_TIMEOUT=20000 1274 | CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5744 1275 | CONFIG_LWIP_TCP_WND_DEFAULT=5744 1276 | CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 1277 | CONFIG_LWIP_TCP_QUEUE_OOSEQ=y 1278 | # CONFIG_LWIP_TCP_SACK_OUT is not set 1279 | CONFIG_LWIP_TCP_OVERSIZE_MSS=y 1280 | # CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set 1281 | # CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set 1282 | CONFIG_LWIP_TCP_RTO_TIME=1500 1283 | # end of TCP 1284 | 1285 | # 1286 | # UDP 1287 | # 1288 | CONFIG_LWIP_MAX_UDP_PCBS=16 1289 | CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 1290 | # end of UDP 1291 | 1292 | # 1293 | # Checksums 1294 | # 1295 | # CONFIG_LWIP_CHECKSUM_CHECK_IP is not set 1296 | # CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set 1297 | CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y 1298 | # end of Checksums 1299 | 1300 | CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 1301 | CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y 1302 | # CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set 1303 | CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF 1304 | # CONFIG_LWIP_PPP_SUPPORT is not set 1305 | CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 1306 | CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 1307 | # CONFIG_LWIP_SLIP_SUPPORT is not set 1308 | 1309 | # 1310 | # ICMP 1311 | # 1312 | CONFIG_LWIP_ICMP=y 1313 | # CONFIG_LWIP_MULTICAST_PING is not set 1314 | # CONFIG_LWIP_BROADCAST_PING is not set 1315 | # end of ICMP 1316 | 1317 | # 1318 | # LWIP RAW API 1319 | # 1320 | CONFIG_LWIP_MAX_RAW_PCBS=16 1321 | # end of LWIP RAW API 1322 | 1323 | # 1324 | # SNTP 1325 | # 1326 | CONFIG_LWIP_SNTP_MAX_SERVERS=1 1327 | # CONFIG_LWIP_DHCP_GET_NTP_SRV is not set 1328 | CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 1329 | # end of SNTP 1330 | 1331 | CONFIG_LWIP_BRIDGEIF_MAX_PORTS=7 1332 | CONFIG_LWIP_ESP_LWIP_ASSERT=y 1333 | 1334 | # 1335 | # Hooks 1336 | # 1337 | # CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set 1338 | CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y 1339 | # CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set 1340 | CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y 1341 | # CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set 1342 | # CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set 1343 | CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y 1344 | # CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set 1345 | # CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set 1346 | CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_NONE=y 1347 | # CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_DEFAULT is not set 1348 | # CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_CUSTOM is not set 1349 | CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y 1350 | # CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set 1351 | # CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set 1352 | CONFIG_LWIP_HOOK_IP6_INPUT_NONE=y 1353 | # CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT is not set 1354 | # CONFIG_LWIP_HOOK_IP6_INPUT_CUSTOM is not set 1355 | # end of Hooks 1356 | 1357 | # CONFIG_LWIP_DEBUG is not set 1358 | # end of LWIP 1359 | 1360 | # 1361 | # mbedTLS 1362 | # 1363 | CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y 1364 | # CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set 1365 | # CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set 1366 | CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y 1367 | CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 1368 | CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 1369 | # CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set 1370 | # CONFIG_MBEDTLS_DEBUG is not set 1371 | 1372 | # 1373 | # mbedTLS v3.x related 1374 | # 1375 | # CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 is not set 1376 | # CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set 1377 | # CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set 1378 | # CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set 1379 | CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y 1380 | CONFIG_MBEDTLS_PKCS7_C=y 1381 | # end of mbedTLS v3.x related 1382 | 1383 | # 1384 | # Certificate Bundle 1385 | # 1386 | CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y 1387 | CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y 1388 | # CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set 1389 | # CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set 1390 | # CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set 1391 | CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 1392 | # end of Certificate Bundle 1393 | 1394 | # CONFIG_MBEDTLS_ECP_RESTARTABLE is not set 1395 | CONFIG_MBEDTLS_CMAC_C=y 1396 | CONFIG_MBEDTLS_HARDWARE_AES=y 1397 | CONFIG_MBEDTLS_AES_USE_INTERRUPT=y 1398 | CONFIG_MBEDTLS_HARDWARE_MPI=y 1399 | CONFIG_MBEDTLS_MPI_USE_INTERRUPT=y 1400 | CONFIG_MBEDTLS_HARDWARE_SHA=y 1401 | CONFIG_MBEDTLS_HARDWARE_ECC=y 1402 | CONFIG_MBEDTLS_ECC_OTHER_CURVES_SOFT_FALLBACK=y 1403 | CONFIG_MBEDTLS_ROM_MD5=y 1404 | # CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set 1405 | # CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set 1406 | CONFIG_MBEDTLS_HAVE_TIME=y 1407 | # CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set 1408 | # CONFIG_MBEDTLS_HAVE_TIME_DATE is not set 1409 | CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y 1410 | CONFIG_MBEDTLS_SHA512_C=y 1411 | CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y 1412 | # CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set 1413 | # CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set 1414 | # CONFIG_MBEDTLS_TLS_DISABLED is not set 1415 | CONFIG_MBEDTLS_TLS_SERVER=y 1416 | CONFIG_MBEDTLS_TLS_CLIENT=y 1417 | CONFIG_MBEDTLS_TLS_ENABLED=y 1418 | 1419 | # 1420 | # TLS Key Exchange Methods 1421 | # 1422 | # CONFIG_MBEDTLS_PSK_MODES is not set 1423 | CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y 1424 | CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y 1425 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y 1426 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y 1427 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y 1428 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y 1429 | # end of TLS Key Exchange Methods 1430 | 1431 | CONFIG_MBEDTLS_SSL_RENEGOTIATION=y 1432 | CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y 1433 | # CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set 1434 | # CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set 1435 | CONFIG_MBEDTLS_SSL_ALPN=y 1436 | CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y 1437 | CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y 1438 | 1439 | # 1440 | # Symmetric Ciphers 1441 | # 1442 | CONFIG_MBEDTLS_AES_C=y 1443 | # CONFIG_MBEDTLS_CAMELLIA_C is not set 1444 | # CONFIG_MBEDTLS_DES_C is not set 1445 | # CONFIG_MBEDTLS_BLOWFISH_C is not set 1446 | # CONFIG_MBEDTLS_XTEA_C is not set 1447 | CONFIG_MBEDTLS_CCM_C=y 1448 | CONFIG_MBEDTLS_GCM_C=y 1449 | # CONFIG_MBEDTLS_NIST_KW_C is not set 1450 | # end of Symmetric Ciphers 1451 | 1452 | # CONFIG_MBEDTLS_RIPEMD160_C is not set 1453 | 1454 | # 1455 | # Certificates 1456 | # 1457 | CONFIG_MBEDTLS_PEM_PARSE_C=y 1458 | CONFIG_MBEDTLS_PEM_WRITE_C=y 1459 | CONFIG_MBEDTLS_X509_CRL_PARSE_C=y 1460 | CONFIG_MBEDTLS_X509_CSR_PARSE_C=y 1461 | # end of Certificates 1462 | 1463 | CONFIG_MBEDTLS_ECP_C=y 1464 | # CONFIG_MBEDTLS_DHM_C is not set 1465 | CONFIG_MBEDTLS_ECDH_C=y 1466 | CONFIG_MBEDTLS_ECDSA_C=y 1467 | # CONFIG_MBEDTLS_ECJPAKE_C is not set 1468 | CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y 1469 | CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y 1470 | CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y 1471 | CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y 1472 | CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y 1473 | CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y 1474 | CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y 1475 | CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y 1476 | CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y 1477 | CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y 1478 | CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y 1479 | CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y 1480 | CONFIG_MBEDTLS_ECP_NIST_OPTIM=y 1481 | CONFIG_MBEDTLS_ECP_FIXED_POINT_OPTIM=y 1482 | # CONFIG_MBEDTLS_POLY1305_C is not set 1483 | # CONFIG_MBEDTLS_CHACHA20_C is not set 1484 | # CONFIG_MBEDTLS_HKDF_C is not set 1485 | # CONFIG_MBEDTLS_THREADING_C is not set 1486 | CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI=y 1487 | # end of mbedTLS 1488 | 1489 | # 1490 | # ESP-MQTT Configurations 1491 | # 1492 | CONFIG_MQTT_PROTOCOL_311=y 1493 | # CONFIG_MQTT_PROTOCOL_5 is not set 1494 | CONFIG_MQTT_TRANSPORT_SSL=y 1495 | CONFIG_MQTT_TRANSPORT_WEBSOCKET=y 1496 | CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y 1497 | # CONFIG_MQTT_MSG_ID_INCREMENTAL is not set 1498 | # CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set 1499 | # CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set 1500 | # CONFIG_MQTT_USE_CUSTOM_CONFIG is not set 1501 | # CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set 1502 | # CONFIG_MQTT_CUSTOM_OUTBOX is not set 1503 | # end of ESP-MQTT Configurations 1504 | 1505 | # 1506 | # Newlib 1507 | # 1508 | CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y 1509 | # CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set 1510 | # CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set 1511 | # CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set 1512 | # CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set 1513 | CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y 1514 | # CONFIG_NEWLIB_NANO_FORMAT is not set 1515 | CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y 1516 | # CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC is not set 1517 | # CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT is not set 1518 | # CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set 1519 | # end of Newlib 1520 | 1521 | # 1522 | # NVS 1523 | # 1524 | # CONFIG_NVS_ASSERT_ERROR_CHECK is not set 1525 | # end of NVS 1526 | 1527 | # 1528 | # OpenThread 1529 | # 1530 | # CONFIG_OPENTHREAD_ENABLED is not set 1531 | 1532 | # 1533 | # Thread Operational Dataset 1534 | # 1535 | CONFIG_OPENTHREAD_NETWORK_NAME="OpenThread-ESP" 1536 | CONFIG_OPENTHREAD_MESH_LOCAL_PREFIX="fd00:db8:a0:0::/64" 1537 | CONFIG_OPENTHREAD_NETWORK_CHANNEL=15 1538 | CONFIG_OPENTHREAD_NETWORK_PANID=0x1234 1539 | CONFIG_OPENTHREAD_NETWORK_EXTPANID="dead00beef00cafe" 1540 | CONFIG_OPENTHREAD_NETWORK_MASTERKEY="00112233445566778899aabbccddeeff" 1541 | CONFIG_OPENTHREAD_NETWORK_PSKC="104810e2315100afd6bc9215a6bfac53" 1542 | # end of Thread Operational Dataset 1543 | 1544 | CONFIG_OPENTHREAD_XTAL_ACCURACY=130 1545 | # end of OpenThread 1546 | 1547 | # 1548 | # Protocomm 1549 | # 1550 | CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y 1551 | CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y 1552 | CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y 1553 | # end of Protocomm 1554 | 1555 | # 1556 | # PThreads 1557 | # 1558 | CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5 1559 | CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 1560 | CONFIG_PTHREAD_STACK_MIN=768 1561 | CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 1562 | CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" 1563 | # end of PThreads 1564 | 1565 | # 1566 | # MMU Config 1567 | # 1568 | CONFIG_MMU_PAGE_SIZE_64KB=y 1569 | CONFIG_MMU_PAGE_MODE="64KB" 1570 | CONFIG_MMU_PAGE_SIZE=0x10000 1571 | # end of MMU Config 1572 | 1573 | # 1574 | # SPI Flash driver 1575 | # 1576 | # CONFIG_SPI_FLASH_VERIFY_WRITE is not set 1577 | # CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set 1578 | CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y 1579 | # CONFIG_SPI_FLASH_ROM_IMPL is not set 1580 | CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y 1581 | # CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set 1582 | # CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set 1583 | # CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set 1584 | CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y 1585 | CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 1586 | CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 1587 | CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 1588 | # CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set 1589 | # CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set 1590 | # CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set 1591 | 1592 | # 1593 | # SPI Flash behavior when brownout 1594 | # 1595 | CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y 1596 | CONFIG_SPI_FLASH_BROWNOUT_RESET=y 1597 | # end of SPI Flash behavior when brownout 1598 | 1599 | # 1600 | # Auto-detect flash chips 1601 | # 1602 | CONFIG_SPI_FLASH_VENDOR_XMC_SUPPORTED=y 1603 | # CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP is not set 1604 | # CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP is not set 1605 | # CONFIG_SPI_FLASH_SUPPORT_GD_CHIP is not set 1606 | # CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP is not set 1607 | # CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP is not set 1608 | # CONFIG_SPI_FLASH_SUPPORT_TH_CHIP is not set 1609 | # end of Auto-detect flash chips 1610 | 1611 | CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y 1612 | # end of SPI Flash driver 1613 | 1614 | # 1615 | # SPIFFS Configuration 1616 | # 1617 | CONFIG_SPIFFS_MAX_PARTITIONS=3 1618 | 1619 | # 1620 | # SPIFFS Cache Configuration 1621 | # 1622 | CONFIG_SPIFFS_CACHE=y 1623 | CONFIG_SPIFFS_CACHE_WR=y 1624 | # CONFIG_SPIFFS_CACHE_STATS is not set 1625 | # end of SPIFFS Cache Configuration 1626 | 1627 | CONFIG_SPIFFS_PAGE_CHECK=y 1628 | CONFIG_SPIFFS_GC_MAX_RUNS=10 1629 | # CONFIG_SPIFFS_GC_STATS is not set 1630 | CONFIG_SPIFFS_PAGE_SIZE=256 1631 | CONFIG_SPIFFS_OBJ_NAME_LEN=32 1632 | # CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set 1633 | CONFIG_SPIFFS_USE_MAGIC=y 1634 | CONFIG_SPIFFS_USE_MAGIC_LENGTH=y 1635 | CONFIG_SPIFFS_META_LENGTH=4 1636 | CONFIG_SPIFFS_USE_MTIME=y 1637 | 1638 | # 1639 | # Debug Configuration 1640 | # 1641 | # CONFIG_SPIFFS_DBG is not set 1642 | # CONFIG_SPIFFS_API_DBG is not set 1643 | # CONFIG_SPIFFS_GC_DBG is not set 1644 | # CONFIG_SPIFFS_CACHE_DBG is not set 1645 | # CONFIG_SPIFFS_CHECK_DBG is not set 1646 | # CONFIG_SPIFFS_TEST_VISUALISATION is not set 1647 | # end of Debug Configuration 1648 | # end of SPIFFS Configuration 1649 | 1650 | # 1651 | # TCP Transport 1652 | # 1653 | 1654 | # 1655 | # Websocket 1656 | # 1657 | CONFIG_WS_TRANSPORT=y 1658 | CONFIG_WS_BUFFER_SIZE=1024 1659 | # CONFIG_WS_DYNAMIC_BUFFER is not set 1660 | # end of Websocket 1661 | # end of TCP Transport 1662 | 1663 | # 1664 | # Ultra Low Power (ULP) Co-processor 1665 | # 1666 | # CONFIG_ULP_COPROC_ENABLED is not set 1667 | # end of Ultra Low Power (ULP) Co-processor 1668 | 1669 | # 1670 | # Unity unit testing library 1671 | # 1672 | CONFIG_UNITY_ENABLE_FLOAT=y 1673 | CONFIG_UNITY_ENABLE_DOUBLE=y 1674 | # CONFIG_UNITY_ENABLE_64BIT is not set 1675 | # CONFIG_UNITY_ENABLE_COLOR is not set 1676 | CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y 1677 | # CONFIG_UNITY_ENABLE_FIXTURE is not set 1678 | # CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set 1679 | # end of Unity unit testing library 1680 | 1681 | # 1682 | # Root Hub configuration 1683 | # 1684 | # end of Root Hub configuration 1685 | 1686 | # 1687 | # Virtual file system 1688 | # 1689 | CONFIG_VFS_SUPPORT_IO=y 1690 | CONFIG_VFS_SUPPORT_DIR=y 1691 | CONFIG_VFS_SUPPORT_SELECT=y 1692 | CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y 1693 | CONFIG_VFS_SUPPORT_TERMIOS=y 1694 | CONFIG_VFS_MAX_COUNT=8 1695 | 1696 | # 1697 | # Host File System I/O (Semihosting) 1698 | # 1699 | CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 1700 | # end of Host File System I/O (Semihosting) 1701 | # end of Virtual file system 1702 | 1703 | # 1704 | # Wear Levelling 1705 | # 1706 | # CONFIG_WL_SECTOR_SIZE_512 is not set 1707 | CONFIG_WL_SECTOR_SIZE_4096=y 1708 | CONFIG_WL_SECTOR_SIZE=4096 1709 | # end of Wear Levelling 1710 | 1711 | # 1712 | # Wi-Fi Provisioning Manager 1713 | # 1714 | CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 1715 | CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 1716 | # CONFIG_WIFI_PROV_BLE_FORCE_ENCRYPTION is not set 1717 | CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y 1718 | # CONFIG_WIFI_PROV_STA_FAST_SCAN is not set 1719 | # end of Wi-Fi Provisioning Manager 1720 | 1721 | # 1722 | # BMX280 Options 1723 | # 1724 | CONFIG_BMX280_EXPECT_DETECT=y 1725 | # CONFIG_BMX280_EXPECT_BME280 is not set 1726 | # CONFIG_BMX280_EXPECT_BMP280 is not set 1727 | CONFIG_BMX280_ADDRESS_DETECT=y 1728 | # CONFIG_BMX280_ADDERSS_LO is not set 1729 | # CONFIG_BMX280_ADDERSS_HI is not set 1730 | CONFIG_BMX280_TIMEOUT=5 1731 | 1732 | # 1733 | # Default Configuration 1734 | # 1735 | # CONFIG_BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING_NONE is not set 1736 | # CONFIG_BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING_X1 is not set 1737 | CONFIG_BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING_X2=y 1738 | # CONFIG_BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING_X4 is not set 1739 | # CONFIG_BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING_X8 is not set 1740 | # CONFIG_BMX280_DEFAULT_TEMPERATURE_OVERSAMPLING_X16 is not set 1741 | # CONFIG_BMX280_DEFAULT_PRESSURE_OVERSAMPLING_NONE is not set 1742 | # CONFIG_BMX280_DEFAULT_PRESSURE_OVERSAMPLING_X1 is not set 1743 | # CONFIG_BMX280_DEFAULT_PRESSURE_OVERSAMPLING_X2 is not set 1744 | # CONFIG_BMX280_DEFAULT_PRESSURE_OVERSAMPLING_X4 is not set 1745 | # CONFIG_BMX280_DEFAULT_PRESSURE_OVERSAMPLING_X8 is not set 1746 | CONFIG_BMX280_DEFAULT_PRESSURE_OVERSAMPLING_X16=y 1747 | CONFIG_BMX280_DEFAULT_STANDBY_0M5=y 1748 | # CONFIG_BMX280_DEFAULT_STANDBY_62M5 is not set 1749 | # CONFIG_BMX280_DEFAULT_STANDBY_125M is not set 1750 | # CONFIG_BMX280_DEFAULT_STANDBY_250M is not set 1751 | # CONFIG_BMX280_DEFAULT_STANDBY_500M is not set 1752 | # CONFIG_BMX280_DEFAULT_STANDBY_1000M is not set 1753 | # CONFIG_BMX280_DEFAULT_STANDBY_10M is not set 1754 | # CONFIG_BMX280_DEFAULT_STANDBY_20M is not set 1755 | # CONFIG_BMX280_DEFAULT_IIR_NONE is not set 1756 | # CONFIG_BMX280_DEFAULT_IIR_X2 is not set 1757 | # CONFIG_BMX280_DEFAULT_IIR_X4 is not set 1758 | # CONFIG_BMX280_DEFAULT_IIR_X8 is not set 1759 | CONFIG_BMX280_DEFAULT_IIR_X16=y 1760 | 1761 | # 1762 | # BME280 Specific Options 1763 | # 1764 | # CONFIG_BMX280_DEFAULT_HUMIDITY_OVERSAMPLING_NONE is not set 1765 | CONFIG_BMX280_DEFAULT_HUMIDITY_OVERSAMPLING_X1=y 1766 | # CONFIG_BMX280_DEFAULT_HUMIDITY_OVERSAMPLING_X2 is not set 1767 | # CONFIG_BMX280_DEFAULT_HUMIDITY_OVERSAMPLING_X4 is not set 1768 | # CONFIG_BMX280_DEFAULT_HUMIDITY_OVERSAMPLING_X8 is not set 1769 | # CONFIG_BMX280_DEFAULT_HUMIDITY_OVERSAMPLING_X16 is not set 1770 | # end of BME280 Specific Options 1771 | # end of Default Configuration 1772 | # end of BMX280 Options 1773 | 1774 | # 1775 | # IoT Button 1776 | # 1777 | CONFIG_BUTTON_PERIOD_TIME_MS=5 1778 | CONFIG_BUTTON_DEBOUNCE_TICKS=2 1779 | CONFIG_BUTTON_SHORT_PRESS_TIME_MS=180 1780 | CONFIG_BUTTON_LONG_PRESS_TIME_MS=1500 1781 | CONFIG_BUTTON_LONG_PRESS_TOLERANCE_MS=20 1782 | CONFIG_BUTTON_SERIAL_TIME_MS=20 1783 | # CONFIG_GPIO_BUTTON_SUPPORT_POWER_SAVE is not set 1784 | CONFIG_ADC_BUTTON_MAX_CHANNEL=3 1785 | CONFIG_ADC_BUTTON_MAX_BUTTON_PER_CHANNEL=8 1786 | CONFIG_ADC_BUTTON_SAMPLE_TIMES=1 1787 | # end of IoT Button 1788 | 1789 | # 1790 | # CMake Utilities 1791 | # 1792 | # CONFIG_CU_RELINKER_ENABLE is not set 1793 | # CONFIG_CU_DIAGNOSTICS_COLOR_NEVER is not set 1794 | CONFIG_CU_DIAGNOSTICS_COLOR_ALWAYS=y 1795 | # CONFIG_CU_DIAGNOSTICS_COLOR_AUTO is not set 1796 | # CONFIG_CU_GCC_LTO_ENABLE is not set 1797 | # CONFIG_CU_GCC_STRING_1BYTE_ALIGN is not set 1798 | # end of CMake Utilities 1799 | 1800 | # 1801 | # Zigbee 1802 | # 1803 | CONFIG_ZB_ENABLED=y 1804 | CONFIG_ZB_ZCZR=y 1805 | # CONFIG_ZB_ZED is not set 1806 | # CONFIG_ZB_RCP is not set 1807 | CONFIG_ZB_RADIO_NATIVE=y 1808 | # CONFIG_ZB_RADIO_MACSPLIT_UART is not set 1809 | # end of Zigbee 1810 | # end of Component config 1811 | 1812 | # CONFIG_IDF_EXPERIMENTAL_FEATURES is not set 1813 | 1814 | # Deprecated options for backward compatibility 1815 | # CONFIG_APP_BUILD_TYPE_ELF_RAM is not set 1816 | # CONFIG_NO_BLOBS is not set 1817 | # CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set 1818 | # CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set 1819 | # CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set 1820 | CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y 1821 | # CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set 1822 | # CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set 1823 | CONFIG_LOG_BOOTLOADER_LEVEL=3 1824 | # CONFIG_APP_ROLLBACK_ENABLE is not set 1825 | # CONFIG_FLASH_ENCRYPTION_ENABLED is not set 1826 | # CONFIG_FLASHMODE_QIO is not set 1827 | # CONFIG_FLASHMODE_QOUT is not set 1828 | CONFIG_FLASHMODE_DIO=y 1829 | # CONFIG_FLASHMODE_DOUT is not set 1830 | CONFIG_MONITOR_BAUD=115200 1831 | CONFIG_OPTIMIZATION_LEVEL_DEBUG=y 1832 | CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y 1833 | # CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set 1834 | # CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set 1835 | CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y 1836 | # CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set 1837 | # CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set 1838 | CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2 1839 | # CONFIG_CXX_EXCEPTIONS is not set 1840 | CONFIG_STACK_CHECK_NONE=y 1841 | # CONFIG_STACK_CHECK_NORM is not set 1842 | # CONFIG_STACK_CHECK_STRONG is not set 1843 | # CONFIG_STACK_CHECK_ALL is not set 1844 | # CONFIG_WARN_WRITE_STRINGS is not set 1845 | # CONFIG_ESP32_APPTRACE_DEST_TRAX is not set 1846 | CONFIG_ESP32_APPTRACE_DEST_NONE=y 1847 | CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y 1848 | # CONFIG_MCPWM_ISR_IN_IRAM is not set 1849 | CONFIG_SW_COEXIST_ENABLE=y 1850 | CONFIG_ESP32_WIFI_SW_COEXIST_ENABLE=y 1851 | CONFIG_ESP_WIFI_SW_COEXIST_ENABLE=y 1852 | # CONFIG_EXTERNAL_COEX_ENABLE is not set 1853 | # CONFIG_ESP_WIFI_EXTERNAL_COEXIST_ENABLE is not set 1854 | # CONFIG_EVENT_LOOP_PROFILING is not set 1855 | CONFIG_POST_EVENTS_FROM_ISR=y 1856 | CONFIG_POST_EVENTS_FROM_IRAM_ISR=y 1857 | # CONFIG_OTA_ALLOW_HTTP is not set 1858 | # CONFIG_ESP_SYSTEM_PD_FLASH is not set 1859 | CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y 1860 | # CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set 1861 | CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 1862 | CONFIG_ESP32_PHY_MAX_TX_POWER=20 1863 | # CONFIG_REDUCE_PHY_TX_POWER is not set 1864 | # CONFIG_ESP32_REDUCE_PHY_TX_POWER is not set 1865 | CONFIG_ESP_SYSTEM_PM_POWER_DOWN_CPU=y 1866 | CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 1867 | CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 1868 | CONFIG_MAIN_TASK_STACK_SIZE=3584 1869 | CONFIG_CONSOLE_UART_DEFAULT=y 1870 | # CONFIG_CONSOLE_UART_CUSTOM is not set 1871 | # CONFIG_CONSOLE_UART_NONE is not set 1872 | # CONFIG_ESP_CONSOLE_UART_NONE is not set 1873 | CONFIG_CONSOLE_UART=y 1874 | CONFIG_CONSOLE_UART_NUM=0 1875 | CONFIG_CONSOLE_UART_BAUDRATE=115200 1876 | CONFIG_INT_WDT=y 1877 | CONFIG_INT_WDT_TIMEOUT_MS=300 1878 | CONFIG_TASK_WDT=y 1879 | CONFIG_ESP_TASK_WDT=y 1880 | # CONFIG_TASK_WDT_PANIC is not set 1881 | CONFIG_TASK_WDT_TIMEOUT_S=5 1882 | CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y 1883 | # CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set 1884 | CONFIG_BROWNOUT_DET=y 1885 | CONFIG_BROWNOUT_DET_LVL_SEL_7=y 1886 | # CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set 1887 | # CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set 1888 | # CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set 1889 | # CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set 1890 | # CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set 1891 | CONFIG_BROWNOUT_DET_LVL=7 1892 | CONFIG_IPC_TASK_STACK_SIZE=1024 1893 | CONFIG_TIMER_TASK_STACK_SIZE=3584 1894 | CONFIG_ESP32_WIFI_ENABLED=y 1895 | CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 1896 | CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 1897 | # CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set 1898 | CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y 1899 | CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 1900 | CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 1901 | # CONFIG_ESP32_WIFI_CSI_ENABLED is not set 1902 | CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y 1903 | CONFIG_ESP32_WIFI_TX_BA_WIN=6 1904 | CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y 1905 | CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y 1906 | CONFIG_ESP32_WIFI_RX_BA_WIN=6 1907 | CONFIG_ESP32_WIFI_RX_BA_WIN=6 1908 | CONFIG_ESP32_WIFI_NVS_ENABLED=y 1909 | CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 1910 | CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32 1911 | CONFIG_ESP32_WIFI_IRAM_OPT=y 1912 | CONFIG_ESP32_WIFI_RX_IRAM_OPT=y 1913 | CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y 1914 | CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA=y 1915 | CONFIG_WPA_MBEDTLS_CRYPTO=y 1916 | CONFIG_WPA_MBEDTLS_TLS_CLIENT=y 1917 | # CONFIG_WPA_WAPI_PSK is not set 1918 | # CONFIG_WPA_SUITE_B_192 is not set 1919 | # CONFIG_WPA_11KV_SUPPORT is not set 1920 | # CONFIG_WPA_MBO_SUPPORT is not set 1921 | # CONFIG_WPA_DPP_SUPPORT is not set 1922 | # CONFIG_WPA_11R_SUPPORT is not set 1923 | # CONFIG_WPA_WPS_SOFTAP_REGISTRAR is not set 1924 | # CONFIG_WPA_WPS_STRICT is not set 1925 | # CONFIG_WPA_DEBUG_PRINT is not set 1926 | # CONFIG_WPA_TESTING_OPTIONS is not set 1927 | # CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set 1928 | # CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set 1929 | CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y 1930 | CONFIG_TIMER_TASK_PRIORITY=1 1931 | CONFIG_TIMER_TASK_STACK_DEPTH=2048 1932 | CONFIG_TIMER_QUEUE_LENGTH=10 1933 | # CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set 1934 | # CONFIG_HAL_ASSERTION_SILIENT is not set 1935 | # CONFIG_L2_TO_L3_COPY is not set 1936 | CONFIG_ESP_GRATUITOUS_ARP=y 1937 | CONFIG_GARP_TMR_INTERVAL=60 1938 | CONFIG_TCPIP_RECVMBOX_SIZE=32 1939 | CONFIG_TCP_MAXRTX=12 1940 | CONFIG_TCP_SYNMAXRTX=12 1941 | CONFIG_TCP_MSS=1440 1942 | CONFIG_TCP_MSL=60000 1943 | CONFIG_TCP_SND_BUF_DEFAULT=5744 1944 | CONFIG_TCP_WND_DEFAULT=5744 1945 | CONFIG_TCP_RECVMBOX_SIZE=6 1946 | CONFIG_TCP_QUEUE_OOSEQ=y 1947 | CONFIG_TCP_OVERSIZE_MSS=y 1948 | # CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set 1949 | # CONFIG_TCP_OVERSIZE_DISABLE is not set 1950 | CONFIG_UDP_RECVMBOX_SIZE=6 1951 | CONFIG_TCPIP_TASK_STACK_SIZE=3072 1952 | CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y 1953 | # CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set 1954 | CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF 1955 | # CONFIG_PPP_SUPPORT is not set 1956 | CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 1957 | CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 1958 | CONFIG_ESP32_PTHREAD_STACK_MIN=768 1959 | CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 1960 | CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" 1961 | CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y 1962 | # CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set 1963 | # CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set 1964 | CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y 1965 | CONFIG_SUPPORT_TERMIOS=y 1966 | CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 1967 | # End of deprecated options 1968 | --------------------------------------------------------------------------------