mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2026-01-26 16:49:11 +03:00
tidy up add_ha_dev_section
This commit is contained in:
@@ -804,7 +804,7 @@ void AnalogSensor::publish_values(const bool force) {
|
|||||||
config["def_ent_id"] = topic_str.substr(0, topic_str.find("/")) + "." + uniq_s;
|
config["def_ent_id"] = topic_str.substr(0, topic_str.find("/")) + "." + uniq_s;
|
||||||
|
|
||||||
// dev section with model is only created on the 1st sensor
|
// dev section with model is only created on the 1st sensor
|
||||||
Mqtt::add_ha_dev_section(config.as<JsonObject>(), "Analog Sensors", nullptr, "EMS-ESP", EMSESP_APP_VERSION, !ha_dev_created);
|
Mqtt::add_ha_dev_section(config.as<JsonObject>(), "Analog Sensors", !ha_dev_created);
|
||||||
Mqtt::add_ha_avty_section(config.as<JsonObject>(), stat_t, val_cond);
|
Mqtt::add_ha_avty_section(config.as<JsonObject>(), stat_t, val_cond);
|
||||||
|
|
||||||
sensor.ha_registered = Mqtt::queue_ha(topic, config.as<JsonObject>());
|
sensor.ha_registered = Mqtt::queue_ha(topic, config.as<JsonObject>());
|
||||||
|
|||||||
@@ -1106,14 +1106,14 @@ bool Mqtt::publish_ha_sensor_config(uint8_t type, // EMSdev
|
|||||||
// add origin
|
// add origin
|
||||||
JsonObject origin_json = doc["o"].to<JsonObject>();
|
JsonObject origin_json = doc["o"].to<JsonObject>();
|
||||||
origin_json["name"] = "EMS-ESP";
|
origin_json["name"] = "EMS-ESP";
|
||||||
origin_json["sw"] = EMSESP_APP_VERSION;
|
origin_json["sw"] = "v" + std::string(EMSESP_APP_VERSION);
|
||||||
origin_json["url"] = "https://emsesp.org";
|
origin_json["url"] = "https://emsesp.org";
|
||||||
|
|
||||||
// add dev section
|
// add dev section
|
||||||
if (device_type == EMSdevice::DeviceType::SYSTEM) {
|
if (device_type == EMSdevice::DeviceType::SYSTEM) {
|
||||||
add_ha_dev_section(doc.as<JsonObject>(), nullptr, nullptr, nullptr, nullptr, false);
|
add_ha_dev_section(doc.as<JsonObject>());
|
||||||
} else {
|
} else {
|
||||||
add_ha_dev_section(doc.as<JsonObject>(), EMSdevice::device_type_2_device_name(device_type), model, brand, version, create_device_config);
|
add_ha_dev_section(doc.as<JsonObject>(), EMSdevice::device_type_2_device_name(device_type), create_device_config, model, brand, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
return queue_ha(topic, doc.as<JsonObject>());
|
return queue_ha(topic, doc.as<JsonObject>());
|
||||||
@@ -1414,8 +1414,8 @@ bool Mqtt::publish_ha_climate_config(const DeviceValue & dv, const bool has_room
|
|||||||
doc["ic"] = icon;
|
doc["ic"] = icon;
|
||||||
}
|
}
|
||||||
|
|
||||||
add_ha_dev_section(doc.as<JsonObject>(), devicename, nullptr, nullptr, nullptr, false); // add dev section
|
add_ha_dev_section(doc.as<JsonObject>(), devicename);
|
||||||
add_ha_avty_section(doc.as<JsonObject>(), topic_t, seltemp_cond, has_roomtemp ? currtemp_cond : nullptr, hc_mode_cond); // add availability section
|
add_ha_avty_section(doc.as<JsonObject>(), topic_t, seltemp_cond, has_roomtemp ? currtemp_cond : nullptr, hc_mode_cond);
|
||||||
|
|
||||||
return queue_ha(topic, doc.as<JsonObject>()); // publish the config payload with retain flag
|
return queue_ha(topic, doc.as<JsonObject>()); // publish the config payload with retain flag
|
||||||
}
|
}
|
||||||
@@ -1442,7 +1442,7 @@ std::string Mqtt::tag_to_topic(uint8_t device_type, int8_t tag) {
|
|||||||
// add devs section to an existing doc, only for HA
|
// add devs section to an existing doc, only for HA
|
||||||
// under devs node it will create ids and name and optional mf, mdl, via_device
|
// under devs node it will create ids and name and optional mf, mdl, via_device
|
||||||
// name could be EMSdevice::device_type_2_device_name(dv.device_type));
|
// name could be EMSdevice::device_type_2_device_name(dv.device_type));
|
||||||
void Mqtt::add_ha_dev_section(JsonObject doc, const char * name, const char * model, const char * brand, const char * version, const bool create_model) {
|
void Mqtt::add_ha_dev_section(JsonObject doc, const char * name, const bool create_model, const char * model, const char * brand, const char * version) {
|
||||||
// only works for HA
|
// only works for HA
|
||||||
if (discovery_type() != discoveryType::HOMEASSISTANT) {
|
if (discovery_type() != discoveryType::HOMEASSISTANT) {
|
||||||
return;
|
return;
|
||||||
@@ -1472,14 +1472,12 @@ void Mqtt::add_ha_dev_section(JsonObject doc, const char * name, const char * mo
|
|||||||
dev_json["name"] = Mqtt::basename();
|
dev_json["name"] = Mqtt::basename();
|
||||||
}
|
}
|
||||||
|
|
||||||
// add mf, mdl, sw and via_device
|
// add mf (manufacturer/brand), mdl (model), sw (software version) and via_device
|
||||||
dev_json["mf"] = brand != nullptr ? brand : "EMS-ESP";
|
dev_json["mf"] = brand != nullptr ? brand : "EMS-ESP";
|
||||||
if (model != nullptr) {
|
if (model != nullptr) {
|
||||||
dev_json["mdl"] = model;
|
dev_json["mdl"] = model;
|
||||||
}
|
}
|
||||||
if (version != nullptr) {
|
dev_json["sw"] = version != nullptr ? version : "v" + std::string(EMSESP_APP_VERSION);
|
||||||
dev_json["sw"] = version;
|
|
||||||
}
|
|
||||||
dev_json["via_device"] = Mqtt::basename();
|
dev_json["via_device"] = Mqtt::basename();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -259,7 +259,12 @@ class Mqtt {
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
add_ha_classes(JsonObject doc, const uint8_t device_type, const uint8_t type, const uint8_t uom, const char * entity = nullptr, bool is_discovery = true);
|
add_ha_classes(JsonObject doc, const uint8_t device_type, const uint8_t type, const uint8_t uom, const char * entity = nullptr, bool is_discovery = true);
|
||||||
static void add_ha_dev_section(JsonObject doc, const char * name, const char * model, const char * brand, const char * version, const bool create_model);
|
static void add_ha_dev_section(JsonObject doc,
|
||||||
|
const char * name = nullptr,
|
||||||
|
const bool create_model = false,
|
||||||
|
const char * model = nullptr,
|
||||||
|
const char * brand = nullptr,
|
||||||
|
const char * version = nullptr);
|
||||||
static void add_ha_avty_section(JsonObject doc,
|
static void add_ha_avty_section(JsonObject doc,
|
||||||
const char * state_t = nullptr,
|
const char * state_t = nullptr,
|
||||||
const char * cond1 = nullptr,
|
const char * cond1 = nullptr,
|
||||||
|
|||||||
@@ -210,7 +210,7 @@ void Shower::create_ha_discovery() {
|
|||||||
doc["stat_t"] = "~/shower_active";
|
doc["stat_t"] = "~/shower_active";
|
||||||
|
|
||||||
Mqtt::add_ha_bool(doc.as<JsonObject>());
|
Mqtt::add_ha_bool(doc.as<JsonObject>());
|
||||||
Mqtt::add_ha_dev_section(doc.as<JsonObject>(), "Shower Sensors", nullptr, nullptr, nullptr, false);
|
Mqtt::add_ha_dev_section(doc.as<JsonObject>(), "Shower Sensors", true);
|
||||||
Mqtt::add_ha_avty_section(doc.as<JsonObject>()); // no conditions
|
Mqtt::add_ha_avty_section(doc.as<JsonObject>()); // no conditions
|
||||||
|
|
||||||
snprintf(topic, sizeof(topic), "binary_sensor/%s/shower_active/config", Mqtt::basename().c_str());
|
snprintf(topic, sizeof(topic), "binary_sensor/%s/shower_active/config", Mqtt::basename().c_str());
|
||||||
@@ -239,7 +239,7 @@ void Shower::create_ha_discovery() {
|
|||||||
doc["dev_cla"] = "duration";
|
doc["dev_cla"] = "duration";
|
||||||
// doc["ent_cat"] = "diagnostic";
|
// doc["ent_cat"] = "diagnostic";
|
||||||
|
|
||||||
Mqtt::add_ha_dev_section(doc.as<JsonObject>(), "Shower Sensors", nullptr, "EMS-ESP", EMSESP_APP_VERSION, true);
|
Mqtt::add_ha_dev_section(doc.as<JsonObject>(), "Shower Sensors");
|
||||||
Mqtt::add_ha_avty_section(doc.as<JsonObject>(), "~/shower_data", "value_json.duration is defined");
|
Mqtt::add_ha_avty_section(doc.as<JsonObject>(), "~/shower_data", "value_json.duration is defined");
|
||||||
|
|
||||||
snprintf(topic, sizeof(topic), "sensor/%s/shower_duration/config", Mqtt::basename().c_str());
|
snprintf(topic, sizeof(topic), "sensor/%s/shower_duration/config", Mqtt::basename().c_str());
|
||||||
|
|||||||
@@ -545,7 +545,7 @@ void TemperatureSensor::publish_values(const bool force) {
|
|||||||
config["name"] = (const char *)sensor.name();
|
config["name"] = (const char *)sensor.name();
|
||||||
|
|
||||||
// dev section with model is only created on the 1st sensor
|
// dev section with model is only created on the 1st sensor
|
||||||
Mqtt::add_ha_dev_section(config.as<JsonObject>(), "Temperature Sensors", nullptr, "EMS-ESP", EMSESP_APP_VERSION, !ha_dev_created);
|
Mqtt::add_ha_dev_section(config.as<JsonObject>(), "Temperature Sensors", !ha_dev_created);
|
||||||
Mqtt::add_ha_avty_section(config.as<JsonObject>(), stat_t, val_cond);
|
Mqtt::add_ha_avty_section(config.as<JsonObject>(), stat_t, val_cond);
|
||||||
|
|
||||||
char topic[Mqtt::MQTT_TOPIC_MAX_SIZE];
|
char topic[Mqtt::MQTT_TOPIC_MAX_SIZE];
|
||||||
|
|||||||
@@ -457,7 +457,7 @@ void WebCustomEntityService::publish() {
|
|||||||
config["def_ent_id"] = topic_str.substr(0, topic_str.find("/")) + "." + uniq_s;
|
config["def_ent_id"] = topic_str.substr(0, topic_str.find("/")) + "." + uniq_s;
|
||||||
|
|
||||||
Mqtt::add_ha_classes(config.as<JsonObject>(), EMSdevice::DeviceType::SYSTEM, entityItem.value_type, entityItem.uom);
|
Mqtt::add_ha_classes(config.as<JsonObject>(), EMSdevice::DeviceType::SYSTEM, entityItem.value_type, entityItem.uom);
|
||||||
Mqtt::add_ha_dev_section(config.as<JsonObject>(), "Custom Entities", nullptr, "EMS-ESP", EMSESP_APP_VERSION, !ha_created);
|
Mqtt::add_ha_dev_section(config.as<JsonObject>(), "Custom Entities", !ha_created);
|
||||||
Mqtt::add_ha_avty_section(config.as<JsonObject>(), stat_t, val_cond);
|
Mqtt::add_ha_avty_section(config.as<JsonObject>(), stat_t, val_cond);
|
||||||
|
|
||||||
ha_created |= Mqtt::queue_ha(topic, config.as<JsonObject>());
|
ha_created |= Mqtt::queue_ha(topic, config.as<JsonObject>());
|
||||||
|
|||||||
Reference in New Issue
Block a user