9static constexpr uint32_t WAIT_CONVERT_TIMEOUT_ID = 0;
11static const uint8_t HYT271_ADDRESS = 0x28;
14 ESP_LOGCONFIG(TAG,
"HYT271:");
16 LOG_UPDATE_INTERVAL(
this);
18 LOG_SENSOR(
" ",
"Humidity", this->
humidity_);
21 uint8_t raw_data[4] = {0, 0, 0, 0};
25 ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
28 this->
set_timeout(WAIT_CONVERT_TIMEOUT_ID, 50, [
this]() {
32 ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
35 uint16_t raw_temperature = ((raw_data[2] << 8) | raw_data[3]) >> 2;
36 uint16_t raw_humidity = ((raw_data[0] & 0x3F) << 8) | raw_data[1];
38 float temperature = ((float(raw_temperature)) * (165.0f / 16383.0f)) - 40.0f;
39 float humidity = (float(raw_humidity)) * (100.0f / 16383.0f);
41 ESP_LOGD(TAG,
"Got Temperature=%.1f°C Humidity=%.1f%%",
temperature, humidity);
void status_set_warning()
void set_timeout(const char *name, uint32_t timeout, std::function< void()> &&f)
Set a timeout function with a const char* name.
void status_clear_warning()
void dump_config() override
void update() override
Update the sensor values (temperature+humidity).
sensor::Sensor * temperature_
sensor::Sensor * humidity_
ErrorCode write(const uint8_t *data, size_t len) const
writes an array of bytes to a device using an I2CBus
ErrorCode read(uint8_t *data, size_t len) const
reads an array of bytes from the device using an I2CBus
void publish_state(float state)
Publish a new state to the front-end.
ESPHOME_LOG_TAG(TAG, "hyt271")
@ ERROR_OK
No error found during execution of method.