Fixes/Enhancements for pio/preferences, new info page, add reboot button, remove old files (#451)

* Preferences

* Info page

* Info page

* Remove old files + Info page
This commit is contained in:
iranl
2024-08-12 17:53:00 +02:00
committed by GitHub
parent 21adca01e7
commit 346c5c65d1
59 changed files with 1459 additions and 1403 deletions

View File

@@ -1,5 +1,4 @@
#include "NukiOpenerWrapper.h"
#include <RTOS.h>
#include "PreferencesKeys.h"
#include "MqttTopics.h"
#include "Logger.h"
@@ -51,14 +50,16 @@ void NukiOpenerWrapper::initialize()
esp_power_level_t powerLevel;
if(_preferences->getInt(preference_ble_tx_power, 9) >= 9) powerLevel = ESP_PWR_LVL_P9;
else if(_preferences->getInt(preference_ble_tx_power, 9) >= 6) powerLevel = ESP_PWR_LVL_P6;
else if(_preferences->getInt(preference_ble_tx_power, 9) >= 3) powerLevel = ESP_PWR_LVL_P6;
else if(_preferences->getInt(preference_ble_tx_power, 9) >= 0) powerLevel = ESP_PWR_LVL_P3;
else if(_preferences->getInt(preference_ble_tx_power, 9) >= -3) powerLevel = ESP_PWR_LVL_N3;
else if(_preferences->getInt(preference_ble_tx_power, 9) >= -6) powerLevel = ESP_PWR_LVL_N6;
else if(_preferences->getInt(preference_ble_tx_power, 9) >= -9) powerLevel = ESP_PWR_LVL_N9;
else if(_preferences->getInt(preference_ble_tx_power, 9) >= -12) powerLevel = ESP_PWR_LVL_N12;
int pwrLvl = _preferences->getInt(preference_ble_tx_power, 9);
if(pwrLvl >= 9) powerLevel = ESP_PWR_LVL_P9;
else if(pwrLvl >= 6) powerLevel = ESP_PWR_LVL_P6;
else if(pwrLvl >= 3) powerLevel = ESP_PWR_LVL_P6;
else if(pwrLvl >= 0) powerLevel = ESP_PWR_LVL_P3;
else if(pwrLvl >= -3) powerLevel = ESP_PWR_LVL_N3;
else if(pwrLvl >= -6) powerLevel = ESP_PWR_LVL_N6;
else if(pwrLvl >= -9) powerLevel = ESP_PWR_LVL_N9;
else if(pwrLvl >= -12) powerLevel = ESP_PWR_LVL_N12;
_nukiOpener.setPower(powerLevel);
_nukiOpener.registerBleScanner(_bleScanner);
@@ -76,6 +77,8 @@ void NukiOpenerWrapper::initialize()
_nrOfRetries = _preferences->getInt(preference_command_nr_of_retries, 200);
_retryDelay = _preferences->getInt(preference_command_retry_delay);
_rssiPublishInterval = _preferences->getInt(preference_rssi_publish_interval) * 1000;
_preferences->getBytes(preference_conf_opener_basic_acl, &_basicOpenerConfigAclPrefs, sizeof(_basicOpenerConfigAclPrefs));
_preferences->getBytes(preference_conf_opener_advanced_acl, &_advancedOpenerConfigAclPrefs, sizeof(_advancedOpenerConfigAclPrefs));
if(_nrOfRetries < 0 || _nrOfRetries == 200)
{
@@ -477,7 +480,8 @@ void NukiOpenerWrapper::updateConfig()
_firmwareVersion = std::to_string(_nukiConfig.firmwareVersion[0]) + "." + std::to_string(_nukiConfig.firmwareVersion[1]) + "." + std::to_string(_nukiConfig.firmwareVersion[2]);
_hardwareVersion = std::to_string(_nukiConfig.hardwareRevision[0]) + "." + std::to_string(_nukiConfig.hardwareRevision[1]);
if(_preferences->getBool(preference_conf_info_enabled, true)) _network->publishConfig(_nukiConfig);
if(_preferences->getBool(preference_timecontrol_info_enabled)) updateTimeControl(false);
_retryConfigCount = 0;
if(_preferences->getBool(preference_timecontrol_info_enabled, false)) updateTimeControl(false);
const int pinStatus = _preferences->getInt(preference_opener_pin_status, 4);
@@ -993,13 +997,6 @@ void NukiOpenerWrapper::onConfigUpdateReceived(const char *value)
const char *advancedKeys[20] = {"intercomID", "busModeSwitch", "shortCircuitDuration", "electricStrikeDelay", "randomElectricStrikeDelay", "electricStrikeDuration", "disableRtoAfterRing", "rtoTimeout", "doorbellSuppression", "doorbellSuppressionDuration", "soundRing", "soundOpen", "soundRto", "soundCm", "soundConfirmation", "soundLevel", "singleButtonPressAction", "doubleButtonPressAction", "batteryType", "automaticBatteryTypeDetection"};
bool basicUpdated = false;
bool advancedUpdated = false;
uint32_t basicOpenerConfigAclPrefs[16];
uint32_t advancedOpenerConfigAclPrefs[20];
nukiOpenerPreferences = new Preferences();
nukiOpenerPreferences->begin("nukihub", true);
nukiOpenerPreferences->getBytes(preference_conf_opener_basic_acl, &basicOpenerConfigAclPrefs, sizeof(basicOpenerConfigAclPrefs));
nukiOpenerPreferences->getBytes(preference_conf_opener_advanced_acl, &advancedOpenerConfigAclPrefs, sizeof(advancedOpenerConfigAclPrefs));
for(int i=0; i < 14; i++)
{
@@ -1013,7 +1010,7 @@ void NukiOpenerWrapper::onConfigUpdateReceived(const char *value)
continue;
}
if((int)basicOpenerConfigAclPrefs[i] == 1)
if((int)_basicOpenerConfigAclPrefs[i] == 1)
{
cmdResult = Nuki::CmdResult::Error;
_retryCount = 0;
@@ -1203,7 +1200,7 @@ void NukiOpenerWrapper::onConfigUpdateReceived(const char *value)
continue;
}
if((int)advancedOpenerConfigAclPrefs[j] == 1)
if((int)_advancedOpenerConfigAclPrefs[j] == 1)
{
cmdResult = Nuki::CmdResult::Error;
_retryCount = 0;
@@ -1449,8 +1446,6 @@ void NukiOpenerWrapper::onConfigUpdateReceived(const char *value)
}
}
nukiOpenerPreferences->end();
if(basicUpdated || advancedUpdated) jsonResult["general"] = "success";
else jsonResult["general"] = "noChange";
@@ -1501,7 +1496,7 @@ void NukiOpenerWrapper::onKeypadCommandReceived(const char *command, const uint
{
if(_preferences->getBool(preference_disable_non_json, false)) return;
if(!_preferences->getBool(preference_keypad_control_enabled))
if(!_preferences->getBool(preference_keypad_control_enabled, false))
{
_network->publishKeypadCommandResult("KeypadControlDisabled");
return;
@@ -1637,7 +1632,7 @@ void NukiOpenerWrapper::onKeypadJsonCommandReceived(const char *value)
return;
}
if(!_preferences->getBool(preference_keypad_control_enabled))
if(!_preferences->getBool(preference_keypad_control_enabled, false))
{
_network->publishKeypadJsonCommandResult("keypadControlDisabled");
return;
@@ -2097,7 +2092,7 @@ void NukiOpenerWrapper::onTimeControlCommandReceived(const char *value)
return;
}
if(!_preferences->getBool(preference_timecontrol_control_enabled))
if(!_preferences->getBool(preference_timecontrol_control_enabled, false))
{
_network->publishTimeControlCommandResult("timeControlControlDisabled");
return;
@@ -2399,7 +2394,7 @@ void NukiOpenerWrapper::setupHASS()
char uidString[20];
itoa(_nukiConfig.nukiId, uidString, 16);
if(_preferences->getBool(preference_opener_continuous_mode)) _network->publishHASSConfig((char*)"Opener", baseTopic.c_str(), (char*)_nukiConfig.name, uidString, _firmwareVersion.c_str(), _hardwareVersion.c_str(), _publishAuthData, _hasKeypad, (char*)"deactivateCM", (char*)"activateCM", (char*)"electricStrikeActuation");
if(_preferences->getBool(preference_opener_continuous_mode, false)) _network->publishHASSConfig((char*)"Opener", baseTopic.c_str(), (char*)_nukiConfig.name, uidString, _firmwareVersion.c_str(), _hardwareVersion.c_str(), _publishAuthData, _hasKeypad, (char*)"deactivateCM", (char*)"activateCM", (char*)"electricStrikeActuation");
else _network->publishHASSConfig((char*)"Opener", baseTopic.c_str(), (char*)_nukiConfig.name, uidString, _firmwareVersion.c_str(), _hardwareVersion.c_str(), _publishAuthData, _hasKeypad, (char*)"deactivateRTO", (char*)"activateRTO", (char*)"electricStrikeActuation");
_hassSetupCompleted = true;