ESPHome 2026.6.0-dev
Loading...
Searching...
No Matches
ltr501.h
Go to the documentation of this file.
1#pragma once
2
8
10
11namespace esphome::ltr501 {
12
14
21
23 public:
24 //
25 // EspHome framework functions
26 //
27 void setup() override;
28 void dump_config() override;
29 void update() override;
30 void loop() override;
31
32 // Configuration setters : General
33 //
35
36 // Configuration setters : ALS
37 //
38 void set_als_auto_mode(bool enable) { this->automatic_mode_enabled_ = enable; }
42 void set_als_glass_attenuation_factor(float factor) { this->glass_attenuation_factor_ = factor; }
43
44 // Configuration setters : PS
45 //
46 void set_ps_high_threshold(uint16_t threshold) { this->ps_threshold_high_ = threshold; }
47 void set_ps_low_threshold(uint16_t threshold) { this->ps_threshold_low_ = threshold; }
48 void set_ps_cooldown_time_s(uint16_t time) { this->ps_cooldown_time_s_ = time; }
50
51 // Sensors setters
52 //
59
60 template<typename F> void add_on_ps_high_trigger_callback(F &&callback) {
61 this->on_ps_high_trigger_callback_.add(std::forward<F>(callback));
62 }
63
64 template<typename F> void add_on_ps_low_trigger_callback(F &&callback) {
65 this->on_ps_low_trigger_callback_.add(std::forward<F>(callback));
66 }
67
68 protected:
69 //
70 // Internal state machine, used to split all the actions into
71 // small steps in loop() to make sure we are not blocking execution
72 //
84 uint8_t tries_{0};
85
87
88 //
89 // Current measurements data
90 //
99 uint16_t ps_readings_{0xfffe};
100
101 inline bool is_als_() const {
103 }
104 inline bool is_ps_() const {
106 }
107
108 //
109 // Device interaction and data manipulation
110 //
111 bool check_part_number_();
112
113 void configure_reset_();
114 void configure_als_();
117 LtrDataAvail is_als_data_ready_(AlsReadings &data);
118 void read_sensor_data_(AlsReadings &data);
119 bool are_adjustments_required_(AlsReadings &data);
120 void apply_lux_calculation_(AlsReadings &data);
121 void publish_data_part_1_(AlsReadings &data);
122 void publish_data_part_2_(AlsReadings &data);
123
124 void configure_ps_();
125 uint16_t read_ps_data_();
127
128 //
129 // Component configuration
130 //
136
139 uint16_t ps_threshold_high_{0xffff};
140 uint16_t ps_threshold_low_{0x0000};
143
144 //
145 // Sensors for publishing data
146 //
147 sensor::Sensor *infrared_counts_sensor_{nullptr}; // direct reading CH1, infrared only
148 sensor::Sensor *full_spectrum_counts_sensor_{nullptr}; // direct reading CH0, infrared + visible light
149 sensor::Sensor *ambient_light_sensor_{nullptr}; // calculated lux
150 sensor::Sensor *actual_gain_sensor_{nullptr}; // actual gain of reading
151 sensor::Sensor *actual_integration_time_sensor_{nullptr}; // actual integration time
152 sensor::Sensor *proximity_counts_sensor_{nullptr}; // proximity sensor
153
155 return this->ambient_light_sensor_ != nullptr || this->full_spectrum_counts_sensor_ != nullptr ||
156 this->infrared_counts_sensor_ != nullptr || this->actual_gain_sensor_ != nullptr ||
157 this->actual_integration_time_sensor_ != nullptr;
158 }
159 bool is_any_ps_sensor_enabled_() const { return this->proximity_counts_sensor_ != nullptr; }
160
163};
164} // namespace esphome::ltr501
This class simplifies creating components that periodically check a state.
Definition component.h:585
This Class provides the methods to read/write bytes from/to an i2c device.
Definition i2c.h:132
LtrDataAvail is_als_data_ready_(AlsReadings &data)
Definition ltr501.cpp:380
void set_ps_high_threshold(uint16_t threshold)
Definition ltr501.h:46
void configure_gain_(AlsGain501 gain)
Definition ltr501.cpp:348
void set_ps_cooldown_time_s(uint16_t time)
Definition ltr501.h:48
void publish_data_part_1_(AlsReadings &data)
Definition ltr501.cpp:521
void publish_data_part_2_(AlsReadings &data)
Definition ltr501.cpp:536
void set_infrared_counts_sensor(sensor::Sensor *sensor)
Definition ltr501.h:55
void configure_integration_time_(IntegrationTime501 time)
Definition ltr501.cpp:364
sensor::Sensor * actual_integration_time_sensor_
Definition ltr501.h:151
CallbackManager< void()> on_ps_high_trigger_callback_
Definition ltr501.h:161
void set_full_spectrum_counts_sensor(sensor::Sensor *sensor)
Definition ltr501.h:54
void set_ps_low_threshold(uint16_t threshold)
Definition ltr501.h:47
IntegrationTime501 integration_time_
Definition ltr501.h:133
struct esphome::ltr501::LTRAlsPs501Component::AlsReadings als_readings_
void read_sensor_data_(AlsReadings &data)
Definition ltr501.cpp:394
MeasurementRepeatRate repeat_rate_
Definition ltr501.h:134
void add_on_ps_low_trigger_callback(F &&callback)
Definition ltr501.h:64
void set_als_integration_time(IntegrationTime501 time)
Definition ltr501.h:40
enum esphome::ltr501::LTRAlsPs501Component::State NOT_INITIALIZED
void set_actual_gain_sensor(sensor::Sensor *sensor)
Definition ltr501.h:56
void set_proximity_counts_sensor(sensor::Sensor *sensor)
Definition ltr501.h:58
void set_ltr_type(LtrType type)
Definition ltr501.h:34
CallbackManager< void()> on_ps_low_trigger_callback_
Definition ltr501.h:162
void apply_lux_calculation_(AlsReadings &data)
Definition ltr501.cpp:479
void set_als_auto_mode(bool enable)
Definition ltr501.h:38
void set_ps_gain(PsGain501 gain)
Definition ltr501.h:49
sensor::Sensor * proximity_counts_sensor_
Definition ltr501.h:152
void set_als_glass_attenuation_factor(float factor)
Definition ltr501.h:42
void set_ambient_light_sensor(sensor::Sensor *sensor)
Definition ltr501.h:53
sensor::Sensor * infrared_counts_sensor_
Definition ltr501.h:147
bool are_adjustments_required_(AlsReadings &data)
Definition ltr501.cpp:407
void set_als_gain(AlsGain501 gain)
Definition ltr501.h:39
void add_on_ps_high_trigger_callback(F &&callback)
Definition ltr501.h:60
void set_actual_integration_time_sensor(sensor::Sensor *sensor)
Definition ltr501.h:57
sensor::Sensor * full_spectrum_counts_sensor_
Definition ltr501.h:148
sensor::Sensor * actual_gain_sensor_
Definition ltr501.h:150
sensor::Sensor * ambient_light_sensor_
Definition ltr501.h:149
void set_als_meas_repeat_rate(MeasurementRepeatRate rate)
Definition ltr501.h:41
Base-class for all sensors.
Definition sensor.h:47
uint16_t type
AlsGain501 gain
@ LTR_TYPE_ALS_AND_PS
Definition ltr501.h:19
@ LTR_TYPE_ALS_ONLY
Definition ltr501.h:17
static void uint32_t