Merge pull request #339 from iranl/validate-pin

Validate pin
This commit is contained in:
Jan-Ole Schümann
2024-04-20 12:08:08 +07:00
committed by GitHub
4 changed files with 93 additions and 2 deletions

View File

@@ -406,6 +406,31 @@ void NukiOpenerWrapper::updateConfig()
_hardwareVersion = std::to_string(_nukiConfig.hardwareRevision[0]) + "." + std::to_string(_nukiConfig.hardwareRevision[1]);
_network->publishConfig(_nukiConfig);
_retryConfigCount = 0;
const int pinStatus = _preferences->getInt(preference_opener_pin_status, 4);
if(isPinSet()) {
Nuki::CmdResult result = _nukiOpener.verifySecurityPin();
if(result != Nuki::CmdResult::Success)
{
if(pinStatus != 2) {
_preferences->putInt(preference_opener_pin_status, 2);
}
}
else
{
if(pinStatus != 1) {
_preferences->putInt(preference_opener_pin_status, 1);
}
}
}
else
{
if(pinStatus != 0) {
_preferences->putInt(preference_opener_pin_status, 0);
}
}
}
else
{

View File

@@ -379,6 +379,31 @@ void NukiWrapper::updateConfig()
_hardwareVersion = std::to_string(_nukiConfig.hardwareRevision[0]) + "." + std::to_string(_nukiConfig.hardwareRevision[1]);
_network->publishConfig(_nukiConfig);
_retryConfigCount = 0;
const int pinStatus = _preferences->getInt(preference_lock_pin_status, 4);
if(isPinSet()) {
Nuki::CmdResult result = _nukiLock.verifySecurityPin();
if(result != Nuki::CmdResult::Success)
{
if(pinStatus != 2) {
_preferences->putInt(preference_lock_pin_status, 2);
}
}
else
{
if(pinStatus != 1) {
_preferences->putInt(preference_lock_pin_status, 1);
}
}
}
else
{
if(pinStatus != 0) {
_preferences->putInt(preference_lock_pin_status, 0);
}
}
}
else
{

View File

@@ -14,8 +14,10 @@
#define preference_mqtt_password "mqttpass"
#define preference_mqtt_log_enabled "mqttlog"
#define preference_lock_enabled "lockena"
#define preference_lock_pin_status "lockpin"
#define preference_mqtt_lock_path "mqttpath"
#define preference_opener_enabled "openerena"
#define preference_opener_pin_status "openerpin"
#define preference_opener_continuous_mode "openercont"
#define preference_mqtt_opener_path "mqttoppath"
#define preference_check_updates "checkupdates"
@@ -71,8 +73,8 @@ private:
std::vector<char*> _keys =
{
preference_started_before, preference_config_version, preference_device_id_lock, preference_device_id_opener, preference_nuki_id_lock, preference_nuki_id_opener, preference_mqtt_broker, preference_mqtt_broker_port, preference_mqtt_user, preference_mqtt_password, preference_mqtt_log_enabled, preference_check_updates,
preference_lock_enabled, preference_mqtt_lock_path, preference_opener_enabled, preference_opener_continuous_mode, preference_mqtt_opener_path,
preference_lock_max_keypad_code_count, preference_opener_max_keypad_code_count,
preference_lock_enabled, preference_lock_pin_status, preference_mqtt_lock_path, preference_opener_enabled, preference_opener_pin_status,
preference_opener_continuous_mode, preference_mqtt_opener_path, preference_lock_max_keypad_code_count, preference_opener_max_keypad_code_count,
preference_mqtt_ca, preference_mqtt_crt, preference_mqtt_key, preference_mqtt_hass_discovery, preference_mqtt_hass_cu_url,
preference_ip_dhcp_enabled, preference_ip_address, preference_ip_subnet, preference_ip_gateway, preference_ip_dns_server,
preference_network_hardware, preference_network_wifi_fallback_disabled, preference_rssi_publish_interval,

View File

@@ -710,6 +710,25 @@ void WebCfgServer::buildHtml(String& response)
NukiLock::lockstateToString(_nuki->keyTurnerState().lockState, lockstateArr);
printParameter(response, "Nuki Lock paired", _nuki->isPaired() ? ("Yes (BLE Address " + _nuki->getBleAddress().toString() + ")").c_str() : "No");
printParameter(response, "Nuki Lock state", lockstateArr);
if(_nuki->isPaired())
{
switch(_preferences->getInt(preference_lock_pin_status, 4))
{
case 0:
printParameter(response, "Nuki Lock PIN status", "PIN not set");
break;
case 1:
printParameter(response, "Nuki Lock PIN status", "PIN valid");
break;
case 2:
printParameter(response, "Nuki Lock PIN status", "PIN set but invalid");
break;
default:
printParameter(response, "Nuki Lock PIN status", "Unknown");
break;
}
}
}
if(_nukiOpener != nullptr)
{
@@ -725,7 +744,27 @@ void WebCfgServer::buildHtml(String& response)
{
printParameter(response, "Nuki Opener state", lockstateArr);
}
if(_nukiOpener->isPaired())
{
switch(_preferences->getInt(preference_opener_pin_status, 4))
{
case 0:
printParameter(response, "Nuki Opener PIN status", "PIN not set");
break;
case 1:
printParameter(response, "Nuki Opener PIN status", "PIN valid");
break;
case 2:
printParameter(response, "Nuki Opener PIN status", "PIN set but invalid");
break;
default:
printParameter(response, "Nuki Opener PIN status", "Unknown");
break;
}
}
}
printParameter(response, "Firmware", version.c_str(), "/info");
if(_preferences->getBool(preference_check_updates))