From 6fd0f3859525c328a9158da6a0a26822433ba99c Mon Sep 17 00:00:00 2001 From: iranl Date: Fri, 27 Dec 2024 22:41:49 +0100 Subject: [PATCH] Reboot on BLE stuck disconnecting --- lib/nuki_ble | 2 +- src/NukiOpenerWrapper.cpp | 5 +++++ src/NukiWrapper.cpp | 5 +++++ src/RestartReason.h | 3 +++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/nuki_ble b/lib/nuki_ble index 51ad6d8..55a0447 160000 --- a/lib/nuki_ble +++ b/lib/nuki_ble @@ -1 +1 @@ -Subproject commit 51ad6d8cde7937c55d8813f067701b42d6beacbe +Subproject commit 55a04473bda8667ff9ebc1667ab27a7966374912 diff --git a/src/NukiOpenerWrapper.cpp b/src/NukiOpenerWrapper.cpp index 3222a44..edcbfe6 100644 --- a/src/NukiOpenerWrapper.cpp +++ b/src/NukiOpenerWrapper.cpp @@ -4041,6 +4041,11 @@ void NukiOpenerWrapper::notify(Nuki::EventType eventType) { _preferences->putInt(preference_lock_pin_status, 2); } + else if(eventType == Nuki::EventType::BLE_ERROR_ON_DISCONNECT) + { + Log->println("Error in disconnecting BLE client, rebooting"); + restartEsp(RestartReason::BLEError); + } } void NukiOpenerWrapper::readConfig() diff --git a/src/NukiWrapper.cpp b/src/NukiWrapper.cpp index cb7a578..3556a45 100644 --- a/src/NukiWrapper.cpp +++ b/src/NukiWrapper.cpp @@ -4071,6 +4071,11 @@ void NukiWrapper::notify(Nuki::EventType eventType) { _preferences->putInt(preference_lock_pin_status, 2); } + else if(eventType == Nuki::EventType::BLE_ERROR_ON_DISCONNECT) + { + Log->println("Error in disconnecting BLE client, rebooting"); + restartEsp(RestartReason::BLEError); + } } } } diff --git a/src/RestartReason.h b/src/RestartReason.h index d92640b..f992615 100644 --- a/src/RestartReason.h +++ b/src/RestartReason.h @@ -4,6 +4,7 @@ enum class RestartReason { RequestedViaMqtt, RequestedViaWebServer, + BLEError, BLEBeaconWatchdog, RestartOnDisconnectWatchdog, RestartIntervalWatchdog, @@ -73,6 +74,8 @@ inline static String getRestartReason() return "RequestedViaWebServer"; case RestartReason::ReconfigureWebServer: return "ReconfigureWebServer"; + case RestartReason::BLEError: + return "BLEError"; case RestartReason::BLEBeaconWatchdog: return "BLEBeaconWatchdog"; case RestartReason::RestartOnDisconnectWatchdog: