├── .gitignore ├── .gitmodules ├── CMakeLists.txt ├── Makefile ├── README.md ├── main ├── DHT22.c ├── DHT22.h ├── component.mk └── main.c ├── sdkconfig └── wifi.h.sample /.gitignore: -------------------------------------------------------------------------------- 1 | /wifi.h 2 | /build 3 | /cmake-build-debug 4 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "components/cJSON"] 2 | path = components/cJSON 3 | url = https://github.com/maximkulkin/esp-cjson 4 | [submodule "components/wolfssl"] 5 | path = components/wolfssl 6 | url = https://github.com/maximkulkin/esp-wolfssl 7 | [submodule "components/homekit"] 8 | path = components/homekit 9 | url = https://github.com/maximkulkin/esp-homekit 10 | [submodule "components/http-parser"] 11 | path = components/http-parser 12 | url = https://github.com/maximkulkin/esp-http-parser.git 13 | [submodule "components/wifi_config"] 14 | path = components/wifi_config 15 | url = https://github.com/maximkulkin/esp-wifi-config 16 | 17 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.10) 2 | project(led) 3 | 4 | set(CMAKE_CXX_STANDARD 11) 5 | 6 | include_directories(main) 7 | include_directories(/Users/Ruud/esp/esp-idf/components/tcpip_adapter/include/) 8 | include_directories(/Users/Ruud/esp/esp-idf/components/esp32/include/) 9 | include_directories(/Users/Ruud/esp/esp-idf/components/driver/include/) 10 | include_directories(/Users/Ruud/esp/esp-idf/components/log/include/) 11 | include_directories(/Users/Ruud/esp/esp-idf/components/nvs_flash/include/) 12 | include_directories(/Users/Ruud/esp/esp-idf/components/freertos/include/) 13 | include_directories(/Users/Ruud/esp32-homekit/esp-homekit-demo/) 14 | include_directories(/Users/Ruud/esp32-homekit/esp-homekit-demo/components/homekit/include/) 15 | 16 | add_executable(led 17 | main/main.c 18 | main/DHT22.c 19 | Makefile 20 | ) 21 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | PROJECT_NAME = example 2 | 3 | CFLAGS += -I$(abspath .) -DHOMEKIT_SHORT_APPLE_UUIDS 4 | 5 | EXTRA_COMPONENT_DIRS += $(abspath ./components) 6 | 7 | include $(IDF_PATH)/make/project.mk 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ESP32 Homekit Demo 2 | 3 | Just playing around with [esp-homekit](https://github.com/maximkulkin/esp-homekit) and a breadboard. 4 | 5 | Breadboard has a reed switch and a DHT11 temperature sensor. 6 | 7 | ## How to install 8 | 9 | 1. Initialize and sync all submodules (recursively): 10 | ```shell 11 | git submodule update --init --recursive 12 | ``` 13 | 2. Remove 2 files that are not needed: 14 | ```shell 15 | rm components/homekit/src/mdnsresponder.* 16 | ``` 17 | 3. Copy wifi.h.sample -> wifi.h and edit it with correct WiFi SSID and password. 18 | 4. Install [esp-idf](https://github.com/espressif/esp-idf) by following [instructions on esp-idf project page](https://github.com/espressif/esp-idf#setting-up-esp-idf). At the end you should have xtensa-esp32-elf toolchain in your path and IDF_PATH environment variable pointing to esp-idf directory. 19 | 5. Configure project: 20 | ``` 21 | make menuconfig 22 | ``` 23 | There are many settings there, but at least you should configure "Serial flasher config -> Default serial port". 24 | Also, check "Components -> HomeKit" menu section. 25 | 26 | 6. Build example: 27 | ```shell 28 | make all 29 | ``` 30 | 7. To prevent any effects from previous firmware (e.g. firmware crashing right at 31 | start), highly recommend to erase flash: 32 | ```shell 33 | make erase_flash 34 | ``` 35 | 8. Upload firmware to ESP32: 36 | ```shell 37 | make flash monitor 38 | ``` 39 | To exit the monitor, simply press `CONTROL + ]` 40 | -------------------------------------------------------------------------------- /main/DHT22.c: -------------------------------------------------------------------------------- 1 | /*------------------------------------------------------------------------------ 2 | 3 | DHT22 temperature & humidity sensor AM2302 (DHT22) driver for ESP32 4 | 5 | Jun 2017: Ricardo Timmermann, new for DHT22 6 | 7 | Code Based on Adafruit Industries and Sam Johnston and Coffe & Beer. Please help 8 | to improve this code. 9 | 10 | This example code is in the Public Domain (or CC0 licensed, at your option.) 11 | 12 | Unless required by applicable law or agreed to in writing, this 13 | software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 14 | CONDITIONS OF ANY KIND, either express or implied. 15 | 16 | PLEASE KEEP THIS CODE IN LESS THAN 0XFF LINES. EACH LINE MAY CONTAIN ONE BUG !!! 17 | 18 | ---------------------------------------------------------------------------------*/ 19 | 20 | #define LOG_LOCAL_LEVEL ESP_LOG_VERBOSE 21 | 22 | #include 23 | #include "esp_log.h" 24 | #include "freertos/FreeRTOS.h" 25 | #include "freertos/task.h" 26 | #include "esp_system.h" 27 | #include "driver/gpio.h" 28 | 29 | #include "DHT22.h" 30 | 31 | // == global defines ============================================= 32 | 33 | static const char* TAG = "DHT"; 34 | 35 | int DHTgpio = 4; // my default DHT pin = 4 36 | float humidity = 0.; 37 | float temperature = 0.; 38 | 39 | // == set the DHT used pin========================================= 40 | 41 | void setDHTgpio( int gpio ) 42 | { 43 | DHTgpio = gpio; 44 | } 45 | 46 | // == get temp & hum ============================================= 47 | 48 | float getHumidity() { return humidity; } 49 | float getTemperature() { return temperature; } 50 | 51 | // == error handler =============================================== 52 | 53 | void errorHandler(int response) 54 | { 55 | switch(response) { 56 | 57 | case DHT_TIMEOUT_ERROR : 58 | ESP_LOGE( TAG, "Sensor Timeout\n" ); 59 | break; 60 | 61 | case DHT_CHECKSUM_ERROR: 62 | ESP_LOGE( TAG, "CheckSum error\n" ); 63 | break; 64 | 65 | case DHT_OK: 66 | break; 67 | 68 | default : 69 | ESP_LOGE( TAG, "Unknown error\n" ); 70 | } 71 | } 72 | 73 | /*------------------------------------------------------------------------------- 74 | ; 75 | ; get next state 76 | ; 77 | ; I don't like this logic. It needs some interrupt blocking / priority 78 | ; to ensure it runs in realtime. 79 | ; 80 | ;--------------------------------------------------------------------------------*/ 81 | 82 | int getSignalLevel( int usTimeOut, bool state ) 83 | { 84 | 85 | int uSec = 0; 86 | while( gpio_get_level(DHTgpio)==state ) { 87 | 88 | if( uSec > usTimeOut ) 89 | return -1; 90 | 91 | ++uSec; 92 | ets_delay_us(1); // uSec delay 93 | } 94 | 95 | return uSec; 96 | } 97 | 98 | /*---------------------------------------------------------------------------- 99 | ; 100 | ; read DHT22 sensor 101 | 102 | copy/paste from AM2302/DHT22 Docu: 103 | 104 | DATA: Hum = 16 bits, Temp = 16 Bits, check-sum = 8 Bits 105 | 106 | Example: MCU has received 40 bits data from AM2302 as 107 | 0000 0010 1000 1100 0000 0001 0101 1111 1110 1110 108 | 16 bits RH data + 16 bits T data + check sum 109 | 110 | 1) we convert 16 bits RH data from binary system to decimal system, 0000 0010 1000 1100 → 652 111 | Binary system Decimal system: RH=652/10=65.2%RH 112 | 113 | 2) we convert 16 bits T data from binary system to decimal system, 0000 0001 0101 1111 → 351 114 | Binary system Decimal system: T=351/10=35.1°C 115 | 116 | When highest bit of temperature is 1, it means the temperature is below 0 degree Celsius. 117 | Example: 1000 0000 0110 0101, T= minus 10.1°C: 16 bits T data 118 | 119 | 3) Check Sum=0000 0010+1000 1100+0000 0001+0101 1111=1110 1110 Check-sum=the last 8 bits of Sum=11101110 120 | 121 | Signal & Timings: 122 | 123 | The interval of whole process must be beyond 2 seconds. 124 | 125 | To request data from DHT: 126 | 127 | 1) Sent low pulse for > 1~10 ms (MILI SEC) 128 | 2) Sent high pulse for > 20~40 us (Micros). 129 | 3) When DHT detects the start signal, it will pull low the bus 80us as response signal, 130 | then the DHT pulls up 80us for preparation to send data. 131 | 4) When DHT is sending data to MCU, every bit's transmission begin with low-voltage-level that last 50us, 132 | the following high-voltage-level signal's length decide the bit is "1" or "0". 133 | 0: 26~28 us 134 | 1: 70 us 135 | 136 | ;----------------------------------------------------------------------------*/ 137 | 138 | #define MAXdhtData 5 // to complete 40 = 5*8 Bits 139 | 140 | int readDHT() 141 | { 142 | int uSec = 0; 143 | 144 | uint8_t dhtData[MAXdhtData]; 145 | uint8_t byteInx = 0; 146 | uint8_t bitInx = 7; 147 | 148 | for (int k = 0; k50us low signal 182 | 183 | uSec = getSignalLevel( 56, 0 ); 184 | if( uSec<0 ) return DHT_TIMEOUT_ERROR; 185 | 186 | // -- check to see if after >70us rx data is a 0 or a 1 187 | 188 | uSec = getSignalLevel( 75, 1 ); 189 | if( uSec<0 ) return DHT_TIMEOUT_ERROR; 190 | 191 | // add the current read to the output data 192 | // since all dhtData array where set to 0 at the start, 193 | // only look for "1" (>28us us) 194 | 195 | if (uSec > 40) { 196 | dhtData[ byteInx ] |= (1 << bitInx); 197 | } 198 | 199 | // index to next byte 200 | 201 | if (bitInx == 0) { bitInx = 7; ++byteInx; } 202 | else bitInx--; 203 | } 204 | 205 | // == get humidity from Data[0] and Data[1] ========================== 206 | 207 | humidity = dhtData[0]; 208 | humidity *= 0x100; // >> 8 209 | humidity += dhtData[1]; 210 | humidity /= 10; // get the decimal 211 | 212 | // == get temp from Data[2] and Data[3] 213 | 214 | temperature = dhtData[2] & 0x7F; 215 | temperature *= 0x100; // >> 8 216 | temperature += dhtData[3]; 217 | temperature /= 10; 218 | 219 | if( dhtData[2] & 0x80 ) // negative temp, brrr it's freezing 220 | temperature *= -1; 221 | 222 | 223 | // == verify if checksum is ok =========================================== 224 | // Checksum is the sum of Data 8 bits masked out 0xFF 225 | 226 | if (dhtData[4] == ((dhtData[0] + dhtData[1] + dhtData[2] + dhtData[3]) & 0xFF)) 227 | return DHT_OK; 228 | 229 | else 230 | return DHT_CHECKSUM_ERROR; 231 | } 232 | 233 | -------------------------------------------------------------------------------- /main/DHT22.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | DHT22 temperature sensor driver 4 | 5 | */ 6 | 7 | #ifndef DHT22_H_ 8 | #define DHT22_H_ 9 | 10 | #define DHT_OK 0 11 | #define DHT_CHECKSUM_ERROR -1 12 | #define DHT_TIMEOUT_ERROR -2 13 | 14 | // == function prototypes ======================================= 15 | 16 | void setDHTgpio(int gpio); 17 | void errorHandler(int response); 18 | int readDHT(); 19 | float getHumidity(); 20 | float getTemperature(); 21 | int getSignalLevel( int usTimeOut, bool state ); 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /main/component.mk: -------------------------------------------------------------------------------- 1 | COMPONENT_DEPENDS = homekit 2 | -------------------------------------------------------------------------------- /main/main.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | 11 | #include 12 | #include 13 | #include 14 | #include "wifi.h" 15 | #include "DHT22.h" 16 | 17 | #define GPIO_IDENTITY_LED GPIO_NUM_18 18 | #define GPIO_ACTION_LED GPIO_NUM_19 19 | #define GPIO_BUTTON GPIO_NUM_17 20 | #define ESP_INTR_FLAG_DEFAULT 0 21 | #define GPIO_HUMIDITY_TEMPERATURE GPIO_NUM_17 22 | #define GPIO_DHT GPIO_NUM_4 23 | #define GPIO_RESET_BUTTON GPIO_NUM_22 24 | #define GPIO_RESET_LED GPIO_NUM_2 25 | 26 | static bool DOOR_IS_OPEN = false; 27 | static bool RESET_PRESSED = false; 28 | 29 | static homekit_value_t sensor_state_value = HOMEKIT_UINT8(0); 30 | static homekit_value_t temperature_value = HOMEKIT_FLOAT(0); 31 | static homekit_value_t humidity_value = HOMEKIT_FLOAT(0); 32 | static homekit_value_t status_temperature_active_value = HOMEKIT_BOOL(false); 33 | static homekit_value_t status_humidity_active_value = HOMEKIT_BOOL(false); 34 | 35 | void on_wifi_ready(); 36 | 37 | esp_err_t event_handler(void *ctx, system_event_t *event) 38 | { 39 | switch(event->event_id) { 40 | case SYSTEM_EVENT_STA_START: 41 | printf("STA start\n"); 42 | esp_wifi_connect(); 43 | break; 44 | case SYSTEM_EVENT_STA_GOT_IP: 45 | printf("WiFI ready\n"); 46 | on_wifi_ready(); 47 | break; 48 | case SYSTEM_EVENT_STA_DISCONNECTED: 49 | printf("STA disconnected\n"); 50 | esp_wifi_connect(); 51 | break; 52 | default: 53 | break; 54 | } 55 | return ESP_OK; 56 | } 57 | 58 | static void wifi_init() { 59 | tcpip_adapter_init(); 60 | ESP_ERROR_CHECK(esp_event_loop_init(event_handler, NULL)); 61 | 62 | wifi_init_config_t wifi_init_config = WIFI_INIT_CONFIG_DEFAULT(); 63 | ESP_ERROR_CHECK(esp_wifi_init(&wifi_init_config)); 64 | ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM)); 65 | 66 | wifi_config_t wifi_config = { 67 | .sta = { 68 | .ssid = WIFI_SSID, 69 | .password = WIFI_PASSWORD, 70 | }, 71 | }; 72 | 73 | ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); 74 | ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config)); 75 | ESP_ERROR_CHECK(esp_wifi_start()); 76 | } 77 | 78 | homekit_value_t sensor_state_getter() { 79 | printf("sensor_state_getter\n"); 80 | 81 | return sensor_state_value; 82 | } 83 | homekit_value_t temperature_getter() { 84 | printf("temperature_getter\n"); 85 | 86 | return temperature_value; 87 | } 88 | homekit_value_t humidity_getter() { 89 | printf("humidity_getter\n"); 90 | 91 | return humidity_value; 92 | } 93 | homekit_value_t status_temperature_active_getter() { 94 | printf("status_temperature_active_getter\n"); 95 | 96 | return status_temperature_active_value; 97 | } 98 | 99 | homekit_value_t status_humidity_active_getter() { 100 | printf("status_humidity_active_getter\n"); 101 | 102 | return status_humidity_active_value; 103 | } 104 | 105 | static xQueueHandle gpio_evt_queue = NULL; 106 | 107 | static void IRAM_ATTR gpio_isr_handler(void* arg) 108 | { 109 | uint32_t gpio_num = (uint32_t) arg; 110 | xQueueSendFromISR(gpio_evt_queue, &gpio_num, NULL); 111 | } 112 | 113 | homekit_characteristic_t sensor_state = HOMEKIT_CHARACTERISTIC_(CONTACT_SENSOR_STATE, 0, .getter=sensor_state_getter); 114 | homekit_characteristic_t current_temperature = HOMEKIT_CHARACTERISTIC_(CURRENT_TEMPERATURE, 0, .getter=temperature_getter); 115 | homekit_characteristic_t current_humidity = HOMEKIT_CHARACTERISTIC_(CURRENT_RELATIVE_HUMIDITY, 0, .getter=humidity_getter); 116 | homekit_characteristic_t status_temperature_active = HOMEKIT_CHARACTERISTIC_(STATUS_ACTIVE, 0, .getter=status_temperature_active_getter); 117 | homekit_characteristic_t status_humidity_active = HOMEKIT_CHARACTERISTIC_(STATUS_ACTIVE, 0, .getter=status_humidity_active_getter); 118 | 119 | static void gpio_watcher(void* arg) 120 | { 121 | uint32_t io_num; 122 | for(;;) { 123 | if(xQueueReceive(gpio_evt_queue, &io_num, portMAX_DELAY)) { 124 | if (io_num == GPIO_RESET_BUTTON) { 125 | if (gpio_get_level(io_num) == 0) { 126 | if (RESET_PRESSED == false) { 127 | RESET_PRESSED = true; 128 | printf("Resetting Homekit...\n"); 129 | for (int i = 1; i <= 10; ++i) { 130 | gpio_set_level(GPIO_RESET_LED, i % 2); 131 | vTaskDelay(100 / portTICK_PERIOD_MS); 132 | } 133 | gpio_set_level(GPIO_RESET_LED, false); 134 | homekit_server_reset(); 135 | printf("Homekit server reset!\n"); 136 | } 137 | } else { 138 | if (RESET_PRESSED == true) { 139 | RESET_PRESSED = false; 140 | } 141 | } 142 | } else { 143 | if (gpio_get_level(io_num) == 1) { 144 | if (DOOR_IS_OPEN == false) { 145 | DOOR_IS_OPEN = true; 146 | sensor_state_value = HOMEKIT_UINT8(1); 147 | printf("The door is open\n"); 148 | gpio_set_level(GPIO_ACTION_LED, true); 149 | homekit_characteristic_notify(&sensor_state, HOMEKIT_UINT8(1)); 150 | } 151 | } else { 152 | if (DOOR_IS_OPEN == true) { 153 | DOOR_IS_OPEN = false; 154 | sensor_state_value = HOMEKIT_UINT8(0); 155 | printf("The door is closed\n"); 156 | gpio_set_level(GPIO_ACTION_LED, false); 157 | homekit_characteristic_notify(&sensor_state, HOMEKIT_UINT8(0)); 158 | } 159 | } 160 | } 161 | } 162 | } 163 | } 164 | 165 | void reset_door_state() 166 | { 167 | if (gpio_get_level(GPIO_BUTTON) == 1) { 168 | sensor_state_value = HOMEKIT_UINT8(1); 169 | printf("The door is open\n"); 170 | gpio_set_level(GPIO_ACTION_LED, true); 171 | } else { 172 | sensor_state_value = HOMEKIT_UINT8(0); 173 | printf("The door is closed\n"); 174 | gpio_set_level(GPIO_ACTION_LED, false); 175 | } 176 | } 177 | 178 | void led_write(bool on) { 179 | gpio_set_level(GPIO_IDENTITY_LED, on ? 1 : 0); 180 | } 181 | 182 | void led_identify_task(void *_args) { 183 | for (int i=0; i<3; i++) { 184 | for (int j=0; j<2; j++) { 185 | led_write(true); 186 | vTaskDelay(100 / portTICK_PERIOD_MS); 187 | led_write(false); 188 | vTaskDelay(100 / portTICK_PERIOD_MS); 189 | } 190 | 191 | vTaskDelay(250 / portTICK_PERIOD_MS); 192 | } 193 | 194 | vTaskDelete(NULL); 195 | } 196 | 197 | void led_init() { 198 | gpio_set_direction(GPIO_IDENTITY_LED, GPIO_MODE_OUTPUT); 199 | led_write(false); 200 | } 201 | 202 | void led_identify(homekit_value_t _value) { 203 | printf("LED identify\n"); 204 | } 205 | 206 | homekit_accessory_t *accessories[] = { 207 | HOMEKIT_ACCESSORY(.id=1, .category=homekit_accessory_category_sensor, .services=(homekit_service_t*[]){ 208 | HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]){ 209 | HOMEKIT_CHARACTERISTIC(NAME, "Contact Sensor"), 210 | HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Ruud"), 211 | HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "1337"), 212 | HOMEKIT_CHARACTERISTIC(MODEL, "MyLED"), 213 | HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "0.1"), 214 | HOMEKIT_CHARACTERISTIC(IDENTIFY, led_identify), 215 | NULL 216 | }), 217 | HOMEKIT_SERVICE(CONTACT_SENSOR, .primary=true, .characteristics=(homekit_characteristic_t*[]){ 218 | HOMEKIT_CHARACTERISTIC(NAME, "Contact Sensor"), 219 | &sensor_state, 220 | NULL 221 | }), 222 | NULL 223 | }), 224 | HOMEKIT_ACCESSORY(.id=2, .category=homekit_accessory_category_sensor, .services=(homekit_service_t*[]){ 225 | HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]){ 226 | HOMEKIT_CHARACTERISTIC(NAME, "Temperature Sensor"), 227 | HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Ruud"), 228 | HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "1337"), 229 | HOMEKIT_CHARACTERISTIC(MODEL, "MyLED"), 230 | HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "0.1"), 231 | HOMEKIT_CHARACTERISTIC(IDENTIFY, led_identify), 232 | NULL 233 | }), 234 | HOMEKIT_SERVICE(TEMPERATURE_SENSOR, .primary=true, .characteristics=(homekit_characteristic_t*[]){ 235 | HOMEKIT_CHARACTERISTIC(NAME, "Temperature Sensor"), 236 | ¤t_temperature, 237 | &status_temperature_active, 238 | NULL 239 | }), 240 | NULL 241 | }), 242 | HOMEKIT_ACCESSORY(.id=3, .category=homekit_accessory_category_sensor, .services=(homekit_service_t*[]){ 243 | HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]){ 244 | HOMEKIT_CHARACTERISTIC(NAME, "Humidity Sensor"), 245 | HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Ruud"), 246 | HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "1337"), 247 | HOMEKIT_CHARACTERISTIC(MODEL, "MyLED"), 248 | HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "0.1"), 249 | HOMEKIT_CHARACTERISTIC(IDENTIFY, led_identify), 250 | NULL 251 | }), 252 | HOMEKIT_SERVICE(HUMIDITY_SENSOR, .primary=true, .characteristics=(homekit_characteristic_t*[]){ 253 | HOMEKIT_CHARACTERISTIC(NAME, "Humidity Sensor"), 254 | ¤t_humidity, 255 | &status_humidity_active, 256 | NULL 257 | }), 258 | NULL 259 | }), 260 | NULL 261 | }; 262 | 263 | homekit_server_config_t config = { 264 | .accessories = accessories, 265 | .password = "111-11-111" 266 | }; 267 | 268 | void on_wifi_ready() { 269 | homekit_server_init(&config); 270 | } 271 | 272 | void DHT_task(void *pvParameter) 273 | { 274 | vTaskDelay( 1000 / portTICK_RATE_MS ); 275 | 276 | setDHTgpio(GPIO_DHT); 277 | printf("Starting DHT measurement!\n"); 278 | 279 | float temp; 280 | float humidity; 281 | 282 | while(1) 283 | { 284 | //printf("=== Reading DHT ===\n" ); 285 | int response = readDHT(); 286 | 287 | switch(response) { 288 | case DHT_TIMEOUT_ERROR : 289 | printf("Timeout error, skipping\n"); 290 | 291 | status_temperature_active_value.bool_value = false; 292 | homekit_characteristic_notify(&status_temperature_active, status_temperature_active_value); 293 | 294 | status_humidity_active_value.bool_value = false; 295 | homekit_characteristic_notify(&status_humidity_active, status_humidity_active_value); 296 | 297 | break; 298 | 299 | case DHT_CHECKSUM_ERROR: 300 | printf("Checksum error, skipping\n"); 301 | 302 | status_temperature_active_value.bool_value = false; 303 | homekit_characteristic_notify(&status_temperature_active, status_temperature_active_value); 304 | 305 | status_humidity_active_value.bool_value = false; 306 | homekit_characteristic_notify(&status_humidity_active, status_humidity_active_value); 307 | 308 | break; 309 | 310 | case DHT_OK: 311 | temp = getTemperature(); 312 | humidity = getHumidity(); 313 | //printf( "Hum %.1f\n", humidity ); 314 | //printf( "Tmp %.1f\n", temp ); 315 | 316 | temperature_value.float_value = temp; 317 | homekit_characteristic_notify(¤t_temperature, temperature_value); 318 | 319 | humidity_value.float_value = humidity; 320 | homekit_characteristic_notify(¤t_humidity, humidity_value); 321 | 322 | status_temperature_active_value.bool_value = true; 323 | homekit_characteristic_notify(&status_temperature_active, status_temperature_active_value); 324 | 325 | status_humidity_active_value.bool_value = true; 326 | homekit_characteristic_notify(&status_humidity_active, status_humidity_active_value); 327 | 328 | break; 329 | 330 | default : 331 | printf("Unknown error, skipping\n"); 332 | 333 | status_temperature_active_value.bool_value = false; 334 | homekit_characteristic_notify(&status_temperature_active, status_temperature_active_value); 335 | 336 | status_humidity_active_value.bool_value = false; 337 | homekit_characteristic_notify(&status_humidity_active, status_humidity_active_value); 338 | 339 | } 340 | 341 | vTaskDelay( 3000 / portTICK_RATE_MS ); 342 | } 343 | } 344 | 345 | void app_main(void) { 346 | uart_set_baudrate(0, 115200); 347 | 348 | gpio_set_direction(GPIO_ACTION_LED, GPIO_MODE_OUTPUT); 349 | gpio_set_direction(GPIO_BUTTON, GPIO_MODE_INPUT); 350 | gpio_set_intr_type(GPIO_BUTTON, GPIO_INTR_ANYEDGE); 351 | gpio_set_pull_mode(GPIO_BUTTON, GPIO_PULLUP_ONLY); 352 | 353 | gpio_set_direction(GPIO_RESET_BUTTON, GPIO_MODE_INPUT); 354 | gpio_set_intr_type(GPIO_RESET_BUTTON, GPIO_INTR_ANYEDGE); 355 | gpio_set_pull_mode(GPIO_RESET_BUTTON, GPIO_PULLUP_ONLY); 356 | gpio_set_direction(GPIO_RESET_LED, GPIO_MODE_OUTPUT); 357 | 358 | reset_door_state(); 359 | 360 | printf("App main\n"); 361 | 362 | // Initialize NVS 363 | esp_err_t ret = nvs_flash_init(); 364 | if (ret == ESP_ERR_NVS_NO_FREE_PAGES) { 365 | ESP_ERROR_CHECK(nvs_flash_erase()); 366 | ret = nvs_flash_init(); 367 | } 368 | ESP_ERROR_CHECK( ret ); 369 | 370 | printf("Init wifi\n"); 371 | wifi_init(); 372 | led_init(); 373 | 374 | gpio_evt_queue = xQueueCreate(10, sizeof(uint32_t)); 375 | 376 | xTaskCreate(gpio_watcher, "gpio_watcher", 2048, NULL, 10, NULL); 377 | 378 | gpio_install_isr_service(ESP_INTR_FLAG_DEFAULT); 379 | gpio_isr_handler_add(GPIO_BUTTON, gpio_isr_handler, (void*) GPIO_BUTTON); 380 | gpio_isr_handler_add(GPIO_RESET_BUTTON, gpio_isr_handler, (void*) GPIO_RESET_BUTTON); 381 | 382 | xTaskCreate(&DHT_task, "DHT_task", 2048, NULL, 5, NULL); 383 | } 384 | -------------------------------------------------------------------------------- /sdkconfig: -------------------------------------------------------------------------------- 1 | # 2 | # Automatically generated file; DO NOT EDIT. 3 | # Espressif IoT Development Framework Configuration 4 | # 5 | 6 | # 7 | # SDK tool configuration 8 | # 9 | CONFIG_TOOLPREFIX="xtensa-esp32-elf-" 10 | CONFIG_PYTHON="python" 11 | CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y 12 | 13 | # 14 | # Bootloader config 15 | # 16 | CONFIG_LOG_BOOTLOADER_LEVEL_NONE= 17 | CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= 18 | CONFIG_LOG_BOOTLOADER_LEVEL_WARN= 19 | CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y 20 | CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= 21 | CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= 22 | CONFIG_LOG_BOOTLOADER_LEVEL=3 23 | CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V= 24 | CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y 25 | 26 | # 27 | # Security features 28 | # 29 | CONFIG_SECURE_BOOT_ENABLED= 30 | CONFIG_FLASH_ENCRYPTION_ENABLED= 31 | 32 | # 33 | # Serial flasher config 34 | # 35 | CONFIG_ESPTOOLPY_PORT="/dev/tty.SLAB_USBtoUART" 36 | CONFIG_ESPTOOLPY_BAUD_115200B=y 37 | CONFIG_ESPTOOLPY_BAUD_230400B= 38 | CONFIG_ESPTOOLPY_BAUD_921600B= 39 | CONFIG_ESPTOOLPY_BAUD_2MB= 40 | CONFIG_ESPTOOLPY_BAUD_OTHER= 41 | CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 42 | CONFIG_ESPTOOLPY_BAUD=115200 43 | CONFIG_ESPTOOLPY_COMPRESSED=y 44 | CONFIG_FLASHMODE_QIO= 45 | CONFIG_FLASHMODE_QOUT= 46 | CONFIG_FLASHMODE_DIO=y 47 | CONFIG_FLASHMODE_DOUT= 48 | CONFIG_ESPTOOLPY_FLASHMODE="dio" 49 | CONFIG_ESPTOOLPY_FLASHFREQ_80M= 50 | CONFIG_ESPTOOLPY_FLASHFREQ_40M=y 51 | CONFIG_ESPTOOLPY_FLASHFREQ_26M= 52 | CONFIG_ESPTOOLPY_FLASHFREQ_20M= 53 | CONFIG_ESPTOOLPY_FLASHFREQ="40m" 54 | CONFIG_ESPTOOLPY_FLASHSIZE_1MB= 55 | CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y 56 | CONFIG_ESPTOOLPY_FLASHSIZE_4MB= 57 | CONFIG_ESPTOOLPY_FLASHSIZE_8MB= 58 | CONFIG_ESPTOOLPY_FLASHSIZE_16MB= 59 | CONFIG_ESPTOOLPY_FLASHSIZE="2MB" 60 | CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y 61 | CONFIG_ESPTOOLPY_BEFORE_RESET=y 62 | CONFIG_ESPTOOLPY_BEFORE_NORESET= 63 | CONFIG_ESPTOOLPY_BEFORE="default_reset" 64 | CONFIG_ESPTOOLPY_AFTER_RESET=y 65 | CONFIG_ESPTOOLPY_AFTER_NORESET= 66 | CONFIG_ESPTOOLPY_AFTER="hard_reset" 67 | CONFIG_MONITOR_BAUD_9600B= 68 | CONFIG_MONITOR_BAUD_57600B= 69 | CONFIG_MONITOR_BAUD_115200B=y 70 | CONFIG_MONITOR_BAUD_230400B= 71 | CONFIG_MONITOR_BAUD_921600B= 72 | CONFIG_MONITOR_BAUD_2MB= 73 | CONFIG_MONITOR_BAUD_OTHER= 74 | CONFIG_MONITOR_BAUD_OTHER_VAL=115200 75 | CONFIG_MONITOR_BAUD=115200 76 | 77 | # 78 | # Partition Table 79 | # 80 | CONFIG_PARTITION_TABLE_SINGLE_APP=y 81 | CONFIG_PARTITION_TABLE_TWO_OTA= 82 | CONFIG_PARTITION_TABLE_CUSTOM= 83 | CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" 84 | CONFIG_PARTITION_TABLE_CUSTOM_APP_BIN_OFFSET=0x10000 85 | CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" 86 | CONFIG_APP_OFFSET=0x10000 87 | 88 | # 89 | # Compiler options 90 | # 91 | CONFIG_OPTIMIZATION_LEVEL_DEBUG=y 92 | CONFIG_OPTIMIZATION_LEVEL_RELEASE= 93 | CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y 94 | CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= 95 | CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= 96 | CONFIG_CXX_EXCEPTIONS= 97 | CONFIG_STACK_CHECK_NONE=y 98 | CONFIG_STACK_CHECK_NORM= 99 | CONFIG_STACK_CHECK_STRONG= 100 | CONFIG_STACK_CHECK_ALL= 101 | CONFIG_STACK_CHECK= 102 | 103 | # 104 | # Component config 105 | # 106 | 107 | # 108 | # Application Level Tracing 109 | # 110 | CONFIG_ESP32_APPTRACE_DEST_TRAX= 111 | CONFIG_ESP32_APPTRACE_DEST_NONE=y 112 | CONFIG_ESP32_APPTRACE_ENABLE= 113 | CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y 114 | 115 | # 116 | # FreeRTOS SystemView Tracing 117 | # 118 | CONFIG_AWS_IOT_SDK= 119 | 120 | # 121 | # Bluetooth 122 | # 123 | CONFIG_BT_ENABLED= 124 | CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 125 | CONFIG_BT_RESERVE_DRAM=0 126 | 127 | # 128 | # ESP32-specific 129 | # 130 | CONFIG_ESP32_DEFAULT_CPU_FREQ_80= 131 | CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y 132 | CONFIG_ESP32_DEFAULT_CPU_FREQ_240= 133 | CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 134 | CONFIG_MEMMAP_SMP=y 135 | CONFIG_SPIRAM_SUPPORT= 136 | CONFIG_MEMMAP_TRACEMEM= 137 | CONFIG_MEMMAP_TRACEMEM_TWOBANKS= 138 | CONFIG_ESP32_TRAX= 139 | CONFIG_TRACEMEM_RESERVE_DRAM=0x0 140 | CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= 141 | CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= 142 | CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y 143 | CONFIG_ESP32_ENABLE_COREDUMP= 144 | CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= 145 | CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y 146 | CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 147 | CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 148 | CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2048 149 | CONFIG_MAIN_TASK_STACK_SIZE=3584 150 | CONFIG_IPC_TASK_STACK_SIZE=1024 151 | CONFIG_TIMER_TASK_STACK_SIZE=3584 152 | CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y 153 | CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= 154 | CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= 155 | CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= 156 | CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= 157 | CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y 158 | CONFIG_NEWLIB_NANO_FORMAT= 159 | CONFIG_CONSOLE_UART_DEFAULT=y 160 | CONFIG_CONSOLE_UART_CUSTOM= 161 | CONFIG_CONSOLE_UART_NONE= 162 | CONFIG_CONSOLE_UART_NUM=0 163 | CONFIG_CONSOLE_UART_BAUDRATE=115200 164 | CONFIG_ULP_COPROC_ENABLED= 165 | CONFIG_ULP_COPROC_RESERVE_MEM=0 166 | CONFIG_ESP32_PANIC_PRINT_HALT= 167 | CONFIG_ESP32_PANIC_PRINT_REBOOT=y 168 | CONFIG_ESP32_PANIC_SILENT_REBOOT= 169 | CONFIG_ESP32_PANIC_GDBSTUB= 170 | CONFIG_ESP32_DEBUG_OCDAWARE=y 171 | CONFIG_INT_WDT=y 172 | CONFIG_INT_WDT_TIMEOUT_MS=300 173 | CONFIG_INT_WDT_CHECK_CPU1=y 174 | CONFIG_TASK_WDT=y 175 | CONFIG_TASK_WDT_PANIC= 176 | CONFIG_TASK_WDT_TIMEOUT_S=5 177 | CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y 178 | CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y 179 | CONFIG_BROWNOUT_DET=y 180 | CONFIG_BROWNOUT_DET_LVL_SEL_0=y 181 | CONFIG_BROWNOUT_DET_LVL_SEL_1= 182 | CONFIG_BROWNOUT_DET_LVL_SEL_2= 183 | CONFIG_BROWNOUT_DET_LVL_SEL_3= 184 | CONFIG_BROWNOUT_DET_LVL_SEL_4= 185 | CONFIG_BROWNOUT_DET_LVL_SEL_5= 186 | CONFIG_BROWNOUT_DET_LVL_SEL_6= 187 | CONFIG_BROWNOUT_DET_LVL_SEL_7= 188 | CONFIG_BROWNOUT_DET_LVL=0 189 | CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y 190 | CONFIG_ESP32_TIME_SYSCALL_USE_RTC= 191 | CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= 192 | CONFIG_ESP32_TIME_SYSCALL_USE_NONE= 193 | CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y 194 | CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= 195 | CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 196 | CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 197 | CONFIG_ESP32_XTAL_FREQ_40=y 198 | CONFIG_ESP32_XTAL_FREQ_26= 199 | CONFIG_ESP32_XTAL_FREQ_AUTO= 200 | CONFIG_ESP32_XTAL_FREQ=40 201 | CONFIG_DISABLE_BASIC_ROM_CONSOLE= 202 | CONFIG_NO_BLOBS= 203 | CONFIG_ESP_TIMER_PROFILING= 204 | CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= 205 | 206 | # 207 | # Wi-Fi 208 | # 209 | CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 210 | CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 211 | CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= 212 | CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y 213 | CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 214 | CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 215 | CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y 216 | CONFIG_ESP32_WIFI_TX_BA_WIN=6 217 | CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y 218 | CONFIG_ESP32_WIFI_RX_BA_WIN=6 219 | CONFIG_ESP32_WIFI_NVS_ENABLED=y 220 | 221 | # 222 | # PHY 223 | # 224 | CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y 225 | CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= 226 | CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 227 | CONFIG_ESP32_PHY_MAX_TX_POWER=20 228 | 229 | # 230 | # Power Management 231 | # 232 | CONFIG_PM_ENABLE= 233 | 234 | # 235 | # ADC-Calibration 236 | # 237 | CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y 238 | CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y 239 | CONFIG_ADC_CAL_LUT_ENABLE=y 240 | 241 | # 242 | # Ethernet 243 | # 244 | CONFIG_DMA_RX_BUF_NUM=10 245 | CONFIG_DMA_TX_BUF_NUM=10 246 | CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE= 247 | CONFIG_EMAC_TASK_PRIORITY=20 248 | 249 | # 250 | # FAT Filesystem support 251 | # 252 | CONFIG_FATFS_CODEPAGE_DYNAMIC= 253 | CONFIG_FATFS_CODEPAGE_437=y 254 | CONFIG_FATFS_CODEPAGE_720= 255 | CONFIG_FATFS_CODEPAGE_737= 256 | CONFIG_FATFS_CODEPAGE_771= 257 | CONFIG_FATFS_CODEPAGE_775= 258 | CONFIG_FATFS_CODEPAGE_850= 259 | CONFIG_FATFS_CODEPAGE_852= 260 | CONFIG_FATFS_CODEPAGE_855= 261 | CONFIG_FATFS_CODEPAGE_857= 262 | CONFIG_FATFS_CODEPAGE_860= 263 | CONFIG_FATFS_CODEPAGE_861= 264 | CONFIG_FATFS_CODEPAGE_862= 265 | CONFIG_FATFS_CODEPAGE_863= 266 | CONFIG_FATFS_CODEPAGE_864= 267 | CONFIG_FATFS_CODEPAGE_865= 268 | CONFIG_FATFS_CODEPAGE_866= 269 | CONFIG_FATFS_CODEPAGE_869= 270 | CONFIG_FATFS_CODEPAGE_932= 271 | CONFIG_FATFS_CODEPAGE_936= 272 | CONFIG_FATFS_CODEPAGE_949= 273 | CONFIG_FATFS_CODEPAGE_950= 274 | CONFIG_FATFS_CODEPAGE=437 275 | CONFIG_FATFS_LFN_NONE=y 276 | CONFIG_FATFS_LFN_HEAP= 277 | CONFIG_FATFS_LFN_STACK= 278 | CONFIG_FATFS_FS_LOCK=0 279 | CONFIG_FATFS_TIMEOUT_MS=10000 280 | CONFIG_FATFS_PER_FILE_CACHE=y 281 | 282 | # 283 | # FreeRTOS 284 | # 285 | CONFIG_FREERTOS_UNICORE= 286 | CONFIG_FREERTOS_CORETIMER_0=y 287 | CONFIG_FREERTOS_CORETIMER_1= 288 | CONFIG_FREERTOS_HZ=100 289 | CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y 290 | CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= 291 | CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= 292 | CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y 293 | CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= 294 | CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y 295 | CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 296 | CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y 297 | CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= 298 | CONFIG_FREERTOS_ASSERT_DISABLE= 299 | CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1024 300 | CONFIG_FREERTOS_ISR_STACKSIZE=1536 301 | CONFIG_FREERTOS_LEGACY_HOOKS= 302 | CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 303 | CONFIG_SUPPORT_STATIC_ALLOCATION= 304 | CONFIG_TIMER_TASK_PRIORITY=1 305 | CONFIG_TIMER_TASK_STACK_DEPTH=2048 306 | CONFIG_TIMER_QUEUE_LENGTH=10 307 | CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 308 | CONFIG_FREERTOS_USE_TRACE_FACILITY= 309 | CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= 310 | CONFIG_FREERTOS_DEBUG_INTERNALS= 311 | 312 | # 313 | # Heap memory debugging 314 | # 315 | CONFIG_HEAP_POISONING_DISABLED=y 316 | CONFIG_HEAP_POISONING_LIGHT= 317 | CONFIG_HEAP_POISONING_COMPREHENSIVE= 318 | CONFIG_HEAP_TRACING= 319 | 320 | # 321 | # HomeKit 322 | # 323 | CONFIG_HOMEKIT_SPI_FLASH_BASE_ADDR="0x200000" 324 | CONFIG_HOMEKIT_MAX_CLIENTS=16 325 | CONFIG_HOMEKIT_SMALL= 326 | CONFIG_HOMEKIT_DEBUG= 327 | 328 | # 329 | # libsodium 330 | # 331 | CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y 332 | 333 | # 334 | # Log output 335 | # 336 | CONFIG_LOG_DEFAULT_LEVEL_NONE= 337 | CONFIG_LOG_DEFAULT_LEVEL_ERROR= 338 | CONFIG_LOG_DEFAULT_LEVEL_WARN= 339 | CONFIG_LOG_DEFAULT_LEVEL_INFO=y 340 | CONFIG_LOG_DEFAULT_LEVEL_DEBUG= 341 | CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= 342 | CONFIG_LOG_DEFAULT_LEVEL=3 343 | CONFIG_LOG_COLORS=y 344 | 345 | # 346 | # LWIP 347 | # 348 | CONFIG_L2_TO_L3_COPY= 349 | CONFIG_LWIP_MAX_SOCKETS=10 350 | CONFIG_LWIP_SO_REUSE=y 351 | CONFIG_LWIP_SO_REUSE_RXTOALL=y 352 | CONFIG_LWIP_SO_RCVBUF= 353 | CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 354 | CONFIG_LWIP_IP_FRAG= 355 | CONFIG_LWIP_IP_REASSEMBLY= 356 | CONFIG_LWIP_STATS= 357 | CONFIG_LWIP_ETHARP_TRUST_IP_MAC=y 358 | CONFIG_TCPIP_RECVMBOX_SIZE=32 359 | CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y 360 | 361 | # 362 | # DHCP server 363 | # 364 | CONFIG_LWIP_DHCPS_LEASE_UNIT=60 365 | CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 366 | CONFIG_LWIP_AUTOIP= 367 | CONFIG_LWIP_NETIF_LOOPBACK=y 368 | CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 369 | 370 | # 371 | # TCP 372 | # 373 | CONFIG_LWIP_MAX_ACTIVE_TCP=16 374 | CONFIG_LWIP_MAX_LISTENING_TCP=16 375 | CONFIG_TCP_MAXRTX=12 376 | CONFIG_TCP_SYNMAXRTX=6 377 | CONFIG_TCP_MSS=1436 378 | CONFIG_TCP_MSL=60000 379 | CONFIG_TCP_SND_BUF_DEFAULT=5744 380 | CONFIG_TCP_WND_DEFAULT=5744 381 | CONFIG_TCP_RECVMBOX_SIZE=6 382 | CONFIG_TCP_QUEUE_OOSEQ=y 383 | CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES=y 384 | CONFIG_TCP_OVERSIZE_MSS=y 385 | CONFIG_TCP_OVERSIZE_QUARTER_MSS= 386 | CONFIG_TCP_OVERSIZE_DISABLE= 387 | 388 | # 389 | # UDP 390 | # 391 | CONFIG_LWIP_MAX_UDP_PCBS=16 392 | CONFIG_UDP_RECVMBOX_SIZE=6 393 | CONFIG_TCPIP_TASK_STACK_SIZE=2560 394 | CONFIG_PPP_SUPPORT= 395 | 396 | # 397 | # ICMP 398 | # 399 | CONFIG_LWIP_MULTICAST_PING= 400 | CONFIG_LWIP_BROADCAST_PING= 401 | 402 | # 403 | # LWIP RAW API 404 | # 405 | CONFIG_LWIP_MAX_RAW_PCBS=16 406 | 407 | # 408 | # mbedTLS 409 | # 410 | CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 411 | CONFIG_MBEDTLS_DEBUG= 412 | CONFIG_MBEDTLS_HARDWARE_AES=y 413 | CONFIG_MBEDTLS_HARDWARE_MPI= 414 | CONFIG_MBEDTLS_HARDWARE_SHA= 415 | CONFIG_MBEDTLS_HAVE_TIME=y 416 | CONFIG_MBEDTLS_HAVE_TIME_DATE= 417 | CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y 418 | CONFIG_MBEDTLS_TLS_SERVER_ONLY= 419 | CONFIG_MBEDTLS_TLS_CLIENT_ONLY= 420 | CONFIG_MBEDTLS_TLS_DISABLED= 421 | CONFIG_MBEDTLS_TLS_SERVER=y 422 | CONFIG_MBEDTLS_TLS_CLIENT=y 423 | CONFIG_MBEDTLS_TLS_ENABLED=y 424 | 425 | # 426 | # TLS Key Exchange Methods 427 | # 428 | CONFIG_MBEDTLS_PSK_MODES= 429 | CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y 430 | CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y 431 | CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y 432 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y 433 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y 434 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y 435 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y 436 | CONFIG_MBEDTLS_SSL_RENEGOTIATION=y 437 | CONFIG_MBEDTLS_SSL_PROTO_SSL3= 438 | CONFIG_MBEDTLS_SSL_PROTO_TLS1=y 439 | CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y 440 | CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y 441 | CONFIG_MBEDTLS_SSL_PROTO_DTLS= 442 | CONFIG_MBEDTLS_SSL_ALPN=y 443 | CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y 444 | 445 | # 446 | # Symmetric Ciphers 447 | # 448 | CONFIG_MBEDTLS_AES_C=y 449 | CONFIG_MBEDTLS_CAMELLIA_C= 450 | CONFIG_MBEDTLS_DES_C= 451 | CONFIG_MBEDTLS_RC4_DISABLED=y 452 | CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= 453 | CONFIG_MBEDTLS_RC4_ENABLED= 454 | CONFIG_MBEDTLS_BLOWFISH_C= 455 | CONFIG_MBEDTLS_XTEA_C= 456 | CONFIG_MBEDTLS_CCM_C=y 457 | CONFIG_MBEDTLS_GCM_C=y 458 | CONFIG_MBEDTLS_RIPEMD160_C= 459 | 460 | # 461 | # Certificates 462 | # 463 | CONFIG_MBEDTLS_PEM_PARSE_C=y 464 | CONFIG_MBEDTLS_PEM_WRITE_C=y 465 | CONFIG_MBEDTLS_X509_CRL_PARSE_C=y 466 | CONFIG_MBEDTLS_X509_CSR_PARSE_C=y 467 | CONFIG_MBEDTLS_ECP_C=y 468 | CONFIG_MBEDTLS_ECDH_C=y 469 | CONFIG_MBEDTLS_ECDSA_C=y 470 | CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y 471 | CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y 472 | CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y 473 | CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y 474 | CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y 475 | CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y 476 | CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y 477 | CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y 478 | CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y 479 | CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y 480 | CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y 481 | CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y 482 | CONFIG_MBEDTLS_ECP_NIST_OPTIM=y 483 | 484 | # 485 | # OpenSSL 486 | # 487 | CONFIG_OPENSSL_DEBUG= 488 | CONFIG_OPENSSL_ASSERT_DO_NOTHING=y 489 | CONFIG_OPENSSL_ASSERT_EXIT= 490 | 491 | # 492 | # PThreads 493 | # 494 | CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 495 | CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 496 | 497 | # 498 | # SPI Flash driver 499 | # 500 | CONFIG_SPI_FLASH_VERIFY_WRITE= 501 | CONFIG_SPI_FLASH_ENABLE_COUNTERS= 502 | CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y 503 | CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y 504 | CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= 505 | CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= 506 | 507 | # 508 | # SPIFFS Configuration 509 | # 510 | CONFIG_SPIFFS_MAX_PARTITIONS=3 511 | 512 | # 513 | # SPIFFS Cache Configuration 514 | # 515 | CONFIG_SPIFFS_CACHE=y 516 | CONFIG_SPIFFS_CACHE_WR=y 517 | CONFIG_SPIFFS_CACHE_STATS= 518 | CONFIG_SPIFFS_PAGE_CHECK=y 519 | CONFIG_SPIFFS_GC_MAX_RUNS=10 520 | CONFIG_SPIFFS_GC_STATS= 521 | CONFIG_SPIFFS_OBJ_NAME_LEN=32 522 | CONFIG_SPIFFS_USE_MAGIC=y 523 | CONFIG_SPIFFS_USE_MAGIC_LENGTH=y 524 | CONFIG_SPIFFS_META_LENGTH=4 525 | CONFIG_SPIFFS_USE_MTIME=y 526 | 527 | # 528 | # Debug Configuration 529 | # 530 | CONFIG_SPIFFS_DBG= 531 | CONFIG_SPIFFS_API_DBG= 532 | CONFIG_SPIFFS_GC_DBG= 533 | CONFIG_SPIFFS_CACHE_DBG= 534 | CONFIG_SPIFFS_CHECK_DBG= 535 | CONFIG_SPIFFS_TEST_VISUALISATION= 536 | 537 | # 538 | # tcpip adapter 539 | # 540 | CONFIG_IP_LOST_TIMER_INTERVAL=120 541 | 542 | # 543 | # Wear Levelling 544 | # 545 | CONFIG_WL_SECTOR_SIZE_512= 546 | CONFIG_WL_SECTOR_SIZE_4096=y 547 | CONFIG_WL_SECTOR_SIZE=4096 548 | -------------------------------------------------------------------------------- /wifi.h.sample: -------------------------------------------------------------------------------- 1 | #define WIFI_SSID "mywifi" 2 | #define WIFI_PASSWORD "mypassword" 3 | --------------------------------------------------------------------------------