Add Ultra
This commit is contained in:
@@ -1613,7 +1613,7 @@ bool WebCfgServer::processArgs(PsychicRequest *request, PsychicResponse* resp, S
|
||||
unsigned char authorizationId[4] = {0x00};
|
||||
unsigned char secretKeyK[32] = {0x00};
|
||||
unsigned char pincode[2] = {0x00};
|
||||
unsigned char ultraPincode[4] = {0x00};
|
||||
unsigned char ultraPincode[4] = {0x00};
|
||||
bool isUltra = false;
|
||||
unsigned char currentBleAddressOpn[6];
|
||||
unsigned char authorizationIdOpn[4] = {0x00};
|
||||
@@ -1622,7 +1622,7 @@ bool WebCfgServer::processArgs(PsychicRequest *request, PsychicResponse* resp, S
|
||||
uint32_t aclPrefs[17] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||
uint32_t basicLockConfigAclPrefs[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||
uint32_t basicOpenerConfigAclPrefs[14] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||
uint32_t advancedLockConfigAclPrefs[23] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||
uint32_t advancedLockConfigAclPrefs[25] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||
uint32_t advancedOpenerConfigAclPrefs[21] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||
|
||||
int params = request->params();
|
||||
@@ -2032,16 +2032,6 @@ bool WebCfgServer::processArgs(PsychicRequest *request, PsychicResponse* resp, S
|
||||
configChanged = true;
|
||||
}
|
||||
}
|
||||
else if(key == "NWHWWIFIFB")
|
||||
{
|
||||
if(_preferences->getBool(preference_network_wifi_fallback_disabled, false) != (value == "1"))
|
||||
{
|
||||
_preferences->putBool(preference_network_wifi_fallback_disabled, (value == "1"));
|
||||
Log->print(("Setting changed: "));
|
||||
Log->println(key);
|
||||
//configChanged = true;
|
||||
}
|
||||
}
|
||||
else if(key == "RSSI")
|
||||
{
|
||||
if(_preferences->getInt(preference_rssi_publish_interval, 60) != value.toInt())
|
||||
@@ -2587,16 +2577,6 @@ bool WebCfgServer::processArgs(PsychicRequest *request, PsychicResponse* resp, S
|
||||
configChanged = true;
|
||||
}
|
||||
}
|
||||
else if(key == "GEMINIPIN")
|
||||
{
|
||||
if(_preferences->getInt(preference_lock_gemini_pin, 0) != value.toInt())
|
||||
{
|
||||
_preferences->putInt(preference_lock_gemini_pin, value.toInt());
|
||||
Log->print(F("Setting changed: "));
|
||||
Log->println(key);
|
||||
configChanged = true;
|
||||
}
|
||||
}
|
||||
else if(key == "LCKFORCEID")
|
||||
{
|
||||
if(_preferences->getBool(preference_lock_force_id, false) != (value == "1"))
|
||||
@@ -3010,6 +2990,14 @@ bool WebCfgServer::processArgs(PsychicRequest *request, PsychicResponse* resp, S
|
||||
{
|
||||
advancedLockConfigAclPrefs[22] = ((value == "1") ? 1 : 0);
|
||||
}
|
||||
else if(key == "CONFLCKMTRSPD")
|
||||
{
|
||||
advancedLockConfigAclPrefs[23] = ((value == "1") ? 1 : 0);
|
||||
}
|
||||
else if(key == "CONFLCKESSDNM")
|
||||
{
|
||||
advancedLockConfigAclPrefs[24] = ((value == "1") ? 1 : 0);
|
||||
}
|
||||
else if(key == "CONFOPNNAME")
|
||||
{
|
||||
basicOpenerConfigAclPrefs[0] = ((value == "1") ? 1 : 0);
|
||||
@@ -3180,6 +3168,23 @@ bool WebCfgServer::processArgs(PsychicRequest *request, PsychicResponse* resp, S
|
||||
configChanged = true;
|
||||
}
|
||||
}
|
||||
else if(key == "GEMINIENA")
|
||||
{
|
||||
if(_preferences->getBool(preference_lock_gemini_enabled, false) != (value == "1"))
|
||||
{
|
||||
_preferences->putBool(preference_lock_gemini_enabled, (value == "1"));
|
||||
if (value == "1")
|
||||
{
|
||||
_preferences->putBool(preference_register_as_app, true);
|
||||
_preferences->putBool(preference_lock_enabled, true);
|
||||
_preferences->putBool(preference_official_hybrid_enabled, true);
|
||||
_preferences->putBool(preference_official_hybrid_actions, true);
|
||||
}
|
||||
Log->print(("Setting changed: "));
|
||||
Log->println(key);
|
||||
configChanged = true;
|
||||
}
|
||||
}
|
||||
else if(key == "OPENA")
|
||||
{
|
||||
if(_preferences->getBool(preference_opener_enabled, false) != (value == "1"))
|
||||
@@ -3229,21 +3234,45 @@ bool WebCfgServer::processArgs(PsychicRequest *request, PsychicResponse* resp, S
|
||||
{
|
||||
if(value == "#")
|
||||
{
|
||||
message = "Nuki Lock PIN cleared";
|
||||
_nuki->setPin(0xffff);
|
||||
if (_preferences->getBool(preference_lock_gemini_enabled, false))
|
||||
{
|
||||
message = "Nuki Lock Ultra PIN cleared";
|
||||
_nuki->setUltraPin(0xffffffff);
|
||||
_preferences->putInt(preference_lock_gemini_pin, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
message = "Nuki Lock PIN cleared";
|
||||
_nuki->setPin(0xffff);
|
||||
}
|
||||
Log->print(("Setting changed: "));
|
||||
Log->println(key);
|
||||
configChanged = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(_nuki->getPin() != value.toInt())
|
||||
if (_preferences->getBool(preference_lock_gemini_enabled, false))
|
||||
{
|
||||
message = "Nuki Lock PIN saved";
|
||||
_nuki->setPin(value.toInt());
|
||||
Log->print(("Setting changed: "));
|
||||
Log->println(key);
|
||||
configChanged = true;
|
||||
if(_nuki->getUltraPin() != value.toInt())
|
||||
{
|
||||
message = "Nuki Lock Ultra PIN saved";
|
||||
_nuki->setUltraPin(value.toInt());
|
||||
_preferences->putInt(preference_lock_gemini_pin, value.toInt());
|
||||
Log->print(("Setting changed: "));
|
||||
Log->println(key);
|
||||
configChanged = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(_nuki->getPin() != value.toInt())
|
||||
{
|
||||
message = "Nuki Lock PIN saved";
|
||||
_nuki->setPin(value.toInt());
|
||||
Log->print(("Setting changed: "));
|
||||
Log->println(key);
|
||||
configChanged = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3298,6 +3327,10 @@ bool WebCfgServer::processArgs(PsychicRequest *request, PsychicResponse* resp, S
|
||||
authorizationId[(i/2)] = std::stoi(value.substring(i, i+2).c_str(), nullptr, 16);
|
||||
}
|
||||
}
|
||||
else if(key == "LCKISULTRA" && (value == "1"))
|
||||
{
|
||||
isUltra = true;
|
||||
}
|
||||
else if(key == "OPNBLEADDR")
|
||||
{
|
||||
if(value.length() == 12) for(int i=0; i<value.length(); i+=2)
|
||||
@@ -3410,7 +3443,7 @@ bool WebCfgServer::processArgs(PsychicRequest *request, PsychicResponse* resp, S
|
||||
{
|
||||
uint32_t curAclPrefs[17] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||
uint32_t curBasicLockConfigAclPrefs[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||
uint32_t curAdvancedLockConfigAclPrefs[23] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||
uint32_t curAdvancedLockConfigAclPrefs[25] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||
uint32_t curBasicOpenerConfigAclPrefs[14] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||
uint32_t curAdvancedOpenerConfigAclPrefs[21] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||
_preferences->getBytes(preference_acl, &curAclPrefs, sizeof(curAclPrefs));
|
||||
@@ -3441,7 +3474,7 @@ bool WebCfgServer::processArgs(PsychicRequest *request, PsychicResponse* resp, S
|
||||
break;
|
||||
}
|
||||
}
|
||||
for(int i=0; i < 23; i++)
|
||||
for(int i=0; i < 25; i++)
|
||||
{
|
||||
if(curAdvancedLockConfigAclPrefs[i] != advancedLockConfigAclPrefs[i])
|
||||
{
|
||||
@@ -3662,6 +3695,13 @@ bool WebCfgServer::processImport(PsychicRequest *request, PsychicResponse* resp,
|
||||
nukiBlePref.putBytes("authorizationId", authorizationId, 4);
|
||||
}
|
||||
}
|
||||
if(!doc["isUltra"].isNull())
|
||||
{
|
||||
if (doc["isUltra"].as<String>().length() >0)
|
||||
{
|
||||
nukiBlePref.putBool("isUltra", (doc["isUltra"].as<String>() == "1" ? true : false));
|
||||
}
|
||||
}
|
||||
nukiBlePref.end();
|
||||
if(!doc["securityPinCodeLock"].isNull() && _nuki != nullptr)
|
||||
{
|
||||
@@ -3674,6 +3714,19 @@ bool WebCfgServer::processImport(PsychicRequest *request, PsychicResponse* resp,
|
||||
_nuki->setPin(0xffff);
|
||||
}
|
||||
}
|
||||
if(!doc["ultraPinCodeLock"].isNull() && _nuki != nullptr)
|
||||
{
|
||||
if(doc["ultraPinCodeLock"].as<String>().length() > 0)
|
||||
{
|
||||
_nuki->setUltraPin(doc["ultraPinCodeLock"].as<int>());
|
||||
_preferences->putInt(preference_lock_gemini_pin, doc["ultraPinCodeLock"].as<int>());
|
||||
}
|
||||
else
|
||||
{
|
||||
_nuki->setUltraPin(0xffffffff);
|
||||
_preferences->putInt(preference_lock_gemini_pin, 0);
|
||||
}
|
||||
}
|
||||
nukiBlePref.begin("NukiHubopener", false);
|
||||
if(!doc["bleAddressOpener"].isNull())
|
||||
{
|
||||
@@ -4339,6 +4392,7 @@ esp_err_t WebCfgServer::buildAdvancedConfigHtml(PsychicRequest *request, Psychic
|
||||
printInputField(&response, "LCKBLEADDR", "currentBleAddress", "", 12, "");
|
||||
printInputField(&response, "LCKSECRETK", "secretKeyK", "", 64, "");
|
||||
printInputField(&response, "LCKAUTHID", "authorizationId", "", 8, "");
|
||||
printCheckBox(&response, "LCKISULTRA", "isUltra", false, "");
|
||||
}
|
||||
if(_preferences->getBool(preference_opener_enabled, false))
|
||||
{
|
||||
@@ -4377,8 +4431,6 @@ esp_err_t WebCfgServer::buildAdvancedConfigHtml(PsychicRequest *request, Psychic
|
||||
printCheckBox(&response, "DBGREAD", "Enable Nuki readable data debug logging", _preferences->getBool(preference_debug_readable_data, false), "");
|
||||
printCheckBox(&response, "DBGHEX", "Enable Nuki hex data debug logging", _preferences->getBool(preference_debug_hex_data, false), "");
|
||||
printCheckBox(&response, "DBGCOMM", "Enable Nuki command debug logging", _preferences->getBool(preference_debug_command, false), "");
|
||||
printInputField(&response, "GEMINIPIN", "SmartLock Ultra PIN", _preferences->getInt(preference_lock_gemini_pin, 0), 6, "");
|
||||
|
||||
response.print("</table>");
|
||||
|
||||
response.print("<br><input type=\"submit\" name=\"submit\" value=\"Save\">");
|
||||
@@ -4544,7 +4596,7 @@ esp_err_t WebCfgServer::buildAccLvlHtml(PsychicRequest *request, PsychicResponse
|
||||
{
|
||||
uint32_t basicLockConfigAclPrefs[16];
|
||||
_preferences->getBytes(preference_conf_lock_basic_acl, &basicLockConfigAclPrefs, sizeof(basicLockConfigAclPrefs));
|
||||
uint32_t advancedLockConfigAclPrefs[23];
|
||||
uint32_t advancedLockConfigAclPrefs[25];
|
||||
_preferences->getBytes(preference_conf_lock_advanced_acl, &advancedLockConfigAclPrefs, sizeof(advancedLockConfigAclPrefs));
|
||||
|
||||
response.print("<h3>Nuki Lock Access Control</h3>");
|
||||
@@ -4612,6 +4664,8 @@ esp_err_t WebCfgServer::buildAccLvlHtml(PsychicRequest *request, PsychicResponse
|
||||
printCheckBox(&response, "CONFLCKIALENA", "Immediate auto lock enabled", ((int)advancedLockConfigAclPrefs[20] == 1), "chk_config_lock");
|
||||
printCheckBox(&response, "CONFLCKAUENA", "Auto update enabled", ((int)advancedLockConfigAclPrefs[21] == 1), "chk_config_lock");
|
||||
printCheckBox(&response, "CONFLCKRBTNUKI", "Reboot Nuki", ((int)advancedLockConfigAclPrefs[22] == 1), "chk_config_lock");
|
||||
printCheckBox(&response, "CONFLCKMTRSPD", "Motor speed", ((int)advancedLockConfigAclPrefs[23] == 1), "chk_config_lock");
|
||||
printCheckBox(&response, "CONFLCKESSDNM", "Enable slow speed during nightmode", ((int)advancedLockConfigAclPrefs[24] == 1), "chk_config_lock");
|
||||
response.print("</table><br>");
|
||||
response.print("<br><input type=\"submit\" name=\"submit\" value=\"Save\">");
|
||||
}
|
||||
@@ -4699,8 +4753,9 @@ esp_err_t WebCfgServer::buildNukiConfigHtml(PsychicRequest *request, PsychicResp
|
||||
response.print("<input type=\"hidden\" name=\"page\" value=\"savecfg\">");
|
||||
response.print("<h3>Basic Nuki Configuration</h3>");
|
||||
response.print("<table>");
|
||||
printCheckBox(&response, "LOCKENA", "Nuki Lock enabled", _preferences->getBool(preference_lock_enabled), "");
|
||||
printCheckBox(&response, "OPENA", "Nuki Opener enabled", _preferences->getBool(preference_opener_enabled), "");
|
||||
printCheckBox(&response, "LOCKENA", "Nuki Lock enabled", _preferences->getBool(preference_lock_enabled, true), "");
|
||||
printCheckBox(&response, "GEMINIENA", "Nuki Smartlock Ultra enabled", _preferences->getBool(preference_lock_gemini_enabled, false), "");
|
||||
printCheckBox(&response, "OPENA", "Nuki Opener enabled", _preferences->getBool(preference_opener_enabled, false), "");
|
||||
printCheckBox(&response, "CONNMODE", "New Nuki Bluetooth connection mode (disable if there are connection issues)", _preferences->getBool(preference_connect_mode, true), "");
|
||||
response.print("</table><br>");
|
||||
response.print("<h3>Advanced Nuki Configuration</h3>");
|
||||
@@ -4715,7 +4770,7 @@ esp_err_t WebCfgServer::buildNukiConfigHtml(PsychicRequest *request, PsychicResp
|
||||
}
|
||||
printInputField(&response, "NRTRY", "Number of retries if command failed", _preferences->getInt(preference_command_nr_of_retries), 10, "");
|
||||
printInputField(&response, "TRYDLY", "Delay between retries (milliseconds)", _preferences->getInt(preference_command_retry_delay), 10, "");
|
||||
if(_preferences->getBool(preference_lock_enabled, true))
|
||||
if(_preferences->getBool(preference_lock_enabled, true) && !_preferences->getBool(preference_lock_gemini_enabled, false))
|
||||
{
|
||||
printCheckBox(&response, "REGAPP", "Lock: Nuki Bridge is running alongside Nuki Hub (needs re-pairing if changed)", _preferences->getBool(preference_register_as_app), "");
|
||||
}
|
||||
@@ -4885,6 +4940,8 @@ esp_err_t WebCfgServer::buildInfoHtml(PsychicRequest *request, PsychicResponse*
|
||||
response.print(_preferences->getString(preference_cred_user, "").length() > 0 ? "***" : "Not set");
|
||||
response.print("\nWeb configurator password: ");
|
||||
response.print(_preferences->getString(preference_cred_password, "").length() > 0 ? "***" : "Not set");
|
||||
response.print("\nWeb configurator authentication: ");
|
||||
response.print(_preferences->getBool(preference_http_auth_type, false) ? "Digest" : "Basic");
|
||||
response.print("\nWeb configurator enabled: ");
|
||||
response.print(_preferences->getBool(preference_webserver_enabled, true) ? "Yes" : "No");
|
||||
response.print("\nHTTP SSL: ");
|
||||
@@ -4912,6 +4969,16 @@ esp_err_t WebCfgServer::buildInfoHtml(PsychicRequest *request, PsychicResponse*
|
||||
#endif
|
||||
response.print("\nPublish debug information enabled: ");
|
||||
response.print(_preferences->getBool(preference_publish_debug_info, false) ? "Yes" : "No");
|
||||
response.print("\nNuki connect debug logging enabled: ");
|
||||
response.print(_preferences->getBool(preference_debug_connect, false) ? "Yes" : "No");
|
||||
response.print("\nNuki communication debug logging enabled: ");
|
||||
response.print(_preferences->getBool(preference_debug_communication, false) ? "Yes" : "No");
|
||||
response.print("\nNuki readable data debug logging enabled: ");
|
||||
response.print(_preferences->getBool(preference_debug_readable_data, false) ? "Yes" : "No");
|
||||
response.print("\nNuki hex data debug logging enabled: ");
|
||||
response.print(_preferences->getBool(preference_debug_hex_data, false) ? "Yes" : "No");
|
||||
response.print("\nNuki command debug logging enabled: ");
|
||||
response.print(_preferences->getBool(preference_debug_command, false) ? "Yes" : "No");
|
||||
response.print("\nMQTT log enabled: ");
|
||||
response.print(_preferences->getBool(preference_mqtt_log_enabled, false) ? "Yes" : "No");
|
||||
response.print("\nWebserial enabled: ");
|
||||
@@ -4963,8 +5030,6 @@ esp_err_t WebCfgServer::buildInfoHtml(PsychicRequest *request, PsychicResponse*
|
||||
response.print("\nStatic IP DNS server: ");
|
||||
response.print(_preferences->getString(preference_ip_dns_server, ""));
|
||||
}
|
||||
|
||||
#ifndef CONFIG_IDF_TARGET_ESP32H2
|
||||
if(_network->networkDeviceName() == "Built-in Wi-Fi")
|
||||
{
|
||||
response.print("\nRSSI Publish interval (s): ");
|
||||
@@ -4981,9 +5046,16 @@ esp_err_t WebCfgServer::buildInfoHtml(PsychicRequest *request, PsychicResponse*
|
||||
response.print("\nFind WiFi AP with strongest signal: ");
|
||||
response.print(_preferences->getBool(preference_find_best_rssi, false) ? "Yes" : "No");
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
else if(network->networkDeviceType() == NetworkDeviceType::CUSTOM)
|
||||
{
|
||||
|
||||
}
|
||||
*/
|
||||
response.print("\nRestart ESP32 on network disconnect enabled: ");
|
||||
response.print(_preferences->getBool(preference_restart_on_disconnect, false) ? "Yes" : "No");
|
||||
response.print("\nDisable Network if not connected within 60s: ");
|
||||
response.print(_preferences->getBool(preference_disable_network_not_connected, false) ? "Yes" : "No");
|
||||
response.print("\nMQTT Timeout until restart (s): ");
|
||||
if(_preferences->getInt(preference_network_timeout, 60) < 0)
|
||||
{
|
||||
@@ -5039,6 +5111,8 @@ esp_err_t WebCfgServer::buildInfoHtml(PsychicRequest *request, PsychicResponse*
|
||||
response.print("Disabled");
|
||||
}
|
||||
response.print("\n\n------------ BLUETOOTH ------------");
|
||||
response.print("\nBluetooth connection mode: ");
|
||||
response.print(_preferences->getBool(preference_connect_mode, false) ? "New" : "Old");
|
||||
response.print("\nBluetooth TX power (dB): ");
|
||||
response.print(_preferences->getInt(preference_ble_tx_power, 9));
|
||||
response.print("\nBluetooth command nr of retries: ");
|
||||
@@ -5086,6 +5160,12 @@ esp_err_t WebCfgServer::buildInfoHtml(PsychicRequest *request, PsychicResponse*
|
||||
response.print(_preferences->getBool(preference_timecontrol_topic_per_entry, false) ? "Yes" : "No");
|
||||
response.print("\nMax timecontrol entries to retrieve: ");
|
||||
response.print(_preferences->getInt(preference_timecontrol_max_entries, MAX_TIMECONTROL));
|
||||
response.print("\nEnable authorization control: ");
|
||||
response.print(_preferences->getBool(preference_auth_info_enabled, false) ? "Yes" : "No");
|
||||
response.print("\nPublish authorization topic per entry: ");
|
||||
response.print(_preferences->getBool(preference_auth_topic_per_entry, false) ? "Yes" : "No");
|
||||
response.print("\nMax authorization entries to retrieve: ");
|
||||
response.print(_preferences->getInt(preference_auth_max_entries, MAX_AUTH));
|
||||
response.print("\n\n------------ HOME ASSISTANT ------------");
|
||||
response.print("\nHome Assistant auto discovery enabled: ");
|
||||
if(_preferences->getString(preference_mqtt_hass_discovery, "").length() > 0)
|
||||
@@ -5110,6 +5190,8 @@ esp_err_t WebCfgServer::buildInfoHtml(PsychicRequest *request, PsychicResponse*
|
||||
else
|
||||
{
|
||||
response.print("\nLock enabled: Yes");
|
||||
response.print("\nLock Ultra enabled: ");
|
||||
response.print(_preferences->getBool(preference_lock_gemini_enabled, false) ? "Yes" : "No");
|
||||
response.print("\nPaired: ");
|
||||
response.print(_nuki->isPaired() ? "Yes" : "No");
|
||||
response.print("\nNuki Hub device ID: ");
|
||||
@@ -5133,6 +5215,8 @@ esp_err_t WebCfgServer::buildInfoHtml(PsychicRequest *request, PsychicResponse*
|
||||
}
|
||||
response.print("\nTimecontrol highest entries count: ");
|
||||
response.print(_preferences->getInt(preference_lock_max_timecontrol_entry_count, 0));
|
||||
response.print("\nAuthorizations highest entries count: ");
|
||||
response.print(_preferences->getInt(preference_lock_max_auth_entry_count, 0));
|
||||
response.print("\nRegister as: ");
|
||||
response.print(_preferences->getBool(preference_register_as_app, false) ? "App" : "Bridge");
|
||||
response.print("\n\n------------ HYBRID MODE ------------");
|
||||
@@ -5145,21 +5229,27 @@ esp_err_t WebCfgServer::buildInfoHtml(PsychicRequest *request, PsychicResponse*
|
||||
response.print("\nHybrid mode enabled: Yes");
|
||||
response.print("\nHybrid mode connected: ");
|
||||
response.print(_nuki->offConnected() ? "Yes": "No");
|
||||
response.print("\nReboot Nuki lock on official MQTT failure: ");
|
||||
response.print(_preferences->getBool(preference_hybrid_reboot_on_disconnect, false) ? "Yes" : "No");
|
||||
response.print("\nSending actions through official MQTT enabled: ");
|
||||
response.print(_preferences->getBool(preference_official_hybrid_actions, false) ? "Yes" : "No");
|
||||
/* NOT IMPLEMENTED (YET?)
|
||||
if(_preferences->getBool(preference_official_hybrid_actions, false))
|
||||
{
|
||||
response.print("\nRetry actions through BLE enabled: ");
|
||||
response.print(_preferences->getBool(preference_official_hybrid_retry, false) ? "Yes" : "No");
|
||||
}
|
||||
*/
|
||||
response.print("\nTime between status updates when official MQTT is offline (s): ");
|
||||
response.print(_preferences->getInt(preference_query_interval_hybrid_lockstate, 600));
|
||||
}
|
||||
response.print("\nForce Lock ID: ");
|
||||
response.print(_preferences->getBool(preference_lock_force_id, false) ? "Yes" : "No");
|
||||
response.print("\nForce Lock Keypad: ");
|
||||
response.print(_preferences->getBool(preference_lock_force_keypad, false) ? "Yes" : "No");
|
||||
response.print("\nForce Lock Doorsensor: ");
|
||||
response.print(_preferences->getBool(preference_lock_force_doorsensor, false) ? "Yes" : "No");
|
||||
uint32_t basicLockConfigAclPrefs[16];
|
||||
_preferences->getBytes(preference_conf_lock_basic_acl, &basicLockConfigAclPrefs, sizeof(basicLockConfigAclPrefs));
|
||||
uint32_t advancedLockConfigAclPrefs[23];
|
||||
uint32_t advancedLockConfigAclPrefs[25];
|
||||
_preferences->getBytes(preference_conf_lock_advanced_acl, &advancedLockConfigAclPrefs, sizeof(advancedLockConfigAclPrefs));
|
||||
response.print("\n\n------------ NUKI LOCK ACL ------------");
|
||||
response.print("\nLock: ");
|
||||
@@ -5259,6 +5349,10 @@ esp_err_t WebCfgServer::buildInfoHtml(PsychicRequest *request, PsychicResponse*
|
||||
response.print((int)advancedLockConfigAclPrefs[21] ? "Allowed" : "Disallowed");
|
||||
response.print("\nReboot Nuki: ");
|
||||
response.print((int)advancedLockConfigAclPrefs[22] ? "Allowed" : "Disallowed");
|
||||
response.print("\nMotor speed: ");
|
||||
response.print((int)advancedLockConfigAclPrefs[23] ? "Allowed" : "Disallowed");
|
||||
response.print("\nEnable slow speed during nightmode: ");
|
||||
response.print((int)advancedLockConfigAclPrefs[24] ? "Allowed" : "Disallowed");
|
||||
|
||||
if(_preferences->getBool(preference_show_secrets))
|
||||
{
|
||||
@@ -5294,6 +5388,8 @@ esp_err_t WebCfgServer::buildInfoHtml(PsychicRequest *request, PsychicResponse*
|
||||
uint32_t authorizationIdInt = authorizationId[0] + 256U*authorizationId[1] + 65536U*authorizationId[2] + 16777216U*authorizationId[3];
|
||||
response.print("\nAuthorizationId (UINT32_T): ");
|
||||
response.print(authorizationIdInt);
|
||||
response.print("\nPaired to Nuki Lock Ultra: ");
|
||||
response.print(nukiBlePref.getBool("isUltra", false) ? "Yes" : "No");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5326,10 +5422,16 @@ esp_err_t WebCfgServer::buildInfoHtml(PsychicRequest *request, PsychicResponse*
|
||||
}
|
||||
response.print("\nTimecontrol highest entries count: ");
|
||||
response.print(_preferences->getInt(preference_opener_max_timecontrol_entry_count, 0));
|
||||
response.print("\nAuthorizations highest entries count: ");
|
||||
response.print(_preferences->getInt(preference_opener_max_auth_entry_count, 0));
|
||||
response.print("\nRegister as: ");
|
||||
response.print(_preferences->getBool(preference_register_opener_as_app, false) ? "App" : "Bridge");
|
||||
response.print("\nNuki Opener Lock/Unlock action set to Continuous mode in Home Assistant: ");
|
||||
response.print(_preferences->getBool(preference_opener_continuous_mode, false) ? "Yes" : "No");
|
||||
response.print("\nForce Opener ID: ");
|
||||
response.print(_preferences->getBool(preference_opener_force_id, false) ? "Yes" : "No");
|
||||
response.print("\nForce Opener Keypad: ");
|
||||
response.print(_preferences->getBool(preference_opener_force_keypad, false) ? "Yes" : "No");
|
||||
uint32_t basicOpenerConfigAclPrefs[14];
|
||||
_preferences->getBytes(preference_conf_opener_basic_acl, &basicOpenerConfigAclPrefs, sizeof(basicOpenerConfigAclPrefs));
|
||||
uint32_t advancedOpenerConfigAclPrefs[21];
|
||||
@@ -5453,10 +5555,15 @@ esp_err_t WebCfgServer::buildInfoHtml(PsychicRequest *request, PsychicResponse*
|
||||
sprintf(tmp, "%02x", authorizationIdOpn[i]);
|
||||
response.print(tmp);
|
||||
}
|
||||
uint32_t authorizationIdOpnInt = authorizationIdOpn[0] + 256U*authorizationIdOpn[1] + 65536U*authorizationIdOpn[2] + 16777216U*authorizationIdOpn[3];
|
||||
response.print("\nAuthorizationId (UINT32_T): ");
|
||||
response.print(authorizationIdOpnInt);
|
||||
}
|
||||
}
|
||||
|
||||
response.print("\n\n------------ GPIO ------------\n");
|
||||
response.print("\nRetain Input GPIO MQTT state: ");
|
||||
response.print(_preferences->getBool(preference_retain_gpio, false) ? "Yes" : "No");
|
||||
String gpioStr = "";
|
||||
_gpio->getConfigurationText(gpioStr, _gpio->pinConfiguration());
|
||||
response.print(gpioStr);
|
||||
@@ -5844,4 +5951,4 @@ String WebCfgServer::getPreselectionForGpio(const uint8_t &pin)
|
||||
|
||||
return String((int8_t)PinRole::Disabled);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
Reference in New Issue
Block a user