add home assistant auto discovery for ring detection
This commit is contained in:
34
Network.cpp
34
Network.cpp
@@ -506,6 +506,40 @@ void Network::publishHASSConfigDoorSensor(char *deviceType, const char *baseTopi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Network::publishHASSConfigRingDetect(char *deviceType, const char *baseTopic, char *name, char *uidString,
|
||||||
|
char *lockAction, char *unlockAction, char *openAction, char *lockedState,
|
||||||
|
char *unlockedState)
|
||||||
|
{
|
||||||
|
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(" ring\",\"unique_id\":\"");
|
||||||
|
configJSON.concat(uidString);
|
||||||
|
configJSON.concat(
|
||||||
|
"_ring\",\"dev_cla\":\"sound\",\"stat_t\":\"~");
|
||||||
|
configJSON.concat(mqtt_topic_lock_state);
|
||||||
|
configJSON.concat("\",\"pl_off\":\"locked\",\"pl_on\":\"ring\"}");
|
||||||
|
|
||||||
|
String path = discoveryTopic;
|
||||||
|
path.concat("/binary_sensor/");
|
||||||
|
path.concat(uidString);
|
||||||
|
path.concat("/ring/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);
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ public:
|
|||||||
void publishHASSConfig(char* deviceType, const char* baseTopic, char* name, char* uidString, char* lockAction, char* unlockAction, char* openAction, char* lockedState, char* unlockedState);
|
void publishHASSConfig(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 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 removeHASSConfig(char* uidString);
|
void removeHASSConfig(char* uidString);
|
||||||
|
|
||||||
void publishPresenceDetection(char* csv);
|
void publishPresenceDetection(char* csv);
|
||||||
|
|||||||
@@ -363,6 +363,7 @@ void NetworkOpener::publishAdvancedConfig(const NukiOpener::AdvancedConfig &conf
|
|||||||
void NetworkOpener::publishHASSConfig(char* deviceType, const char* baseTopic, char* name, char* uidString, char* lockAction, char* unlockAction, char* openAction, char* lockedState, char* unlockedState)
|
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);
|
_network->publishHASSConfig(deviceType, baseTopic, name, uidString, lockAction, unlockAction, openAction, lockedState, unlockedState);
|
||||||
|
_network->publishHASSConfigRingDetect(deviceType, baseTopic, name, uidString, lockAction, unlockAction, openAction, lockedState, unlockedState);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkOpener::removeHASSConfig(char* uidString)
|
void NetworkOpener::removeHASSConfig(char* uidString)
|
||||||
|
|||||||
Reference in New Issue
Block a user