ESPHome 2026.3.0-dev
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
46#ifdef USE_SENSOR
48 void set_x_sensor(uint8_t target, sensor::Sensor *sensor) { this->targets_[target].x = sensor; }
49 void set_y_sensor(uint8_t target, sensor::Sensor *sensor) { this->targets_[target].y = sensor; }
50 void set_speed_sensor(uint8_t target, sensor::Sensor *sensor) { this->targets_[target].speed = sensor; }
51 void set_distance_sensor(uint8_t target, sensor::Sensor *sensor) { this->targets_[target].distance = sensor; }
52 void set_resolution_sensor(uint8_t target, sensor::Sensor *sensor) { this->targets_[target].resolution = sensor; }
53 void set_angle_sensor(uint8_t target, sensor::Sensor *sensor) { this->targets_[target].angle = sensor; }
54#endif
55#ifdef USE_BINARY_SENSOR
58 this->target_presence_[target] = sensor;
59 }
60#endif
61
62 // Configuration setters (called from code generation)
64 void set_throttle(uint32_t throttle) { this->throttle_ = throttle; }
65
66 protected:
67 void apply_config_();
68 void send_command_(uint16_t command, const uint8_t *data = nullptr, uint8_t data_len = 0);
69 void process_frame_();
70#ifdef USE_SENSOR
71 void publish_target_(uint8_t target_num, int16_t x, int16_t y, int16_t speed, uint16_t resolution);
72#endif
73
74#ifdef USE_SENSOR
75 std::array<TargetSensor, MAX_TARGETS> targets_{};
77#endif
78#ifdef USE_BINARY_SENSOR
79 std::array<binary_sensor::BinarySensor *, MAX_TARGETS> target_presence_{};
81#endif
82
83 // Configuration (only sent if explicitly set)
85 uint32_t throttle_{0};
86 uint32_t last_publish_time_{0};
87
88 std::array<uint8_t, FRAME_SIZE> buffer_{};
89 uint8_t buffer_pos_{0};
90};
91
92} // 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:53
optional< TrackingMode > tracking_mode_
Definition rd03d.h:84
void set_tracking_mode(TrackingMode mode)
Definition rd03d.h:63
void set_target_count_sensor(sensor::Sensor *sensor)
Definition rd03d.h:47
std::array< TargetSensor, MAX_TARGETS > targets_
Definition rd03d.h:75
void dump_config() override
Definition rd03d.cpp:52
void send_command_(uint16_t command, const uint8_t *data=nullptr, uint8_t data_len=0)
Definition rd03d.cpp:243
void set_resolution_sensor(uint8_t target, sensor::Sensor *sensor)
Definition rd03d.h:52
binary_sensor::BinarySensor * target_binary_sensor_
Definition rd03d.h:80
void set_distance_sensor(uint8_t target, sensor::Sensor *sensor)
Definition rd03d.h:51
std::array< uint8_t, FRAME_SIZE > buffer_
Definition rd03d.h:88
void publish_target_(uint8_t target_num, int16_t x, int16_t y, int16_t speed, uint16_t resolution)
Definition rd03d.cpp:197
std::array< binary_sensor::BinarySensor *, MAX_TARGETS > target_presence_
Definition rd03d.h:79
void set_target_binary_sensor(uint8_t target, binary_sensor::BinarySensor *sensor)
Definition rd03d.h:57
void set_target_binary_sensor(binary_sensor::BinarySensor *sensor)
Definition rd03d.h:56
void set_throttle(uint32_t throttle)
Definition rd03d.h:64
void set_x_sensor(uint8_t target, sensor::Sensor *sensor)
Definition rd03d.h:48
void set_y_sensor(uint8_t target, sensor::Sensor *sensor)
Definition rd03d.h:49
void set_speed_sensor(uint8_t target, sensor::Sensor *sensor)
Definition rd03d.h:50
sensor::Sensor * target_count_sensor_
Definition rd03d.h:76
Base-class for all sensors.
Definition sensor.h:43
Resolution resolution
Definition msa3xx.h:1
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