fix clearing HA auto discovery
This commit is contained in:
81
Network.cpp
81
Network.cpp
@@ -592,7 +592,7 @@ void Network::publishHASSConfigRingDetect(char *deviceType, const char *baseTopi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Network::publishHASSWifiConfig(char *deviceType, const char *baseTopic, char *name, char *uidString)
|
void Network::publishHASSWifiRssiConfig(char *deviceType, const char *baseTopic, char *name, char *uidString)
|
||||||
{
|
{
|
||||||
if(_device->signalStrength() == 127)
|
if(_device->signalStrength() == 127)
|
||||||
{
|
{
|
||||||
@@ -603,7 +603,6 @@ void Network::publishHASSWifiConfig(char *deviceType, const char *baseTopic, cha
|
|||||||
|
|
||||||
if (discoveryTopic != "")
|
if (discoveryTopic != "")
|
||||||
{
|
{
|
||||||
// Battery level
|
|
||||||
String configJSON = "{\"dev\":{\"ids\":[\"nuki_";
|
String configJSON = "{\"dev\":{\"ids\":[\"nuki_";
|
||||||
configJSON.concat(uidString);
|
configJSON.concat(uidString);
|
||||||
configJSON.concat("\"],\"mf\":\"Nuki\",\"mdl\":\"");
|
configJSON.concat("\"],\"mf\":\"Nuki\",\"mdl\":\"");
|
||||||
@@ -625,31 +624,105 @@ void Network::publishHASSWifiConfig(char *deviceType, const char *baseTopic, cha
|
|||||||
String path = discoveryTopic;
|
String path = discoveryTopic;
|
||||||
path.concat("/sensor/");
|
path.concat("/sensor/");
|
||||||
path.concat(uidString);
|
path.concat(uidString);
|
||||||
path.concat("/signal_strength/config");
|
path.concat("/wifi_signal_strength/config");
|
||||||
|
|
||||||
_device->mqttClient()->publish(path.c_str(), configJSON.c_str(), true);
|
_device->mqttClient()->publish(path.c_str(), configJSON.c_str(), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Network::publishHASSBleRssiConfig(char *deviceType, const char *baseTopic, char *name, char *uidString)
|
||||||
|
{
|
||||||
|
String discoveryTopic = _preferences->getString(preference_mqtt_hass_discovery);
|
||||||
|
|
||||||
|
if (discoveryTopic != "")
|
||||||
|
{
|
||||||
|
String configJSON = "{\"dev\":{\"ids\":[\"nuki_";
|
||||||
|
configJSON.concat(uidString);
|
||||||
|
configJSON.concat("\"],\"mf\":\"Nuki\",\"mdl\":\"");
|
||||||
|
configJSON.concat(deviceType);
|
||||||
|
configJSON.concat("\",\"name\":\"");
|
||||||
|
configJSON.concat(name);
|
||||||
|
configJSON.concat("\"},\"~\":\"");
|
||||||
|
configJSON.concat(baseTopic);
|
||||||
|
configJSON.concat("\",\"name\":\"");
|
||||||
|
configJSON.concat(name);
|
||||||
|
configJSON.concat(" bluetooth signal strength\",\"unique_id\":\"");
|
||||||
|
configJSON.concat(uidString);
|
||||||
|
configJSON.concat(
|
||||||
|
"_bluetooth_signal_strength\",\"dev_cla\":\"signal_strength\",\"ent_cat\":\"diagnostic\",\"stat_t\":\"~");
|
||||||
|
configJSON.concat(mqtt_topic_lock_rssi);
|
||||||
|
configJSON.concat("\",\"state_cla\":\"measurement\",\"unit_of_meas\":\"db\"");
|
||||||
|
configJSON.concat("}");
|
||||||
|
|
||||||
|
String path = discoveryTopic;
|
||||||
|
path.concat("/sensor/");
|
||||||
|
path.concat(uidString);
|
||||||
|
path.concat("/bluetooth_signal_strength/config");
|
||||||
|
|
||||||
|
_device->mqttClient()->publish(path.c_str(), configJSON.c_str(), true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Network::removeHASSConfig(char* uidString)
|
void Network::removeHASSConfig(char* uidString)
|
||||||
{
|
{
|
||||||
String discoveryTopic = _preferences->getString(preference_mqtt_hass_discovery);
|
String discoveryTopic = _preferences->getString(preference_mqtt_hass_discovery);
|
||||||
|
|
||||||
|
Serial.print("##### "); Serial.println(uidString);
|
||||||
|
|
||||||
if(discoveryTopic != "")
|
if(discoveryTopic != "")
|
||||||
{
|
{
|
||||||
String path = discoveryTopic;
|
String path = discoveryTopic;
|
||||||
path.concat("/lock/");
|
path.concat("/lock/");
|
||||||
path.concat(uidString);
|
path.concat(uidString);
|
||||||
path.concat("/smartlock/config");
|
path.concat("/smartlock/config");
|
||||||
|
|
||||||
_device->mqttClient()->publish(path.c_str(), NULL, 0U, true);
|
_device->mqttClient()->publish(path.c_str(), NULL, 0U, true);
|
||||||
|
|
||||||
path = discoveryTopic;
|
path = discoveryTopic;
|
||||||
path.concat("/binary_sensor/");
|
path.concat("/binary_sensor/");
|
||||||
path.concat(uidString);
|
path.concat(uidString);
|
||||||
path.concat("/battery_low/config");
|
path.concat("/battery_low/config");
|
||||||
|
_device->mqttClient()->publish(path.c_str(), NULL, 0U, true);
|
||||||
|
|
||||||
|
path = discoveryTopic;
|
||||||
|
path.concat("/sensor/");
|
||||||
|
path.concat(uidString);
|
||||||
|
path.concat("/battery_voltage/config");
|
||||||
|
_device->mqttClient()->publish(path.c_str(), NULL, 0U, true);
|
||||||
|
|
||||||
|
path = discoveryTopic;
|
||||||
|
path.concat("/sensor/");
|
||||||
|
path.concat(uidString);
|
||||||
|
path.concat("/trigger/config");
|
||||||
|
_device->mqttClient()->publish(path.c_str(), NULL, 0U, true);
|
||||||
|
|
||||||
|
path = discoveryTopic;
|
||||||
|
path.concat("/sensor/");
|
||||||
|
path.concat(uidString);
|
||||||
|
path.concat("/battery_level/config");
|
||||||
|
_device->mqttClient()->publish(path.c_str(), NULL, 0U, true);
|
||||||
|
|
||||||
|
path = discoveryTopic;
|
||||||
|
path.concat("/binary_sensor/");
|
||||||
|
path.concat(uidString);
|
||||||
|
path.concat("/door_sensor/config");
|
||||||
|
_device->mqttClient()->publish(path.c_str(), NULL, 0U, true);
|
||||||
|
|
||||||
|
path = discoveryTopic;
|
||||||
|
path.concat("/binary_sensor/");
|
||||||
|
path.concat(uidString);
|
||||||
|
path.concat("/ring/config");
|
||||||
|
_device->mqttClient()->publish(path.c_str(), NULL, 0U, true);
|
||||||
|
|
||||||
|
path = discoveryTopic;
|
||||||
|
path.concat("/sensor/");
|
||||||
|
path.concat(uidString);
|
||||||
|
path.concat("/wifi_signal_strength/config");
|
||||||
|
_device->mqttClient()->publish(path.c_str(), NULL, 0U, true);
|
||||||
|
|
||||||
|
path = discoveryTopic;
|
||||||
|
path.concat("/sensor/");
|
||||||
|
path.concat(uidString);
|
||||||
|
path.concat("/bluetooth_signal_strength/config");
|
||||||
_device->mqttClient()->publish(path.c_str(), NULL, 0U, true);
|
_device->mqttClient()->publish(path.c_str(), NULL, 0U, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,8 @@ public:
|
|||||||
void publishHASSConfigBatLevel(char* deviceType, const char* baseTopic, char* name, char* uidString, char* lockAction, char* unlockAction, char* openAction, char* lockedState, char* unlockedState);
|
void publishHASSConfigBatLevel(char* deviceType, const char* baseTopic, char* name, char* uidString, char* lockAction, char* unlockAction, char* openAction, char* lockedState, char* unlockedState);
|
||||||
void publishHASSConfigDoorSensor(char* deviceType, const char* baseTopic, char* name, char* uidString, char* lockAction, char* unlockAction, char* openAction, char* lockedState, char* unlockedState);
|
void publishHASSConfigDoorSensor(char* deviceType, const char* baseTopic, char* name, char* uidString, char* lockAction, char* unlockAction, char* openAction, char* lockedState, char* unlockedState);
|
||||||
void publishHASSConfigRingDetect(char* deviceType, const char* baseTopic, char* name, char* uidString, char* lockAction, char* unlockAction, char* openAction, char* lockedState, char* unlockedState);
|
void publishHASSConfigRingDetect(char* deviceType, const char* baseTopic, char* name, char* uidString, char* lockAction, char* unlockAction, char* openAction, char* lockedState, char* unlockedState);
|
||||||
void publishHASSWifiConfig(char* deviceType, const char* baseTopic, char* name, char* uidString);
|
void publishHASSWifiRssiConfig(char* deviceType, const char* baseTopic, char* name, char* uidString);
|
||||||
|
void publishHASSBleRssiConfig(char* deviceType, const char* baseTopic, char* name, char* uidString);
|
||||||
void removeHASSConfig(char* uidString);
|
void removeHASSConfig(char* uidString);
|
||||||
|
|
||||||
void publishPresenceDetection(char* csv);
|
void publishPresenceDetection(char* csv);
|
||||||
|
|||||||
@@ -450,7 +450,8 @@ NetworkLock::publishHASSConfig(char *deviceType, const char *baseTopic, char *na
|
|||||||
_network->publishHASSConfig(deviceType, baseTopic, name, uidString, lockAction, unlockAction, openAction, lockedState, unlockedState);
|
_network->publishHASSConfig(deviceType, baseTopic, name, uidString, lockAction, unlockAction, openAction, lockedState, unlockedState);
|
||||||
_network->publishHASSConfigBatLevel(deviceType, baseTopic, name, uidString, lockAction, unlockAction, openAction, lockedState, unlockedState);
|
_network->publishHASSConfigBatLevel(deviceType, baseTopic, name, uidString, lockAction, unlockAction, openAction, lockedState, unlockedState);
|
||||||
_network->publishHASSConfigDoorSensor(deviceType, baseTopic, name, uidString, lockAction, unlockAction, openAction, lockedState, unlockedState);
|
_network->publishHASSConfigDoorSensor(deviceType, baseTopic, name, uidString, lockAction, unlockAction, openAction, lockedState, unlockedState);
|
||||||
_network->publishHASSWifiConfig(deviceType, baseTopic, name, uidString);
|
_network->publishHASSWifiRssiConfig(deviceType, baseTopic, name, uidString);
|
||||||
|
_network->publishHASSBleRssiConfig(deviceType, baseTopic, name, uidString);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkLock::removeHASSConfig(char *uidString)
|
void NetworkLock::removeHASSConfig(char *uidString)
|
||||||
|
|||||||
@@ -369,6 +369,7 @@ void NetworkOpener::publishHASSConfig(char* deviceType, const char* baseTopic, c
|
|||||||
{
|
{
|
||||||
_network->publishHASSConfig(deviceType, baseTopic, name, uidString, lockAction, unlockAction, openAction, lockedState, unlockedState);
|
_network->publishHASSConfig(deviceType, baseTopic, name, uidString, lockAction, unlockAction, openAction, lockedState, unlockedState);
|
||||||
_network->publishHASSConfigRingDetect(deviceType, baseTopic, name, uidString, lockAction, unlockAction, openAction, lockedState, unlockedState);
|
_network->publishHASSConfigRingDetect(deviceType, baseTopic, name, uidString, lockAction, unlockAction, openAction, lockedState, unlockedState);
|
||||||
|
_network->publishHASSBleRssiConfig(deviceType, baseTopic, name, uidString);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkOpener::removeHASSConfig(char* uidString)
|
void NetworkOpener::removeHASSConfig(char* uidString)
|
||||||
|
|||||||
@@ -343,7 +343,6 @@ void NukiOpenerWrapper::disableHASS()
|
|||||||
}
|
}
|
||||||
if (_nukiConfigValid)
|
if (_nukiConfigValid)
|
||||||
{
|
{
|
||||||
String baseTopic = _preferences->getString(preference_mqtt_opener_path);
|
|
||||||
char uidString[20];
|
char uidString[20];
|
||||||
itoa(_nukiConfig.nukiId, uidString, 16);
|
itoa(_nukiConfig.nukiId, uidString, 16);
|
||||||
_network->removeHASSConfig(uidString);
|
_network->removeHASSConfig(uidString);
|
||||||
|
|||||||
@@ -540,7 +540,6 @@ void NukiWrapper::disableHASS()
|
|||||||
}
|
}
|
||||||
if (_nukiConfigValid)
|
if (_nukiConfigValid)
|
||||||
{
|
{
|
||||||
String baseTopic = _preferences->getString(preference_mqtt_lock_path);
|
|
||||||
char uidString[20];
|
char uidString[20];
|
||||||
itoa(_nukiConfig.nukiId, uidString, 16);
|
itoa(_nukiConfig.nukiId, uidString, 16);
|
||||||
_network->removeHASSConfig(uidString);
|
_network->removeHASSConfig(uidString);
|
||||||
|
|||||||
4
main.cpp
4
main.cpp
@@ -169,8 +169,8 @@ void setup()
|
|||||||
restartTs = preferences->getInt(preference_restart_timer) * 60 * 1000;
|
restartTs = preferences->getInt(preference_restart_timer) * 60 * 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
const NetworkDeviceType networkDevice = NetworkDeviceType::WiFi;
|
// const NetworkDeviceType networkDevice = NetworkDeviceType::WiFi;
|
||||||
// const NetworkDeviceType networkDevice = digitalRead(NETWORK_SELECT) == HIGH ? NetworkDeviceType::WiFi : NetworkDeviceType::W5500;
|
const NetworkDeviceType networkDevice = digitalRead(NETWORK_SELECT) == HIGH ? NetworkDeviceType::WiFi : NetworkDeviceType::W5500;
|
||||||
|
|
||||||
const String mqttLockPath = preferences->getString(preference_mqtt_lock_path);
|
const String mqttLockPath = preferences->getString(preference_mqtt_lock_path);
|
||||||
network = new Network(networkDevice, preferences, mqttLockPath);
|
network = new Network(networkDevice, preferences, mqttLockPath);
|
||||||
|
|||||||
Reference in New Issue
Block a user