#include "freertos/task.h"
#include "aqi.h"
#include "math.h"
+#include "esp_mac.h"
+#include "driver/gpio.h"
+#include "driver/temperature_sensor.h"
typedef struct aqi_data_s {
float pm10;
float pm25;
} aqi_data_t;
+
+typedef struct report_data_s {
+#ifdef CONFIG_UART_ENABLED
+ uint16_t pm10;
+ uint16_t pm25;
+ float aqi;
+#endif
+#ifdef CONFIG_TEMP_ENABLED
+ uint16_t temperature;
+#endif
+#if defined(CONFIG_MOTION_FIRST_ENABLED) || defined(CONFIG_MOTION_SECOND_ENABLED)
+ bool motion;
+#endif
+ float internal_temperature;
+ uint32_t uptime;
+ SemaphoreHandle_t mutex;
+} report_data_t;
+
+static temperature_sensor_handle_t temp_handle;
static QueueHandle_t event_queue;
+static QueueHandle_t send_queue;
+
+#if defined(CONFIG_MOTION_FIRST_ENABLED) || defined(CONFIG_MOTION_SECOND_ENABLED)
+static QueueHandle_t motion_queue;
+static int motion_pins[2] = {0, 0};
+
+#endif
// for tracking and reporting device uptime
static uint32_t device_uptime_seconds = 0;
static bool way_too_funky = false;
static bool init_connected = false;
-#ifdef CONFIG_ZIG_ENABLED
-static bool zig_connected = false;
-#endif
#if defined(CONFIG_WIFI_ENABLED) || defined(CONFIG_OT_ENABLED)
static bool netif_connected = false;
static bool mqtt_was_reinit = true;
static bool mqtt_connected = false;
+static uint8_t ot_mac[6];
#endif
static aqi_data_t cur_pm = {
.pm10 = 0,
.pm25 = 0
};
+
+static report_data_t report_data;
+
static aqi_data_t pmbuffer[PMBUFFERSIZE];
static int pmbufferindex = 0;
+
// openthread functions
#ifdef CONFIG_OT_ENABLED
void handleNetifStateChanged(uint32_t aFlags, void *aContext)
case OT_DEVICE_ROLE_LEADER:
case OT_DEVICE_ROLE_ROUTER:
case OT_DEVICE_ROLE_CHILD:
+ ESP_LOGI(TAG, "valid role, setting netif_connected");
netif_connected = true;
- init_connected = true;
- ESP_LOGI(TAG, "is_connected = true");
- init_mqtt();
+ if (mqtt_connected == false ){
+ ESP_LOGI(TAG, "CONNECTING to mqtt here!");
+ init_connected = true;
+ ESP_LOGI(TAG, "is_connected = true");
+ init_mqtt();
+ }
break;
case OT_DEVICE_ROLE_DETACHED:
{
otLinkModeConfig linkMode = { 0 };
+#ifdef CONFIG_EEPY_DEVICE
linkMode.mRxOnWhenIdle = true;
linkMode.mDeviceType = false;
- linkMode.mNetworkData = false;
+ linkMode.mNetworkData = false;
+#else
+ linkMode.mRxOnWhenIdle = true;
+ linkMode.mDeviceType = true;
+ linkMode.mNetworkData = true;
+#endif
if (otLinkSetPollPeriod(instance, CONFIG_OPENTHREAD_NETWORK_POLLPERIOD_TIME) != OT_ERROR_NONE) {
ESP_LOGE(TAG, "Failed to set OpenThread pollperiod.");
{
esp_netif_config_t cfg = ESP_NETIF_DEFAULT_OPENTHREAD();
esp_netif_t *netif = esp_netif_new(&cfg);
+
assert(netif != NULL);
ESP_ERROR_CHECK(esp_netif_attach(netif, esp_openthread_netif_glue_init(config)));
.max_freq_mhz = cur_cpu_freq_mhz,
.min_freq_mhz = cur_cpu_freq_mhz,
#if CONFIG_FREERTOS_USE_TICKLESS_IDLE
- .light_sleep_enable = true
+ .light_sleep_enable = false //true
#endif
};
create_config_network(esp_openthread_get_instance());
- while (true) {
+ //esp_err_t err_netif = esp_netif_get_mac(openthread_netif, ot_mac);
+ esp_err_t err_netif = esp_base_mac_addr_get(ot_mac);
+ ESP_LOGE(TAG, "error status is %s", esp_err_to_name(err_netif));
+ ESP_LOGI(TAG, "here I go here I go here I go again");
+ ESP_LOG_BUFFER_HEXDUMP(TAG, ot_mac, 6, ESP_LOG_INFO);
+
+ //while (true) {
// Run the main loop
- esp_err_t err = esp_openthread_launch_mainloop();
- ESP_LOGE(TAG, "Error somewhere in openthread loop %s.", esp_err_to_name(err));
- vTaskDelay( pdMS_TO_TICKS(10000) );
+ esp_err_t err = esp_openthread_launch_mainloop();
+ ESP_LOGE(TAG, "Error somewhere in openthread loop %s.", esp_err_to_name(err));
+ // vTaskDelay( pdMS_TO_TICKS(10000) );
- }
+ //}
// Clean up
way_too_funky = true;
}
-#ifdef CONFIG_ZIG_ENABLED
- // we call the zigbee code directly so this needs no check
- ESP_LOGW(TAG, "erasing zigbee settings by calling function");
- esp_zb_factory_reset();
-#endif
ESP_LOGI(TAG, "waiting 10 seconds then restarting");
// if you didn't have zigbee running, this takes care of the restart
vTaskDelay( pdMS_TO_TICKS(10000) );
}
}
-
-
-#ifdef CONFIG_ZIG_ENABLED
-typedef struct zdo_info_ctx_s {
- uint8_t endpoint;
- esp_zb_ieee_addr_t long_addr;
-} zdo_info_user_ctx_t;
-
-static void bdb_start_top_level_commissioning_cb(uint8_t mode_mask)
-{
- ESP_ERROR_CHECK(esp_zb_bdb_start_top_level_commissioning(mode_mask));
-}
-#endif
-
#ifdef CONFIG_LED_ENABLED
void init_led(){
led = tm1637_init(LED_GPIO_CLK, LED_GPIO_DIO);
#ifdef CONFIG_TEMP_ENABLED
bool init_temp(){
- bool err = ow_init(&ow, TEMP_GPIO);
+ bool err = ow_init(&ow, CONFIG_TEMP_PIN);
if (err){
ESP_LOGI(TAG, "there was an error initing ow");
}
uart_set_pin(UART_NUM_1, UART_TX_GPIO, UART_RX_GPIO, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);
}
+static void send_task(void* discard){
+
+ char* mqtt_string = ""; //NULL;
+ bool last_sent = false;
+ for(;;){
+ // receive an event we need to deal with from elsewhere, right now just reconnect related
+ if (xQueueReceive(send_queue, &mqtt_string, portMAX_DELAY )){
+ last_sent = true;
+ //ESP_LOGW(TAG, "received a string in send loop! %s", mqtt_string);
+ ESP_LOGI(TAG, "sending mqtt_string:\n%s",mqtt_string);
+ if (netif_connected == true && mqtt_connected == true){
+ int msg_id = esp_mqtt_client_publish(mqtt_client, "esp32/sensor_info", mqtt_string, 0, 1, 0);
+ ESP_LOGI(TAG, "sent publish successful, msg_id=%d", msg_id);
+ } else {
+ ESP_LOGW(TAG, "well, not quite yet (not connected)");
+ }
+ free(mqtt_string);
+ }
+ // and loop around immediately if we just sent something, otherwise sleep a bit
+ if (last_sent == true) {
+ last_sent = false;
+ } else {
+ vTaskDelay( pdMS_TO_TICKS(1000) );
+ }
+
+ }
+
+}
+
#if defined(CONFIG_WIFI_ENABLED) || defined(CONFIG_OT_ENABLED)
-static void send_report_wifi(uint16_t pm10, uint16_t pm25, float aqi, uint16_t temperature){
+static void send_report_motion(bool motion){
+ xSemaphoreTake(report_data.mutex, portMAX_DELAY);
+
+ ESP_LOGI(TAG, "send_report_motion was called!");
+ cJSON *root;
+ root = cJSON_CreateObject();
+ cJSON_AddStringToObject(root, "location", CONFIG_LOCATION);
+ cJSON_AddBoolToObject(root, "motion", motion);
+ char *mqtt_string = cJSON_Print(root);
+ xQueueSend(send_queue, &mqtt_string, portMAX_DELAY);
+ cJSON_Delete(root);
+
+ xSemaphoreGive(report_data.mutex);
+
+}
+
+static void send_report_wifi(report_data_t report_data){
+ xSemaphoreTake(report_data.mutex, portMAX_DELAY);
+
ESP_LOGI(TAG, "send_report_wifi was called!");
cJSON *root;
root = cJSON_CreateObject();
cJSON_AddStringToObject(root, "location", CONFIG_LOCATION);
- cJSON_AddNumberToObject(root, "pm10", ((float)pm10/100));
- cJSON_AddNumberToObject(root, "pm25", ((float)pm25/100));
- cJSON_AddNumberToObject(root, "aqi", aqi);
- cJSON_AddNumberToObject(root, "uptime", device_uptime_seconds);
+#ifdef CONFIG_UART_ENABLED
+ cJSON_AddNumberToObject(root, "pm10", ((float)report_data.pm10/100));
+ cJSON_AddNumberToObject(root, "pm25", ((float)report_data.pm25/100));
+ cJSON_AddNumberToObject(root, "aqi", report_data.aqi);
+#endif
+ cJSON_AddNumberToObject(root, "uptime", report_data.uptime);
+ cJSON_AddNumberToObject(root, "internal", report_data.internal_temperature);
#ifdef CONFIG_TEMP_ENABLED
- cJSON_AddNumberToObject(root, "temperature", ((float)temperature/100));
+ if (report_data.temperature != 0x8000) {
+ cJSON_AddNumberToObject(root, "temperature", ((float)report_data.temperature/100));
+ //ESP_LOGI(TAG, "temperature was %u", temperature);
+ } else {
+ ESP_LOGW(TAG, "temperature not init, skipping it in report");
+ }
+#endif
+#if defined(CONFIG_MOTION_FIRST_ENABLED) || defined(CONFIG_MOTION_SECOND_ENABLED)
+ cJSON_AddBoolToObject(root, "motion", report_data.motion);
#endif
- //const char *my_json_string = cJSON_Print(root);
char *mqtt_string = cJSON_Print(root);
- ESP_LOGI(TAG, "sending mqtt_string:\n%s",mqtt_string);
- if (netif_connected == true && mqtt_connected == true){
- int msg_id = esp_mqtt_client_publish(mqtt_client, "esp32/sensor_info", mqtt_string, 0, 1, 0);
- ESP_LOGI(TAG, "sent publish successful, msg_id=%d", msg_id);
- } else {
- ESP_LOGW(TAG, "well, not quite yet (not connected)");
- }
- free(mqtt_string);
+ xQueueSend(send_queue, &mqtt_string, portMAX_DELAY);
cJSON_Delete(root);
-}
-#endif
-
-#ifdef CONFIG_ZIG_ENABLED
-static void send_report_zig(int report_cluster, int report_attribute){
- ESP_LOGI(TAG, "sending report here");
- esp_zb_zcl_report_attr_cmd_t des;
-
- //uint8_t long_addy[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff};
- //memcpy(des.zcl_basic_cmd.dst_addr_u.addr_long, long_addy, sizeof(esp_zb_ieee_addr_t));
- //des.zcl_basic_cmd.dst_addr_u.addr_long = long_addy;
- des.zcl_basic_cmd.dst_addr_u.addr_short = 0;
- // 0xFFFCu;
- des.zcl_basic_cmd.dst_endpoint = HA_ESP_ENDPOINT;
- des.zcl_basic_cmd.src_endpoint = HA_ESP_ENDPOINT;
- des.address_mode = ESP_ZB_APS_ADDR_MODE_16_ENDP_PRESENT;
- //ESP_ZB_APS_ADDR_MODE_16_GROUP_ENDP_NOT_PRESENT;
- //des.address_mode = ESP_ZB_APS_ADDR_MODE_64_ENDP_PRESENT;
-
- des.clusterID = report_cluster;
- des.attributeID = report_attribute;
- des.cluster_role=ESP_ZB_ZCL_CLUSTER_SERVER_ROLE;
- ESP_ERROR_CHECK(esp_zb_zcl_report_attr_cmd_req(&des));
- ESP_LOGI(TAG, "sent report");
+ xSemaphoreGive(report_data.mutex);
}
+
#endif
bool verify_checksum(uint8_t* data){
}
+#if defined(CONFIG_MOTION_FIRST_ENABLED) || defined(CONFIG_MOTION_SECOND_ENABLED)
+static void IRAM_ATTR gpio_isr_handler(void* arg)
+{
+ uint32_t gpio_num = (uint32_t) arg;
+ xQueueSendFromISR(motion_queue, &gpio_num, NULL);
+}
+
+static void motion_task(void* discard){
+
+ //zero-initialize the config structure.
+ gpio_config_t io_conf = {};
+
+ //interrupt of rising edge
+ io_conf.intr_type = GPIO_INTR_ANYEDGE;
+ //bit mask of the pins, use GPIO4/5 here
+ io_conf.pin_bit_mask = 0;
+#ifdef CONFIG_MOTION_FIRST_ENABLED
+ io_conf.pin_bit_mask |= (1ULL << CONFIG_MOTION_FIRST_PIN);
+ ESP_LOGI(TAG, "first motion bitmask now %"PRIu64, io_conf.pin_bit_mask);
+#endif
+#ifdef CONFIG_MOTION_SECOND_ENABLED
+ io_conf.pin_bit_mask |= (1ULL << CONFIG_MOTION_SECOND_PIN);
+ ESP_LOGI(TAG, "second motion bitmask now %"PRIu64, io_conf.pin_bit_mask);
+#endif
+
+ //set as input mode
+ io_conf.mode = GPIO_MODE_INPUT;
+ //enable pull-down mode
+ io_conf.pull_down_en = 1;
+ io_conf.pull_up_en = 0;
+ gpio_config(&io_conf);
+
+ //change gpio interrupt type for one pin
+#ifdef CONFIG_MOTION_FIRST_ENABLED
+ ESP_ERROR_CHECK(gpio_set_intr_type(CONFIG_MOTION_FIRST_PIN, GPIO_INTR_ANYEDGE));
+#endif
+#ifdef CONFIG_MOTION_SECOND_ENABLED
+ ESP_ERROR_CHECK(gpio_set_intr_type(CONFIG_MOTION_SECOND_PIN, GPIO_INTR_ANYEDGE));
+#endif
+
+
+ //create a queue to handle gpio event from isr
+ motion_queue = xQueueCreate(10, sizeof(uint32_t));
+
+ //install gpio isr service
+ ESP_ERROR_CHECK(gpio_install_isr_service(ESP_INTR_FLAG_LOWMED));
+ //hook isr handler for specific gpio pin
+#ifdef CONFIG_MOTION_FIRST_ENABLED
+ esp_err_t firstret = gpio_isr_handler_add(CONFIG_MOTION_FIRST_PIN, gpio_isr_handler, (void*) CONFIG_MOTION_FIRST_PIN);
+ ESP_LOGE(TAG, "return for isr handler add (first) is %s", esp_err_to_name(firstret));
+#endif
+#ifdef CONFIG_MOTION_SECOND_ENABLED
+ esp_err_t secondret = gpio_isr_handler_add(CONFIG_MOTION_SECOND_PIN, gpio_isr_handler, (void*) CONFIG_MOTION_SECOND_PIN);
+ ESP_LOGE(TAG, "return for isr handler add (second) is %s", esp_err_to_name(secondret));
+#endif
+
+
+ uint32_t io_num;
+ ESP_LOGI(TAG, "waiting for motion events");
+ for(;;) {
+ if(xQueueReceive(motion_queue, &io_num, portMAX_DELAY)) {
+ // Take the mutex
+ xSemaphoreTake(report_data.mutex, portMAX_DELAY);
+ int pin_value = gpio_get_level(io_num);
+ printf("GPIO[%"PRIu32"] intr, val: %d\n", io_num, pin_value);
+ switch (io_num) {
+ case CONFIG_MOTION_FIRST_PIN:
+ motion_pins[0] = pin_value;
+ break;
+ case CONFIG_MOTION_SECOND_PIN:
+ motion_pins[1] = pin_value;
+ break;
+ default:
+ printf("Unable to set motion pins!\n");
+ }
+ bool motion;
+ if ((motion_pins[0] == 0) && (motion_pins[1] == 0)) {
+ motion = false;
+ } else {
+ motion = true;
+ }
+
+ report_data.motion = motion;
+ xSemaphoreGive(report_data.mutex);
+ send_report_motion(motion);
+ }
+ }
+}
+#endif
+
static void monitoring_task(void* discard)
{
short temp_avg = 0;
int64_t remaining_time = 0;
uint8_t* data = (uint8_t*) malloc(RX_BUF_SIZE+1);
int length = 0;
+ float cur_aqi_pm25 = 0.0;
+ float cur_aqi_pm10 = 0.0;
#if defined(CONFIG_WIFI_ENABLED) || defined(CONFIG_OT_ENABLED)
esp_mqtt_client_handle_t queue_item;
#endif
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
+ xSemaphoreTake(report_data.mutex, portMAX_DELAY);
+ ESP_ERROR_CHECK(temperature_sensor_get_celsius(temp_handle, &report_data.internal_temperature));
device_uptime_seconds = (uint32_t)(cur_uptime/1000000);
+ report_data.uptime = device_uptime_seconds;
+ xSemaphoreGive(report_data.mutex);
+
+#ifdef CONFIG_UART_ENABLED
// 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, 1000);
} else {
ESP_LOGW(TAG, "pm average outside of threshold, ignoring");
}
-#ifdef CONFIG_ZIG_ENABLED
-
- if (zig_connected){
- set_pm10 = (uint16_t)cur_pm.pm10;
- set_pm25 = (uint16_t)cur_pm.pm25;
-
- esp_zb_zcl_set_attribute_val(HA_ESP_ENDPOINT, PM25CLUSTER, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE,
- PM10MEASURED, &set_pm10, false);
- esp_zb_zcl_set_attribute_val(HA_ESP_ENDPOINT, PM25CLUSTER, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE,
- PM25MEASURED, &set_pm25, false);
- send_report_zig(PM10CLUSTER, PM10MEASURED);
- send_report_zig(PM25CLUSTER, PM25MEASURED);
- // reasonable place to do it since this is the one universal measurement block for zigbee
- esp_zb_zcl_set_attribute_val(HA_ESP_ENDPOINT, UPTIMECLUSTER, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE,
- UPTIMEID, &device_uptime_seconds, false);
- send_report_zig(UPTIMECLUSTER, UPTIMEID);
- }
-#endif
} else {
ESP_LOGW(TAG, "Nothing seen from uart");
}
- float cur_aqi_pm10 = aqi_calc_pm10(cur_pm.pm10);
- float cur_aqi_pm25 = aqi_calc_pm25(cur_pm.pm25);
+ cur_aqi_pm10 = aqi_calc_pm10(cur_pm.pm10);
+ cur_aqi_pm25 = aqi_calc_pm25(cur_pm.pm25);
uint16_t set_aqi;
if (cur_aqi_pm25 > cur_aqi_pm10){
ESP_LOGI(TAG, "pm25 > pm10, using %f > %f", cur_aqi_pm25, cur_aqi_pm10);
ESP_LOGI(TAG, "pm10 > pm25, using %f > %f", cur_aqi_pm10, cur_aqi_pm25);
set_aqi = round(cur_aqi_pm10);
}
+ xSemaphoreTake(report_data.mutex, portMAX_DELAY);
+ report_data.pm10 = cur_pm.pm10;
+ report_data.pm25 = cur_pm.pm25;
+ report_data.aqi = set_aqi;
+ xSemaphoreGive(report_data.mutex);
#ifdef CONFIG_LED_ENABLED
ESP_LOGI(TAG, "setting led value to %d", set_aqi);
tm1637_set_number(led, set_aqi);
// colors match the aqi bands that we're calculating off of, so just 1:1 translate the RGB through
light_driver_set_color_RGB(current_colors[0], current_colors[1], current_colors[2]);
#endif
+
+#endif // end UART section
temp_avg = 0;
#ifdef CONFIG_TEMP_ENABLED
// Temperature fetch/calculation/report
temp_avg = new_temp_average(get_temp());
- ESP_LOGI(TAG, "current: %d", temp_avg);
-
-#ifdef CONFIG_ZIG_ENABLED
- if (zig_connected){
- ESP_LOGI(TAG, "setting attrib value and sending, I guess");
- esp_zb_zcl_set_attribute_val(HA_ESP_ENDPOINT, ESP_ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE,
- ESP_ZB_ZCL_ATTR_TEMP_MEASUREMENT_VALUE_ID, &temp_avg, false);
- send_report_zig(ESP_ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT, ESP_ZB_ZCL_ATTR_TEMP_MEASUREMENT_VALUE_ID);
- }
-
-#endif // ZIG
-
-
+ xSemaphoreTake(report_data.mutex, portMAX_DELAY);
+ report_data.temperature = temp_avg;
+ xSemaphoreGive(report_data.mutex);
+ ESP_LOGI(TAG, "current: %u", temp_avg);
#endif // TEMP
#if defined(CONFIG_WIFI_ENABLED) || defined(CONFIG_OT_ENABLED)
// one BIG report for wifi
- send_report_wifi(cur_pm.pm10, cur_pm.pm25, cur_aqi_pm25, temp_avg);
+ send_report_wifi(report_data);
#endif
cur_uptime = esp_timer_get_time();
free(data);
}
-
-#ifdef CONFIG_ZIG_ENABLED
-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");
- switch (sig_type) {
- case ESP_ZB_ZDO_SIGNAL_SKIP_STARTUP:
- ESP_LOGI(TAG, "Zigbee stack initialized");
- esp_zb_bdb_start_top_level_commissioning(ESP_ZB_BDB_MODE_INITIALIZATION);
- break;
- case ESP_ZB_BDB_SIGNAL_DEVICE_FIRST_START:
- case ESP_ZB_BDB_SIGNAL_DEVICE_REBOOT:
- //zig_connected = false;
- if (err_status == ESP_OK) {
- ESP_LOGI(TAG, "Start network steering");
- esp_zb_bdb_start_top_level_commissioning(ESP_ZB_BDB_MODE_NETWORK_STEERING);
- esp_zb_ieee_addr_t local_addy;
- esp_zb_get_long_address(local_addy);
- ESP_LOGI(TAG, "Local ZB address: 0x%02x%02x%02x%02x%02x%02x%02x%02x",
- local_addy[7], local_addy[6], local_addy[5], local_addy[4],
- local_addy[3], local_addy[2], local_addy[1], local_addy[0]);
- } else {
- /* commissioning failed */
- ESP_LOGW(TAG, "Failed to initialize Zigbee stack (status: %s)", esp_err_to_name(err_status));
- //zig_connected = false;
- esp_zb_start(false);
- }
- break;
- case ESP_ZB_BDB_SIGNAL_STEERING:
- if (err_status == ESP_OK) {
- esp_zb_ieee_addr_t extended_pan_id;
- esp_zb_get_extended_pan_id(extended_pan_id);
- ESP_LOGI(TAG, "Joined network successfully (Extended PAN ID: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x, PAN ID: 0x%04hx, Channel:%d)",
- extended_pan_id[7], extended_pan_id[6], extended_pan_id[5], extended_pan_id[4],
- extended_pan_id[3], extended_pan_id[2], extended_pan_id[1], extended_pan_id[0],
- esp_zb_get_pan_id(), esp_zb_get_current_channel());
- /* 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;
- esp_zb_scheduler_alarm((esp_zb_callback_t)bdb_start_top_level_commissioning_cb, ESP_ZB_BDB_MODE_NETWORK_STEERING, 1000);
- }
- break;
- default:
- ESP_LOGI(TAG, "ZDO signal: %s (0x%x), status: %s", esp_zb_zdo_signal_to_string(sig_type), sig_type,
- esp_err_to_name(err_status));
- break;
- }
-}
-
-static void esp_zb_task(void *pvParameters)
-{
- if (ZB_TYPE == ESP_ZB_DEVICE_TYPE_ROUTER){
- ESP_LOGI(TAG, "entered esp_zb_task, zb_type is router");
- } else {
- ESP_LOGI(TAG, "entered esp_zb_task, zb_type is end device");
- }
-
- /* initialize Zigbee stack with Zigbee end-device config */
- esp_zb_cfg_t zb_nwk_cfg = ESP_ZB_ZED_CONFIG();
- esp_zb_init(&zb_nwk_cfg);
-
- esp_zb_set_primary_network_channel_set(ESP_ZB_PRIMARY_CHANNEL_MASK);
-
- /* set the on-off light device config */
- char modelid[] = {7, 'T', 'E', 'S', 'T', 'D', 'E', 'V'};
- char manufacturer[] = {3, 'h', 'e', 'x'};
- uint8_t power_source[] = {0x01};
-
-
- /* basic cluster create with fully customized */
- esp_zb_attribute_list_t *esp_zb_basic_cluster = esp_zb_zcl_attr_list_create(ESP_ZB_ZCL_CLUSTER_ID_BASIC);
- esp_zb_basic_cluster_add_attr(esp_zb_basic_cluster, ESP_ZB_ZCL_ATTR_BASIC_POWER_SOURCE_ID, power_source);
- esp_zb_basic_cluster_add_attr(esp_zb_basic_cluster, ESP_ZB_ZCL_ATTR_BASIC_MODEL_IDENTIFIER_ID, &modelid);
- esp_zb_basic_cluster_add_attr(esp_zb_basic_cluster, ESP_ZB_ZCL_ATTR_BASIC_MANUFACTURER_NAME_ID, &manufacturer);
- /* identify cluster create with fully customized */
- esp_zb_attribute_list_t *esp_zb_identify_cluster = esp_zb_zcl_attr_list_create(ESP_ZB_ZCL_CLUSTER_ID_IDENTIFY);
-
-
- esp_zb_attribute_list_t *esp_zb_uptime_cluster = esp_zb_zcl_attr_list_create(UPTIMECLUSTER);
- ESP_ERROR_CHECK(esp_zb_custom_cluster_add_custom_attr(esp_zb_uptime_cluster, UPTIMEID, ESP_ZB_ZCL_ATTR_TYPE_U32, ESP_ZB_ZCL_ATTR_ACCESS_READ_ONLY | ESP_ZB_ZCL_ATTR_ACCESS_REPORTING, &device_uptime_seconds));
-
- uint16_t initial_pm10 = 0;
- uint16_t initial_pm25 = 0;
-
-
- esp_zb_attribute_list_t *esp_zb_pm25_cluster = esp_zb_zcl_attr_list_create(PM25CLUSTER);
- ESP_ERROR_CHECK(esp_zb_custom_cluster_add_custom_attr(esp_zb_pm25_cluster, PM25MEASURED, ESP_ZB_ZCL_ATTR_TYPE_U16, ESP_ZB_ZCL_ATTR_ACCESS_READ_ONLY | ESP_ZB_ZCL_ATTR_ACCESS_REPORTING, &initial_pm25));
- ESP_ERROR_CHECK(esp_zb_custom_cluster_add_custom_attr(esp_zb_pm25_cluster, PM10MEASURED, ESP_ZB_ZCL_ATTR_TYPE_U16, ESP_ZB_ZCL_ATTR_ACCESS_READ_ONLY | ESP_ZB_ZCL_ATTR_ACCESS_REPORTING, &initial_pm10));
-
- /* create cluster lists for this endpoint */
- esp_zb_cluster_list_t *esp_zb_cluster_list = esp_zb_zcl_cluster_list_create();
- esp_zb_cluster_list_add_basic_cluster(esp_zb_cluster_list, esp_zb_basic_cluster, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE);
- esp_zb_cluster_list_add_identify_cluster(esp_zb_cluster_list, esp_zb_identify_cluster, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE);
-
-#ifdef CONFIG_TEMP_ENABLED
- short min_temp = MIN_TEMP_VALUE;
- short max_temp = MAX_TEMP_VALUE;
-
- // temperature cluster
- esp_zb_attribute_list_t *esp_zb_temp_cluster = esp_zb_zcl_attr_list_create(ESP_ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT);
- esp_zb_temperature_meas_cluster_add_attr(esp_zb_temp_cluster, ESP_ZB_ZCL_ATTR_TEMP_MEASUREMENT_VALUE_ID, &tempbuffer[0]);
- esp_zb_temperature_meas_cluster_add_attr(esp_zb_temp_cluster, ESP_ZB_ZCL_ATTR_TEMP_MEASUREMENT_MIN_VALUE_ID, &min_temp);
- esp_zb_temperature_meas_cluster_add_attr(esp_zb_temp_cluster, ESP_ZB_ZCL_ATTR_TEMP_MEASUREMENT_MAX_VALUE_ID, &max_temp);
-
- esp_zb_cluster_list_add_temperature_meas_cluster(esp_zb_cluster_list, esp_zb_temp_cluster, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE);
-#endif
-
- ESP_ERROR_CHECK(esp_zb_cluster_list_add_custom_cluster(esp_zb_cluster_list, esp_zb_uptime_cluster, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE));
- ESP_ERROR_CHECK(esp_zb_cluster_list_add_custom_cluster(esp_zb_cluster_list, esp_zb_pm25_cluster, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE));
-
-
- esp_zb_ep_list_t *esp_zb_ep_list = esp_zb_ep_list_create();
- /* add created endpoint (cluster_list) to endpoint list */
- esp_zb_ep_list_add_ep(esp_zb_ep_list, esp_zb_cluster_list, HA_ESP_ENDPOINT, ESP_ZB_AF_HA_PROFILE_ID, ESP_ZB_HA_ON_OFF_OUTPUT_DEVICE_ID);
- esp_zb_device_register(esp_zb_ep_list);
-
- ESP_ERROR_CHECK(esp_zb_start(false));
- erase_data_hook();
-
- //ESP_ERROR_CHECK(esp_zb_secur_ic_set(ESP_ZB_IC_TYPE_128, (uint8_t*)curic));
- ESP_LOGI(TAG, "main loop begin");
- esp_zb_main_loop_iteration();
-
-}
-#endif
-
#if defined(CONFIG_WIFI_ENABLED) || defined(CONFIG_OT_ENABLED)
static void log_error_if_nonzero(const char *message, int error_code)
void init_mqtt(){
ESP_LOGI(TAG, "attempting to connect to MQTT");
mqtt_client = NULL;
+ char mqtt_id[64];
+ sprintf(mqtt_id, "ESP32_%02x%02x%02x%02x%02x%02x",
+ ot_mac[0], ot_mac[1], ot_mac[2], ot_mac[3], ot_mac[4], ot_mac[5]);
esp_mqtt_client_config_t mqtt_cfg = {
.broker = {
.address.uri = CONFIG_BROKER_URL,
//.verification.use_global_ca_store = true,
//.verification.crt_bundle_attach = esp_crt_bundle_attach,
},
- .session.keepalive = 10,
+ .credentials.client_id = mqtt_id,
+ .session.keepalive = 60,
+ .session.disable_keepalive = false,
+ .session.disable_clean_session = false,
//.cacert_buf = ca_cert,
//.cacert_bytes = strlen(ca_cert)+1,
};
#endif*/
ESP_ERROR_CHECK(nvs_flash_init());
+
+ // temp monitoring
+ temp_handle = NULL;
+ temperature_sensor_config_t temp_sensor = TEMPERATURE_SENSOR_CONFIG_DEFAULT(-10, 80);
+ /* {
+ .range_min = 20,
+ .range_max = 100,
+ .temperature_sensor_clk_src_t =
+ };*/
+ ESP_ERROR_CHECK(temperature_sensor_install(&temp_sensor, &temp_handle)); //
+ ESP_ERROR_CHECK(temperature_sensor_enable(temp_handle));
+
+
+ // Create mutex before starting tasks
+ report_data.mutex = xSemaphoreCreateMutex();
#if defined(CONFIG_WIFI_ENABLED) || defined(CONFIG_OT_ENABLED)
event_queue = xQueueCreate(5, sizeof(esp_mqtt_client_handle_t));
#endif
light_driver_init(LIGHT_DEFAULT_OFF);
#endif
-// if it's zigbee enabled, we need to actually start zb
-// before calling this (added directly in task later)
-#ifndef CONFIG_ZIG_ENABLED
- ESP_LOGI(TAG, "no zigbee, calling erase hook early");
- // check for erasing data partitions
- erase_data_hook();
-#endif
#ifdef CONFIG_INDICATOR_ENABLED
adjust_color_lookup_brightness(AQI_INDICATOR_BRIGHTNESS);
#endif
- init_uart();
+#ifdef CONFIG_UART_ENABLED
+ init_uart();
init_pmbuffer();
+#endif
#ifdef CONFIG_TEMP_ENABLED
init_tempbuffer();
#endif
//runit();
#endif
-#ifdef CONFIG_ZIG_ENABLED
- esp_zb_platform_config_t config = {
- .radio_config = ESP_ZB_DEFAULT_RADIO_CONFIG(),
- .host_config = ESP_ZB_DEFAULT_HOST_CONFIG(),
- };
-
- /* load Zigbee light_bulb platform config to initialization */
- ESP_ERROR_CHECK(esp_zb_platform_config(&config));
- /* hardware related and device init */
- //light_driver_init(LIGHT_DEFAULT_OFF);
- xTaskCreate(esp_zb_task, "Zigbee_main", 4096, NULL, 5, NULL);
-#endif
#ifdef CONFIG_OT_ENABLED
esp_vfs_eventfd_config_t eventfd_config = {
.max_fds = 3,
wifi_manager_set_callback(WM_EVENT_STA_GOT_IP, &wifi_connection_ok);
wifi_manager_set_callback(WM_EVENT_STA_DISCONNECTED, &wifi_connection_bad);
+#endif
+ send_queue = xQueueCreate(5, sizeof(char*));
+ xTaskCreate(send_task, "send_task", 4096, NULL, 2, NULL);
+#if defined(CONFIG_MOTION_FIRST_ENABLED) || defined(CONFIG_MOTION_SECOND_ENABLED)
+ ESP_LOGI(TAG, "installing motion task");
+ xTaskCreate(motion_task, "motion_task", 4096, NULL, 2, NULL);
#endif
xTaskCreate(monitoring_task, "monitoring_task", 4096, NULL, 1, NULL);
}
#
# Automatically generated file. DO NOT EDIT.
-# Espressif IoT Development Framework (ESP-IDF) 5.1.1 Project Configuration
+# Espressif IoT Development Framework (ESP-IDF) 5.1.2 Project Configuration
#
CONFIG_SOC_ADC_SUPPORTED=y
CONFIG_SOC_ANA_CMPR_SUPPORTED=y
CONFIG_SOC_APM_SUPPORTED=y
CONFIG_SOC_PMU_SUPPORTED=y
CONFIG_SOC_LP_TIMER_SUPPORTED=y
+CONFIG_SOC_LP_AON_SUPPORTED=y
CONFIG_SOC_PAU_SUPPORTED=y
CONFIG_SOC_CLK_TREE_SUPPORTED=y
CONFIG_SOC_XTAL_SUPPORT_32M=y
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
CONFIG_SOC_INT_PLIC_SUPPORTED=y
CONFIG_SOC_CPU_BREAKPOINTS_NUM=4
CONFIG_SOC_CPU_WATCHPOINTS_NUM=4
-CONFIG_SOC_CPU_WATCHPOINT_SIZE=0x80000000
+CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=0x80000000
CONFIG_SOC_CPU_HAS_PMA=y
CONFIG_SOC_CPU_IDRAM_SPLIT_USING_PMP=y
CONFIG_SOC_MMU_PAGE_SIZE_CONFIGURABLE=y
CONFIG_SOC_GPIO_SUPPORT_ETM=y
CONFIG_SOC_GPIO_ETM_EVENTS_PER_GROUP=8
CONFIG_SOC_GPIO_ETM_TASKS_PER_GROUP=8
-CONFIG_SOC_GPIO_SUPPORT_DEEPSLEEP_WAKEUP=y
-CONFIG_SOC_GPIO_DEEP_SLEEP_WAKE_VALID_GPIO_MASK=0
+CONFIG_SOC_GPIO_SUPPORT_RTC_INDEPENDENT=y
CONFIG_SOC_GPIO_VALID_DIGITAL_IO_PAD_MASK=0x000000000FFF807F
CONFIG_SOC_GPIO_SUPPORT_FORCE_HOLD=y
CONFIG_SOC_GPIO_SUPPORT_HOLD_SINGLE_IO_IN_DSLP=y
+CONFIG_SOC_RTCIO_PIN_COUNT=8
+CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y
CONFIG_SOC_DEDIC_GPIO_OUT_CHANNELS_NUM=8
CONFIG_SOC_DEDIC_GPIO_IN_CHANNELS_NUM=8
CONFIG_SOC_DEDIC_PERIPH_ALWAYS_ENABLE=y
CONFIG_SOC_PARLIO_RX_UNIT_MAX_DATA_WIDTH=8
CONFIG_SOC_PARLIO_TX_CLK_SUPPORT_GATING=y
CONFIG_SOC_PARLIO_TRANS_BIT_ALIGN=y
-CONFIG_SOC_RTCIO_PIN_COUNT=0
CONFIG_SOC_RSA_MAX_BIT_LEN=3072
CONFIG_SOC_SHA_DMA_MAX_BUFFER_SIZE=3968
CONFIG_SOC_SHA_SUPPORT_DMA=y
CONFIG_SOC_TIMER_GROUP_SUPPORT_RC_FAST=y
CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=2
CONFIG_SOC_TIMER_SUPPORT_ETM=y
+CONFIG_SOC_MWDT_SUPPORT_XTAL=y
CONFIG_SOC_TWAI_CONTROLLER_NUM=y
CONFIG_SOC_TWAI_CLK_SUPPORT_XTAL=y
CONFIG_SOC_TWAI_BRP_MIN=2
CONFIG_SOC_EFUSE_SOFT_DIS_JTAG=y
CONFIG_SOC_EFUSE_DIS_ICACHE=y
CONFIG_SOC_EFUSE_BLOCK9_KEY_PURPOSE_QUIRK=y
+CONFIG_SOC_EFUSE_ECDSA_USE_HARDWARE_K=y
CONFIG_SOC_SECURE_BOOT_V2_RSA=y
CONFIG_SOC_SECURE_BOOT_V2_ECC=y
CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=3
CONFIG_SOC_EXTERNAL_COEX_ADVANCE=y
CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21
CONFIG_SOC_PM_SUPPORT_BT_WAKEUP=y
+CONFIG_SOC_PM_SUPPORT_EXT1_WAKEUP=y
CONFIG_SOC_PM_SUPPORT_CPU_PD=y
CONFIG_SOC_PM_SUPPORT_MODEM_PD=y
CONFIG_SOC_PM_SUPPORT_XTAL32K_PD=y
CONFIG_SOC_PM_MODEM_RETENTION_BY_REGDMA=y
CONFIG_SOC_PM_SUPPORT_DEEPSLEEP_CHECK_STUB_ONLY=y
CONFIG_SOC_PM_RETENTION_HAS_REGDMA_POWER_BUG=y
-CONFIG_SOC_PM_RETENTION_HAS_CLOCK_BUG=y
CONFIG_SOC_CLK_RC_FAST_SUPPORT_CALIBRATION=y
CONFIG_SOC_CLK_XTAL32K_SUPPORTED=y
CONFIG_SOC_CLK_OSC_SLOW_SUPPORTED=y
# CONFIG_ESPTOOLPY_FLASHFREQ_16M is not set
CONFIG_ESPTOOLPY_FLASHFREQ="48m"
# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set
-CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y
-# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set
+# CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set
+CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set
# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set
-CONFIG_ESPTOOLPY_FLASHSIZE="2MB"
+CONFIG_ESPTOOLPY_FLASHSIZE="4MB"
# CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set
CONFIG_ESPTOOLPY_BEFORE_RESET=y
# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set
#
# GPTimer Configuration
#
+CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=y
# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set
# CONFIG_GPTIMER_ISR_IRAM_SAFE is not set
# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set
# RMT Configuration
#
# CONFIG_RMT_ISR_IRAM_SAFE is not set
+# CONFIG_RMT_RECV_FUNC_IN_IRAM is not set
# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set
# CONFIG_RMT_ENABLE_DEBUG_LOG is not set
# end of RMT Configuration
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
+CONFIG_ESP_SLEEP_GPIO_ENABLE_INTERNAL_RESISTORS=y
+# CONFIG_ESP_SLEEP_EVENT_CALLBACKS is not set
# end of Sleep Config
#
# CONFIG_PM_RTOS_IDLE_OPT is not set
CONFIG_PM_SLP_DISABLE_GPIO=y
CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=y
-CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP=y
+# CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP is not set
+# CONFIG_PM_LIGHT_SLEEP_CALLBACKS is not set
# end of Power Management
#
# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set
# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set
# CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set
-CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS=0
+CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS=1
CONFIG_ESP_SYSTEM_SINGLE_CORE_MODE=y
# CONFIG_ESP_SYSTEM_USE_EH_FRAME is not set
# Brownout Detector
#
CONFIG_ESP_BROWNOUT_DET=y
-CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7=y
+# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7 is not set
# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set
# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set
# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set
# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set
-# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set
-CONFIG_ESP_BROWNOUT_DET_LVL=7
+CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2=y
+CONFIG_ESP_BROWNOUT_DET_LVL=2
# end of Brownout Detector
CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y
CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER=y
CONFIG_ESP_WIFI_TX_BUFFER_TYPE=1
CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32
+CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y
+# CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER is not set
+CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0
+CONFIG_ESP_WIFI_RX_MGMT_BUF_NUM_DEF=5
CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y
CONFIG_ESP_WIFI_TX_BA_WIN=6
CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y
CONFIG_ESP_WIFI_SOFTAP_BEACON_MAX_LEN=752
CONFIG_ESP_WIFI_MGMT_SBUF_NUM=32
CONFIG_ESP_WIFI_IRAM_OPT=y
+# CONFIG_ESP_WIFI_EXTRA_IRAM_OPT is not set
CONFIG_ESP_WIFI_RX_IRAM_OPT=y
CONFIG_ESP_WIFI_ENABLE_WPA3_SAE=y
CONFIG_ESP_WIFI_ENABLE_SAE_PK=y
CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM=7
CONFIG_ESP_WIFI_MBEDTLS_CRYPTO=y
CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=y
-# CONFIG_ESP_WIFI_SUITE_B_192 is not set
# CONFIG_ESP_WIFI_11KV_SUPPORT is not set
# CONFIG_ESP_WIFI_MBO_SUPPORT is not set
# CONFIG_ESP_WIFI_DPP_SUPPORT is not set
# CONFIG_ESP_WIFI_DEBUG_PRINT is not set
# CONFIG_ESP_WIFI_TESTING_OPTIONS is not set
+CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=y
# end of Wi-Fi
#
# CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL3 is not set
CONFIG_FREERTOS_SYSTICK_USES_SYSTIMER=y
# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set
-# CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH is not set
+CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y
# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set
CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y
# end of Port
CONFIG_IEEE802154_PENDING_TABLE_SIZE=20
# CONFIG_IEEE802154_MULTI_PAN_ENABLE is not set
# CONFIG_IEEE802154_TIMING_OPTIMIZATION is not set
-CONFIG_IEEE802154_SLEEP_ENABLE=y
# CONFIG_IEEE802154_DEBUG is not set
# end of IEEE 802.15.4
#
CONFIG_LWIP_LOCAL_HOSTNAME="espressif"
# CONFIG_LWIP_NETIF_API is not set
+CONFIG_LWIP_TCPIP_TASK_PRIO=18
# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set
# CONFIG_LWIP_CHECK_THREAD_SAFETY is not set
CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y
# CONFIG_LWIP_L2_TO_L3_COPY is not set
# CONFIG_LWIP_IRAM_OPTIMIZATION is not set
+# CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION is not set
CONFIG_LWIP_TIMERS_ONDEMAND=y
+CONFIG_LWIP_ND6=y
CONFIG_LWIP_MAX_SOCKETS=10
# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set
# CONFIG_LWIP_SO_LINGER is not set
CONFIG_LWIP_TCP_WND_DEFAULT=5744
CONFIG_LWIP_TCP_RECVMBOX_SIZE=6
CONFIG_LWIP_TCP_QUEUE_OOSEQ=y
+CONFIG_LWIP_TCP_OOSEQ_TIMEOUT=6
+CONFIG_LWIP_TCP_OOSEQ_MAX_PBUFS=4
# CONFIG_LWIP_TCP_SACK_OUT is not set
CONFIG_LWIP_TCP_OVERSIZE_MSS=y
# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set
CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y
CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y
CONFIG_MBEDTLS_ECP_NIST_OPTIM=y
+CONFIG_MBEDTLS_ECP_FIXED_POINT_OPTIM=y
# CONFIG_MBEDTLS_POLY1305_C is not set
# CONFIG_MBEDTLS_CHACHA20_C is not set
# CONFIG_MBEDTLS_HKDF_C is not set
# CONFIG_MBEDTLS_THREADING_C is not set
-# CONFIG_MBEDTLS_SECURITY_RISKS is not set
# end of mbedTLS
#
#
CONFIG_OPENTHREAD_ENABLED=y
CONFIG_OPENTHREAD_LOG_LEVEL_DYNAMIC=y
+CONFIG_OPENTHREAD_CONSOLE_TYPE_UART=y
+# CONFIG_OPENTHREAD_CONSOLE_TYPE_USB_SERIAL_JTAG is not set
#
# Thread Operational Dataset
#
CONFIG_OPENTHREAD_NETWORK_NAME="OpenThread-ESP"
+CONFIG_OPENTHREAD_MESH_LOCAL_PREFIX="fd00:db8:a0:0::/64"
CONFIG_OPENTHREAD_NETWORK_CHANNEL=15
CONFIG_OPENTHREAD_NETWORK_PANID=0x1234
CONFIG_OPENTHREAD_NETWORK_EXTPANID="dead00beef00cafe"
# CONFIG_OPENTHREAD_COMMISSIONER is not set
# CONFIG_OPENTHREAD_JOINER is not set
CONFIG_OPENTHREAD_SRP_CLIENT=y
+CONFIG_OPENTHREAD_SRP_CLIENT_MAX_SERVICES=5
CONFIG_OPENTHREAD_DNS_CLIENT=y
# CONFIG_OPENTHREAD_BORDER_ROUTER is not set
CONFIG_OPENTHREAD_NUM_MESSAGE_BUFFERS=65
+CONFIG_OPENTHREAD_SPINEL_RX_FRAME_BUFFER_SIZE=1024
+CONFIG_OPENTHREAD_MLE_MAX_CHILDREN=10
+CONFIG_OPENTHREAD_TMF_ADDR_CACHE_ENTRIES=20
CONFIG_OPENTHREAD_DNS64_CLIENT=y
CONFIG_OPENTHREAD_DNS_SERVER_ADDR="10.246.246.246"
CONFIG_OPENTHREAD_UART_BUFFER_SIZE=256
# CONFIG_OPENTHREAD_LINK_METRICS is not set
# CONFIG_OPENTHREAD_MACFILTER_ENABLE is not set
# CONFIG_OPENTHREAD_CSL_ENABLE is not set
+CONFIG_OPENTHREAD_XTAL_ACCURACY=130
# CONFIG_OPENTHREAD_DUA_ENABLE is not set
+# CONFIG_OPENTHREAD_TIME_SYNC is not set
# end of OpenThread
#
#
# MMU Config
#
-CONFIG_MMU_PAGE_SIZE_32KB=y
-CONFIG_MMU_PAGE_MODE="32KB"
-CONFIG_MMU_PAGE_SIZE=0x8000
+CONFIG_MMU_PAGE_SIZE_64KB=y
+CONFIG_MMU_PAGE_MODE="64KB"
+CONFIG_MMU_PAGE_SIZE=0x10000
# end of MMU Config
#
# AQI Program Configuration
#
CONFIG_TEMP_ENABLED=y
+CONFIG_TEMP_PIN=2
+CONFIG_EEPY_DEVICE=y
# CONFIG_LIGHT_SLEEP_ENABLED is not set
+# CONFIG_UART_ENABLED is not set
# CONFIG_ZIG_ENABLED is not set
# CONFIG_WIFI_ENABLED is not set
CONFIG_OT_ENABLED=y
-CONFIG_LED_ENABLED=y
+# CONFIG_LED_ENABLED is not set
+CONFIG_MOTION_FIRST_ENABLED=y
+CONFIG_MOTION_FIRST_PIN=13
+CONFIG_MOTION_SECOND_ENABLED=y
+CONFIG_MOTION_SECOND_PIN=22
# CONFIG_INDICATOR_ENABLED is not set
CONFIG_BROKER_URL="mqtts://esp32:sensorauth@rabbitmq"
-CONFIG_LOCATION="Indoor AQI Monitor"
-CONFIG_GPIO_ERASE_PIN=25
+CONFIG_LOCATION="Downstairs"
+CONFIG_GPIO_ERASE_PIN=5
# end of AQI Program Configuration
#
CONFIG_MDNS_MAX_INTERFACES=3
CONFIG_MDNS_MAX_SERVICES=10
CONFIG_MDNS_TASK_PRIORITY=1
+CONFIG_MDNS_ACTION_QUEUE_LEN=16
CONFIG_MDNS_TASK_STACK_SIZE=4096
# CONFIG_MDNS_TASK_AFFINITY_NO_AFFINITY is not set
CONFIG_MDNS_TASK_AFFINITY_CPU0=y
CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y
# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set
CONFIG_BROWNOUT_DET=y
-CONFIG_BROWNOUT_DET_LVL_SEL_7=y
+# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set
# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set
# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set
# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set
# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set
-CONFIG_BROWNOUT_DET_LVL=7
+CONFIG_BROWNOUT_DET_LVL_SEL_2=y
+CONFIG_BROWNOUT_DET_LVL=2
CONFIG_IPC_TASK_STACK_SIZE=1024
CONFIG_TIMER_TASK_STACK_SIZE=3584
CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10
CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA=y
CONFIG_WPA_MBEDTLS_CRYPTO=y
CONFIG_WPA_MBEDTLS_TLS_CLIENT=y
-# CONFIG_WPA_SUITE_B_192 is not set
# CONFIG_WPA_11KV_SUPPORT is not set
# CONFIG_WPA_MBO_SUPPORT is not set
# CONFIG_WPA_DPP_SUPPORT is not set