[sht4x] Move timestamp update after successful command, add heater test

Only advance last_heater_millis_ after the heater command succeeds
so a failed write retries on the next cycle instead of silently
skipping.

Add heater settings to the test YAML to ensure CI exercises the
heater code path.
This commit is contained in:
J. Nick Koston
2026-03-20 12:57:53 -10:00
parent a73b5cc94a
commit c2b2aaddd1
2 changed files with 10 additions and 5 deletions
+6 -5
View File
@@ -86,11 +86,6 @@ void SHT4XComponent::update() {
uint32_t now = millis();
if (now - this->last_heater_millis_ >= this->heater_interval_) {
use_heater = true;
// Ensure at least one normal measurement between heater cycles by
// pushing the next eligible heater time forward by one update interval.
// The configured duty cycle is a maximum, not an exact target.
uint32_t interval = std::max(this->heater_interval_, this->get_update_interval());
this->last_heater_millis_ = now - this->heater_interval_ + interval;
}
}
@@ -104,6 +99,12 @@ void SHT4XComponent::update() {
this->status_set_warning(LOG_STR("Failed to send heater command"));
return;
}
// Only update timestamp after successful command. Ensure at least one
// normal measurement between heater cycles by pushing the next eligible
// heater time forward by at least one update interval.
uint32_t now = millis();
uint32_t interval = std::max(this->heater_interval_, this->get_update_interval());
this->last_heater_millis_ = now - this->heater_interval_ + interval;
return;
}
+4
View File
@@ -6,4 +6,8 @@ sensor:
humidity:
name: SHT4X Humidity
address: 0x44
precision: High
heater_max_duty: 0.02
heater_power: High
heater_time: Long
update_interval: 15s