remove field name from HA discovery for single-field messages

This commit is contained in:
John
2024-10-26 08:18:29 +02:00
parent 0dd3a80269
commit 619f15d730
3 changed files with 6 additions and 3 deletions
+1 -1
View File
@@ -18,7 +18,7 @@
* add option to discover device via mDNS
* add dedicated log level for device messages
* add option to extend MQTT variables from env/cmdline
* add date+datetime mapping and better device update check to Home Assistant MQTT discovery integration
* add date+datetime mapping, better device update check, and removed single-field-message field names to Home Assistant MQTT discovery integration
## Breaking Changes
* change default config path to https://ebus.github.io/ serving files generated from new TypeSpec message definition sources
+2 -1
View File
@@ -52,6 +52,7 @@
# %field the field name and key for JSON objects (equals the field index if no name is defined or the names are not
# unique in the message).
# %fieldname the field name (and nothing else like in %field, might be empty though!)
# %fieldnamemult the field name unless there is a single field only (similar to %fieldname)
# %type the field type (one of "number", "list", "string", "date", "time", or "datetime").
# %basetype the base data type ID (e.g. "UCH").
# %comment the field comment (if any).
@@ -350,7 +351,7 @@ definition-topic ?= %haprefix/%type_topic/%{TOPIC}_%FIELD/config
# HA integration: this is the config topic payload for HA's MQTT discovery.
definition-payload = {
"unique_id":"%{TOPIC}_%FIELD",
"name":"%name %fieldname",
"name":"%name %fieldnamemult",
"device":%circuit_part,
"value_template":"{{value_json[\"%field\"].value}}",
"state_topic":"%topic"%field_payload
+3 -1
View File
@@ -924,7 +924,9 @@ void MqttHandler::run() {
StringReplacers values = msgValues; // need a copy here as the contents are manipulated
values.set("index", static_cast<signed>(index));
values.set("field", fieldName);
values.set("fieldname", field->getName(-1));
string fieldNameNonUnique = field->getName(-1);
values.set("fieldname", fieldNameNonUnique);
values.set("fieldnamemult", fieldCount == 1 ? "" : fieldNameNonUnique);
values.set("type", typeStr);
values.set("type_map", str);
values.set("basetype", dataType->getId());