light sleep stubs and timing info
authorjweigele <jweigele@local>
Mon, 28 Aug 2023 05:11:24 +0000 (22:11 -0700)
committerjweigele <jweigele@local>
Mon, 28 Aug 2023 05:11:24 +0000 (22:11 -0700)
aqi/dependencies.lock
aqi/main/Kconfig
aqi/main/aqi.c
aqi/main/aqi.h
aqi/sdkconfig

index e0d14f89a228242b57b64839b075b2aa8d777d35..63d300ce11bea5c7adf425c2362ff1e5154f0241 100644 (file)
@@ -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
index e7d4dc44c82cbe9cf9f9780a44c3ae1f2e22df7c..80d5840df8c2e4d9d5d987308d583b208df27d2b 100644 (file)
@@ -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"
index 1ec79fc23435d0f3200e23689d2e11b289dc96cf..8149cd19938fe65b2a2cf50dd1c464c2dcb8fcbd 100644 (file)
@@ -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));
index d7a938cb729eba698d4bafd48213c3097d79dfcb..e18c7ca8f47ee3f6fb5a2cedacedb4f9d9db7184 100644 (file)
@@ -27,6 +27,12 @@ static esp_mqtt_client_handle_t mqtt_client;
 void init_mqtt();
 #endif
 
+
+#ifdef CONFIG_LIGHT_SLEEP_ENABLED
+#include <esp_sleep.h>
+#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()                                         \
     {                                                               \
index 148e636911f6969d5699c225f3b2b3a04bdf2ae6..381a4ff7858385205a8c0b5a4c643465b0335d6a 100644 (file)
@@ -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"