13 ESP_LOGV(TAG,
"Request read out from sensor");
18 ESP_LOGV(TAG,
"Read byte from sensor: %x", data);
20 if (this->
buffer_.empty() && data != 0xFF)
32 uint16_t distance =
encode_uint16(this->buffer_[1], this->buffer_[2]);
34 float meters = distance / 1000.0f;
35 ESP_LOGV(TAG,
"Distance from sensor: %umm, %.3fm", distance, meters);
39 ESP_LOGW(TAG,
"Invalid data read from sensor: %s",
43 ESP_LOGW(TAG,
"checksum failed: %02x != %02x",
checksum, this->buffer_[3]);
45 this->buffer_.clear();
49 LOG_SENSOR(
"",
"JST_SR04T Sensor",
this);
52 ESP_LOGCONFIG(TAG,
" sensor model: jsn_sr04t");
55 ESP_LOGCONFIG(TAG,
" sensor model: aj_sr04m");
58 LOG_UPDATE_INTERVAL(
this);
void dump_config() override
std::vector< uint8_t > buffer_
void publish_state(float state)
Publish a new state to the front-end.
void write_byte(uint8_t data)
bool read_available(F &&on_byte)
Same as read_available_chunks(), calling on_byte(uint8_t) once per byte.
ESPHOME_LOG_TAG(TAG, "jsn_sr04t.sensor")
char * format_hex_pretty_to(char *buffer, size_t buffer_size, const uint8_t *data, size_t length, char separator)
Format byte array as uppercase hex to buffer (base implementation).
constexpr size_t format_hex_pretty_size(size_t byte_count)
Calculate buffer size needed for format_hex_pretty_to with separator: "XX:XX:...:XX\0".
constexpr uint16_t encode_uint16(uint8_t msb, uint8_t lsb)
Encode a 16-bit value given the most and least significant byte.