Merge branch 'emsesp:dev' into dev

This commit is contained in:
Proddy
2025-12-16 23:15:20 +01:00
committed by GitHub
3 changed files with 13 additions and 9 deletions

View File

@@ -600,7 +600,7 @@ bool AnalogSensor::update(uint8_t gpio, const char * org_name, double offset, do
// check to see if values have been updated
bool AnalogSensor::updated_values() {
if (changed_) {
if (changed_ && Mqtt::publish_queued() == 0) {
changed_ = false;
return true;
}

View File

@@ -1191,16 +1191,20 @@ bool EMSESP::process_telegram(std::shared_ptr<const Telegram> telegram) {
found_device = emsdevice.get();
if (emsdevice->handle_telegram(telegram)) {
telegram_found = true;
if (Mqtt::connected()
&& ((mqtt_.get_publish_onchange(found_device->device_type()) && found_device->has_update())
|| (telegram->type_id == publish_id_ && telegram->dest == EMSbus::ems_bus_id()))) {
if (telegram->type_id == publish_id_) {
if (Mqtt::connected()) {
// publish device data if it was a validate after write
if (telegram->type_id == publish_id_ && telegram->dest == EMSbus::ems_bus_id()) {
publish_id_ = 0;
}
found_device->has_update(false); // reset flag
if (!Mqtt::publish_single()) {
found_device->has_update(false); // reset flag
publish_device_values(found_device->device_type()); // publish to MQTT if we explicitly have too
}
// auto publish: timeinterval 0 and publish single not set, only if queue is empty
else if (mqtt_.get_publish_onchange(found_device->device_type()) && found_device->has_update() && mqtt_.publish_queued() == 0) {
found_device->has_update(false); // reset flag
if (!Mqtt::publish_single()) {
publish_device_values(found_device->device_type());
}
}
}
break; // remove this to handle same telegrams on multiple devices
}

View File

@@ -370,7 +370,7 @@ bool TemperatureSensor::update(const char * id, const char * name, int16_t offse
// check to see if values have been updated
bool TemperatureSensor::updated_values() {
if (changed_) {
if (changed_ && Mqtt::publish_queued() == 0) {
changed_ = false;
return true;
}