SGP40 sensor start-up fix (#2178)

This commit is contained in:
Keith Burzinski 2021-09-08 16:42:35 -05:00 committed by GitHub
parent f09aca4865
commit faf1c8bee8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 5 deletions

View file

@ -78,27 +78,28 @@ void SGP40Component::setup() {
} }
void SGP40Component::self_test_() { void SGP40Component::self_test_() {
ESP_LOGD(TAG, "selfTest started"); ESP_LOGD(TAG, "Self-test started");
if (!this->write_command_(SGP40_CMD_SELF_TEST)) { if (!this->write_command_(SGP40_CMD_SELF_TEST)) {
this->error_code_ = COMMUNICATION_FAILED; this->error_code_ = COMMUNICATION_FAILED;
ESP_LOGD(TAG, "selfTest communicatin failed"); ESP_LOGD(TAG, "Self-test communication failed");
this->mark_failed(); this->mark_failed();
} }
this->set_timeout(250, [this]() { this->set_timeout(250, [this]() {
uint16_t reply[1]; uint16_t reply[1];
if (!this->read_data_(reply, 1)) { if (!this->read_data_(reply, 1)) {
ESP_LOGD(TAG, "selfTest read_data_ failed"); ESP_LOGD(TAG, "Self-test read_data_ failed");
this->mark_failed(); this->mark_failed();
return; return;
} }
if (reply[0] == 0xD400) { if (reply[0] == 0xD400) {
ESP_LOGD(TAG, "selfTest completed"); this->self_test_complete_ = true;
ESP_LOGD(TAG, "Self-test completed");
return; return;
} }
ESP_LOGD(TAG, "selfTest failed"); ESP_LOGD(TAG, "Self-test failed");
this->mark_failed(); this->mark_failed();
}); });
} }
@ -154,6 +155,12 @@ int32_t SGP40Component::measure_voc_index_() {
*/ */
uint16_t SGP40Component::measure_raw_() { uint16_t SGP40Component::measure_raw_() {
float humidity = NAN; float humidity = NAN;
if (!this->self_test_complete_) {
ESP_LOGD(TAG, "Self-test not yet complete");
return UINT16_MAX;
}
if (this->humidity_sensor_ != nullptr) { if (this->humidity_sensor_ != nullptr) {
humidity = this->humidity_sensor_->state; humidity = this->humidity_sensor_->state;
} }

View file

@ -68,6 +68,7 @@ class SGP40Component : public PollingComponent, public sensor::Sensor, public i2
int32_t seconds_since_last_store_; int32_t seconds_since_last_store_;
SGP40Baselines baselines_storage_; SGP40Baselines baselines_storage_;
VocAlgorithmParams voc_algorithm_params_; VocAlgorithmParams voc_algorithm_params_;
bool self_test_complete_;
bool store_baseline_; bool store_baseline_;
int32_t state0_; int32_t state0_;
int32_t state1_; int32_t state1_;