From 45755d687752567edd827749473ee4b1dea8967a Mon Sep 17 00:00:00 2001 From: technyon Date: Sun, 5 Feb 2023 16:32:57 +0100 Subject: [PATCH] make query interval configuration configurable --- NukiOpenerWrapper.cpp | 27 ++++++++++++++++++++++++++- NukiWrapper.cpp | 26 +------------------------- PreferencesKeys.h | 3 ++- WebCfgServer.cpp | 6 ++++++ 4 files changed, 35 insertions(+), 27 deletions(-) diff --git a/NukiOpenerWrapper.cpp b/NukiOpenerWrapper.cpp index 0c45f1d..6d37364 100644 --- a/NukiOpenerWrapper.cpp +++ b/NukiOpenerWrapper.cpp @@ -40,7 +40,9 @@ void NukiOpenerWrapper::initialize() _nukiOpener.registerBleScanner(_bleScanner); _intervalLockstate = _preferences->getInt(preference_query_interval_lockstate); + _intervalConfig = _preferences->getInt(preference_query_interval_battery); _intervalBattery = _preferences->getInt(preference_query_interval_battery); + _intervalConfig = _preferences->getInt(preference_query_interval_configuration); _publishAuthData = _preferences->getBool(preference_publish_authdata); _restartBeaconTimeout = _preferences->getInt(preference_restart_ble_beacon_lost); _hassEnabled = _preferences->getString(preference_mqtt_hass_discovery) != ""; @@ -48,16 +50,39 @@ void NukiOpenerWrapper::initialize() _retryDelay = _preferences->getInt(preference_command_retry_delay); _rssiPublishInterval = _preferences->getInt(preference_rssi_publish_interval) * 1000; + if(_retryDelay <= 100) + { + _retryDelay = 100; + _preferences->putInt(preference_command_retry_delay, _retryDelay); + } + if(_intervalLockstate == 0) { - _intervalLockstate = 60 * 5; + _intervalLockstate = 60 * 30; _preferences->putInt(preference_query_interval_lockstate, _intervalLockstate); } + if(_intervalConfig == 0) + { + _intervalConfig = 60 * 60; + _preferences->putInt(preference_query_interval_configuration, _intervalConfig); + } if(_intervalBattery == 0) { _intervalBattery = 60 * 30; _preferences->putInt(preference_query_interval_battery, _intervalBattery); } + /* + if(_intervalKeypad == 0) + { + _intervalKeypad = 60 * 30; + _preferences->putInt(preference_query_interval_keypad, _intervalKeypad); + } + */ + if(_restartBeaconTimeout < 10) + { + _restartBeaconTimeout = -1; + _preferences->putInt(preference_restart_ble_beacon_lost, _restartBeaconTimeout); + } _nukiOpener.setEventHandler(this); diff --git a/NukiWrapper.cpp b/NukiWrapper.cpp index b3feeec..13780f8 100644 --- a/NukiWrapper.cpp +++ b/NukiWrapper.cpp @@ -42,6 +42,7 @@ void NukiWrapper::initialize(const bool& firstStart) _nukiLock.registerBleScanner(_bleScanner); _intervalLockstate = _preferences->getInt(preference_query_interval_lockstate); + _intervalConfig = _preferences->getInt(preference_query_interval_battery); _intervalBattery = _preferences->getInt(preference_query_interval_battery); _intervalKeypad = _preferences->getInt(preference_query_interval_keypad); _keypadEnabled = _preferences->getBool(preference_keypad_control_enabled); @@ -58,32 +59,7 @@ void NukiWrapper::initialize(const bool& firstStart) _preferences->putInt(preference_command_nr_of_retries, 3); _preferences->putInt(preference_command_retry_delay, 1000); } - if(_retryDelay <= 100) - { - _retryDelay = 100; - _preferences->putInt(preference_command_retry_delay, _retryDelay); - } - if(_intervalLockstate == 0) - { - _intervalLockstate = 60 * 30; - _preferences->putInt(preference_query_interval_lockstate, _intervalLockstate); - } - if(_intervalBattery == 0) - { - _intervalBattery = 60 * 30; - _preferences->putInt(preference_query_interval_battery, _intervalBattery); - } - if(_intervalKeypad == 0) - { - _intervalKeypad = 60 * 30; - _preferences->putInt(preference_query_interval_keypad, _intervalKeypad); - } - if(_restartBeaconTimeout < 10) - { - _restartBeaconTimeout = -1; - _preferences->putInt(preference_restart_ble_beacon_lost, _restartBeaconTimeout); - } _nukiLock.setEventHandler(this); diff --git a/PreferencesKeys.h b/PreferencesKeys.h index e4cbecf..c66dfb3 100644 --- a/PreferencesKeys.h +++ b/PreferencesKeys.h @@ -27,6 +27,7 @@ #define preference_restart_timer "resttmr" #define preference_restart_ble_beacon_lost "rstbcn" #define preference_query_interval_lockstate "lockStInterval" +#define preference_query_interval_configuration "configInterval" #define preference_query_interval_battery "batInterval" #define preference_query_interval_keypad "kpInterval" #define preference_keypad_control_enabled "kpEnabled" @@ -49,7 +50,7 @@ class DebugPreferences private: std::vector _keys = { - preference_started_before, preference_deviceId, preference_mqtt_broker, preference_mqtt_broker_port, preference_mqtt_user, preference_mqtt_password, preference_mqtt_log_enabled, preference_lock_enabled, preference_mqtt_lock_path, preference_opener_enabled, preference_mqtt_opener_path, preference_max_keypad_code_count, preference_mqtt_ca, preference_mqtt_crt, preference_mqtt_key, preference_mqtt_hass_discovery, preference_network_hardware, preference_network_hardware_gpio, preference_rssi_publish_interval, preference_hostname, preference_network_timeout, preference_restart_on_disconnect, preference_restart_timer, preference_restart_ble_beacon_lost, preference_query_interval_lockstate, preference_query_interval_battery, preference_query_interval_keypad, preference_keypad_control_enabled, preference_register_as_app, preference_command_nr_of_retries, preference_command_retry_delay, preference_cred_user, preference_cred_password, preference_publish_authdata, preference_gpio_locking_enabled, preference_publish_debug_info, preference_presence_detection_timeout, preference_has_mac_saved, preference_has_mac_byte_0, preference_has_mac_byte_1, preference_has_mac_byte_2, + preference_started_before, preference_deviceId, preference_mqtt_broker, preference_mqtt_broker_port, preference_mqtt_user, preference_mqtt_password, preference_mqtt_log_enabled, preference_lock_enabled, preference_mqtt_lock_path, preference_opener_enabled, preference_mqtt_opener_path, preference_max_keypad_code_count, preference_mqtt_ca, preference_mqtt_crt, preference_mqtt_key, preference_mqtt_hass_discovery, preference_network_hardware, preference_network_hardware_gpio, preference_rssi_publish_interval, preference_hostname, preference_network_timeout, preference_restart_on_disconnect, preference_restart_timer, preference_restart_ble_beacon_lost, preference_query_interval_lockstate, preference_query_interval_configuration, preference_query_interval_battery, preference_query_interval_keypad, preference_keypad_control_enabled, preference_register_as_app, preference_command_nr_of_retries, preference_command_retry_delay, preference_cred_user, preference_cred_password, preference_publish_authdata, preference_gpio_locking_enabled, preference_publish_debug_info, preference_presence_detection_timeout, preference_has_mac_saved, preference_has_mac_byte_0, preference_has_mac_byte_1, preference_has_mac_byte_2, }; std::vector _redact = { diff --git a/WebCfgServer.cpp b/WebCfgServer.cpp index e0bfe29..5ea4200 100644 --- a/WebCfgServer.cpp +++ b/WebCfgServer.cpp @@ -332,6 +332,11 @@ bool WebCfgServer::processArgs(String& message) _preferences->putInt(preference_query_interval_lockstate, value.toInt()); configChanged = true; } + else if(key == "CFGINT") + { + _preferences->putInt(preference_query_interval_configuration, value.toInt()); + configChanged = true; + } else if(key == "BATINT") { _preferences->putInt(preference_query_interval_battery, value.toInt()); @@ -683,6 +688,7 @@ void WebCfgServer::buildNukiConfigHtml(String &response) printCheckBox(response, "REGAPP", "Register as app (on: register as app, off: register as bridge; needs re-pairing if changed)", _preferences->getBool(preference_register_as_app)); printInputField(response, "LSTINT", "Query interval lock state (seconds)", _preferences->getInt(preference_query_interval_lockstate), 10); + printInputField(response, "CFGINT", "Query interval configuration (seconds)", _preferences->getInt(preference_query_interval_configuration), 10); printInputField(response, "BATINT", "Query interval battery (seconds)", _preferences->getInt(preference_query_interval_battery), 10); if(_nuki != nullptr && _nuki->hasKeypad()) {