add auto discovery for led enabled

This commit is contained in:
technyon
2023-02-20 18:58:21 +01:00
parent b812b2ca2a
commit 802b0a31a4
2 changed files with 50 additions and 1 deletions

View File

@@ -596,6 +596,7 @@ void Network::publishHASSConfig(char* deviceType, const char* baseTopic, char* n
"battery", "battery",
"", "",
"diagnostic", "diagnostic",
"",
{{"pl_on", "1"}, {{"pl_on", "1"},
{"pl_off", "0"}}); {"pl_off", "0"}});
@@ -614,6 +615,7 @@ void Network::publishHASSConfig(char* deviceType, const char* baseTopic, char* n
"battery", "battery",
"", "",
"diagnostic", "diagnostic",
"",
{{"pl_on", "1"}, {{"pl_on", "1"},
{"pl_off", "0"}}); {"pl_off", "0"}});
} }
@@ -631,6 +633,7 @@ void Network::publishHASSConfig(char* deviceType, const char* baseTopic, char* n
"voltage", "voltage",
"measurement", "measurement",
"diagnostic", "diagnostic",
"",
{ {"unit_of_meas", "V"} }); { {"unit_of_meas", "V"} });
// Trigger // Trigger
@@ -646,10 +649,45 @@ void Network::publishHASSConfig(char* deviceType, const char* baseTopic, char* n
"", "",
"", "",
"diagnostic", "diagnostic",
"",
{ { "enabled_by_default", "true" } }); { { "enabled_by_default", "true" } });
// doc_out["name"] = name + " LED enabled";
// doc_out["object_id"] = object_id + " LED enabled";
// doc_out["uniq_id"] = build_unique_id(address, "led_enabled");
// doc_out["ic"] = "mdi:led-variant-on";
// doc_out["ent_cat"] = "config";
// doc_out["stat_t"] = net_build_topic("config");
// doc_out["val_tpl"] = "{{iif(value_json.led_enabled,'ON','OFF')}}";
// doc_out["cmd_t"] = net_build_topic("config/set");
// doc_out["state_on"] = "ON";
// doc_out["state_off"] = "OFF";
// doc_out["pl_on"] = "{'led_enabled': true}";
// doc_out["pl_off"] = "{'led_enabled': false}";
// doc_out["opt"] = true;
// LED enabled
publishHassTopic("switch",
"led_enabled",
uidString,
"_led_enabled",
"LED enabled",
name,
baseTopic,
mqtt_topic_config_led_enabled,
deviceType,
"switch",
"",
"config",
mqtt_topic_config_led_enabled,
{ { "ic", "mdi:led-variant-on" },
{ "pl_on", "1" },
{ "pl_off", "0" },
{ "state_on", "1" },
{ "state_off", "0" },});
} }
} }
//json["cmd_t"] = String("~") + String(mqtt_topic_lock_action);
void Network::publishHASSConfigBatLevel(char *deviceType, const char *baseTopic, char *name, char *uidString, void Network::publishHASSConfigBatLevel(char *deviceType, const char *baseTopic, char *name, char *uidString,
char *lockAction, char *unlockAction, char *openAction, char *lockedState, char *lockAction, char *unlockAction, char *openAction, char *lockedState,
char *unlockedState) char *unlockedState)
@@ -670,6 +708,7 @@ void Network::publishHASSConfigBatLevel(char *deviceType, const char *baseTopic,
"battery", "battery",
"measurement", "measurement",
"diagnostic", "diagnostic",
"",
{ {"unit_of_meas", "%"} }); { {"unit_of_meas", "%"} });
} }
} }
@@ -694,6 +733,7 @@ void Network::publishHASSConfigDoorSensor(char *deviceType, const char *baseTopi
"door", "door",
"", "",
"", "",
"",
{{"pl_on", "doorOpened"}, {{"pl_on", "doorOpened"},
{"pl_off", "doorClosed"}, {"pl_off", "doorClosed"},
{"pl_not_avail", "unavailable"}}); {"pl_not_avail", "unavailable"}});
@@ -720,6 +760,7 @@ void Network::publishHASSConfigRingDetect(char *deviceType, const char *baseTopi
"sound", "sound",
"", "",
"", "",
"",
{{"pl_on", "ring"}, {{"pl_on", "ring"},
{"pl_off", "locked"}}); {"pl_off", "locked"}});
} }
@@ -748,6 +789,7 @@ void Network::publishHASSWifiRssiConfig(char *deviceType, const char *baseTopic,
"signal_strength", "signal_strength",
"measurement", "measurement",
"diagnostic", "diagnostic",
"",
{ {"unit_of_meas", "dBm"} }); { {"unit_of_meas", "dBm"} });
} }
} }
@@ -770,6 +812,7 @@ void Network::publishHASSBleRssiConfig(char *deviceType, const char *baseTopic,
"signal_strength", "signal_strength",
"measurement", "measurement",
"diagnostic", "diagnostic",
"",
{ {"unit_of_meas", "dBm"} }); { {"unit_of_meas", "dBm"} });
} }
} }
@@ -786,6 +829,7 @@ void Network::publishHassTopic(const String& mqttDeviceType,
const String& deviceClass, const String& deviceClass,
const String& stateClass, const String& stateClass,
const String& entityCat, const String& entityCat,
const String& commandTopic,
std::vector<std::pair<char*, char*>> additionalEntries std::vector<std::pair<char*, char*>> additionalEntries
) )
{ {
@@ -821,6 +865,10 @@ void Network::publishHassTopic(const String& mqttDeviceType,
{ {
json["ent_cat"] = entityCat; json["ent_cat"] = entityCat;
} }
if(commandTopic != "")
{
json["cmd_t"] = String("~") + commandTopic;
}
for(const auto& entry : additionalEntries) for(const auto& entry : additionalEntries)
{ {

View File

@@ -76,6 +76,7 @@ private:
const String& deviceClass, const String& deviceClass,
const String& stateClass = "", const String& stateClass = "",
const String& entityCat = "", const String& entityCat = "",
const String& commandTopic = "",
std::vector<std::pair<char*, char*>> additionalEntries = {} std::vector<std::pair<char*, char*>> additionalEntries = {}
); );