diff --git a/src/Config.h b/src/Config.h index d09cdbc..c2efd19 100644 --- a/src/Config.h +++ b/src/Config.h @@ -5,8 +5,8 @@ #define NUKI_HUB_VERSION "9.15" #define NUKI_HUB_VERSION_INT (uint32_t)915 #define NUKI_HUB_BUILD "unknownbuildnr" -#define NUKI_HUB_DATE "2025-11-24" -#define NUKI_HUB_DATE "2025-11-24" +#define NUKI_HUB_DATE "2026-01-09" +#define NUKI_HUB_DATE "2026-01-09" #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 20ef8fa..a05970c 100644 --- a/src/HomeAssistantDiscovery.cpp +++ b/src/HomeAssistantDiscovery.cpp @@ -3,7 +3,11 @@ #include "Logger.h" #include "PreferencesKeys.h" #include "MqttTopics.h" +#if defined(CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE) || defined(CONFIG_ESP_WIFI_REMOTE_ENABLED) +#include "WiFi.h" +#else #include "esp_mac.h" +#endif HomeAssistantDiscovery::HomeAssistantDiscovery(NetworkDevice* device, Preferences *preferences, char* buffer, size_t bufferSize) : _device(device), @@ -13,11 +17,34 @@ HomeAssistantDiscovery::HomeAssistantDiscovery(NetworkDevice* device, Preference { _baseTopic = _preferences->getString(preference_mqtt_lock_path); _hostname = _preferences->getString(preference_hostname, ""); +} + +void HomeAssistantDiscovery::setupHASS(int type, uint32_t nukiId, char* nukiName, const char* firmwareVersion, const char* hardwareVersion, bool hasDoorSensor, bool hasKeypad) +{ uint64_t savedDevId = _preferences->getULong64(preference_nukihub_id, 0); + uint64_t curDevId; + + #if defined(CONFIG_ESP_HOSTED_ENABLE_BT_NIMBLE) || defined(CONFIG_ESP_WIFI_REMOTE_ENABLED) + curDevId = 0; + std::string macString = std::string(WiFi.macAddress().c_str()); + std::string::iterator i; + std::string::iterator end = macString.end(); + + for(i = macString.begin(); i != end; ++i) { + char let = *i; + if (let >= '0' && let <= '9') { + curDevId = curDevId*0xf + (let-'0'); + } else if (let >= 'a' && let <= 'f') { + curDevId = curDevId*0xf + (let-'a'+10); + } else if (let >= 'A' && let <= 'F') { + curDevId = curDevId*0xf + (let-'A'+10); + } + } + #else uint8_t mac[8]; esp_efuse_mac_get_default(mac); - uint64_t curDevId; memcpy(&curDevId, &mac, 8); + #endif if (savedDevId == 0) { @@ -57,10 +84,7 @@ HomeAssistantDiscovery::HomeAssistantDiscovery(NetworkDevice* device, Preference } sprintf(_nukiHubUidString, "%" PRIu64, curDevId); -} -void HomeAssistantDiscovery::setupHASS(int type, uint32_t nukiId, char* nukiName, const char* firmwareVersion, const char* hardwareVersion, bool hasDoorSensor, bool hasKeypad) -{ char uidString[20]; itoa(nukiId, uidString, 16); bool publishAuthData = _preferences->getBool(preference_publish_authdata, false);