mirror of
https://github.com/esphome/esphome.git
synced 2026-05-24 18:06:27 +08:00
[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:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user