From af7d0724869905a76642997415560f74b53b175d Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 5 Mar 2023 17:54:04 +0100 Subject: [PATCH] Test for domoticz discovery --- src/analogsensor.cpp | 20 +++++++++++++++----- src/dallassensor.cpp | 22 ++++++++++++++++------ 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/src/analogsensor.cpp b/src/analogsensor.cpp index b9910774a..f0db84a67 100644 --- a/src/analogsensor.cpp +++ b/src/analogsensor.cpp @@ -483,12 +483,22 @@ void AnalogSensor::publish_values(const bool force) { char val_obj[50]; char val_cond[95]; - if (Mqtt::is_nested()) { - snprintf(val_obj, sizeof(val_obj), "value_json['%02d'].value", sensor.gpio()); - snprintf(val_cond, sizeof(val_cond), "value_json['%02d'] is defined and %s is defined", sensor.gpio(), val_obj); + if (Mqtt::discovery_type() == 0) { // Homeassistant + if (Mqtt::is_nested()) { + snprintf(val_obj, sizeof(val_obj), "value_json['%02d'].value", sensor.gpio()); + snprintf(val_cond, sizeof(val_cond), "value_json['%02d'] is defined and %s is defined", sensor.gpio(), val_obj); + } else { + snprintf(val_obj, sizeof(val_obj), "value_json['%s']", sensor.name().c_str()); + snprintf(val_cond, sizeof(val_cond), "%s is defined", val_obj); + } } else { - snprintf(val_obj, sizeof(val_obj), "value_json['%s']", sensor.name().c_str()); - snprintf(val_cond, sizeof(val_cond), "%s is defined", val_obj); + if (Mqtt::is_nested()) { + snprintf(val_obj, sizeof(val_obj), "value_json.%02d.value", sensor.gpio()); + snprintf(val_cond, sizeof(val_cond), "value_json.%02d is defined and %s is defined", sensor.gpio(), val_obj); + } else { + snprintf(val_obj, sizeof(val_obj), "value_json.%s", sensor.name().c_str()); + snprintf(val_cond, sizeof(val_cond), "%s is defined", val_obj); + } } char sample_val[12] = "0"; if (sensor.type() == AnalogType::DIGITAL_IN || sensor.type() == AnalogType::DIGITAL_OUT) { diff --git a/src/dallassensor.cpp b/src/dallassensor.cpp index 8c11c0fe8..a756e34a0 100644 --- a/src/dallassensor.cpp +++ b/src/dallassensor.cpp @@ -518,12 +518,22 @@ void DallasSensor::publish_values(const bool force) { char val_obj[50]; char val_cond[95]; - if (Mqtt::is_nested()) { - snprintf(val_obj, sizeof(val_obj), "value_json['%s'].temp", sensor.id().c_str()); - snprintf(val_cond, sizeof(val_cond), "value_json['%s'] is defined and %s is defined", sensor.id().c_str(), val_obj); - } else { - snprintf(val_obj, sizeof(val_obj), "value_json['%s']", sensor.name().c_str()); - snprintf(val_cond, sizeof(val_cond), "%s is defined", val_obj); + if (Mqtt::discovery_type() == 0) { // Homeassistant + if (Mqtt::is_nested()) { + snprintf(val_obj, sizeof(val_obj), "value_json['%s'].temp", sensor.id().c_str()); + snprintf(val_cond, sizeof(val_cond), "value_json['%s'] is defined and %s is defined", sensor.id().c_str(), val_obj); + } else { + snprintf(val_obj, sizeof(val_obj), "value_json['%s']", sensor.name().c_str()); + snprintf(val_cond, sizeof(val_cond), "%s is defined", val_obj); + } + } else { // domoticz + if (Mqtt::is_nested()) { + snprintf(val_obj, sizeof(val_obj), "value_json.%s.temp", sensor.id().c_str()); + snprintf(val_cond, sizeof(val_cond), "value_json.%s is defined and %s is defined", sensor.id().c_str(), val_obj); + } else { + snprintf(val_obj, sizeof(val_obj), "value_json.%s", sensor.name().c_str()); + snprintf(val_cond, sizeof(val_cond), "%s is defined", val_obj); + } } config["val_tpl"] = (std::string) "{{" + val_obj + " if " + val_cond + " else -55}}";