Test for domoticz discovery

This commit is contained in:
MichaelDvP
2023-03-05 17:54:04 +01:00
parent a93fd314ec
commit af7d072486
2 changed files with 31 additions and 11 deletions

View File

@@ -483,12 +483,22 @@ void AnalogSensor::publish_values(const bool force) {
char val_obj[50]; char val_obj[50];
char val_cond[95]; char val_cond[95];
if (Mqtt::is_nested()) { if (Mqtt::discovery_type() == 0) { // Homeassistant
snprintf(val_obj, sizeof(val_obj), "value_json['%02d'].value", sensor.gpio()); if (Mqtt::is_nested()) {
snprintf(val_cond, sizeof(val_cond), "value_json['%02d'] is defined and %s is defined", sensor.gpio(), val_obj); 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 { } else {
snprintf(val_obj, sizeof(val_obj), "value_json['%s']", sensor.name().c_str()); if (Mqtt::is_nested()) {
snprintf(val_cond, sizeof(val_cond), "%s is defined", val_obj); 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"; char sample_val[12] = "0";
if (sensor.type() == AnalogType::DIGITAL_IN || sensor.type() == AnalogType::DIGITAL_OUT) { if (sensor.type() == AnalogType::DIGITAL_IN || sensor.type() == AnalogType::DIGITAL_OUT) {

View File

@@ -518,12 +518,22 @@ void DallasSensor::publish_values(const bool force) {
char val_obj[50]; char val_obj[50];
char val_cond[95]; char val_cond[95];
if (Mqtt::is_nested()) { if (Mqtt::discovery_type() == 0) { // Homeassistant
snprintf(val_obj, sizeof(val_obj), "value_json['%s'].temp", sensor.id().c_str()); if (Mqtt::is_nested()) {
snprintf(val_cond, sizeof(val_cond), "value_json['%s'] is defined and %s is defined", sensor.id().c_str(), val_obj); snprintf(val_obj, sizeof(val_obj), "value_json['%s'].temp", sensor.id().c_str());
} else { snprintf(val_cond, sizeof(val_cond), "value_json['%s'] is defined and %s is defined", sensor.id().c_str(), val_obj);
snprintf(val_obj, sizeof(val_obj), "value_json['%s']", sensor.name().c_str()); } else {
snprintf(val_cond, sizeof(val_cond), "%s is defined", val_obj); 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}}"; config["val_tpl"] = (std::string) "{{" + val_obj + " if " + val_cond + " else -55}}";