8static constexpr uint8_t WHO_AM_I = 0x0F;
9static constexpr uint8_t LPS22HB_ID = 0xB1;
10static constexpr uint8_t LPS22HH_ID = 0xB3;
11static constexpr uint8_t LPS22DF_ID = 0xB4;
12static constexpr uint8_t CTRL_REG2 = 0x11;
13static constexpr uint8_t CTRL_REG2_ONE_SHOT_MASK = 0b1;
14static constexpr uint8_t STATUS = 0x27;
15static constexpr uint8_t STATUS_T_DA_MASK = 0b10;
16static constexpr uint8_t STATUS_P_DA_MASK = 0b01;
17static constexpr uint8_t TEMP_L = 0x2b;
18static constexpr uint8_t PRES_OUT_XL = 0x28;
19static constexpr uint8_t REF_P_XL = 0x28;
20static constexpr uint8_t READ_ATTEMPTS = 10;
21static constexpr uint8_t READ_INTERVAL = 5;
22static constexpr float PRESSURE_SCALE = 1.0f / 4096.0f;
23static constexpr float TEMPERATURE_SCALE = 0.01f;
28 if (value != LPS22HB_ID && value != LPS22HH_ID && value != LPS22DF_ID) {
29 ESP_LOGW(TAG,
"device IDs as %02x, which isn't a known LPS22HB/HH/DF ID", value);
35 ESP_LOGCONFIG(TAG,
"LPS22:");
39 LOG_UPDATE_INTERVAL(
this);
42static constexpr uint32_t INTERVAL_READ = 0;
47 value |= CTRL_REG2_ONE_SHOT_MASK;
56 const uint8_t expected_status_mask = STATUS_T_DA_MASK | STATUS_P_DA_MASK;
57 if ((value & expected_status_mask) != expected_status_mask) {
58 ESP_LOGD(TAG,
"STATUS not ready: %x", value);
70 float temp = TEMPERATURE_SCALE *
static_cast<float>(encoded);
void mark_failed()
Mark this component as failed.
bool cancel_interval(const char *name)
Cancel an interval function.
void set_interval(const char *name, uint32_t interval, std::function< void()> &&f)
Set an interval function with a const char* name.
ErrorCode write_register(uint8_t a_register, const uint8_t *data, size_t len) const
writes an array of bytes to a specific register in the I²C device
ErrorCode read_register(uint8_t a_register, uint8_t *data, size_t len)
reads an array of bytes from a specific register in the I²C device
uint8_t read_attempts_remaining_
sensor::Sensor * temperature_sensor_
void dump_config() override
sensor::Sensor * pressure_sensor_
void publish_state(float state)
Publish a new state to the front-end.
ESPHOME_LOG_TAG(TAG, "lps22")
constexpr uint32_t encode_uint24(uint8_t byte1, uint8_t byte2, uint8_t byte3)
Encode a 24-bit value given three bytes in most to least significant byte order.
constexpr T encode_value_le(const uint8_t *bytes)
Encode a value from its constituent bytes (from least to most significant) in an array with length si...