12 static const char *
const TAG =
"jsn_sr04t.sensor";
16 ESP_LOGV(TAG,
"Request read out from sensor");
24 ESP_LOGV(TAG,
"Read byte from sensor: %x", data);
26 if (this->
buffer_.empty() && data != 0xFF)
37 if (this->buffer_[3] == checksum) {
38 uint16_t distance =
encode_uint16(this->buffer_[1], this->buffer_[2]);
40 float meters = distance / 1000.0f;
41 ESP_LOGV(TAG,
"Distance from sensor: %" PRIu32
"mm, %.3fm", distance, meters);
44 ESP_LOGW(TAG,
"Invalid data read from sensor: %s",
format_hex_pretty(this->buffer_).c_str());
47 ESP_LOGW(TAG,
"checksum failed: %02x != %02x", checksum, this->buffer_[3]);
49 this->buffer_.clear();
53 LOG_SENSOR(
"",
"JST_SR04T Sensor",
this);
54 LOG_UPDATE_INTERVAL(
this);
std::string format_hex_pretty(const uint8_t *data, size_t length)
Format the byte array data of length len in pretty-printed, human-readable hex.
void write_byte(uint8_t data)
bool read_byte(uint8_t *data)
void dump_config() override
std::vector< uint8_t > buffer_
void publish_state(float state)
Publish a new state to the front-end.
constexpr uint16_t encode_uint16(uint8_t msb, uint8_t lsb)
Encode a 16-bit value given the most and least significant byte.
This is a workaround until we can figure out a way to get the tflite-micro idf component code availab...