mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 07:49:52 +03:00
remove/recreate HA config for dallas/analog on change #888
This commit is contained in:
@@ -67,6 +67,10 @@ void AnalogSensor::reload() {
|
|||||||
#if defined(EMSESP_STANDALONE)
|
#if defined(EMSESP_STANDALONE)
|
||||||
analog_enabled_ = true; // for local offline testing
|
analog_enabled_ = true; // for local offline testing
|
||||||
#endif
|
#endif
|
||||||
|
for (auto sensor : sensors_) {
|
||||||
|
remove_ha_topic(sensor.gpio());
|
||||||
|
sensor.ha_registered = false;
|
||||||
|
}
|
||||||
if (!analog_enabled_) {
|
if (!analog_enabled_) {
|
||||||
sensors_.clear();
|
sensors_.clear();
|
||||||
return;
|
return;
|
||||||
@@ -607,11 +611,15 @@ std::string AnalogSensor::Sensor::name() const {
|
|||||||
return name_;
|
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) {
|
bool AnalogSensor::command_setvalue(const char * value, const int8_t gpio) {
|
||||||
float val;
|
float val;
|
||||||
if (!Helpers::value2float(value, 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_) {
|
for (auto & sensor : sensors_) {
|
||||||
if (sensor.gpio() == gpio) {
|
if (sensor.gpio() == gpio) {
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ void DallasSensor::reload() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
for (auto & sensor : sensors_) {
|
for (auto & sensor : sensors_) {
|
||||||
|
remove_ha_topic(sensor.id());
|
||||||
sensor.ha_registered = false; // force HA configs to be re-created
|
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
|
// create the HA MQTT config
|
||||||
// to e.g. homeassistant/sensor/ems-esp/dallassensor_28-233D-9497-0C03/config
|
// to e.g. homeassistant/sensor/ems-esp/dallassensor_28-233D-9497-0C03/config
|
||||||
if (Mqtt::ha_enabled()) {
|
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());
|
LOG_DEBUG("Recreating HA config for sensor ID %s", sensor.id().c_str());
|
||||||
|
|
||||||
StaticJsonDocument<EMSESP_JSON_SIZE_MEDIUM> config;
|
StaticJsonDocument<EMSESP_JSON_SIZE_MEDIUM> config;
|
||||||
|
|||||||
Reference in New Issue
Block a user