ESPHome 2026.1.0b1
Loading...
Searching...
No Matches
rd03d.h
Go to the documentation of this file.
1#pragma once
2
6#ifdef USE_SENSOR
8#endif
9#ifdef USE_BINARY_SENSOR
11#endif
12
13#include <array>
14
15namespace esphome::rd03d {
16
17static constexpr uint8_t MAX_TARGETS = 3;
18static constexpr uint8_t FRAME_HEADER_SIZE = 4;
19static constexpr uint8_t FRAME_FOOTER_SIZE = 2;
20static constexpr uint8_t TARGET_DATA_SIZE = 8;
21static constexpr uint8_t FRAME_SIZE =
22 FRAME_HEADER_SIZE + (MAX_TARGETS * TARGET_DATA_SIZE) + FRAME_FOOTER_SIZE; // 30 bytes
23
24enum class TrackingMode : uint8_t {
25 SINGLE_TARGET = 0,
26 MULTI_TARGET = 1,
27};
28
29#ifdef USE_SENSOR
38#endif
39
41 public:
42 void setup() override;
43 void loop() override;
44 void dump_config() override;
45 float get_setup_priority() const override { return setup_priority::DATA; }
46
47#ifdef USE_SENSOR
49 void set_x_sensor(uint8_t target, sensor::Sensor *sensor) { this->targets_[target].x = sensor; }
50 void set_y_sensor(uint8_t target, sensor::Sensor *sensor) { this->targets_[target].y = sensor; }
51 void set_speed_sensor(uint8_t target, sensor::Sensor *sensor) { this->targets_[target].speed = sensor; }
52 void set_distance_sensor(uint8_t target, sensor::Sensor *sensor) { this->targets_[target].distance = sensor; }
53 void set_resolution_sensor(uint8_t target, sensor::Sensor *sensor) { this->targets_[target].resolution = sensor; }
54 void set_angle_sensor(uint8_t target, sensor::Sensor *sensor) { this->targets_[target].angle = sensor; }
55#endif
56#ifdef USE_BINARY_SENSOR
59 this->target_presence_[target] = sensor;
60 }
61#endif
62
63 // Configuration setters (called from code generation)
65 void set_throttle(uint32_t throttle) { this->throttle_ = throttle; }
66
67 protected:
68 void apply_config_();
69 void send_command_(uint16_t command, const uint8_t *data = nullptr, uint8_t data_len = 0);
70 void process_frame_();
71#ifdef USE_SENSOR
72 void publish_target_(uint8_t target_num, int16_t x, int16_t y, int16_t speed, uint16_t resolution);
73#endif
74
75#ifdef USE_SENSOR
76 std::array<TargetSensor, MAX_TARGETS> targets_{};
78#endif
79#ifdef USE_BINARY_SENSOR
80 std::array<binary_sensor::BinarySensor *, MAX_TARGETS> target_presence_{};
82#endif
83
84 // Configuration (only sent if explicitly set)
86 uint32_t throttle_{0};
87 uint32_t last_publish_time_{0};
88
89 std::array<uint8_t, FRAME_SIZE> buffer_{};
90 uint8_t buffer_pos_{0};
91};
92
93} // namespace esphome::rd03d
BedjetMode mode
BedJet operating mode.
Base class for all binary_sensor-type classes.
void set_angle_sensor(uint8_t target, sensor::Sensor *sensor)
Definition rd03d.h:54
optional< TrackingMode > tracking_mode_
Definition rd03d.h:85
void set_tracking_mode(TrackingMode mode)
Definition rd03d.h:64
void set_target_count_sensor(sensor::Sensor *sensor)
Definition rd03d.h:48
std::array< TargetSensor, MAX_TARGETS > targets_
Definition rd03d.h:76
void dump_config() override
Definition rd03d.cpp:51
void send_command_(uint16_t command, const uint8_t *data=nullptr, uint8_t data_len=0)
Definition rd03d.cpp:232
void set_resolution_sensor(uint8_t target, sensor::Sensor *sensor)
Definition rd03d.h:53
binary_sensor::BinarySensor * target_binary_sensor_
Definition rd03d.h:81
void set_distance_sensor(uint8_t target, sensor::Sensor *sensor)
Definition rd03d.h:52
std::array< uint8_t, FRAME_SIZE > buffer_
Definition rd03d.h:89
void publish_target_(uint8_t target_num, int16_t x, int16_t y, int16_t speed, uint16_t resolution)
Definition rd03d.cpp:186
std::array< binary_sensor::BinarySensor *, MAX_TARGETS > target_presence_
Definition rd03d.h:80
void set_target_binary_sensor(uint8_t target, binary_sensor::BinarySensor *sensor)
Definition rd03d.h:58
void set_target_binary_sensor(binary_sensor::BinarySensor *sensor)
Definition rd03d.h:57
void set_throttle(uint32_t throttle)
Definition rd03d.h:65
void set_x_sensor(uint8_t target, sensor::Sensor *sensor)
Definition rd03d.h:49
void set_y_sensor(uint8_t target, sensor::Sensor *sensor)
Definition rd03d.h:50
void set_speed_sensor(uint8_t target, sensor::Sensor *sensor)
Definition rd03d.h:51
sensor::Sensor * target_count_sensor_
Definition rd03d.h:77
float get_setup_priority() const override
Definition rd03d.h:45
Base-class for all sensors.
Definition sensor.h:42
Resolution resolution
Definition msa3xx.h:1
const float DATA
For components that import data from directly connected sensors like DHT.
Definition component.cpp:81
sensor::Sensor * resolution
Definition rd03d.h:35
sensor::Sensor * distance
Definition rd03d.h:34
sensor::Sensor * x
Definition rd03d.h:31
sensor::Sensor * speed
Definition rd03d.h:33
sensor::Sensor * y
Definition rd03d.h:32
sensor::Sensor * angle
Definition rd03d.h:36
uint16_t x
Definition tt21100.cpp:5
uint16_t y
Definition tt21100.cpp:6