diff --git a/WebCfgServer.cpp b/WebCfgServer.cpp index 0f95291..e4e3cd3 100644 --- a/WebCfgServer.cpp +++ b/WebCfgServer.cpp @@ -61,12 +61,19 @@ void WebCfgServer::initialize() buildConfigureWifiHtml(response); _server.send(200, "text/html", response); }); - _server.on("/unpair", [&]() { + _server.on("/unpairlock", [&]() { if (_hasCredentials && !_server.authenticate(_credUser, _credPassword)) { return _server.requestAuthentication(); } - processUnpair(); + processUnpair(false); + }); + _server.on("/unpairopener", [&]() { + if (_hasCredentials && !_server.authenticate(_credUser, _credPassword)) { + return _server.requestAuthentication(); + } + + processUnpair(true); }); _server.on("/wifimanager", [&]() { if (_hasCredentials && !_server.authenticate(_credUser, _credPassword)) { @@ -282,7 +289,7 @@ void WebCfgServer::buildHtml(String& response) char lockstateArr[20]; NukiLock::lockstateToString(_nuki->keyTurnerState().lockState, lockstateArr); lockState.concat(lockstateArr); - printParameter(response, "NUKI Lock Paired", _nuki->isPaired() ? " Yes" : " No"); + printParameter(response, "NUKI Lock paired", _nuki->isPaired() ? " Yes" : " No"); printParameter(response, "NUKI Lock state", lockState.c_str()); } if(_nukiOpener != nullptr) @@ -291,8 +298,8 @@ void WebCfgServer::buildHtml(String& response) char lockstateArr[20]; NukiOpener::lockstateToString(_nukiOpener->keyTurnerState().lockState, lockstateArr); lockState.concat(lockstateArr); - printParameter(response, "NUKI Lock Paired", _nukiOpener->isPaired() ? " Yes" : " No"); - printParameter(response, "NUKI Lock state", lockState.c_str()); + printParameter(response, "NUKI Opener paired", _nukiOpener->isPaired() ? " Yes" : " No"); + printParameter(response, "NUKI Opener state", lockState.c_str()); } printParameter(response, "Firmware", version.c_str()); response.concat("

"); @@ -366,13 +373,28 @@ void WebCfgServer::buildCredHtml(String &response) response.concat(""); _confirmCode = generateConfirmCode(); - response.concat("

Unpair NUKI

"); - response.concat("
"); - String message = "Type "; - message.concat(_confirmCode); - message.concat(" to confirm unpair"); - printInputField(response, "CONFIRMTOKEN", message.c_str(), "", 10); - response.concat("

"); + if(_nuki != nullptr) + { + response.concat("

Unpair NUKI Lock

"); + response.concat(""); + String message = "Type "; + message.concat(_confirmCode); + message.concat(" to confirm unpair"); + printInputField(response, "CONFIRMTOKEN", message.c_str(), "", 10); + response.concat("

"); + } + + if(_nukiOpener != nullptr) + { + response.concat("

Unpair NUKI Opener

"); + response.concat("
"); + String message = "Type "; + message.concat(_confirmCode); + message.concat(" to confirm unpair"); + printInputField(response, "CONFIRMTOKEN", message.c_str(), "", 10); + response.concat("

"); + } + response.concat("\n"); response.concat("\n"); @@ -428,15 +450,7 @@ void WebCfgServer::buildConfigureWifiHtml(String &response) response.concat("\n"); } -//printInputField(response, "CONFIRMTOKEN", "Type confirm", "", 10); - - -//int count = _server.args(); -//for(int index = 0; index < count; index++) -//{ -//String key = _server.argName(index); -//String value = _server.arg(index); -void WebCfgServer::processUnpair() +void WebCfgServer::processUnpair(bool opener) { String response = ""; if(_server.args() == 0) @@ -458,12 +472,16 @@ void WebCfgServer::processUnpair() } } - buildConfirmHtml(response, "Unpairing NUKI and restarting.", 3); + buildConfirmHtml(response, opener ? "Unpairing NUKI Opener and restarting." : "Unpairing NUKI Lock and restarting.", 3); _server.send(200, "text/html", response); - if(_nuki != nullptr) + if(!opener && _nuki != nullptr) { _nuki->unpair(); } + if(opener && _nukiOpener != nullptr) + { + _nukiOpener->unpair(); + } waitAndProcess(false, 1000); ESP.restart(); } diff --git a/WebCfgServer.h b/WebCfgServer.h index 9591bbb..f8152bf 100644 --- a/WebCfgServer.h +++ b/WebCfgServer.h @@ -35,7 +35,7 @@ private: void buildMqttConfigHtml(String& response); void buildConfirmHtml(String& response, const String &message, uint32_t redirectDelay = 5); void buildConfigureWifiHtml(String& response); - void processUnpair(); + void processUnpair(bool opener); void buildHtmlHeader(String& response); void printInputField(String& response, const char* token, const char* description, const char* value, const size_t maxLength, const bool isPassword = false);