From 3e3a600a601b8ca41cdebd99b590f60feef06cad Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 11 Jan 2023 18:38:07 +0100 Subject: [PATCH] remove/recreate HA config for dallas/analog on change #888 --- src/analogsensor.cpp | 12 ++++++++++-- src/dallassensor.cpp | 6 +++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/analogsensor.cpp b/src/analogsensor.cpp index fccaf23a5..369319438 100644 --- a/src/analogsensor.cpp +++ b/src/analogsensor.cpp @@ -67,6 +67,10 @@ void AnalogSensor::reload() { #if defined(EMSESP_STANDALONE) analog_enabled_ = true; // for local offline testing #endif + for (auto sensor : sensors_) { + remove_ha_topic(sensor.gpio()); + sensor.ha_registered = false; + } if (!analog_enabled_) { sensors_.clear(); return; @@ -607,11 +611,15 @@ std::string AnalogSensor::Sensor::name() const { return name_; } -// set the counter value, id is gpio-no +// set the dig_out/counter/DAC/PWM value, id is gpio-no bool AnalogSensor::command_setvalue(const char * value, const int8_t gpio) { float val; if (!Helpers::value2float(value, val)) { - return false; + bool b; + if (!Helpers::value2bool(value, b)) { + return false; + } + val = b ? 1 : 0; } for (auto & sensor : sensors_) { if (sensor.gpio() == gpio) { diff --git a/src/dallassensor.cpp b/src/dallassensor.cpp index 9d9db08f1..60fbd1468 100644 --- a/src/dallassensor.cpp +++ b/src/dallassensor.cpp @@ -75,6 +75,7 @@ void DallasSensor::reload() { }); for (auto & sensor : sensors_) { + remove_ha_topic(sensor.id()); sensor.ha_registered = false; // force HA configs to be re-created } } @@ -498,7 +499,10 @@ void DallasSensor::publish_values(const bool force) { // create the HA MQTT config // to e.g. homeassistant/sensor/ems-esp/dallassensor_28-233D-9497-0C03/config if (Mqtt::ha_enabled()) { - if (!sensor.ha_registered || force) { + if (!has_value && sensor.ha_registered) { + remove_ha_topic(sensor.id()); + sensor.ha_registered = false; + } else if (!sensor.ha_registered || force) { LOG_DEBUG("Recreating HA config for sensor ID %s", sensor.id().c_str()); StaticJsonDocument config;