From f2a03ae2956e2ed3864749ed2a3c17c2f5c34a57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Proch=C3=A1zka?= <90197375+P-R-O-C-H-Y@users.noreply.github.com> Date: Wed, 21 May 2025 10:31:55 +0200 Subject: [PATCH 1/4] feat(zigbee): Check the type of leave signal --- libraries/Zigbee/src/ZigbeeCore.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/libraries/Zigbee/src/ZigbeeCore.cpp b/libraries/Zigbee/src/ZigbeeCore.cpp index b93542159a6..bd6a62617d0 100644 --- a/libraries/Zigbee/src/ZigbeeCore.cpp +++ b/libraries/Zigbee/src/ZigbeeCore.cpp @@ -234,6 +234,7 @@ void esp_zb_app_signal_handler(esp_zb_app_signal_t *signal_struct) { esp_zb_app_signal_type_t sig_type = (esp_zb_app_signal_type_t)*p_sg_p; //coordinator variables esp_zb_zdo_signal_device_annce_params_t *dev_annce_params = NULL; + esp_zb_zdo_signal_leave_params_t *leave_params = NULL; //main switch switch (sig_type) { @@ -371,9 +372,18 @@ void esp_zb_app_signal_handler(esp_zb_app_signal_t *signal_struct) { } break; case ESP_ZB_ZDO_SIGNAL_LEAVE: // End Device + Router - // Device was removed from the network, factory reset the device + // Recieved signal to leave the network if ((zigbee_role_t)Zigbee.getRole() != ZIGBEE_COORDINATOR) { - Zigbee.factoryReset(true); + leave_params = (esp_zb_zdo_signal_leave_params_t *)esp_zb_app_signal_get_params(p_sg_p); + log_v("Signal to leave the network, leave type: %d", leave_params->leave_type); + if (leave_params->leave_type == ESP_ZB_NWK_LEAVE_TYPE_RESET) { // Leave without rejoin -> Factory reset + log_i("Leave without rejoin, factory reset the device"); + Zigbee.factoryReset(true); + } + else { // Leave with rejoin -> Rejoin the network, only rebooot the device + log_i("Leave with rejoin, only rebooot the device"); + ESP.restart(); + } } break; default: log_v("ZDO signal: %s (0x%x), status: %s", esp_zb_zdo_signal_to_string(sig_type), sig_type, esp_err_to_name(err_status)); break; From a5b5bcfc80312b47464a19f6f8eed47f0c66852d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Proch=C3=A1zka?= <90197375+P-R-O-C-H-Y@users.noreply.github.com> Date: Wed, 21 May 2025 10:40:42 +0200 Subject: [PATCH 2/4] Update libraries/Zigbee/src/ZigbeeCore.cpp Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- libraries/Zigbee/src/ZigbeeCore.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Zigbee/src/ZigbeeCore.cpp b/libraries/Zigbee/src/ZigbeeCore.cpp index bd6a62617d0..9a4f8a38575 100644 --- a/libraries/Zigbee/src/ZigbeeCore.cpp +++ b/libraries/Zigbee/src/ZigbeeCore.cpp @@ -372,7 +372,7 @@ void esp_zb_app_signal_handler(esp_zb_app_signal_t *signal_struct) { } break; case ESP_ZB_ZDO_SIGNAL_LEAVE: // End Device + Router - // Recieved signal to leave the network + // Received signal to leave the network if ((zigbee_role_t)Zigbee.getRole() != ZIGBEE_COORDINATOR) { leave_params = (esp_zb_zdo_signal_leave_params_t *)esp_zb_app_signal_get_params(p_sg_p); log_v("Signal to leave the network, leave type: %d", leave_params->leave_type); From af9b6423997a6e8760cfda61345cccd8ad6b340c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Proch=C3=A1zka?= <90197375+P-R-O-C-H-Y@users.noreply.github.com> Date: Wed, 21 May 2025 10:41:03 +0200 Subject: [PATCH 3/4] Update libraries/Zigbee/src/ZigbeeCore.cpp Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- libraries/Zigbee/src/ZigbeeCore.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/Zigbee/src/ZigbeeCore.cpp b/libraries/Zigbee/src/ZigbeeCore.cpp index 9a4f8a38575..f8f43c81af4 100644 --- a/libraries/Zigbee/src/ZigbeeCore.cpp +++ b/libraries/Zigbee/src/ZigbeeCore.cpp @@ -380,8 +380,8 @@ void esp_zb_app_signal_handler(esp_zb_app_signal_t *signal_struct) { log_i("Leave without rejoin, factory reset the device"); Zigbee.factoryReset(true); } - else { // Leave with rejoin -> Rejoin the network, only rebooot the device - log_i("Leave with rejoin, only rebooot the device"); + else { // Leave with rejoin -> Rejoin the network, only reboot the device + log_i("Leave with rejoin, only reboot the device"); ESP.restart(); } } From b000abb41b3a0124d13baef2b2e33a625182a70c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci-lite[bot]" <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Date: Fri, 23 May 2025 13:41:03 +0000 Subject: [PATCH 4/4] ci(pre-commit): Apply automatic fixes --- libraries/Zigbee/src/ZigbeeCore.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/libraries/Zigbee/src/ZigbeeCore.cpp b/libraries/Zigbee/src/ZigbeeCore.cpp index f8f43c81af4..3c6f708d2ce 100644 --- a/libraries/Zigbee/src/ZigbeeCore.cpp +++ b/libraries/Zigbee/src/ZigbeeCore.cpp @@ -376,11 +376,10 @@ void esp_zb_app_signal_handler(esp_zb_app_signal_t *signal_struct) { if ((zigbee_role_t)Zigbee.getRole() != ZIGBEE_COORDINATOR) { leave_params = (esp_zb_zdo_signal_leave_params_t *)esp_zb_app_signal_get_params(p_sg_p); log_v("Signal to leave the network, leave type: %d", leave_params->leave_type); - if (leave_params->leave_type == ESP_ZB_NWK_LEAVE_TYPE_RESET) { // Leave without rejoin -> Factory reset + if (leave_params->leave_type == ESP_ZB_NWK_LEAVE_TYPE_RESET) { // Leave without rejoin -> Factory reset log_i("Leave without rejoin, factory reset the device"); Zigbee.factoryReset(true); - } - else { // Leave with rejoin -> Rejoin the network, only reboot the device + } else { // Leave with rejoin -> Rejoin the network, only reboot the device log_i("Leave with rejoin, only reboot the device"); ESP.restart(); }