add option to unpair opener
This commit is contained in:
@@ -61,12 +61,19 @@ void WebCfgServer::initialize()
|
|||||||
buildConfigureWifiHtml(response);
|
buildConfigureWifiHtml(response);
|
||||||
_server.send(200, "text/html", response);
|
_server.send(200, "text/html", response);
|
||||||
});
|
});
|
||||||
_server.on("/unpair", [&]() {
|
_server.on("/unpairlock", [&]() {
|
||||||
if (_hasCredentials && !_server.authenticate(_credUser, _credPassword)) {
|
if (_hasCredentials && !_server.authenticate(_credUser, _credPassword)) {
|
||||||
return _server.requestAuthentication();
|
return _server.requestAuthentication();
|
||||||
}
|
}
|
||||||
|
|
||||||
processUnpair();
|
processUnpair(false);
|
||||||
|
});
|
||||||
|
_server.on("/unpairopener", [&]() {
|
||||||
|
if (_hasCredentials && !_server.authenticate(_credUser, _credPassword)) {
|
||||||
|
return _server.requestAuthentication();
|
||||||
|
}
|
||||||
|
|
||||||
|
processUnpair(true);
|
||||||
});
|
});
|
||||||
_server.on("/wifimanager", [&]() {
|
_server.on("/wifimanager", [&]() {
|
||||||
if (_hasCredentials && !_server.authenticate(_credUser, _credPassword)) {
|
if (_hasCredentials && !_server.authenticate(_credUser, _credPassword)) {
|
||||||
@@ -282,7 +289,7 @@ void WebCfgServer::buildHtml(String& response)
|
|||||||
char lockstateArr[20];
|
char lockstateArr[20];
|
||||||
NukiLock::lockstateToString(_nuki->keyTurnerState().lockState, lockstateArr);
|
NukiLock::lockstateToString(_nuki->keyTurnerState().lockState, lockstateArr);
|
||||||
lockState.concat(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());
|
printParameter(response, "NUKI Lock state", lockState.c_str());
|
||||||
}
|
}
|
||||||
if(_nukiOpener != nullptr)
|
if(_nukiOpener != nullptr)
|
||||||
@@ -291,8 +298,8 @@ void WebCfgServer::buildHtml(String& response)
|
|||||||
char lockstateArr[20];
|
char lockstateArr[20];
|
||||||
NukiOpener::lockstateToString(_nukiOpener->keyTurnerState().lockState, lockstateArr);
|
NukiOpener::lockstateToString(_nukiOpener->keyTurnerState().lockState, lockstateArr);
|
||||||
lockState.concat(lockstateArr);
|
lockState.concat(lockstateArr);
|
||||||
printParameter(response, "NUKI Lock Paired", _nukiOpener->isPaired() ? " Yes" : " No");
|
printParameter(response, "NUKI Opener paired", _nukiOpener->isPaired() ? " Yes" : " No");
|
||||||
printParameter(response, "NUKI Lock state", lockState.c_str());
|
printParameter(response, "NUKI Opener state", lockState.c_str());
|
||||||
}
|
}
|
||||||
printParameter(response, "Firmware", version.c_str());
|
printParameter(response, "Firmware", version.c_str());
|
||||||
response.concat("</table><br><br>");
|
response.concat("</table><br><br>");
|
||||||
@@ -366,13 +373,28 @@ void WebCfgServer::buildCredHtml(String &response)
|
|||||||
response.concat("</FORM>");
|
response.concat("</FORM>");
|
||||||
|
|
||||||
_confirmCode = generateConfirmCode();
|
_confirmCode = generateConfirmCode();
|
||||||
response.concat("<br><br><h3>Unpair NUKI</h3>");
|
if(_nuki != nullptr)
|
||||||
response.concat("<form method=\"get\" action=\"/unpair\">");
|
{
|
||||||
String message = "Type ";
|
response.concat("<br><br><h3>Unpair NUKI Lock</h3>");
|
||||||
message.concat(_confirmCode);
|
response.concat("<form method=\"get\" action=\"/unpairlock\">");
|
||||||
message.concat(" to confirm unpair");
|
String message = "Type ";
|
||||||
printInputField(response, "CONFIRMTOKEN", message.c_str(), "", 10);
|
message.concat(_confirmCode);
|
||||||
response.concat("<br><br><button type=\"submit\">OK</button>");
|
message.concat(" to confirm unpair");
|
||||||
|
printInputField(response, "CONFIRMTOKEN", message.c_str(), "", 10);
|
||||||
|
response.concat("<br><br><button type=\"submit\">OK</button></form>");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(_nukiOpener != nullptr)
|
||||||
|
{
|
||||||
|
response.concat("<br><br><h3>Unpair NUKI Opener</h3>");
|
||||||
|
response.concat("<form method=\"get\" action=\"/unpairopener\">");
|
||||||
|
String message = "Type ";
|
||||||
|
message.concat(_confirmCode);
|
||||||
|
message.concat(" to confirm unpair");
|
||||||
|
printInputField(response, "CONFIRMTOKEN", message.c_str(), "", 10);
|
||||||
|
response.concat("<br><br><button type=\"submit\">OK</button></form>");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
response.concat("</BODY>\n");
|
response.concat("</BODY>\n");
|
||||||
response.concat("</HTML>\n");
|
response.concat("</HTML>\n");
|
||||||
@@ -428,15 +450,7 @@ void WebCfgServer::buildConfigureWifiHtml(String &response)
|
|||||||
response.concat("</HTML>\n");
|
response.concat("</HTML>\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
//printInputField(response, "CONFIRMTOKEN", "Type confirm", "", 10);
|
void WebCfgServer::processUnpair(bool opener)
|
||||||
|
|
||||||
|
|
||||||
//int count = _server.args();
|
|
||||||
//for(int index = 0; index < count; index++)
|
|
||||||
//{
|
|
||||||
//String key = _server.argName(index);
|
|
||||||
//String value = _server.arg(index);
|
|
||||||
void WebCfgServer::processUnpair()
|
|
||||||
{
|
{
|
||||||
String response = "";
|
String response = "";
|
||||||
if(_server.args() == 0)
|
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);
|
_server.send(200, "text/html", response);
|
||||||
if(_nuki != nullptr)
|
if(!opener && _nuki != nullptr)
|
||||||
{
|
{
|
||||||
_nuki->unpair();
|
_nuki->unpair();
|
||||||
}
|
}
|
||||||
|
if(opener && _nukiOpener != nullptr)
|
||||||
|
{
|
||||||
|
_nukiOpener->unpair();
|
||||||
|
}
|
||||||
waitAndProcess(false, 1000);
|
waitAndProcess(false, 1000);
|
||||||
ESP.restart();
|
ESP.restart();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ private:
|
|||||||
void buildMqttConfigHtml(String& response);
|
void buildMqttConfigHtml(String& response);
|
||||||
void buildConfirmHtml(String& response, const String &message, uint32_t redirectDelay = 5);
|
void buildConfirmHtml(String& response, const String &message, uint32_t redirectDelay = 5);
|
||||||
void buildConfigureWifiHtml(String& response);
|
void buildConfigureWifiHtml(String& response);
|
||||||
void processUnpair();
|
void processUnpair(bool opener);
|
||||||
|
|
||||||
void buildHtmlHeader(String& response);
|
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);
|
void printInputField(String& response, const char* token, const char* description, const char* value, const size_t maxLength, const bool isPassword = false);
|
||||||
|
|||||||
Reference in New Issue
Block a user