TWDT
This commit is contained in:
@@ -25,7 +25,10 @@ HomeAssistantDiscovery::HomeAssistantDiscovery(NetworkDevice* device, Preference
|
||||
char uidString[20];
|
||||
itoa(_preferences->getUInt(preference_device_id_lock, 0), uidString, 10);
|
||||
removeHASSConfig(uidString);
|
||||
delay(3000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(3000 / portTICK_PERIOD_MS);
|
||||
}
|
||||
else if(savedDevId != curDevId)
|
||||
{
|
||||
@@ -38,10 +41,16 @@ HomeAssistantDiscovery::HomeAssistantDiscovery(NetworkDevice* device, Preference
|
||||
char uidString[20];
|
||||
itoa(_preferences->getUInt(preference_device_id_lock, 0), uidString, 10);
|
||||
removeHASSConfig(uidString);
|
||||
delay(3000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(3000 / portTICK_PERIOD_MS);
|
||||
itoa(savedDevId, uidString, 10);
|
||||
removeHASSConfig(uidString);
|
||||
delay(3000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(3000 / portTICK_PERIOD_MS);
|
||||
}
|
||||
|
||||
sprintf(_nukiHubUidString, "%" PRIu64, curDevId);
|
||||
@@ -93,7 +102,10 @@ void HomeAssistantDiscovery::setupHASS(int type, uint32_t nukiId, char* nukiName
|
||||
void HomeAssistantDiscovery::disableHASS()
|
||||
{
|
||||
removeHASSConfig(_nukiHubUidString);
|
||||
delay(3000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(3000 / portTICK_PERIOD_MS);
|
||||
|
||||
char uidString[20];
|
||||
|
||||
@@ -101,13 +113,19 @@ void HomeAssistantDiscovery::disableHASS()
|
||||
{
|
||||
itoa(_preferences->getUInt(preference_nuki_id_lock, 0), uidString, 16);
|
||||
removeHASSConfig(uidString);
|
||||
delay(3000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(3000 / portTICK_PERIOD_MS);
|
||||
}
|
||||
if(_preferences->getUInt(preference_nuki_id_opener, 0) != 0)
|
||||
{
|
||||
itoa(_preferences->getUInt(preference_nuki_id_opener, 0), uidString, 16);
|
||||
removeHASSConfig(uidString);
|
||||
delay(3000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(3000 / portTICK_PERIOD_MS);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -470,7 +470,10 @@ bool NukiNetwork::update()
|
||||
bool success = reconnect();
|
||||
if(!success)
|
||||
{
|
||||
delay(2000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(2000 / portTICK_PERIOD_MS);
|
||||
_mqttConnectCounter++;
|
||||
return false;
|
||||
}
|
||||
@@ -479,14 +482,20 @@ bool NukiNetwork::update()
|
||||
if(forceEnableWebServer && !_webEnabled)
|
||||
{
|
||||
forceEnableWebServer = false;
|
||||
delay(200);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(200 / portTICK_PERIOD_MS);
|
||||
setRestartServices(false);
|
||||
}
|
||||
else if(!_webEnabled)
|
||||
{
|
||||
forceEnableWebServer = false;
|
||||
}
|
||||
delay(2000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(2000 / portTICK_PERIOD_MS);
|
||||
}
|
||||
|
||||
if(!_device->isConnected() || !_device->mqttConnected() )
|
||||
@@ -498,10 +507,16 @@ bool NukiNetwork::update()
|
||||
forceEnableWebServer = true;
|
||||
}
|
||||
Log->println("Network timeout has been reached, restarting ...");
|
||||
delay(200);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(200 / portTICK_PERIOD_MS);
|
||||
restartEsp(RestartReason::NetworkTimeoutWatchdog);
|
||||
}
|
||||
delay(2000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(2000 / portTICK_PERIOD_MS);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -729,7 +744,10 @@ bool NukiNetwork::reconnect(bool force)
|
||||
|
||||
while(!_connectReplyReceived && espMillis() < timeout)
|
||||
{
|
||||
delay(50);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(50 / portTICK_PERIOD_MS);
|
||||
_device->update();
|
||||
if(_keepAliveCallback != nullptr)
|
||||
{
|
||||
@@ -742,7 +760,10 @@ bool NukiNetwork::reconnect(bool force)
|
||||
Log->println("MQTT connected");
|
||||
_mqttConnectedTs = millis();
|
||||
_mqttConnectionState = 1;
|
||||
delay(100);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(100 / portTICK_PERIOD_MS);
|
||||
_device->mqttOnMessage(onMqttDataReceivedCallback);
|
||||
|
||||
if(_firstConnect)
|
||||
@@ -987,7 +1008,10 @@ void NukiNetwork::onMqttDataReceived(const char* topic, byte* payload, const uns
|
||||
{
|
||||
Log->println("Restart requested via MQTT.");
|
||||
clearWifiFallback();
|
||||
delay(200);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(200 / portTICK_PERIOD_MS);
|
||||
restartEsp(RestartReason::RequestedViaMqtt);
|
||||
}
|
||||
else if(comparePrefixedPath(topic, mqtt_topic_update) && strcmp(data, "1") == 0 && _preferences->getBool(preference_update_from_mqtt, false) && !mqttRecentlyConnected())
|
||||
@@ -1040,7 +1064,10 @@ void NukiNetwork::onMqttDataReceived(const char* topic, byte* payload, const uns
|
||||
_preferences->putString(preference_ota_updater_url, GITHUB_LATEST_UPDATER_BINARY_URL);
|
||||
_preferences->putString(preference_ota_main_url, GITHUB_LATEST_RELEASE_BINARY_URL);
|
||||
Log->println("Updating to latest release version.");
|
||||
delay(200);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(200 / portTICK_PERIOD_MS);
|
||||
restartEsp(RestartReason::OTAReboot);
|
||||
}
|
||||
}
|
||||
@@ -1055,7 +1082,10 @@ void NukiNetwork::onMqttDataReceived(const char* topic, byte* payload, const uns
|
||||
_preferences->putString(preference_ota_updater_url, GITHUB_BETA_UPDATER_BINARY_URL);
|
||||
_preferences->putString(preference_ota_main_url, GITHUB_BETA_RELEASE_BINARY_URL);
|
||||
Log->println("Updating to latest beta version.");
|
||||
delay(200);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(200 / portTICK_PERIOD_MS);
|
||||
restartEsp(RestartReason::OTAReboot);
|
||||
}
|
||||
}
|
||||
@@ -1070,7 +1100,10 @@ void NukiNetwork::onMqttDataReceived(const char* topic, byte* payload, const uns
|
||||
_preferences->putString(preference_ota_updater_url, GITHUB_MASTER_UPDATER_BINARY_URL);
|
||||
_preferences->putString(preference_ota_main_url, GITHUB_MASTER_RELEASE_BINARY_URL);
|
||||
Log->println("Updating to latest developmemt version.");
|
||||
delay(200);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(200 / portTICK_PERIOD_MS);
|
||||
restartEsp(RestartReason::OTAReboot);
|
||||
}
|
||||
}
|
||||
@@ -1085,7 +1118,10 @@ void NukiNetwork::onMqttDataReceived(const char* topic, byte* payload, const uns
|
||||
_preferences->putString(preference_ota_updater_url, GITHUB_LATEST_UPDATER_BINARY_URL);
|
||||
_preferences->putString(preference_ota_main_url, GITHUB_LATEST_RELEASE_BINARY_URL);
|
||||
Log->println("Updating to latest release version.");
|
||||
delay(200);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(200 / portTICK_PERIOD_MS);
|
||||
restartEsp(RestartReason::OTAReboot);
|
||||
}
|
||||
}
|
||||
@@ -1122,7 +1158,10 @@ void NukiNetwork::onMqttDataReceived(const char* topic, byte* payload, const uns
|
||||
_preferences->putBool(preference_webserver_enabled, false);
|
||||
}
|
||||
clearWifiFallback();
|
||||
delay(200);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(200 / portTICK_PERIOD_MS);
|
||||
setRestartServices(false);
|
||||
}
|
||||
else if(comparePrefixedPath(topic, mqtt_topic_nuki_hub_config_action) && !mqttRecentlyConnected())
|
||||
@@ -1173,10 +1212,10 @@ void NukiNetwork::onMqttDataReceived(const char* topic, byte* payload, const uns
|
||||
while (duoResult == 2)
|
||||
{
|
||||
duoResult = _importExport->checkDuoApprove();
|
||||
delay(2000);
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32C5)
|
||||
esp_task_wdt_reset();
|
||||
#endif
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(2000 / portTICK_PERIOD_MS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1293,7 +1332,10 @@ void NukiNetwork::onMqttDataReceived(const char* topic, byte* payload, const uns
|
||||
serializeJson(json, _buffer, _bufferSize);
|
||||
publishString(_maintenancePathPrefix, mqtt_topic_nuki_hub_config_json, _buffer, false);
|
||||
publishString(_maintenancePathPrefix, mqtt_topic_nuki_hub_config_action, "--", true);
|
||||
delay(200);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(200 / portTICK_PERIOD_MS);
|
||||
restartEsp(RestartReason::ConfigurationUpdated);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "RestartReason.h"
|
||||
#include <ArduinoJson.h>
|
||||
#include <ctype.h>
|
||||
#include "hal/wdt_hal.h"
|
||||
|
||||
extern bool forceEnableWebServer;
|
||||
extern const uint8_t x509_crt_imported_bundle_bin_start[] asm("_binary_x509_crt_bundle_start");
|
||||
@@ -160,6 +161,11 @@ void NukiNetworkLock::initialize()
|
||||
|
||||
bool NukiNetworkLock::update()
|
||||
{
|
||||
wdt_hal_context_t rtc_wdt_ctx = RWDT_HAL_CONTEXT_DEFAULT();
|
||||
wdt_hal_write_protect_disable(&rtc_wdt_ctx);
|
||||
wdt_hal_feed(&rtc_wdt_ctx);
|
||||
wdt_hal_write_protect_enable(&rtc_wdt_ctx);
|
||||
|
||||
bool ret = false;
|
||||
|
||||
if(_nukiOfficial->hasOffStateToPublish())
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "Logger.h"
|
||||
#include "Config.h"
|
||||
#include <ArduinoJson.h>
|
||||
#include "hal/wdt_hal.h"
|
||||
|
||||
NukiNetworkOpener::NukiNetworkOpener(NukiNetwork* network, Preferences* preferences, char* buffer, size_t bufferSize)
|
||||
: _preferences(preferences),
|
||||
@@ -131,6 +132,11 @@ void NukiNetworkOpener::initialize()
|
||||
|
||||
void NukiNetworkOpener::update()
|
||||
{
|
||||
wdt_hal_context_t rtc_wdt_ctx = RWDT_HAL_CONTEXT_DEFAULT();
|
||||
wdt_hal_write_protect_disable(&rtc_wdt_ctx);
|
||||
wdt_hal_feed(&rtc_wdt_ctx);
|
||||
wdt_hal_write_protect_enable(&rtc_wdt_ctx);
|
||||
|
||||
if(_resetRingStateTs != 0 && espMillis() >= _resetRingStateTs)
|
||||
{
|
||||
_resetRingStateTs = 0;
|
||||
|
||||
@@ -247,7 +247,10 @@ void NukiOpenerWrapper::update()
|
||||
}
|
||||
else
|
||||
{
|
||||
delay(200);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(200 / portTICK_PERIOD_MS);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -265,7 +268,10 @@ void NukiOpenerWrapper::update()
|
||||
Log->print("No BLE beacon received from the opener for ");
|
||||
Log->print((ts - lastReceivedBeaconTs) / 1000);
|
||||
Log->println(" seconds, signalling to restart BLE controller.");
|
||||
delay(200);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(200 / portTICK_PERIOD_MS);
|
||||
_restartController = 2;
|
||||
}
|
||||
|
||||
@@ -298,7 +304,10 @@ void NukiOpenerWrapper::update()
|
||||
|
||||
_network->publishRetry(std::to_string(retryCount + 1));
|
||||
|
||||
delay(_retryDelay);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(_retryDelay / portTICK_PERIOD_MS);
|
||||
|
||||
++retryCount;
|
||||
}
|
||||
@@ -594,7 +603,10 @@ void NukiOpenerWrapper::updateBatteryState()
|
||||
{
|
||||
Log->print("Querying opener battery state: ");
|
||||
result = _nukiOpener.requestBatteryReport(&_batteryReport);
|
||||
delay(250);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(250 / portTICK_PERIOD_MS);
|
||||
if(result != Nuki::CmdResult::Success)
|
||||
{
|
||||
++retryCount;
|
||||
@@ -766,7 +778,10 @@ void NukiOpenerWrapper::updateAuthData(bool retrieved)
|
||||
if(result == Nuki::CmdResult::Success)
|
||||
{
|
||||
_waitAuthLogUpdateTs = espMillis() + 5000;
|
||||
delay(100);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(100 / portTICK_PERIOD_MS);
|
||||
|
||||
std::list<NukiOpener::LogEntry> log;
|
||||
_nukiOpener.getLogEntries(&log);
|
||||
@@ -993,7 +1008,10 @@ void NukiOpenerWrapper::updateAuth(bool retrieved)
|
||||
{
|
||||
Log->print("Querying opener authorization: ");
|
||||
result = _nukiOpener.retrieveAuthorizationEntries(0, _preferences->getInt(preference_auth_max_entries, MAX_AUTH));
|
||||
delay(250);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(250 / portTICK_PERIOD_MS);
|
||||
if(result != Nuki::CmdResult::Success)
|
||||
{
|
||||
++retryCount;
|
||||
@@ -3032,7 +3050,10 @@ void NukiOpenerWrapper::onKeypadJsonCommandReceived(const char *value)
|
||||
|
||||
if(resultKp == Nuki::CmdResult::Success)
|
||||
{
|
||||
delay(5000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(5000 / portTICK_PERIOD_MS);
|
||||
std::list<NukiOpener::KeypadEntry> entries;
|
||||
_nukiOpener.getKeypadEntries(&entries);
|
||||
|
||||
@@ -3398,7 +3419,10 @@ void NukiOpenerWrapper::onTimeControlCommandReceived(const char *value)
|
||||
|
||||
if(resultTc == Nuki::CmdResult::Success)
|
||||
{
|
||||
delay(5000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(5000 / portTICK_PERIOD_MS);
|
||||
std::list<NukiOpener::TimeControlEntry> timeControlEntries;
|
||||
_nukiOpener.getTimeControlEntries(&timeControlEntries);
|
||||
|
||||
@@ -3854,7 +3878,10 @@ void NukiOpenerWrapper::onAuthCommandReceived(const char *value)
|
||||
|
||||
if(resultAuth == Nuki::CmdResult::Success)
|
||||
{
|
||||
delay(5000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(5000 / portTICK_PERIOD_MS);
|
||||
std::list<NukiOpener::AuthorizationEntry> entries;
|
||||
_nukiOpener.getAuthorizationEntries(&entries);
|
||||
|
||||
|
||||
@@ -263,7 +263,10 @@ void NukiWrapper::update(bool reboot)
|
||||
}
|
||||
else
|
||||
{
|
||||
delay(200);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(200 / portTICK_PERIOD_MS);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -281,7 +284,10 @@ void NukiWrapper::update(bool reboot)
|
||||
Log->print("No BLE beacon received from the lock for ");
|
||||
Log->print((ts - lastReceivedBeaconTs) / 1000);
|
||||
Log->println(" seconds, signalling to restart BLE controller.");
|
||||
delay(200);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(200 / portTICK_PERIOD_MS);
|
||||
_restartController = 2;
|
||||
}
|
||||
|
||||
@@ -318,7 +324,10 @@ void NukiWrapper::update(bool reboot)
|
||||
|
||||
_network->publishRetry(std::to_string(retryCount + 1));
|
||||
|
||||
delay(_retryDelay);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(_retryDelay / portTICK_PERIOD_MS);
|
||||
|
||||
++retryCount;
|
||||
}
|
||||
@@ -801,8 +810,10 @@ void NukiWrapper::updateDebug()
|
||||
Log->println(result);
|
||||
count = 0;
|
||||
while (count < 5) {
|
||||
delay(1000);
|
||||
esp_task_wdt_reset();
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
count++;
|
||||
}
|
||||
|
||||
@@ -821,8 +832,10 @@ void NukiWrapper::updateDebug()
|
||||
|
||||
count = 0;
|
||||
while (count < 15) {
|
||||
delay(1000);
|
||||
esp_task_wdt_reset();
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
count++;
|
||||
}
|
||||
|
||||
@@ -841,8 +854,10 @@ void NukiWrapper::updateDebug()
|
||||
|
||||
count = 0;
|
||||
while (count < 20) {
|
||||
delay(1000);
|
||||
esp_task_wdt_reset();
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
count++;
|
||||
}
|
||||
|
||||
@@ -921,7 +936,10 @@ void NukiWrapper::updateAuthData(bool retrieved)
|
||||
if(result == Nuki::CmdResult::Success)
|
||||
{
|
||||
_waitAuthLogUpdateTs = espMillis() + 5000;
|
||||
delay(100);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(100 / portTICK_PERIOD_MS);
|
||||
|
||||
std::list<NukiLock::LogEntry> log;
|
||||
_nukiLock.getLogEntries(&log);
|
||||
@@ -1146,7 +1164,10 @@ void NukiWrapper::updateAuth(bool retrieved)
|
||||
{
|
||||
Log->print("Querying lock authorization: ");
|
||||
result = _nukiLock.retrieveAuthorizationEntries(0, _preferences->getInt(preference_auth_max_entries, MAX_AUTH));
|
||||
delay(250);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(250 / portTICK_PERIOD_MS);
|
||||
if(result != Nuki::CmdResult::Success)
|
||||
{
|
||||
++retryCount;
|
||||
@@ -3279,7 +3300,10 @@ void NukiWrapper::onKeypadJsonCommandReceived(const char *value)
|
||||
|
||||
if(resultKp == Nuki::CmdResult::Success)
|
||||
{
|
||||
delay(5000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(5000 / portTICK_PERIOD_MS);
|
||||
std::list<NukiLock::KeypadEntry> entries;
|
||||
_nukiLock.getKeypadEntries(&entries);
|
||||
|
||||
@@ -3646,7 +3670,10 @@ void NukiWrapper::onTimeControlCommandReceived(const char *value)
|
||||
|
||||
if(resultTc == Nuki::CmdResult::Success)
|
||||
{
|
||||
delay(5000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(5000 / portTICK_PERIOD_MS);
|
||||
std::list<NukiLock::TimeControlEntry> timeControlEntries;
|
||||
_nukiLock.getTimeControlEntries(&timeControlEntries);
|
||||
|
||||
@@ -3862,7 +3889,10 @@ void NukiWrapper::onAuthCommandReceived(const char *value)
|
||||
if(idExists)
|
||||
{
|
||||
result = _nukiLock.deleteAuthorizationEntry(authId);
|
||||
delay(250);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(250 / portTICK_PERIOD_MS);
|
||||
Log->print("Delete authorization: ");
|
||||
Log->println((int)result);
|
||||
}
|
||||
@@ -4082,7 +4112,10 @@ void NukiWrapper::onAuthCommandReceived(const char *value)
|
||||
}
|
||||
|
||||
result = _nukiLock.addAuthorizationEntry(entry);
|
||||
delay(250);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(250 / portTICK_PERIOD_MS);
|
||||
Log->print("Add authorization: ");
|
||||
Log->println((int)result);
|
||||
}
|
||||
@@ -4105,7 +4138,10 @@ void NukiWrapper::onAuthCommandReceived(const char *value)
|
||||
|
||||
if(resultAuth == Nuki::CmdResult::Success)
|
||||
{
|
||||
delay(5000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(5000 / portTICK_PERIOD_MS);
|
||||
std::list<NukiLock::AuthorizationEntry> entries;
|
||||
_nukiLock.getAuthorizationEntries(&entries);
|
||||
|
||||
@@ -4248,7 +4284,10 @@ void NukiWrapper::onAuthCommandReceived(const char *value)
|
||||
}
|
||||
|
||||
result = _nukiLock.updateAuthorizationEntry(entry);
|
||||
delay(250);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(250 / portTICK_PERIOD_MS);
|
||||
Log->print("Update authorization: ");
|
||||
Log->println((int)result);
|
||||
}
|
||||
@@ -4360,7 +4399,10 @@ void NukiWrapper::readConfig()
|
||||
{
|
||||
++retryCount;
|
||||
Log->println("Failed to retrieve lock config, retrying in 1s");
|
||||
delay(1000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -4388,7 +4430,10 @@ void NukiWrapper::readAdvancedConfig()
|
||||
{
|
||||
++retryCount;
|
||||
Log->println("Failed to retrieve lock advanced config, retrying in 1s");
|
||||
delay(1000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "SerialReader.h"
|
||||
#include "RestartReason.h"
|
||||
#include "EspMillis.h"
|
||||
#include "hal/wdt_hal.h"
|
||||
|
||||
SerialReader::SerialReader(ImportExport *importExport, NukiNetwork* network)
|
||||
: _importExport(importExport),
|
||||
@@ -11,6 +12,11 @@ SerialReader::SerialReader(ImportExport *importExport, NukiNetwork* network)
|
||||
|
||||
void SerialReader::update()
|
||||
{
|
||||
wdt_hal_context_t rtc_wdt_ctx = RWDT_HAL_CONTEXT_DEFAULT();
|
||||
wdt_hal_write_protect_disable(&rtc_wdt_ctx);
|
||||
wdt_hal_feed(&rtc_wdt_ctx);
|
||||
wdt_hal_write_protect_enable(&rtc_wdt_ctx);
|
||||
|
||||
if(Serial.available())
|
||||
{
|
||||
String line = Serial.readStringUntil('\n');
|
||||
|
||||
@@ -1512,7 +1512,10 @@ bool WebCfgServer::processWiFi(PsychicRequest *request, PsychicResponse* resp, S
|
||||
int loop = 0;
|
||||
while(!_network->isConnected() && loop < 150)
|
||||
{
|
||||
delay(100);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(100 / portTICK_PERIOD_MS);
|
||||
loop++;
|
||||
}
|
||||
|
||||
@@ -1803,7 +1806,7 @@ void WebCfgServer::waitAndProcess(const bool blocking, const uint32_t duration)
|
||||
}
|
||||
else
|
||||
{
|
||||
vTaskDelay( 50 / portTICK_PERIOD_MS);
|
||||
vTaskDelay(50 / portTICK_PERIOD_MS);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
106
src/main.cpp
106
src/main.cpp
@@ -30,6 +30,7 @@ bool nuki_hub_https_server_enabled = false;
|
||||
#include "NukiNetworkLock.h"
|
||||
#include "NukiOpenerWrapper.h"
|
||||
#include "Gpio.h"
|
||||
#include "Gpio.h"
|
||||
#include "CharBuffer.h"
|
||||
#include "NukiDeviceId.h"
|
||||
#include "WebCfgServer.h"
|
||||
@@ -456,7 +457,10 @@ void restartServices(bool reconnect)
|
||||
Log->println("Deinit BLE device done");
|
||||
}
|
||||
|
||||
delay(2000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(2000 / portTICK_PERIOD_MS);
|
||||
|
||||
if(lockEnabled || openerEnabled)
|
||||
{
|
||||
@@ -498,6 +502,11 @@ void restartServices(bool reconnect)
|
||||
Log->println("Restarting Nuki opener done");
|
||||
}
|
||||
|
||||
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(2000 / portTICK_PERIOD_MS);
|
||||
bleDone = true;
|
||||
|
||||
if(webStarted || webSSLStarted)
|
||||
@@ -545,6 +554,10 @@ void networkTask(void *pvParameters)
|
||||
}
|
||||
#endif
|
||||
network->update();
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(50 / portTICK_PERIOD_MS);
|
||||
bool connected = network->isConnected();
|
||||
|
||||
if(connected && reroute)
|
||||
@@ -588,11 +601,19 @@ void networkTask(void *pvParameters)
|
||||
if(connected && lockStarted)
|
||||
{
|
||||
rebootLock = networkLock->update();
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(50 / portTICK_PERIOD_MS);
|
||||
}
|
||||
|
||||
if(connected && openerStarted)
|
||||
{
|
||||
networkOpener->update();
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(50 / portTICK_PERIOD_MS);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -614,26 +635,36 @@ void networkTask(void *pvParameters)
|
||||
|
||||
restartEsp(RestartReason::RestartTimer);
|
||||
}
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32C5)
|
||||
esp_task_wdt_reset();
|
||||
#endif
|
||||
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(50 / portTICK_PERIOD_MS);
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef NUKI_HUB_UPDATER
|
||||
void nukiTask(void *pvParameters)
|
||||
{
|
||||
esp_task_wdt_add(NULL);
|
||||
|
||||
if (preferences->getBool(preference_mqtt_ssl_enabled, false))
|
||||
{
|
||||
#if defined(CONFIG_SOC_SPIRAM_SUPPORTED) && defined(CONFIG_SPIRAM)
|
||||
if (esp_psram_get_size() <= 0)
|
||||
{
|
||||
Log->println("Waiting 20 seconds to start BLE because of MQTT SSL");
|
||||
delay(20000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(20000 / portTICK_PERIOD_MS);
|
||||
}
|
||||
#else
|
||||
Log->println("Waiting 20 seconds to start BLE because of MQTT SSL");
|
||||
delay(20000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(20000 / portTICK_PERIOD_MS);
|
||||
#endif
|
||||
}
|
||||
int64_t nukiLoopTs = 0;
|
||||
@@ -645,14 +676,20 @@ void nukiTask(void *pvParameters)
|
||||
if(bleScannerStarted)
|
||||
{
|
||||
bleScanner->update();
|
||||
delay(20);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(20 / portTICK_PERIOD_MS);
|
||||
}
|
||||
|
||||
bool needsPairing = (lockStarted && !nuki->isPaired()) || (openerStarted && !nukiOpener->isPaired());
|
||||
|
||||
if (needsPairing)
|
||||
{
|
||||
delay(2500);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(2500 / portTICK_PERIOD_MS);
|
||||
}
|
||||
else if (!whiteListed)
|
||||
{
|
||||
@@ -739,9 +776,10 @@ void nukiTask(void *pvParameters)
|
||||
Log->println("nukiTask is running");
|
||||
nukiLoopTs = espMillis();
|
||||
}
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32C5)
|
||||
esp_task_wdt_reset();
|
||||
#endif
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(50 / portTICK_PERIOD_MS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -832,6 +870,8 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt)
|
||||
|
||||
void otaTask(void *pvParameter)
|
||||
{
|
||||
esp_task_wdt_add(NULL);
|
||||
|
||||
partitionType = checkPartition();
|
||||
String updateUrl;
|
||||
|
||||
@@ -885,14 +925,17 @@ void otaTask(void *pvParameter)
|
||||
{
|
||||
Log->println("Firmware upgrade failed, retrying in 5 seconds");
|
||||
retryCount++;
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32C5)
|
||||
esp_task_wdt_reset();
|
||||
#endif
|
||||
delay(5000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(5000 / portTICK_PERIOD_MS);
|
||||
continue;
|
||||
}
|
||||
while (1)
|
||||
{
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
}
|
||||
}
|
||||
@@ -904,15 +947,13 @@ void otaTask(void *pvParameter)
|
||||
void setupTasks(bool ota)
|
||||
{
|
||||
// configMAX_PRIORITIES is 25
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32C5)
|
||||
esp_task_wdt_config_t twdt_config =
|
||||
{
|
||||
.timeout_ms = 300000,
|
||||
.idle_core_mask = 0,
|
||||
.idle_core_mask = (1 << CONFIG_FREERTOS_NUMBER_OF_CORES) - 1,
|
||||
.trigger_panic = true,
|
||||
};
|
||||
esp_task_wdt_reconfigure(&twdt_config);
|
||||
#endif
|
||||
|
||||
esp_chip_info_t info;
|
||||
esp_chip_info(&info);
|
||||
@@ -923,26 +964,17 @@ void setupTasks(bool ota)
|
||||
if(ota)
|
||||
{
|
||||
xTaskCreatePinnedToCore(otaTask, "ota", 8192, NULL, 2, &otaTaskHandle, (espCores > 1) ? 1 : 0);
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32C5)
|
||||
esp_task_wdt_add(otaTaskHandle);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!disableNetwork)
|
||||
{
|
||||
xTaskCreatePinnedToCore(networkTask, "ntw", preferences->getInt(preference_task_size_network, NETWORK_TASK_SIZE), NULL, 3, &networkTaskHandle, (espCores > 1) ? 1 : 0);
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32C5)
|
||||
esp_task_wdt_add(networkTaskHandle);
|
||||
#endif
|
||||
}
|
||||
#ifndef NUKI_HUB_UPDATER
|
||||
if(!network->isApOpen() && (lockEnabled || openerEnabled))
|
||||
{
|
||||
xTaskCreatePinnedToCore(nukiTask, "nuki", preferences->getInt(preference_task_size_nuki, NUKI_TASK_SIZE), NULL, 2, &nukiTaskHandle, 0);
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32C5)
|
||||
esp_task_wdt_add(nukiTaskHandle);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -951,7 +983,10 @@ void setupTasks(bool ota)
|
||||
void logCoreDump()
|
||||
{
|
||||
coredumpPrinted = false;
|
||||
delay(500);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(500 / portTICK_PERIOD_MS);
|
||||
Log->println("Printing coredump and saving to coredump.hex on SPIFFS");
|
||||
size_t size = 0;
|
||||
size_t address = 0;
|
||||
@@ -1272,13 +1307,7 @@ void setup()
|
||||
Log->println(lockEnabled ? F("Nuki Lock enabled") : F("Nuki Lock disabled"));
|
||||
if(lockEnabled)
|
||||
{
|
||||
nukiOfficial = new NukiOfficial(preferences);
|
||||
networkLock = new NukiNetworkLock(network, nukiOfficial, preferences, CharBuffer::get(), buffer_size);
|
||||
|
||||
if(!disableNetwork)
|
||||
{
|
||||
networkLock->initialize();
|
||||
}
|
||||
startNuki(true);
|
||||
|
||||
nuki = new NukiWrapper("NukiHub", deviceIdLock, bleScanner, networkLock, nukiOfficial, gpio, preferences, CharBuffer::get(), buffer_size);
|
||||
nuki->initialize();
|
||||
@@ -1287,12 +1316,7 @@ void setup()
|
||||
Log->println(openerEnabled ? F("Nuki Opener enabled") : F("Nuki Opener disabled"));
|
||||
if(openerEnabled)
|
||||
{
|
||||
networkOpener = new NukiNetworkOpener(network, preferences, CharBuffer::get(), buffer_size);
|
||||
|
||||
if(!disableNetwork)
|
||||
{
|
||||
networkOpener->initialize();
|
||||
}
|
||||
startNuki(false);
|
||||
|
||||
nukiOpener = new NukiOpenerWrapper("NukiHub", deviceIdOpener, bleScanner, networkOpener, gpio, preferences, CharBuffer::get(), buffer_size);
|
||||
nukiOpener->initialize();
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#include "esp_task_wdt.h"
|
||||
#include "EthernetDevice.h"
|
||||
#include "../PreferencesKeys.h"
|
||||
#include "../Logger.h"
|
||||
@@ -68,14 +69,20 @@ const String EthernetDevice::deviceName() const
|
||||
|
||||
void EthernetDevice::initialize()
|
||||
{
|
||||
delay(250);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(250 / portTICK_PERIOD_MS);
|
||||
if(ethCriticalFailure)
|
||||
{
|
||||
ethCriticalFailure = false;
|
||||
Log->println("Failed to initialize ethernet hardware");
|
||||
Log->println("Network device has a critical failure, enable fallback to Wi-Fi and reboot.");
|
||||
wifiFallback = true;
|
||||
delay(200);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(200 / portTICK_PERIOD_MS);
|
||||
restartEsp(RestartReason::NetworkDeviceCriticalFailure);
|
||||
return;
|
||||
}
|
||||
@@ -140,7 +147,10 @@ void EthernetDevice::initialize()
|
||||
Log->println("Failed to initialize ethernet hardware");
|
||||
Log->println("Network device has a critical failure, enable fallback to Wi-Fi and reboot.");
|
||||
wifiFallback = true;
|
||||
delay(200);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(200 / portTICK_PERIOD_MS);
|
||||
restartEsp(RestartReason::NetworkDeviceCriticalFailure);
|
||||
return;
|
||||
}
|
||||
@@ -222,7 +232,10 @@ void EthernetDevice::onNetworkEvent(arduino_event_id_t event, arduino_event_info
|
||||
|
||||
void EthernetDevice::reconfigure()
|
||||
{
|
||||
delay(200);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(200 / portTICK_PERIOD_MS);
|
||||
restartEsp(RestartReason::ReconfigureETH);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#include "esp_task_wdt.h"
|
||||
#include "WifiDevice.h"
|
||||
#include "../PreferencesKeys.h"
|
||||
#include "../Logger.h"
|
||||
@@ -50,7 +51,10 @@ void WifiDevice::initialize()
|
||||
WiFi.disconnect(true);
|
||||
WiFi.mode(WIFI_STA);
|
||||
WiFi.disconnect();
|
||||
delay(5000);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(5000 / portTICK_PERIOD_MS);
|
||||
Log->println("Dummy WiFi device for Hosted on P4 done");
|
||||
}
|
||||
return;
|
||||
@@ -63,12 +67,21 @@ void WifiDevice::scan(bool passive, bool async)
|
||||
WiFi.disconnect(true);
|
||||
WiFi.mode(WIFI_STA);
|
||||
WiFi.disconnect();
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
}
|
||||
|
||||
WiFi.scanDelete();
|
||||
WiFi.setScanMethod(WIFI_ALL_CHANNEL_SCAN);
|
||||
WiFi.setSortMethod(WIFI_CONNECT_AP_BY_SIGNAL);
|
||||
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
|
||||
if(async)
|
||||
{
|
||||
Log->println("Wi-Fi async scan started");
|
||||
@@ -94,9 +107,15 @@ void WifiDevice::openAP()
|
||||
Log->println("Starting AP with SSID NukiHub and Password NukiHubESP32");
|
||||
_startAP = false;
|
||||
WiFi.mode(WIFI_AP);
|
||||
delay(500);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(500 / portTICK_PERIOD_MS);
|
||||
WiFi.softAPsetHostname(_hostname.c_str());
|
||||
delay(500);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(500 / portTICK_PERIOD_MS);
|
||||
WiFi.softAP("NukiHub", "NukiHubESP32");
|
||||
|
||||
//if(MDNS.begin(_hostname.c_str())){
|
||||
@@ -109,7 +128,10 @@ bool WifiDevice::connect()
|
||||
{
|
||||
WiFi.mode(WIFI_STA);
|
||||
WiFi.setHostname(_hostname.c_str());
|
||||
delay(500);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(500 / portTICK_PERIOD_MS);
|
||||
|
||||
int bestConnection = -1;
|
||||
|
||||
@@ -162,10 +184,13 @@ bool WifiDevice::connect()
|
||||
|
||||
Log->print("WiFi connecting");
|
||||
int loop = 0;
|
||||
while(!isConnected() && loop < 150)
|
||||
while(!isConnected() && loop < 600)
|
||||
{
|
||||
Log->print(".");
|
||||
delay(100);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(25 / portTICK_PERIOD_MS);
|
||||
loop++;
|
||||
}
|
||||
Log->println("");
|
||||
@@ -177,7 +202,10 @@ bool WifiDevice::connect()
|
||||
if(_preferences->getBool(preference_restart_on_disconnect, false) && (espMillis() > 60000))
|
||||
{
|
||||
Log->println("Restart on disconnect watchdog triggered, rebooting");
|
||||
delay(100);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(100 / portTICK_PERIOD_MS);
|
||||
restartEsp(RestartReason::RestartOnDisconnectWatchdog);
|
||||
}
|
||||
else
|
||||
@@ -201,7 +229,10 @@ void WifiDevice::reconfigure()
|
||||
{
|
||||
_preferences->putString(preference_wifi_ssid, "");
|
||||
_preferences->putString(preference_wifi_pass, "");
|
||||
delay(200);
|
||||
if (esp_task_wdt_status(NULL) == ESP_OK) {
|
||||
esp_task_wdt_reset();
|
||||
}
|
||||
vTaskDelay(200 / portTICK_PERIOD_MS);
|
||||
restartEsp(RestartReason::ReconfigureWifi);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user