From: jweigele Date: Mon, 28 Aug 2023 05:11:24 +0000 (-0700) Subject: light sleep stubs and timing info X-Git-Url: http://git.hexthepla.net/?a=commitdiff_plain;h=5401bca0dec02f5c54611e7fdb21310026b10b4c;p=esp32projects light sleep stubs and timing info --- diff --git a/aqi/dependencies.lock b/aqi/dependencies.lock index e0d14f8..63d300c 100644 --- a/aqi/dependencies.lock +++ b/aqi/dependencies.lock @@ -1,16 +1,16 @@ dependencies: espressif/esp-zboss-lib: - component_hash: ba11f1139481e9d0aaa08e9d621eb04113052fad28c8316744a5cb503d79fe6a + component_hash: 8c214bc75cae20c6583f98971d249e2f05a56c82539b0399b5dbb59cb3c38326 source: service_url: https://api.components.espressif.com/ type: service - version: 0.5.1 + version: 0.5.4 espressif/esp-zigbee-lib: - component_hash: 5031e107e2da6a65d30770a0b1a130860fe353021549e65e3a788ea8a53933ff + component_hash: 4a84a2f19ad6077278d6b20d809158b9939afcc540702e57d53084fe26adc69e source: service_url: https://api.components.espressif.com/ type: service - version: 0.7.1 + version: 0.7.4 espressif/led_strip: component_hash: 7e92a0c8a2e35b40904f88e88ce3c0dffff504a2763f70fba7ef4787cf2eec83 source: @@ -27,7 +27,7 @@ dependencies: component_hash: null source: type: idf - version: 5.1.0 + version: 5.1.1 manifest_hash: a38aaee041b50633069a2b3b73fab6a06e0ac769824d1e24f51de3d63b42b66b target: esp32c6 version: 1.0.0 diff --git a/aqi/main/Kconfig b/aqi/main/Kconfig index e7d4dc4..80d5840 100644 --- a/aqi/main/Kconfig +++ b/aqi/main/Kconfig @@ -5,6 +5,11 @@ config TEMP_ENABLED default y help This gets passed and used for includes later +config LIGHT_SLEEP_ENABLED + bool "Actually go into light sleep between polls?" + default n + help + Not very well tested yet config ZIG_ENABLED bool "Are we using zigbee pairing and reporting" diff --git a/aqi/main/aqi.c b/aqi/main/aqi.c index 1ec79fc..8149cd1 100644 --- a/aqi/main/aqi.c +++ b/aqi/main/aqi.c @@ -18,6 +18,7 @@ #include "freertos/task.h" #include "ha/esp_zigbee_ha_standard.h" #include "aqi.h" +#include "math.h" typedef struct aqi_data_s { float pm10; @@ -56,7 +57,7 @@ uint8_t aqi_band_colors[6][3] = { #endif static bool way_too_funky = false; - +static bool init_connected = false; #ifdef CONFIG_ZIG_ENABLED static bool zig_connected = false; #endif @@ -406,12 +407,12 @@ aqi_data_t get_average_pm25(uint8_t* data, int data_size){ ESP_LOGW(TAG, "invalid first entry, returning invalid data"); return retval; } - ESP_LOGI(TAG, "first entry found at %p (offset %d)", (uint8_t*)first_entry, offset); + ESP_LOGI(TAG, "first entry found at %p (offset %d) data size %d", (uint8_t*)first_entry, offset, data_size); uint8_t* cur_entry = first_entry; int pm10, pm25; - while (cur_entry + 32 < data + data_size){ + while (cur_entry + 32 <= data + data_size){ //printf("doing one iteration\n"); - //ESP_LOG_BUFFER_HEXDUMP(TAG, cur_entry, 32, ESP_LOG_INFO); + ESP_LOG_BUFFER_HEXDUMP(TAG, cur_entry, 32, ESP_LOG_INFO); if (verify_checksum(cur_entry)){ pm25 = (data[12] << 8) + (data[13]); pm10 = (data[10] << 8) + (data[11]); @@ -427,6 +428,7 @@ aqi_data_t get_average_pm25(uint8_t* data, int data_size){ } cur_entry += 32; } + ESP_LOGI(TAG, "pm10_total %d pm25_total %d count %d", pm10_total, pm25_total, count); if (count != 0){ retval.pm10 = ((float)pm10_total)/count; retval.pm25 = ((float)pm25_total)/count; @@ -446,6 +448,9 @@ short temp_avg = 0; uint16_t set_pm10; uint16_t set_pm25; + int64_t cur_uptime = 0; + int64_t next_sleep_uptime = 0; + int64_t remaining_time = 0; uint8_t* data = (uint8_t*) malloc(RX_BUF_SIZE+1); int length = 0; #ifdef CONFIG_WIFI_ENABLED @@ -463,13 +468,16 @@ short temp_avg = 0; ESP_LOGI(TAG, "free heap: %"PRIu32, esp_get_free_heap_size()); + cur_uptime = esp_timer_get_time(); + // we'll use this to calc our sleeps later + next_sleep_uptime = cur_uptime + SLEEP_MS*1000; // first things first (function gives microseconds, just convert to seconds) // 32 bits is enough for >50 years and zigbee stack gets mad if we use more bits - device_uptime_seconds = (uint32_t)(esp_timer_get_time()/1000000); + device_uptime_seconds = (uint32_t)(cur_uptime/1000000); // aqi fetch/calculation/report ESP_ERROR_CHECK(uart_get_buffered_data_len(UART_NUM_1, (size_t*)&length)); - const int rxBytes = uart_read_bytes(UART_NUM_1, data, length, 100); + const int rxBytes = uart_read_bytes(UART_NUM_1, data, length, 1000); if (rxBytes > 0) { data[rxBytes] = 0; //ESP_LOGI(TAG, "Read %d bytes: '%s'", rxBytes, data); @@ -478,8 +486,12 @@ short temp_avg = 0; ESP_LOGI(TAG, "average from last 10 seconds pm10: %f", cur_avg.pm10); ESP_LOGI(TAG, "average from last 10 seconds pm25: %f", cur_avg.pm25); - ESP_LOGI(TAG, "setting attrib value and sending, I guess"); - cur_pm = new_pm_average(cur_avg); + if (cur_avg.pm10 < MAX_PM10 && cur_avg.pm25 < MAX_PM25 ){ + ESP_LOGI(TAG, "setting attrib value and sending, I guess"); + cur_pm = new_pm_average(cur_avg); + } else { + ESP_LOGW(TAG, "pm average outside of threshold, ignoring"); + } #ifdef CONFIG_ZIG_ENABLED if (zig_connected){ @@ -550,8 +562,46 @@ short temp_avg = 0; send_report_wifi(cur_pm.pm10, cur_pm.pm25, cur_aqi_pm25, temp_avg); #endif + cur_uptime = esp_timer_get_time(); + remaining_time = next_sleep_uptime - cur_uptime; + ESP_LOGI(TAG, "next sleep uptime %lld cur_uptime %lld remaining time %lld", next_sleep_uptime, cur_uptime, remaining_time); +#ifdef CONFIG_LIGHT_SLEEP_ENABLED + // needs to be in microseconds, so convert + int sleep_us = 100000; + // grab at least _some_ uart + vTaskDelay( pdMS_TO_TICKS(1000) ); + while ( remaining_time > sleep_us ){ + // still have sleep_us to go or more + if ( remaining_time > sleep_us ){ + vTaskDelay( pdMS_TO_TICKS(sleep_us/1000) ); + remaining_time -= sleep_us; + } + if (remaining_time > 0 && init_connected){ + // 1 second max + ESP_ERROR_CHECK(esp_sleep_enable_timer_wakeup(MIN(10000000, remaining_time))); + ESP_ERROR_CHECK(esp_sleep_enable_uart_wakeup(1)); + ESP_ERROR_CHECK(esp_light_sleep_start()); + } + + cur_uptime = esp_timer_get_time(); + remaining_time = next_sleep_uptime - cur_uptime; + + } + // we woke up, but for what reason? + esp_sleep_wakeup_cause_t wakeup_cause = esp_sleep_get_wakeup_cause(); + if (wakeup_cause == ESP_SLEEP_WAKEUP_TIMER ){ + ESP_LOGI(TAG, "woke up from timer at the end of our sleep, all is well"); + } else if (wakeup_cause == ESP_SLEEP_WAKEUP_UART ){ + ESP_LOGI(TAG, "filled up UART, need to do something (but instead am just gonna regular task delay lol)"); + vTaskDelay(pdMS_TO_TICKS((next_sleep_uptime - esp_timer_get_time())/1000)); + } else { + ESP_LOGW(TAG, "woke up for some other reason?? here it is %d", wakeup_cause); + } +#else // sleep for 10 seconds before measuring again - vTaskDelay( pdMS_TO_TICKS(10000) ); + ESP_LOGI(TAG, "sleeping for %lld ms", remaining_time/1000); + vTaskDelay( pdMS_TO_TICKS(remaining_time/1000) ); +#endif } // only called if we break out of the loop somehow (right now, never) @@ -563,6 +613,11 @@ short temp_avg = 0; void esp_zb_app_signal_handler(esp_zb_app_signal_t *signal_struct) { uint32_t *p_sg_p = signal_struct->p_app_signal; + // error handling if pointer is messed up + if (p_sg_p == NULL){ + ESP_LOGW(TAG, "signal null in app signal handler, just returning"); + return; + } esp_err_t err_status = signal_struct->esp_err_status; esp_zb_app_signal_type_t sig_type = *p_sg_p; ESP_LOGI(TAG, "enter signal handler"); @@ -600,6 +655,7 @@ void esp_zb_app_signal_handler(esp_zb_app_signal_t *signal_struct) /* Implement some actions if needed when other cluster changed */ zig_connected = true; + init_connected = true; } else { ESP_LOGI(TAG, "Network steering was not successful (status: %s)", esp_err_to_name(err_status)); //zig_connected = false; @@ -802,6 +858,7 @@ void wifi_connection_bad(void* pvParameter){ //ip_event_got_ip_t* param = (ip_event_got_ip_t*)pvParameter; ESP_LOGW(TAG, "wifi connection got dropped! just gonna set stuff down and hope for the best"); wifi_connected = false; + init_connected = false; mqtt_connected = false; } @@ -809,6 +866,7 @@ void wifi_connection_bad(void* pvParameter){ // wifi connection ok callback void wifi_connection_ok(void* pvParameter){ wifi_connected = true; + init_connected = true; ip_event_got_ip_t* param = (ip_event_got_ip_t*)pvParameter; /* transform IP to human readable string */ @@ -835,6 +893,12 @@ void adjust_color_lookup_brightness(float multiplier){ #endif void app_main(void) { + + +/*#ifdef CONFIG_LIGHT_SLEEP_ENABLED + ESP_ERROR_CHECK(esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON)); +#endif*/ + ESP_ERROR_CHECK(nvs_flash_init()); #ifdef CONFIG_WIFI_ENABLED event_queue = xQueueCreate(5, sizeof(esp_mqtt_client_handle_t)); diff --git a/aqi/main/aqi.h b/aqi/main/aqi.h index d7a938c..e18c7ca 100644 --- a/aqi/main/aqi.h +++ b/aqi/main/aqi.h @@ -27,6 +27,12 @@ static esp_mqtt_client_handle_t mqtt_client; void init_mqtt(); #endif + +#ifdef CONFIG_LIGHT_SLEEP_ENABLED +#include +#include "esp_pm.h" +#endif + #include "esp_system.h" //#include "light_driver.h" @@ -44,12 +50,14 @@ static const char *TAG = "aqi"; #define AQI_INDICATOR_BRIGHTNESS 0.01 #ifdef CONFIG_TEMP_ENABLED -#define TEMP_GPIO 0 +#define TEMP_GPIO 22 #include "onewire.h" #define MIN_TEMP_VALUE -5500 #define MAX_TEMP_VALUE 12500 #endif +#define MAX_PM10 500 +#define MAX_PM25 1000 #ifdef CONFIG_LED_ENABLED //#include "tm1637_hw.h" @@ -62,6 +70,9 @@ static const char *TAG = "aqi"; #define UART_RX_GPIO (GPIO_NUM_5) #define UART_TX_GPIO (GPIO_NUM_14) +// ten second loop +#define SLEEP_MS 10000 + // zigbee cluster reporting stuff @@ -136,7 +147,7 @@ static void mqtt_reinit(); }, \ } -#elif CONFIG_ZB_ED +#elif CONFIG_ZB_ZED #define ZB_TYPE ESP_ZB_DEVICE_TYPE_ED #define ESP_ZB_ZED_CONFIG() \ { \ diff --git a/aqi/sdkconfig b/aqi/sdkconfig index 148e636..381a4ff 100644 --- a/aqi/sdkconfig +++ b/aqi/sdkconfig @@ -1,6 +1,6 @@ # # Automatically generated file. DO NOT EDIT. -# Espressif IoT Development Framework (ESP-IDF) Project Configuration +# Espressif IoT Development Framework (ESP-IDF) 5.1.1 Project Configuration # CONFIG_SOC_ADC_SUPPORTED=y CONFIG_SOC_DEDICATED_GPIO_SUPPORTED=y @@ -72,6 +72,9 @@ CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=83333 CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=611 CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=12 CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 +CONFIG_SOC_ADC_CALIBRATION_V1_SUPPORTED=y +CONFIG_SOC_ADC_SELF_HW_CALI_SUPPORTED=y +CONFIG_SOC_ADC_CALIB_CHAN_COMPENS_SUPPORTED=y CONFIG_SOC_ADC_TEMPERATURE_SHARE_INTR=y CONFIG_SOC_BROWNOUT_RESET_SUPPORTED=y CONFIG_SOC_SHARED_IDCACHE_SUPPORTED=y @@ -115,6 +118,7 @@ CONFIG_SOC_DEDIC_GPIO_IN_CHANNELS_NUM=8 CONFIG_SOC_DEDIC_PERIPH_ALWAYS_ENABLE=y CONFIG_SOC_I2C_NUM=1 CONFIG_SOC_I2C_FIFO_LEN=32 +CONFIG_SOC_I2C_CMD_REG_NUM=8 CONFIG_SOC_I2C_SUPPORT_SLAVE=y CONFIG_SOC_I2C_SUPPORT_HW_CLR_BUS=y CONFIG_SOC_I2C_SUPPORT_XTAL=y @@ -255,6 +259,7 @@ CONFIG_SOC_SUPPORT_SECURE_BOOT_REVOKE_KEY=y CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=32 CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES=y CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_128=y +CONFIG_SOC_CRYPTO_DPA_PROTECTION_SUPPORTED=y CONFIG_SOC_UART_NUM=2 CONFIG_SOC_UART_FIFO_LEN=128 CONFIG_SOC_UART_BITRATE_MAX=5000000 @@ -264,6 +269,7 @@ CONFIG_SOC_UART_SUPPORT_XTAL_CLK=y CONFIG_SOC_UART_SUPPORT_WAKEUP_INT=y CONFIG_SOC_UART_SUPPORT_FSM_TX_WAIT_SEND=y CONFIG_SOC_COEX_HW_PTI=y +CONFIG_SOC_EXTERNAL_COEX_ADVANCE=y CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 CONFIG_SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH=12 CONFIG_SOC_PM_SUPPORT_WIFI_WAKEUP=y @@ -277,12 +283,14 @@ CONFIG_SOC_PM_SUPPORT_RC32K_PD=y CONFIG_SOC_PM_SUPPORT_RC_FAST_PD=y CONFIG_SOC_PM_SUPPORT_VDDSDIO_PD=y CONFIG_SOC_PM_SUPPORT_TOP_PD=y +CONFIG_SOC_PM_SUPPORT_HP_AON_PD=y CONFIG_SOC_PM_SUPPORT_MAC_BB_PD=y CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y CONFIG_SOC_PM_SUPPORT_PMU_MODEM_STATE=y CONFIG_SOC_PM_SUPPORT_DEEPSLEEP_CHECK_STUB_ONLY=y CONFIG_SOC_PM_CPU_RETENTION_BY_SW=y CONFIG_SOC_PM_MODEM_RETENTION_BY_REGDMA=y +CONFIG_SOC_PM_RETENTION_HAS_CLOCK_BUG=y CONFIG_SOC_PM_PAU_LINK_NUM=4 CONFIG_SOC_CLK_RC_FAST_SUPPORT_CALIBRATION=y CONFIG_SOC_MODEM_CLOCK_IS_INDEPENDENT=y @@ -293,7 +301,6 @@ CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_FAST_RC=y CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_XTAL=y CONFIG_SOC_TEMPERATURE_SENSOR_INTR_SUPPORT=y CONFIG_SOC_WIFI_HW_TSF=y -CONFIG_SOC_WIFI_FTM_SUPPORT=y CONFIG_SOC_WIFI_GCMP_SUPPORT=y CONFIG_SOC_WIFI_WAPI_SUPPORT=y CONFIG_SOC_WIFI_CSI_SUPPORT=y @@ -305,6 +312,9 @@ CONFIG_SOC_ESP_NIMBLE_CONTROLLER=y CONFIG_SOC_BLE_50_SUPPORTED=y CONFIG_SOC_BLE_DEVICE_PRIVACY_SUPPORTED=y CONFIG_SOC_BLE_POWER_CONTROL_SUPPORTED=y +CONFIG_SOC_BLUFI_SUPPORTED=y +CONFIG_SOC_BLE_MULTI_CONN_OPTIMIZATION=y +CONFIG_SOC_BLE_USE_WIFI_PWR_CLK_WORKAROUND=y CONFIG_IDF_CMAKE=y CONFIG_IDF_TARGET_ARCH_RISCV=y CONFIG_IDF_TARGET_ARCH="riscv" @@ -750,9 +760,9 @@ CONFIG_ESP32C6_UNIVERSAL_MAC_ADDRESSES=4 # Sleep Config # # CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set -CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y # CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU is not set +CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y # end of Sleep Config # @@ -790,6 +800,16 @@ CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y CONFIG_XTAL_FREQ_40=y CONFIG_XTAL_FREQ=40 # end of Main XTAL Config + +# +# Crypto DPA Protection +# +CONFIG_ESP_CRYPTO_DPA_PROTECTION_AT_STARTUP=y +CONFIG_ESP_CRYPTO_DPA_PROTECTION_LEVEL_LOW=y +# CONFIG_ESP_CRYPTO_DPA_PROTECTION_LEVEL_MEDIUM is not set +# CONFIG_ESP_CRYPTO_DPA_PROTECTION_LEVEL_HIGH is not set +CONFIG_ESP_CRYPTO_DPA_PROTECTION_LEVEL=1 +# end of Crypto DPA Protection # end of Hardware Settings # @@ -815,6 +835,7 @@ CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 CONFIG_ESP_NETIF_TCPIP_LWIP=y # CONFIG_ESP_NETIF_LOOPBACK is not set CONFIG_ESP_NETIF_USES_TCPIP_WITH_BSD_API=y +# CONFIG_ESP_NETIF_RECEIVE_REPORT_ERRORS is not set # CONFIG_ESP_NETIF_L2_TAP is not set # CONFIG_ESP_NETIF_BRIDGE_EN is not set # end of ESP NETIF Adapter @@ -974,7 +995,6 @@ CONFIG_ESP_WIFI_ENABLE_SAE_PK=y CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT=y CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=y # CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set -# CONFIG_ESP_WIFI_FTM_ENABLE is not set CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE=y # CONFIG_ESP_WIFI_GCMP_SUPPORT is not set # CONFIG_ESP_WIFI_GMAC_SUPPORT is not set @@ -1148,6 +1168,7 @@ CONFIG_IEEE802154_CCA_THRESHOLD=-60 CONFIG_IEEE802154_PENDING_TABLE_SIZE=20 # CONFIG_IEEE802154_MULTI_PAN_ENABLE is not set # CONFIG_IEEE802154_TIMING_OPTIMIZATION is not set +# CONFIG_IEEE802154_DEBUG is not set # end of IEEE 802.15.4 # @@ -1309,6 +1330,9 @@ CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y # CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set # CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_NONE=y +# CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_CUSTOM is not set CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y # CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set # CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set @@ -1495,6 +1519,17 @@ CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y # OpenThread # # CONFIG_OPENTHREAD_ENABLED is not set + +# +# Thread Operational Dataset +# +CONFIG_OPENTHREAD_NETWORK_NAME="OpenThread-ESP" +CONFIG_OPENTHREAD_NETWORK_CHANNEL=15 +CONFIG_OPENTHREAD_NETWORK_PANID=0x1234 +CONFIG_OPENTHREAD_NETWORK_EXTPANID="dead00beef00cafe" +CONFIG_OPENTHREAD_NETWORK_MASTERKEY="00112233445566778899aabbccddeeff" +CONFIG_OPENTHREAD_NETWORK_PSKC="104810e2315100afd6bc9215a6bfac53" +# end of Thread Operational Dataset # end of OpenThread # @@ -1644,6 +1679,7 @@ CONFIG_VFS_SUPPORT_DIR=y CONFIG_VFS_SUPPORT_SELECT=y CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y CONFIG_VFS_SUPPORT_TERMIOS=y +CONFIG_VFS_MAX_COUNT=8 # # Host File System I/O (Semihosting) @@ -1674,12 +1710,13 @@ CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y # AQI Program Configuration # # CONFIG_TEMP_ENABLED is not set +# CONFIG_LIGHT_SLEEP_ENABLED is not set # CONFIG_ZIG_ENABLED is not set CONFIG_WIFI_ENABLED=y CONFIG_LED_ENABLED=y CONFIG_INDICATOR_ENABLED=y CONFIG_BROKER_URL="mqtts://esp32:sensorauth@rabbitmq.hexthepla.net" -CONFIG_LOCATION="ESP32wifitest" +CONFIG_LOCATION="West Seattle" CONFIG_GPIO_ERASE_PIN=23 # end of AQI Program Configuration @@ -1697,8 +1734,8 @@ CONFIG_WIFI_MANAGER_RETRY_TIMER=5000 CONFIG_WIFI_MANAGER_MAX_RETRY_START_AP=3 CONFIG_WIFI_MANAGER_SHUTDOWN_AP_TIMER=60000 CONFIG_WEBAPP_LOCATION="/" -CONFIG_DEFAULT_AP_SSID="esp32" -CONFIG_DEFAULT_AP_PASSWORD="esp32pwd" +CONFIG_DEFAULT_AP_SSID="aqimonitor" +CONFIG_DEFAULT_AP_PASSWORD="aqimonitorpwd" CONFIG_DEFAULT_AP_CHANNEL=1 CONFIG_NVS_WIFI_PARTITION="wifi_storage" CONFIG_DEFAULT_AP_IP="10.10.0.1"