Fix HA device ID
This commit is contained in:
Submodule lib/nuki_ble updated: 96774f55de...341c956cc9
@@ -3,6 +3,7 @@
|
|||||||
#include "Logger.h"
|
#include "Logger.h"
|
||||||
#include "PreferencesKeys.h"
|
#include "PreferencesKeys.h"
|
||||||
#include "MqttTopics.h"
|
#include "MqttTopics.h"
|
||||||
|
#include "esp_mac.h"
|
||||||
|
|
||||||
HomeAssistantDiscovery::HomeAssistantDiscovery(NetworkDevice* device, Preferences *preferences, char* buffer, size_t bufferSize)
|
HomeAssistantDiscovery::HomeAssistantDiscovery(NetworkDevice* device, Preferences *preferences, char* buffer, size_t bufferSize)
|
||||||
: _device(device),
|
: _device(device),
|
||||||
@@ -16,12 +17,15 @@ HomeAssistantDiscovery::HomeAssistantDiscovery(NetworkDevice* device, Preference
|
|||||||
_checkUpdates = _preferences->getBool(preference_check_updates, false);
|
_checkUpdates = _preferences->getBool(preference_check_updates, false);
|
||||||
_updateFromMQTT = _preferences->getBool(preference_update_from_mqtt, false);
|
_updateFromMQTT = _preferences->getBool(preference_update_from_mqtt, false);
|
||||||
_hostname = _preferences->getString(preference_hostname, "");
|
_hostname = _preferences->getString(preference_hostname, "");
|
||||||
uint32_t savedDevId = _preferences->getUInt(preference_nukihub_id, 0);
|
uint64_t savedDevId = _preferences->getULong64(preference_nukihub_id, 0);
|
||||||
uint32_t curDevId = ESP.getEfuseMac() & 0xFFFFFFFF;
|
uint8_t mac[8];
|
||||||
|
esp_efuse_mac_get_default(mac);
|
||||||
|
uint64_t curDevId;
|
||||||
|
memcpy(&curDevId, &mac, 8);
|
||||||
|
|
||||||
if (savedDevId == 0)
|
if (savedDevId == 0)
|
||||||
{
|
{
|
||||||
_preferences->putUInt(preference_nukihub_id, curDevId);
|
_preferences->putULong64(preference_nukihub_id, curDevId);
|
||||||
char uidString[20];
|
char uidString[20];
|
||||||
itoa(_preferences->getUInt(preference_device_id_lock, 0), uidString, 10);
|
itoa(_preferences->getUInt(preference_device_id_lock, 0), uidString, 10);
|
||||||
removeHASSConfig(uidString);
|
removeHASSConfig(uidString);
|
||||||
@@ -29,7 +33,7 @@ HomeAssistantDiscovery::HomeAssistantDiscovery(NetworkDevice* device, Preference
|
|||||||
}
|
}
|
||||||
else if(savedDevId != curDevId)
|
else if(savedDevId != curDevId)
|
||||||
{
|
{
|
||||||
_preferences->putUInt(preference_nukihub_id, curDevId);
|
_preferences->putULong64(preference_nukihub_id, curDevId);
|
||||||
Log->print("Efuse ID: ");
|
Log->print("Efuse ID: ");
|
||||||
Log->println(curDevId);
|
Log->println(curDevId);
|
||||||
Log->print("Saved ID: ");
|
Log->print("Saved ID: ");
|
||||||
|
|||||||
@@ -420,7 +420,7 @@ void NukiNetworkLock::publishKeyTurnerState(const NukiLock::KeyTurnerState& keyT
|
|||||||
json["lock_state"] = str;
|
json["lock_state"] = str;
|
||||||
}
|
}
|
||||||
|
|
||||||
json["lockngo_state"] = keyTurnerState.lockNgoTimer;
|
json["lockngo_state"] = keyTurnerState.lockNgoTimer != 255 ? keyTurnerState.lockNgoTimer : 0;
|
||||||
|
|
||||||
memset(&str, 0, sizeof(str));
|
memset(&str, 0, sizeof(str));
|
||||||
|
|
||||||
@@ -445,7 +445,7 @@ void NukiNetworkLock::publishKeyTurnerState(const NukiLock::KeyTurnerState& keyT
|
|||||||
sprintf(curTime, "%04d-%02d-%02d %02d:%02d:%02d", keyTurnerState.currentTimeYear, keyTurnerState.currentTimeMonth, keyTurnerState.currentTimeDay, keyTurnerState.currentTimeHour, keyTurnerState.currentTimeMinute, keyTurnerState.currentTimeSecond);
|
sprintf(curTime, "%04d-%02d-%02d %02d:%02d:%02d", keyTurnerState.currentTimeYear, keyTurnerState.currentTimeMonth, keyTurnerState.currentTimeDay, keyTurnerState.currentTimeHour, keyTurnerState.currentTimeMinute, keyTurnerState.currentTimeSecond);
|
||||||
json["currentTime"] = curTime;
|
json["currentTime"] = curTime;
|
||||||
json["timeZoneOffset"] = keyTurnerState.timeZoneOffset;
|
json["timeZoneOffset"] = keyTurnerState.timeZoneOffset;
|
||||||
json["nightModeActive"] = keyTurnerState.nightModeActive;
|
json["nightModeActive"] = keyTurnerState.nightModeActive != 255 ? keyTurnerState.nightModeActive : 0;
|
||||||
|
|
||||||
memset(&str, 0, sizeof(str));
|
memset(&str, 0, sizeof(str));
|
||||||
|
|
||||||
@@ -495,7 +495,7 @@ void NukiNetworkLock::publishKeyTurnerState(const NukiLock::KeyTurnerState& keyT
|
|||||||
bool critical = (keyTurnerState.criticalBatteryState & 1) == 1;
|
bool critical = (keyTurnerState.criticalBatteryState & 1) == 1;
|
||||||
bool charging = (keyTurnerState.criticalBatteryState & 2) == 2;
|
bool charging = (keyTurnerState.criticalBatteryState & 2) == 2;
|
||||||
uint8_t level = ((keyTurnerState.criticalBatteryState & 0b11111100) >> 1);
|
uint8_t level = ((keyTurnerState.criticalBatteryState & 0b11111100) >> 1);
|
||||||
bool keypadCritical = (keyTurnerState.accessoryBatteryState & 1) == 1 ? (keyTurnerState.accessoryBatteryState & 3) == 3 : false;
|
bool keypadCritical = keyTurnerState.accessoryBatteryState != 255 ? ((keyTurnerState.accessoryBatteryState & 1) == 1 ? (keyTurnerState.accessoryBatteryState & 3) == 3 : false) : false;
|
||||||
|
|
||||||
jsonBattery["critical"] = critical ? "1" : "0";
|
jsonBattery["critical"] = critical ? "1" : "0";
|
||||||
jsonBattery["charging"] = charging ? "1" : "0";
|
jsonBattery["charging"] = charging ? "1" : "0";
|
||||||
@@ -514,7 +514,7 @@ void NukiNetworkLock::publishKeyTurnerState(const NukiLock::KeyTurnerState& keyT
|
|||||||
_nukiPublisher->publishBool(mqtt_topic_battery_keypad_critical, keypadCritical, true);
|
_nukiPublisher->publishBool(mqtt_topic_battery_keypad_critical, keypadCritical, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool doorSensorCritical = (keyTurnerState.accessoryBatteryState & 4) == 4 ? (keyTurnerState.accessoryBatteryState & 12) == 12 : false;
|
bool doorSensorCritical = keyTurnerState.accessoryBatteryState != 255 ? ((keyTurnerState.accessoryBatteryState & 4) == 4 ? (keyTurnerState.accessoryBatteryState & 12) == 12 : false) : false;
|
||||||
|
|
||||||
jsonBattery["doorSensorCritical"] = doorSensorCritical ? "1" : "0";
|
jsonBattery["doorSensorCritical"] = doorSensorCritical ? "1" : "0";
|
||||||
|
|
||||||
@@ -532,7 +532,7 @@ void NukiNetworkLock::publishKeyTurnerState(const NukiLock::KeyTurnerState& keyT
|
|||||||
json["door_sensor_state"] = str;
|
json["door_sensor_state"] = str;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (keyTurnerState.network > -1)
|
if (keyTurnerState.network != 255)
|
||||||
{
|
{
|
||||||
json["remoteAccessEnabled"] = ((keyTurnerState.network & 1) == 1) ? 1 : 0;
|
json["remoteAccessEnabled"] = ((keyTurnerState.network & 1) == 1) ? 1 : 0;
|
||||||
json["bridgePaired"] = (((keyTurnerState.network >> 1) & 1) == 1) ? 1 : 0;
|
json["bridgePaired"] = (((keyTurnerState.network >> 1) & 1) == 1) ? 1 : 0;
|
||||||
@@ -542,26 +542,26 @@ void NukiNetworkLock::publishKeyTurnerState(const NukiLock::KeyTurnerState& keyT
|
|||||||
json["threadSseUplinkEnabledByUser"] = (((keyTurnerState.network >> 5) & 1) == 1) ? 1 : 0;
|
json["threadSseUplinkEnabledByUser"] = (((keyTurnerState.network >> 5) & 1) == 1) ? 1 : 0;
|
||||||
json["nat64AvailableViaThread"] = (((keyTurnerState.network >> 6) & 1) == 1) ? 1 : 0;
|
json["nat64AvailableViaThread"] = (((keyTurnerState.network >> 6) & 1) == 1) ? 1 : 0;
|
||||||
}
|
}
|
||||||
if (keyTurnerState.bleConnectionStrength > -1)
|
if (keyTurnerState.bleConnectionStrength != 255)
|
||||||
{
|
{
|
||||||
json["bleConnectionStrength"] = keyTurnerState.bleConnectionStrength;
|
json["bleConnectionStrength"] = keyTurnerState.bleConnectionStrength;
|
||||||
}
|
}
|
||||||
if (keyTurnerState.wifiConnectionStrength > -1)
|
if (keyTurnerState.wifiConnectionStrength != 255)
|
||||||
{
|
{
|
||||||
json["wifiConnectionStrength"] = keyTurnerState.wifiConnectionStrength;
|
json["wifiConnectionStrength"] = keyTurnerState.wifiConnectionStrength;
|
||||||
}
|
}
|
||||||
if (keyTurnerState.wifi > -1)
|
if (keyTurnerState.wifi != 255)
|
||||||
{
|
{
|
||||||
json["wifiStatus"] = (keyTurnerState.wifi & 3);
|
json["wifiStatus"] = (keyTurnerState.wifi & 3);
|
||||||
json["sseStatus"] = ((keyTurnerState.wifi >> 2) & 3);
|
json["sseStatus"] = ((keyTurnerState.wifi >> 2) & 3);
|
||||||
json["wifiQuality"] = ((keyTurnerState.wifi >> 4) & 15);
|
json["wifiQuality"] = ((keyTurnerState.wifi >> 4) & 15);
|
||||||
}
|
}
|
||||||
if (keyTurnerState.mqtt > -1)
|
if (keyTurnerState.mqtt != 255)
|
||||||
{
|
{
|
||||||
json["mqttStatus"] = (keyTurnerState.mqtt & 3);
|
json["mqttStatus"] = (keyTurnerState.mqtt & 3);
|
||||||
json["mqttConnectionChannel"] = ((keyTurnerState.mqtt >> 2) & 1);
|
json["mqttConnectionChannel"] = ((keyTurnerState.mqtt >> 2) & 1);
|
||||||
}
|
}
|
||||||
if (keyTurnerState.thread > -1)
|
if (keyTurnerState.thread != 255)
|
||||||
{
|
{
|
||||||
json["threadConnectionStatus"] = (keyTurnerState.thread & 3);
|
json["threadConnectionStatus"] = (keyTurnerState.thread & 3);
|
||||||
json["threadSseStatus"] = ((keyTurnerState.thread >> 2) & 3);
|
json["threadSseStatus"] = ((keyTurnerState.thread >> 2) & 3);
|
||||||
@@ -866,7 +866,7 @@ void NukiNetworkLock::publishConfig(const NukiLock::Config &config)
|
|||||||
_network->advertisingModeToString(config.advertisingMode, str);
|
_network->advertisingModeToString(config.advertisingMode, str);
|
||||||
json["advertisingMode"] = str;
|
json["advertisingMode"] = str;
|
||||||
json["hasKeypad"] = config.hasKeypad;
|
json["hasKeypad"] = config.hasKeypad;
|
||||||
json["hasKeypadV2"] = config.hasKeypadV2;
|
json["hasKeypadV2"] = (config.hasKeypadV2 == 255 ? 0 : config.hasKeypadV2);
|
||||||
json["firmwareVersion"] = std::to_string(config.firmwareVersion[0]) + "." + std::to_string(config.firmwareVersion[1]) + "." + std::to_string(config.firmwareVersion[2]);
|
json["firmwareVersion"] = std::to_string(config.firmwareVersion[0]) + "." + std::to_string(config.firmwareVersion[1]) + "." + std::to_string(config.firmwareVersion[2]);
|
||||||
json["hardwareRevision"] = std::to_string(config.hardwareRevision[0]) + "." + std::to_string(config.hardwareRevision[1]);
|
json["hardwareRevision"] = std::to_string(config.hardwareRevision[0]) + "." + std::to_string(config.hardwareRevision[1]);
|
||||||
memset(str, 0, sizeof(str));
|
memset(str, 0, sizeof(str));
|
||||||
@@ -875,12 +875,12 @@ void NukiNetworkLock::publishConfig(const NukiLock::Config &config)
|
|||||||
memset(str, 0, sizeof(str));
|
memset(str, 0, sizeof(str));
|
||||||
_network->timeZoneIdToString(config.timeZoneId, str);
|
_network->timeZoneIdToString(config.timeZoneId, str);
|
||||||
json["timeZone"] = str;
|
json["timeZone"] = str;
|
||||||
json["deviceType"] = config.deviceType;
|
json["deviceType"] = (config.deviceType == 255 ? 0 : config.deviceType);
|
||||||
json["channel"] = config.network;
|
json["channel"] = (config.network == 255 ? 0 : config.network);
|
||||||
json["wifiCapable"] = config.network & 1;
|
json["wifiCapable"] = (config.network == 255 ? 0 : config.network & 1);
|
||||||
json["threadCapable"] = (((unsigned int)config.network & 2) != 0 ? 1 : 0);
|
json["threadCapable"] = (config.network == 255 ? 0 : ((config.network & 2) != 0 ? 1 : 0));
|
||||||
json["matterStatus"] = config.matterStatus;
|
json["matterStatus"] = (config.matterStatus == 255 ? 0 : config.matterStatus);
|
||||||
json["productVariant"] = config.productVariant;
|
json["productVariant"] = (config.productVariant == 255 ? 0 : config.productVariant);
|
||||||
|
|
||||||
serializeJson(json, _buffer, _bufferSize);
|
serializeJson(json, _buffer, _bufferSize);
|
||||||
_nukiPublisher->publishString(mqtt_topic_config_basic_json, _buffer, true);
|
_nukiPublisher->publishString(mqtt_topic_config_basic_json, _buffer, true);
|
||||||
|
|||||||
@@ -371,7 +371,7 @@ void NukiNetworkOpener::publishKeyTurnerState(const NukiOpener::OpenerState& key
|
|||||||
|
|
||||||
json["trigger"] = str;
|
json["trigger"] = str;
|
||||||
|
|
||||||
json["ringToOpenTimer"] = keyTurnerState.ringToOpenTimer;
|
json["ringToOpenTimer"] = keyTurnerState.ringToOpenTimer != 255 ? keyTurnerState.ringToOpenTimer : 0;
|
||||||
char curTime[20];
|
char curTime[20];
|
||||||
sprintf(curTime, "%04d-%02d-%02d %02d:%02d:%02d", keyTurnerState.currentTimeYear, keyTurnerState.currentTimeMonth, keyTurnerState.currentTimeDay, keyTurnerState.currentTimeHour, keyTurnerState.currentTimeMinute, keyTurnerState.currentTimeSecond);
|
sprintf(curTime, "%04d-%02d-%02d %02d:%02d:%02d", keyTurnerState.currentTimeYear, keyTurnerState.currentTimeMonth, keyTurnerState.currentTimeDay, keyTurnerState.currentTimeHour, keyTurnerState.currentTimeMinute, keyTurnerState.currentTimeSecond);
|
||||||
json["currentTime"] = curTime;
|
json["currentTime"] = curTime;
|
||||||
@@ -408,7 +408,7 @@ void NukiNetworkOpener::publishKeyTurnerState(const NukiOpener::OpenerState& key
|
|||||||
_nukiPublisher->publishBool(mqtt_topic_battery_critical, critical, true);
|
_nukiPublisher->publishBool(mqtt_topic_battery_critical, critical, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool keypadCritical = (keyTurnerState.accessoryBatteryState & 1) == 1 ? (keyTurnerState.accessoryBatteryState & 3) == 3 : false;
|
bool keypadCritical = keyTurnerState.accessoryBatteryState != 255 ? ((keyTurnerState.accessoryBatteryState & 1) == 1 ? (keyTurnerState.accessoryBatteryState & 3) == 3 : false) : false;
|
||||||
jsonBattery["keypadCritical"] = keypadCritical ? "1" : "0";
|
jsonBattery["keypadCritical"] = keypadCritical ? "1" : "0";
|
||||||
|
|
||||||
if((_firstTunerStatePublish || keyTurnerState.accessoryBatteryState != lastKeyTurnerState.accessoryBatteryState) && !_disableNonJSON)
|
if((_firstTunerStatePublish || keyTurnerState.accessoryBatteryState != lastKeyTurnerState.accessoryBatteryState) && !_disableNonJSON)
|
||||||
@@ -773,7 +773,7 @@ void NukiNetworkOpener::publishConfig(const NukiOpener::Config &config)
|
|||||||
_network->advertisingModeToString(config.advertisingMode, str);
|
_network->advertisingModeToString(config.advertisingMode, str);
|
||||||
json["advertisingMode"] = str;
|
json["advertisingMode"] = str;
|
||||||
json["hasKeypad"] = config.hasKeypad;
|
json["hasKeypad"] = config.hasKeypad;
|
||||||
json["hasKeypadV2"] = config.hasKeypadV2;
|
json["hasKeypadV2"] = (config.hasKeypadV2 == 255 ? 0 : config.hasKeypadV2);
|
||||||
json["firmwareVersion"] = std::to_string(config.firmwareVersion[0]) + "." + std::to_string(config.firmwareVersion[1]) + "." + std::to_string(config.firmwareVersion[2]);
|
json["firmwareVersion"] = std::to_string(config.firmwareVersion[0]) + "." + std::to_string(config.firmwareVersion[1]) + "." + std::to_string(config.firmwareVersion[2]);
|
||||||
json["hardwareRevision"] = std::to_string(config.hardwareRevision[0]) + "." + std::to_string(config.hardwareRevision[1]);
|
json["hardwareRevision"] = std::to_string(config.hardwareRevision[0]) + "." + std::to_string(config.hardwareRevision[1]);
|
||||||
memset(str, 0, sizeof(str));
|
memset(str, 0, sizeof(str));
|
||||||
|
|||||||
@@ -589,7 +589,7 @@ void NukiOpenerWrapper::updateConfig()
|
|||||||
|
|
||||||
if(_preferences->getUInt(preference_nuki_id_opener, 0) == _nukiConfig.nukiId)
|
if(_preferences->getUInt(preference_nuki_id_opener, 0) == _nukiConfig.nukiId)
|
||||||
{
|
{
|
||||||
_hasKeypad = _nukiConfig.hasKeypad == 1 || (_nukiConfig.hasKeypadV2 > 0 && _nukiConfig.hasKeypadV2 != 252);
|
_hasKeypad = _nukiConfig.hasKeypad == 1 || _nukiConfig.hasKeypadV2 == 1;
|
||||||
_firmwareVersion = std::to_string(_nukiConfig.firmwareVersion[0]) + "." + std::to_string(_nukiConfig.firmwareVersion[1]) + "." + std::to_string(_nukiConfig.firmwareVersion[2]);
|
_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]);
|
_hardwareVersion = std::to_string(_nukiConfig.hardwareRevision[0]) + "." + std::to_string(_nukiConfig.hardwareRevision[1]);
|
||||||
if(_preferences->getBool(preference_conf_info_enabled, true))
|
if(_preferences->getBool(preference_conf_info_enabled, true))
|
||||||
|
|||||||
@@ -589,7 +589,7 @@ void NukiWrapper::updateConfig()
|
|||||||
|
|
||||||
if(_preferences->getUInt(preference_nuki_id_lock, 0) == _nukiConfig.nukiId)
|
if(_preferences->getUInt(preference_nuki_id_lock, 0) == _nukiConfig.nukiId)
|
||||||
{
|
{
|
||||||
_hasKeypad = _nukiConfig.hasKeypad == 1 || (_nukiConfig.hasKeypadV2 > 0 && _nukiConfig.hasKeypadV2 != 252);
|
_hasKeypad = _nukiConfig.hasKeypad == 1 || _nukiConfig.hasKeypadV2 == 1;
|
||||||
_firmwareVersion = std::to_string(_nukiConfig.firmwareVersion[0]) + "." + std::to_string(_nukiConfig.firmwareVersion[1]) + "." + std::to_string(_nukiConfig.firmwareVersion[2]);
|
_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]);
|
_hardwareVersion = std::to_string(_nukiConfig.hardwareRevision[0]) + "." + std::to_string(_nukiConfig.hardwareRevision[1]);
|
||||||
if(_preferences->getBool(preference_conf_info_enabled, true))
|
if(_preferences->getBool(preference_conf_info_enabled, true))
|
||||||
|
|||||||
@@ -367,22 +367,22 @@ inline void initPreferences(Preferences* preferences)
|
|||||||
if (lastConfigVer < 907)
|
if (lastConfigVer < 907)
|
||||||
{
|
{
|
||||||
Log->println("Migration 9.07");
|
Log->println("Migration 9.07");
|
||||||
|
|
||||||
char ca[2200] = {0};
|
char ca[2200] = {0};
|
||||||
char cert[2200] = {0};
|
char cert[2200] = {0};
|
||||||
char key[2200] = {0};
|
char key[2200] = {0};
|
||||||
|
|
||||||
size_t caLength = preferences->getString(preference_mqtt_ca, ca, 2200);
|
size_t caLength = preferences->getString(preference_mqtt_ca, ca, 2200);
|
||||||
size_t crtLength = preferences->getString(preference_mqtt_crt, cert, 2200);
|
size_t crtLength = preferences->getString(preference_mqtt_crt, cert, 2200);
|
||||||
size_t keyLength = preferences->getString(preference_mqtt_key, key, 2200);
|
size_t keyLength = preferences->getString(preference_mqtt_key, key, 2200);
|
||||||
|
|
||||||
if (caLength > 1)
|
if (caLength > 1)
|
||||||
{
|
{
|
||||||
if (!SPIFFS.begin(true)) {
|
if (!SPIFFS.begin(true)) {
|
||||||
Log->println("SPIFFS Mount Failed");
|
Log->println("SPIFFS Mount Failed");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
File file = SPIFFS.open("/mqtt_ssl.ca", FILE_WRITE);
|
File file = SPIFFS.open("/mqtt_ssl.ca", FILE_WRITE);
|
||||||
if (!file) {
|
if (!file) {
|
||||||
Log->println("Failed to open /mqtt_ssl.ca for writing");
|
Log->println("Failed to open /mqtt_ssl.ca for writing");
|
||||||
@@ -396,9 +396,9 @@ inline void initPreferences(Preferences* preferences)
|
|||||||
file.close();
|
file.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rebootOnMigrate = true;
|
rebootOnMigrate = true;
|
||||||
preferences->putBool(preference_mqtt_ssl_enabled, true);
|
preferences->putBool(preference_mqtt_ssl_enabled, true);
|
||||||
preferences->putString(preference_mqtt_ca, "");
|
preferences->putString(preference_mqtt_ca, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -408,7 +408,7 @@ inline void initPreferences(Preferences* preferences)
|
|||||||
Log->println("SPIFFS Mount Failed");
|
Log->println("SPIFFS Mount Failed");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
File file = SPIFFS.open("/mqtt_ssl.crt", FILE_WRITE);
|
File file = SPIFFS.open("/mqtt_ssl.crt", FILE_WRITE);
|
||||||
if (!file) {
|
if (!file) {
|
||||||
Log->println("Failed to open /mqtt_ssl.crt for writing");
|
Log->println("Failed to open /mqtt_ssl.crt for writing");
|
||||||
@@ -422,18 +422,18 @@ inline void initPreferences(Preferences* preferences)
|
|||||||
file.close();
|
file.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rebootOnMigrate = true;
|
rebootOnMigrate = true;
|
||||||
preferences->putString(preference_mqtt_crt, "");
|
preferences->putString(preference_mqtt_crt, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (keyLength > 1)
|
if (keyLength > 1)
|
||||||
{
|
{
|
||||||
if (!SPIFFS.begin(true)) {
|
if (!SPIFFS.begin(true)) {
|
||||||
Log->println("SPIFFS Mount Failed");
|
Log->println("SPIFFS Mount Failed");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
File file = SPIFFS.open("/mqtt_ssl.key", FILE_WRITE);
|
File file = SPIFFS.open("/mqtt_ssl.key", FILE_WRITE);
|
||||||
if (!file) {
|
if (!file) {
|
||||||
Log->println("Failed to open /mqtt_ssl.key for writing");
|
Log->println("Failed to open /mqtt_ssl.key for writing");
|
||||||
@@ -447,13 +447,13 @@ inline void initPreferences(Preferences* preferences)
|
|||||||
file.close();
|
file.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rebootOnMigrate = true;
|
rebootOnMigrate = true;
|
||||||
preferences->putString(preference_mqtt_key, "");
|
preferences->putString(preference_mqtt_key, "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
preferences->putInt(preference_config_version, NUKI_HUB_VERSION_INT);
|
preferences->putInt(preference_config_version, NUKI_HUB_VERSION_INT);
|
||||||
|
|
||||||
if (rebootOnMigrate)
|
if (rebootOnMigrate)
|
||||||
{
|
{
|
||||||
restartEsp(RestartReason::OTACompleted);
|
restartEsp(RestartReason::OTACompleted);
|
||||||
@@ -493,8 +493,7 @@ private:
|
|||||||
};
|
};
|
||||||
std::vector<char*> _redact =
|
std::vector<char*> _redact =
|
||||||
{
|
{
|
||||||
preference_mqtt_user, preference_mqtt_password, preference_mqtt_ca, preference_mqtt_crt, preference_mqtt_key, preference_cred_user, preference_cred_password,
|
preference_mqtt_user, preference_mqtt_password, preference_cred_user, preference_cred_password, preference_nuki_id_lock, preference_nuki_id_opener, preference_wifi_pass
|
||||||
preference_nuki_id_lock, preference_nuki_id_opener, preference_wifi_pass
|
|
||||||
};
|
};
|
||||||
std::vector<char*> _boolPrefs =
|
std::vector<char*> _boolPrefs =
|
||||||
{
|
{
|
||||||
@@ -517,17 +516,24 @@ private:
|
|||||||
};
|
};
|
||||||
std::vector<char*> _intPrefs =
|
std::vector<char*> _intPrefs =
|
||||||
{
|
{
|
||||||
preference_config_version, preference_device_id_lock, preference_device_id_opener, preference_nuki_id_lock, preference_nuki_id_opener, preference_mqtt_broker_port,
|
preference_config_version, preference_mqtt_broker_port, preference_command_retry_delay, preference_query_interval_hybrid_lockstate,
|
||||||
preference_lock_pin_status, preference_opener_pin_status, preference_lock_max_keypad_code_count, preference_opener_max_keypad_code_count,
|
preference_lock_pin_status, preference_opener_pin_status, preference_lock_max_keypad_code_count, preference_opener_max_keypad_code_count,
|
||||||
preference_lock_max_timecontrol_entry_count, preference_opener_max_timecontrol_entry_count, preference_buffer_size, preference_network_hardware,
|
preference_lock_max_timecontrol_entry_count, preference_opener_max_timecontrol_entry_count, preference_buffer_size, preference_network_hardware,
|
||||||
preference_rssi_publish_interval, preference_network_timeout, preference_restart_ble_beacon_lost, preference_query_interval_lockstate,
|
preference_rssi_publish_interval, preference_network_timeout, preference_restart_ble_beacon_lost, preference_query_interval_lockstate,
|
||||||
preference_query_interval_configuration, preference_query_interval_battery, preference_query_interval_keypad, preference_command_nr_of_retries,
|
preference_query_interval_configuration, preference_query_interval_battery, preference_query_interval_keypad, preference_command_nr_of_retries,
|
||||||
preference_command_retry_delay, preference_query_interval_hybrid_lockstate,
|
|
||||||
preference_task_size_network, preference_task_size_nuki, preference_authlog_max_entries, preference_keypad_max_entries, preference_timecontrol_max_entries,
|
preference_task_size_network, preference_task_size_nuki, preference_authlog_max_entries, preference_keypad_max_entries, preference_timecontrol_max_entries,
|
||||||
preference_ble_tx_power, preference_network_custom_mdc, preference_network_custom_clk, preference_network_custom_phy, preference_network_custom_addr,
|
preference_ble_tx_power, preference_network_custom_mdc, preference_network_custom_clk, preference_network_custom_phy, preference_network_custom_addr,
|
||||||
preference_network_custom_irq, preference_network_custom_rst, preference_network_custom_cs, preference_network_custom_sck, preference_network_custom_miso,
|
preference_network_custom_irq, preference_network_custom_rst, preference_network_custom_cs, preference_network_custom_sck, preference_network_custom_miso,
|
||||||
preference_network_custom_mosi, preference_network_custom_pwr, preference_network_custom_mdio
|
preference_network_custom_mosi, preference_network_custom_pwr, preference_network_custom_mdio
|
||||||
};
|
};
|
||||||
|
std::vector<char*> _uintPrefs =
|
||||||
|
{
|
||||||
|
preference_device_id_lock, preference_device_id_opener, preference_nuki_id_lock, preference_nuki_id_opener
|
||||||
|
};
|
||||||
|
std::vector<char*> _uint64Prefs =
|
||||||
|
{
|
||||||
|
preference_nukihub_id
|
||||||
|
};
|
||||||
public:
|
public:
|
||||||
const std::vector<char*> getPreferencesKeys()
|
const std::vector<char*> getPreferencesKeys()
|
||||||
{
|
{
|
||||||
@@ -549,4 +555,12 @@ public:
|
|||||||
{
|
{
|
||||||
return _intPrefs;
|
return _intPrefs;
|
||||||
}
|
}
|
||||||
|
const std::vector<char*> getPreferencesUIntKeys()
|
||||||
|
{
|
||||||
|
return _uintPrefs;
|
||||||
|
}
|
||||||
|
const std::vector<char*> getPreferencesUInt64Keys()
|
||||||
|
{
|
||||||
|
return _uint64Prefs;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
@@ -3512,6 +3512,8 @@ bool WebCfgServer::processImport(PsychicRequest *request, PsychicResponse* resp,
|
|||||||
const std::vector<char*> boolPrefs = debugPreferences.getPreferencesBoolKeys();
|
const std::vector<char*> boolPrefs = debugPreferences.getPreferencesBoolKeys();
|
||||||
const std::vector<char*> bytePrefs = debugPreferences.getPreferencesByteKeys();
|
const std::vector<char*> bytePrefs = debugPreferences.getPreferencesByteKeys();
|
||||||
const std::vector<char*> intPrefs = debugPreferences.getPreferencesIntKeys();
|
const std::vector<char*> intPrefs = debugPreferences.getPreferencesIntKeys();
|
||||||
|
const std::vector<char*> uintPrefs = debugPreferences.getPreferencesUIntKeys();
|
||||||
|
const std::vector<char*> uint64Prefs = debugPreferences.getPreferencesUInt64Keys();
|
||||||
|
|
||||||
for(const auto& key : keysPrefs)
|
for(const auto& key : keysPrefs)
|
||||||
{
|
{
|
||||||
@@ -3527,14 +3529,6 @@ bool WebCfgServer::processImport(PsychicRequest *request, PsychicResponse* resp,
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(strcmp(key, preference_device_id_lock) == 0)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if(strcmp(key, preference_device_id_opener) == 0)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if(std::find(boolPrefs.begin(), boolPrefs.end(), key) != boolPrefs.end())
|
if(std::find(boolPrefs.begin(), boolPrefs.end(), key) != boolPrefs.end())
|
||||||
{
|
{
|
||||||
if (doc[key].as<String>().length() > 0)
|
if (doc[key].as<String>().length() > 0)
|
||||||
@@ -3559,7 +3553,30 @@ bool WebCfgServer::processImport(PsychicRequest *request, PsychicResponse* resp,
|
|||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if(std::find(uintPrefs.begin(), uintPrefs.end(), key) != uintPrefs.end())
|
||||||
|
{
|
||||||
|
if (doc[key].as<String>().length() > 0)
|
||||||
|
{
|
||||||
|
_preferences->putUInt(key, doc[key].as<uint32_t>());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_preferences->remove(key);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(std::find(uint64Prefs.begin(), uint64Prefs.end(), key) != uint64Prefs.end())
|
||||||
|
{
|
||||||
|
if (doc[key].as<String>().length() > 0)
|
||||||
|
{
|
||||||
|
_preferences->putULong64(key, doc[key].as<uint64_t>());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_preferences->remove(key);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (doc[key].as<String>().length() > 0)
|
if (doc[key].as<String>().length() > 0)
|
||||||
{
|
{
|
||||||
_preferences->putString(key, doc[key].as<String>());
|
_preferences->putString(key, doc[key].as<String>());
|
||||||
@@ -5057,7 +5074,7 @@ esp_err_t WebCfgServer::buildInfoHtml(PsychicRequest *request, PsychicResponse*
|
|||||||
response.print("\nNuki Hub configuration URL for HA: ");
|
response.print("\nNuki Hub configuration URL for HA: ");
|
||||||
response.print(_preferences->getString(preference_mqtt_hass_cu_url, "").length() > 0 ? _preferences->getString(preference_mqtt_hass_cu_url, "") : "http://" + _network->localIP());
|
response.print(_preferences->getString(preference_mqtt_hass_cu_url, "").length() > 0 ? _preferences->getString(preference_mqtt_hass_cu_url, "") : "http://" + _network->localIP());
|
||||||
response.print("\nNuki Hub ID: ");
|
response.print("\nNuki Hub ID: ");
|
||||||
response.print(_preferences->getUInt(preference_nukihub_id, 0));
|
response.print(_preferences->getULong64(preference_nukihub_id, 0));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user