publish ble address via mqtt

This commit is contained in:
technyon
2023-01-10 18:04:40 +01:00
parent 082d5a3d66
commit de34e1a78e
7 changed files with 17 additions and 1 deletions

View File

@@ -20,6 +20,7 @@
#define mqtt_topic_lock_door_sensor_state "/lock/doorSensorState"
#define mqtt_topic_lock_action "/lock/action"
#define mqtt_topic_lock_rssi "/lock/rssi"
#define mqtt_topic_lock_address "/lock/address"
#define mqtt_topic_config_button_enabled "/configuration/buttonEnabled"
#define mqtt_topic_config_led_enabled "/configuration/ledEnabled"

View File

@@ -388,6 +388,11 @@ void NetworkLock::publishRssi(const int& rssi)
publishInt(mqtt_topic_lock_rssi, rssi);
}
void NetworkLock::publishBleAddress(const std::string &address)
{
publishString(mqtt_topic_lock_address, address.c_str());
}
void NetworkLock::publishKeypad(const std::list<NukiLock::KeypadEntry>& entries, uint maxKeypadCodeCount)
{
uint index = 0;

View File

@@ -28,6 +28,7 @@ public:
void publishConfig(const NukiLock::Config& config);
void publishAdvancedConfig(const NukiLock::AdvancedConfig& config);
void publishRssi(const int& rssi);
void publishBleAddress(const std::string& address);
void publishHASSConfig(char* deviceType, const char* baseTopic, char* name, char* uidString, char* lockAction, char* unlockAction, char* openAction, char* lockedState, char* unlockedState);
void removeHASSConfig(char* uidString);
void publishKeypad(const std::list<NukiLock::KeypadEntry>& entries, uint maxKeypadCodeCount);

View File

@@ -367,6 +367,11 @@ void NetworkOpener::publishRssi(const int &rssi)
publishInt(mqtt_topic_lock_rssi, rssi);
}
void NetworkOpener::publishBleAddress(const std::string &address)
{
publishString(mqtt_topic_lock_address, address.c_str());
}
void NetworkOpener::publishHASSConfig(char* deviceType, const char* baseTopic, char* name, char* uidString, char* lockAction, char* unlockAction, char* openAction, char* lockedState, char* unlockedState)
{
_network->publishHASSConfig(deviceType, baseTopic, name, uidString, lockAction, unlockAction, openAction, lockedState, unlockedState);
@@ -449,4 +454,3 @@ bool NetworkOpener::comparePrefixedPath(const char *fullPath, const char *subPat
buildMqttPath(subPath, prefixedPath);
return strcmp(fullPath, prefixedPath) == 0;
}

View File

@@ -29,6 +29,7 @@ public:
void publishConfig(const NukiOpener::Config& config);
void publishAdvancedConfig(const NukiOpener::AdvancedConfig& config);
void publishRssi(const int& rssi);
void publishBleAddress(const std::string& address);
void publishHASSConfig(char* deviceType, const char* baseTopic, char* name, char* uidString, char* lockAction, char* unlockAction, char* openAction, char* lockedState, char* unlockedState);
void removeHASSConfig(char* uidString);

View File

@@ -75,6 +75,7 @@ void NukiOpenerWrapper::update()
if (!_paired)
{
Log->println(F("Nuki opener start pairing"));
_network->publishBleAddress("");
Nuki::AuthorizationIdType idType = _preferences->getBool(preference_register_as_app) ?
Nuki::AuthorizationIdType::App :
@@ -83,6 +84,7 @@ void NukiOpenerWrapper::update()
if (_nukiOpener.pairNuki(idType) == NukiOpener::PairingResult::Success) {
Log->println(F("Nuki opener paired"));
_paired = true;
_network->publishBleAddress(_nukiOpener.getBleAddress().toString());
}
else
{

View File

@@ -94,6 +94,7 @@ void NukiWrapper::update()
if (!_paired)
{
Log->println(F("Nuki start pairing"));
_network->publishBleAddress("");
Nuki::AuthorizationIdType idType = _preferences->getBool(preference_register_as_app) ?
Nuki::AuthorizationIdType::App :
@@ -102,6 +103,7 @@ void NukiWrapper::update()
if (_nukiLock.pairNuki(idType) == Nuki::PairingResult::Success) {
Log->println(F("Nuki paired"));
_paired = true;
_network->publishBleAddress(_nukiLock.getBleAddress().toString());
}
else
{