ESPHome 2025.5.0
Loading...
Searching...
No Matches
ezo.h
Go to the documentation of this file.
1#pragma once
2
6#include <deque>
7
8namespace esphome {
9namespace ezo {
10
11static const char *const TAG = "ezo.sensor";
12
24
25enum EzoCalibrationType : uint8_t { EZO_CAL_LOW = 0, EZO_CAL_MID = 1, EZO_CAL_HIGH = 2 };
26
28 public:
29 std::string command;
30 uint16_t delay_ms = 0;
31 bool command_sent = false;
33};
34
37 public:
38 void loop() override;
39 void dump_config() override;
40 void update() override;
41 float get_setup_priority() const override { return setup_priority::DATA; };
42
43 // I2C
44 void set_address(uint8_t address);
45
46 // Device Information
48 void add_device_infomation_callback(std::function<void(std::string)> &&callback) {
49 this->device_infomation_callback_.add(std::move(callback));
50 }
51
52 // Sleep
53 void set_sleep();
54
55 // R
56 void get_state();
57
58 // Slope
59 void get_slope();
60 void add_slope_callback(std::function<void(std::string)> &&callback) {
61 this->slope_callback_.add(std::move(callback));
62 }
63
64 // T
65 void get_t();
66 void set_t(float value);
67 void set_tempcomp_value(float temp); // For backwards compatibility
68 void add_t_callback(std::function<void(std::string)> &&callback) { this->t_callback_.add(std::move(callback)); }
69
70 // Calibration
71 void get_calibration();
72 void set_calibration_point_low(float value);
73 void set_calibration_point_mid(float value);
74 void set_calibration_point_high(float value);
75 void set_calibration_generic(float value);
76 void clear_calibration();
77 void add_calibration_callback(std::function<void(std::string)> &&callback) {
78 this->calibration_callback_.add(std::move(callback));
79 }
80
81 // LED
82 void get_led_state();
83 void set_led_state(bool on);
84 void add_led_state_callback(std::function<void(bool)> &&callback) { this->led_callback_.add(std::move(callback)); }
85
86 // Custom
87 void send_custom(const std::string &to_send);
88 void add_custom_callback(std::function<void(std::string)> &&callback) {
89 this->custom_callback_.add(std::move(callback));
90 }
91
92 protected:
93 std::deque<std::unique_ptr<EzoCommand>> commands_;
95
96 void add_command_(const std::string &command, EzoCommandType command_type, uint16_t delay_ms = 300);
97
99
102 CallbackManager<void(std::string)> slope_callback_{};
103 CallbackManager<void(std::string)> t_callback_{};
104 CallbackManager<void(std::string)> custom_callback_{};
106
107 uint32_t start_time_ = 0;
108};
109
110} // namespace ezo
111} // namespace esphome
uint8_t address
Definition bl0906.h:4
This class simplifies creating components that periodically check a state.
Definition component.h:301
This class implements support for the EZO circuits in i2c mode.
Definition ezo.h:36
void set_led_state(bool on)
Definition ezo.cpp:226
void add_calibration_callback(std::function< void(std::string)> &&callback)
Definition ezo.h:77
void add_custom_callback(std::function< void(std::string)> &&callback)
Definition ezo.h:88
void add_slope_callback(std::function< void(std::string)> &&callback)
Definition ezo.h:60
void add_t_callback(std::function< void(std::string)> &&callback)
Definition ezo.h:68
void set_address(uint8_t address)
Definition ezo.cpp:176
CallbackManager< void(std::string)> calibration_callback_
Definition ezo.h:101
void loop() override
Definition ezo.cpp:54
void add_led_state_callback(std::function< void(bool)> &&callback)
Definition ezo.h:84
void set_calibration_point_mid(float value)
Definition ezo.cpp:209
void set_calibration_point_high(float value)
Definition ezo.cpp:213
void set_calibration_point_low(float value)
Definition ezo.cpp:205
void set_t(float value)
Definition ezo.cpp:196
CallbackManager< void(bool)> led_callback_
Definition ezo.h:105
void set_calibration_generic(float value)
Definition ezo.cpp:217
void set_tempcomp_value(float temp)
Definition ezo.cpp:201
void update() override
Definition ezo.cpp:23
void get_device_information()
Definition ezo.cpp:186
CallbackManager< void(std::string)> device_infomation_callback_
Definition ezo.h:100
void add_device_infomation_callback(std::function< void(std::string)> &&callback)
Definition ezo.h:48
float get_setup_priority() const override
Definition ezo.h:41
uint32_t start_time_
Definition ezo.h:107
CallbackManager< void(std::string)> t_callback_
Definition ezo.h:103
void set_calibration_point_(EzoCalibrationType type, float value)
Definition ezo.cpp:171
CallbackManager< void(std::string)> slope_callback_
Definition ezo.h:102
std::deque< std::unique_ptr< EzoCommand > > commands_
Definition ezo.h:93
void send_custom(const std::string &to_send)
Definition ezo.cpp:232
void add_command_(const std::string &command, EzoCommandType command_type, uint16_t delay_ms=300)
Definition ezo.cpp:163
CallbackManager< void(std::string)> custom_callback_
Definition ezo.h:104
void dump_config() override
Definition ezo.cpp:14
EzoCommandType command_type
Definition ezo.h:32
std::string command
Definition ezo.h:29
uint16_t delay_ms
Definition ezo.h:30
This Class provides the methods to read/write bytes from/to an i2c device.
Definition i2c.h:133
Base-class for all sensors.
Definition sensor.h:57
uint8_t type
EzoCalibrationType
Definition ezo.h:25
@ EZO_CAL_MID
Definition ezo.h:25
@ EZO_CAL_HIGH
Definition ezo.h:25
@ EZO_CAL_LOW
Definition ezo.h:25
EzoCommandType
Definition ezo.h:13
@ EZO_SLOPE
Definition ezo.h:17
@ EZO_READ
Definition ezo.h:14
@ EZO_LED
Definition ezo.h:15
@ EZO_CUSTOM
Definition ezo.h:22
@ EZO_DEVICE_INFORMATION
Definition ezo.h:16
@ EZO_SLEEP
Definition ezo.h:19
@ EZO_CALIBRATION
Definition ezo.h:18
@ EZO_T
Definition ezo.h:21
@ EZO_I2C
Definition ezo.h:20
const float DATA
For components that import data from directly connected sensors like DHT.
Definition component.cpp:19
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7