fix HA warnings - add a device name - #1393

This commit is contained in:
Proddy
2023-11-11 18:01:52 +01:00
parent 031c97a162
commit ac0fb52ce9
6 changed files with 27 additions and 13 deletions

View File

@@ -615,6 +615,7 @@ void AnalogSensor::publish_values(const bool force) {
} }
JsonObject dev = config.createNestedObject("dev"); JsonObject dev = config.createNestedObject("dev");
dev["name"] = name;
JsonArray ids = dev.createNestedArray("ids"); JsonArray ids = dev.createNestedArray("ids");
ids.add(Mqtt::basename()); ids.add(Mqtt::basename());

View File

@@ -729,21 +729,24 @@ bool Mqtt::queue_ha(const char * topic, const JsonObject & payload) {
bool Mqtt::publish_ha_sensor_config(DeviceValue & dv, const char * model, const char * brand, const bool remove, const bool create_device_config) { bool Mqtt::publish_ha_sensor_config(DeviceValue & dv, const char * model, const char * brand, const bool remove, const bool create_device_config) {
StaticJsonDocument<EMSESP_JSON_SIZE_LARGE> dev_json; StaticJsonDocument<EMSESP_JSON_SIZE_LARGE> dev_json;
// always create the ids // always create the ids (discovery indentifiers)
// with the name always
// and the manufacturer and model if we're creating the device config for the first entity
JsonArray ids = dev_json.createNestedArray("ids"); JsonArray ids = dev_json.createNestedArray("ids");
char ha_device[40]; char ha_device[40];
auto device_type_name = EMSdevice::device_type_2_device_name(dv.device_type); auto device_type_name = EMSdevice::device_type_2_device_name(dv.device_type);
snprintf(ha_device, sizeof(ha_device), "%s-%s", Mqtt::basename().c_str(), device_type_name); snprintf(ha_device, sizeof(ha_device), "%s-%s", Mqtt::basename().c_str(), device_type_name);
ids.add(ha_device); ids.add(ha_device);
if (create_device_config) {
auto cap_name = strdup(device_type_name); auto cap_name = strdup(device_type_name);
Helpers::CharToUpperUTF8(cap_name); // capitalize first letter Helpers::CharToUpperUTF8(cap_name); // capitalize first letter
dev_json["name"] = Mqtt::basename() + " " + cap_name; dev_json["name"] = Mqtt::basename() + " " + cap_name;
free(cap_name);
if (create_device_config) {
dev_json["mf"] = brand; dev_json["mf"] = brand;
dev_json["mdl"] = model; dev_json["mdl"] = model;
dev_json["via_device"] = "ems-esp"; dev_json["via_device"] = "ems-esp";
free(cap_name);
} }
// calculate the min and max // calculate the min and max
@@ -778,6 +781,7 @@ bool Mqtt::publish_system_ha_sensor_config(uint8_t type, const char * name, cons
StaticJsonDocument<EMSESP_JSON_SIZE_LARGE> doc; StaticJsonDocument<EMSESP_JSON_SIZE_LARGE> doc;
JsonObject dev_json = doc.createNestedObject("dev"); JsonObject dev_json = doc.createNestedObject("dev");
dev_json["name"] = Mqtt::basename();
JsonArray ids = dev_json.createNestedArray("ids"); JsonArray ids = dev_json.createNestedArray("ids");
ids.add(Mqtt::basename()); ids.add(Mqtt::basename());
@@ -1245,6 +1249,9 @@ bool Mqtt::publish_ha_climate_config(const uint8_t tag, const bool has_roomtemp,
snprintf(ha_device, sizeof(ha_device), "%s-thermostat", Mqtt::basename().c_str()); snprintf(ha_device, sizeof(ha_device), "%s-thermostat", Mqtt::basename().c_str());
ids.add(ha_device); ids.add(ha_device);
// device name must be different to the entity name, take the ids value we just created
dev["name"] = ha_device;
// add "availability" section // add "availability" section
add_avty_to_doc(topic_t, doc.as<JsonObject>(), seltemp_cond, has_roomtemp ? currtemp_cond : nullptr, hc_mode_cond); add_avty_to_doc(topic_t, doc.as<JsonObject>(), seltemp_cond, has_roomtemp ? currtemp_cond : nullptr, hc_mode_cond);

View File

@@ -211,6 +211,7 @@ void Shower::set_shower_state(bool state, bool force) {
} }
JsonObject dev = doc.createNestedObject("dev"); JsonObject dev = doc.createNestedObject("dev");
dev["name"] = "EMS-ESP";
JsonArray ids = dev.createNestedArray("ids"); JsonArray ids = dev.createNestedArray("ids");
ids.add(Mqtt::basename()); ids.add(Mqtt::basename());
@@ -240,6 +241,7 @@ void Shower::set_shower_state(bool state, bool force) {
doc["ent_cat"] = "diagnostic"; doc["ent_cat"] = "diagnostic";
JsonObject dev2 = doc.createNestedObject("dev"); JsonObject dev2 = doc.createNestedObject("dev");
dev2["name"] = "EMS-ESP";
JsonArray ids2 = dev2.createNestedArray("ids"); JsonArray ids2 = dev2.createNestedArray("ids");
ids2.add(Mqtt::basename()); ids2.add(Mqtt::basename());
@@ -266,6 +268,7 @@ void Shower::set_shower_state(bool state, bool force) {
doc["ent_cat"] = "diagnostic"; doc["ent_cat"] = "diagnostic";
JsonObject dev3 = doc.createNestedObject("dev"); JsonObject dev3 = doc.createNestedObject("dev");
dev3["name"] = "EMS-ESP";
JsonArray ids3 = dev3.createNestedArray("ids"); JsonArray ids3 = dev3.createNestedArray("ids");
ids3.add(Mqtt::basename()); ids3.add(Mqtt::basename());

View File

@@ -542,6 +542,7 @@ void TemperatureSensor::publish_values(const bool force) {
config["name"] = name; config["name"] = name;
JsonObject dev = config.createNestedObject("dev"); JsonObject dev = config.createNestedObject("dev");
dev["name"] = Mqtt::basename();
JsonArray ids = dev.createNestedArray("ids"); JsonArray ids = dev.createNestedArray("ids");
ids.add(Mqtt::basename()); ids.add(Mqtt::basename());

View File

@@ -410,6 +410,7 @@ void WebCustomEntityService::publish(const bool force) {
} }
} }
JsonObject dev = config.createNestedObject("dev"); JsonObject dev = config.createNestedObject("dev");
dev["name"] = Mqtt::basename();
JsonArray ids = dev.createNestedArray("ids"); JsonArray ids = dev.createNestedArray("ids");
ids.add(Mqtt::basename()); ids.add(Mqtt::basename());

View File

@@ -288,6 +288,7 @@ void WebSchedulerService::publish(const bool force) {
} }
JsonObject dev = config.createNestedObject("dev"); JsonObject dev = config.createNestedObject("dev");
dev["name"] = Mqtt::basename();
JsonArray ids = dev.createNestedArray("ids"); JsonArray ids = dev.createNestedArray("ids");
ids.add(Mqtt::basename()); ids.add(Mqtt::basename());