diff --git a/NukiOpenerWrapper.cpp b/NukiOpenerWrapper.cpp index 01820ad..3917353 100644 --- a/NukiOpenerWrapper.cpp +++ b/NukiOpenerWrapper.cpp @@ -69,10 +69,15 @@ void NukiOpenerWrapper::initialize() void NukiOpenerWrapper::update() { - if (!_paired) { + if (!_paired) + { Serial.println(F("Nuki opener start pairing")); - if (_nukiOpener.pairNuki() == NukiOpener::PairingResult::Success) { + Nuki::AuthorizationIdType idType = _preferences->getBool(preference_register_as_app) ? + Nuki::AuthorizationIdType::App : + Nuki::AuthorizationIdType::Bridge; + + if (_nukiOpener.pairNuki(idType) == NukiOpener::PairingResult::Success) { Serial.println(F("Nuki opener paired")); _paired = true; setupHASS(); diff --git a/NukiWrapper.cpp b/NukiWrapper.cpp index eb15c0b..fad4ebc 100644 --- a/NukiWrapper.cpp +++ b/NukiWrapper.cpp @@ -79,10 +79,19 @@ void NukiWrapper::initialize() void NukiWrapper::update() { - if (!_paired) { + Nuki::AuthorizationIdType idType = _preferences->getBool(preference_register_as_app) ? + Nuki::AuthorizationIdType::App : + Nuki::AuthorizationIdType::Bridge; + + if (!_paired) + { Serial.println(F("Nuki start pairing")); - if (_nukiLock.pairNuki() == Nuki::PairingResult::Success) { + Nuki::AuthorizationIdType idType = _preferences->getBool(preference_register_as_app) ? + Nuki::AuthorizationIdType::App : + Nuki::AuthorizationIdType::Bridge; + + if (_nukiLock.pairNuki(idType) == Nuki::PairingResult::Success) { Serial.println(F("Nuki paired")); _paired = true; setupHASS(); diff --git a/PreferencesKeys.h b/PreferencesKeys.h index 1f00e7c..1541ad4 100644 --- a/PreferencesKeys.h +++ b/PreferencesKeys.h @@ -23,6 +23,7 @@ #define preference_query_interval_battery "batInterval" #define preference_query_interval_keypad "kpInterval" #define preference_keypad_control_enabled "kpEnabled" +#define preference_register_as_app "regAsApp" // true = register as hub; false = register as app #define preference_cred_user "crdusr" #define preference_cred_password "crdpass" #define preference_publish_authdata "pubauth" diff --git a/WebCfgServer.cpp b/WebCfgServer.cpp index 1fa0595..943ee78 100644 --- a/WebCfgServer.cpp +++ b/WebCfgServer.cpp @@ -311,6 +311,11 @@ bool WebCfgServer::processArgs(String& message) _preferences->putBool(preference_gpio_locking_enabled, (value == "1")); configChanged = true; } + else if(key == "REGAPP") + { + _preferences->putBool(preference_register_as_app, (value == "1")); + configChanged = true; + } else if(key == "LOCKENA") { _preferences->putBool(preference_lock_enabled, (value == "1")); @@ -606,6 +611,7 @@ void WebCfgServer::buildNukiConfigHtml(String &response) response.concat("

Advanced NUKI Configuration

"); response.concat(""); + 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, "BATINT", "Query interval battery (seconds)", _preferences->getInt(preference_query_interval_battery), 10); if(_nuki->hasKeypad()) diff --git a/lib/nuki_ble b/lib/nuki_ble index 24794a3..96687ef 160000 --- a/lib/nuki_ble +++ b/lib/nuki_ble @@ -1 +1 @@ -Subproject commit 24794a348b388219db01745b2d34584be8f03897 +Subproject commit 96687ef6463a3e9366307c2fd30ba76e173abb68