mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-08 00:39:50 +03:00
analogsensor HA discovery: types on remove
This commit is contained in:
@@ -68,7 +68,7 @@ void AnalogSensor::reload() {
|
|||||||
analog_enabled_ = true; // for local offline testing
|
analog_enabled_ = true; // for local offline testing
|
||||||
#endif
|
#endif
|
||||||
for (auto sensor : sensors_) {
|
for (auto sensor : sensors_) {
|
||||||
remove_ha_topic(sensor.gpio());
|
remove_ha_topic(sensor.type(), sensor.gpio());
|
||||||
sensor.ha_registered = false;
|
sensor.ha_registered = false;
|
||||||
}
|
}
|
||||||
if (!analog_enabled_) {
|
if (!analog_enabled_) {
|
||||||
@@ -333,7 +333,7 @@ bool AnalogSensor::update(uint8_t gpio, const std::string & name, double offset,
|
|||||||
|
|
||||||
// if the sensor exists and we're using HA, delete the old HA record
|
// if the sensor exists and we're using HA, delete the old HA record
|
||||||
if (found_sensor && Mqtt::ha_enabled()) {
|
if (found_sensor && Mqtt::ha_enabled()) {
|
||||||
remove_ha_topic(gpio); // the GPIO
|
remove_ha_topic(type, gpio); // the GPIO
|
||||||
}
|
}
|
||||||
|
|
||||||
// we didn't find it, it's new, so create and store it
|
// we didn't find it, it's new, so create and store it
|
||||||
@@ -384,7 +384,7 @@ void AnalogSensor::publish_sensor(const Sensor & sensor) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// send empty config topic to remove the entry from HA
|
// send empty config topic to remove the entry from HA
|
||||||
void AnalogSensor::remove_ha_topic(const uint8_t gpio) const {
|
void AnalogSensor::remove_ha_topic(const int8_t type, const uint8_t gpio) const {
|
||||||
if (!Mqtt::ha_enabled()) {
|
if (!Mqtt::ha_enabled()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -392,7 +392,21 @@ void AnalogSensor::remove_ha_topic(const uint8_t gpio) const {
|
|||||||
LOG_DEBUG("Removing HA config for analog sensor GPIO %02d", gpio);
|
LOG_DEBUG("Removing HA config for analog sensor GPIO %02d", gpio);
|
||||||
#endif
|
#endif
|
||||||
char topic[Mqtt::MQTT_TOPIC_MAX_SIZE];
|
char topic[Mqtt::MQTT_TOPIC_MAX_SIZE];
|
||||||
|
#if CONFIG_IDF_TARGET_ESP32
|
||||||
|
if (type == AnalogType::DIGITAL_OUT && gpio != 25 && gpio != 26) {
|
||||||
|
#else
|
||||||
|
if (type == AnalogType::DIGITAL_OUT)
|
||||||
|
#endif
|
||||||
|
snprintf(topic, sizeof(topic), "switch/%s/analogsensor_%02d/config", Mqtt::basename().c_str(), gpio);
|
||||||
|
} else if (type == AnalogType::DIGITAL_OUT) { // DAC
|
||||||
|
snprintf(topic, sizeof(topic), "number/%s/analogsensor_%02d/config", Mqtt::basename().c_str(), gpio);
|
||||||
|
} else if (type >= AnalogType::PWM_0) {
|
||||||
|
snprintf(topic, sizeof(topic), "number/%s/analogsensor_%02d/config", Mqtt::basename().c_str(), gpio);
|
||||||
|
} else if (type == AnalogType::DIGITAL_IN) {
|
||||||
|
snprintf(topic, sizeof(topic), "binary-sensor/%s/analogsensor_%02d/config", Mqtt::basename().c_str(), gpio);
|
||||||
|
} else {
|
||||||
snprintf(topic, sizeof(topic), "sensor/%s/analogsensor_%02d/config", Mqtt::basename().c_str(), gpio);
|
snprintf(topic, sizeof(topic), "sensor/%s/analogsensor_%02d/config", Mqtt::basename().c_str(), gpio);
|
||||||
|
}
|
||||||
Mqtt::publish_ha(topic);
|
Mqtt::publish_ha(topic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ class AnalogSensor {
|
|||||||
|
|
||||||
static uuid::log::Logger logger_;
|
static uuid::log::Logger logger_;
|
||||||
|
|
||||||
void remove_ha_topic(const uint8_t id) const;
|
void remove_ha_topic(const int8_t type, const uint8_t id) const;
|
||||||
bool command_setvalue(const char * value, const int8_t gpio);
|
bool command_setvalue(const char * value, const int8_t gpio);
|
||||||
void measure();
|
void measure();
|
||||||
bool command_info(const char * value, const int8_t id, JsonObject & output) const;
|
bool command_info(const char * value, const int8_t id, JsonObject & output) const;
|
||||||
|
|||||||
Reference in New Issue
Block a user