diff --git a/lib/nuki_ble b/lib/nuki_ble index dc0696e..a579d58 160000 --- a/lib/nuki_ble +++ b/lib/nuki_ble @@ -1 +1 @@ -Subproject commit dc0696ebc26fdea760495e5b8ae2ef288136287e +Subproject commit a579d58a1c0d3d6119a780f4376b77046795cc16 diff --git a/src/Config.h b/src/Config.h index a180fe9..85ffa72 100644 --- a/src/Config.h +++ b/src/Config.h @@ -5,7 +5,7 @@ #define NUKI_HUB_VERSION "9.08" #define NUKI_HUB_VERSION_INT (uint32_t)908 #define NUKI_HUB_BUILD "unknownbuildnr" -#define NUKI_HUB_DATE "2025-01-14" +#define NUKI_HUB_DATE "2025-01-15" #define GITHUB_LATEST_RELEASE_URL (char*)"https://github.com/technyon/nuki_hub/releases/latest" #define GITHUB_OTA_MANIFEST_URL (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/manifest.json" diff --git a/src/HomeAssistantDiscovery.cpp b/src/HomeAssistantDiscovery.cpp index 6149bd1..84c246f 100644 --- a/src/HomeAssistantDiscovery.cpp +++ b/src/HomeAssistantDiscovery.cpp @@ -1537,7 +1537,7 @@ void HomeAssistantDiscovery::publishHASSConfigAdditionalLockEntities(char *devic removeHassTopic((char*)"switch", (char*)"detached_cylinder", uidString); } - if((int)advancedLockConfigAclPrefs[8] == 1) + if((int)advancedLockConfigAclPrefs[8] == 1 && !_preferences->getBool(preference_lock_gemini_enabled, false)) { JsonDocument json; json = createHassJson(uidString, "_battery_type", "Battery type", name, baseTopic, String("~") + mqtt_topic_config_advanced_json, deviceType, "", "", "config", String("~") + mqtt_topic_config_action, {{ (char*)"val_tpl", (char*)"{{value_json.batteryType}}" }, { (char*)"en", (char*)"true" }, { (char*)"cmd_tpl", (char*)"{ \"batteryType\": \"{{ value }}\" }" }}); @@ -1553,7 +1553,7 @@ void HomeAssistantDiscovery::publishHASSConfigAdditionalLockEntities(char *devic removeHassTopic((char*)"select", (char*)"battery_type", uidString); } - if((int)advancedLockConfigAclPrefs[9] == 1) + if((int)advancedLockConfigAclPrefs[9] == 1 && !_preferences->getBool(preference_lock_gemini_enabled, false)) { // Automatic battery type detection publishHassTopic("switch", diff --git a/src/NukiNetworkLock.cpp b/src/NukiNetworkLock.cpp index fa61ba9..8ecd0b1 100644 --- a/src/NukiNetworkLock.cpp +++ b/src/NukiNetworkLock.cpp @@ -920,10 +920,14 @@ void NukiNetworkLock::publishAdvancedConfig(const NukiLock::AdvancedConfig &conf buttonPressActionToString(config.doubleButtonPressAction, str); json["doubleButtonPressAction"] = str; json["detachedCylinder"] = config.detachedCylinder; - memset(str, 0, sizeof(str)); - _network->batteryTypeToString(config.batteryType, str); - json["batteryType"] = str; - json["automaticBatteryTypeDetection"] = config.automaticBatteryTypeDetection; + + if (!_isUltra) + { + memset(str, 0, sizeof(str)); + _network->batteryTypeToString(config.batteryType, str); + json["batteryType"] = str; + json["automaticBatteryTypeDetection"] = config.automaticBatteryTypeDetection; + } json["unlatchDuration"] = config.unlatchDuration; json["autoLockTimeOut"] = config.autoLockTimeOut; json["autoUnLockDisabled"] = config.autoUnLockDisabled; @@ -1152,24 +1156,28 @@ void NukiNetworkLock::publishKeypad(const std::list& entr } else { - for(int i=0; iremoveTopic(codeTopic, "id"); - _network->removeTopic(codeTopic, "enabled"); - _network->removeTopic(codeTopic, "code"); - _network->removeTopic(codeTopic, "name"); - _network->removeTopic(codeTopic, "createdYear"); - _network->removeTopic(codeTopic, "createdMonth"); - _network->removeTopic(codeTopic, "createdDay"); - _network->removeTopic(codeTopic, "createdHour"); - _network->removeTopic(codeTopic, "createdMin"); - _network->removeTopic(codeTopic, "createdSec"); - _network->removeTopic(codeTopic, "lockCount"); + _clearNonJsonKeypad = false; + for(int i=0; iremoveTopic(codeTopic, "id"); + _network->removeTopic(codeTopic, "enabled"); + _network->removeTopic(codeTopic, "code"); + _network->removeTopic(codeTopic, "name"); + _network->removeTopic(codeTopic, "createdYear"); + _network->removeTopic(codeTopic, "createdMonth"); + _network->removeTopic(codeTopic, "createdDay"); + _network->removeTopic(codeTopic, "createdHour"); + _network->removeTopic(codeTopic, "createdMin"); + _network->removeTopic(codeTopic, "createdSec"); + _network->removeTopic(codeTopic, "lockCount"); + } } for(int j=entries.size(); j& en } else { - for(int i=0; iremoveTopic(codeTopic, "id"); - _network->removeTopic(codeTopic, "enabled"); - _network->removeTopic(codeTopic, "code"); - _network->removeTopic(codeTopic, "name"); - _network->removeTopic(codeTopic, "createdYear"); - _network->removeTopic(codeTopic, "createdMonth"); - _network->removeTopic(codeTopic, "createdDay"); - _network->removeTopic(codeTopic, "createdHour"); - _network->removeTopic(codeTopic, "createdMin"); - _network->removeTopic(codeTopic, "createdSec"); - _network->removeTopic(codeTopic, "lockCount"); + _clearNonJsonKeypad = false; + for(int i=0; iremoveTopic(codeTopic, "id"); + _network->removeTopic(codeTopic, "enabled"); + _network->removeTopic(codeTopic, "code"); + _network->removeTopic(codeTopic, "name"); + _network->removeTopic(codeTopic, "createdYear"); + _network->removeTopic(codeTopic, "createdMonth"); + _network->removeTopic(codeTopic, "createdDay"); + _network->removeTopic(codeTopic, "createdHour"); + _network->removeTopic(codeTopic, "createdMin"); + _network->removeTopic(codeTopic, "createdSec"); + _network->removeTopic(codeTopic, "lockCount"); + } } for(int j=entries.size(); jbatteryTypeToEnum(jsonchar); - if((int)battype != 0xff) + if((int)battype != 0xff && !_isUltra) { if(_nukiAdvancedConfig.batteryType == battype) { @@ -2116,7 +2116,7 @@ void NukiWrapper::onConfigUpdateReceived(const char *value) { const uint8_t keyvalue = atoi(jsonchar); - if(keyvalue == 0 || keyvalue == 1) + if((keyvalue == 0 || keyvalue == 1) && !_isUltra) { if(_nukiAdvancedConfig.automaticBatteryTypeDetection == keyvalue) { diff --git a/src/WebCfgServer.cpp b/src/WebCfgServer.cpp index 0ea95e1..7ea95ee 100644 --- a/src/WebCfgServer.cpp +++ b/src/WebCfgServer.cpp @@ -5112,7 +5112,7 @@ esp_err_t WebCfgServer::buildInfoHtml(PsychicRequest *request, PsychicResponse* } response.print("\n\n------------ BLUETOOTH ------------"); response.print("\nBluetooth connection mode: "); - response.print(_preferences->getBool(preference_connect_mode, false) ? "New" : "Old"); + response.print(_preferences->getBool(preference_connect_mode, true) ? "New" : "Old"); response.print("\nBluetooth TX power (dB): "); response.print(_preferences->getInt(preference_ble_tx_power, 9)); response.print("\nBluetooth command nr of retries: ");