ESPHome 2026.6.0-dev
Loading...
Searching...
No Matches
ezo.h
Go to the documentation of this file.
1#pragma once
2
6#include <deque>
7
8namespace esphome::ezo {
9
10static const char *const TAG = "ezo.sensor";
11
23
24enum EzoCalibrationType : uint8_t { EZO_CAL_LOW = 0, EZO_CAL_MID = 1, EZO_CAL_HIGH = 2 };
25
27 public:
28 std::string command;
29 uint16_t delay_ms = 0;
30 bool command_sent = false;
32};
33
36 public:
37 void loop() override;
38 void dump_config() override;
39 void update() override;
40
41 // I2C
42 void set_address(uint8_t address);
43
44 // Device Information
46 template<typename F> void add_device_infomation_callback(F &&callback) {
47 this->device_infomation_callback_.add(std::forward<F>(callback));
48 }
49
50 // Sleep
51 void set_sleep();
52
53 // R
54 void get_state();
55
56 // Slope
57 void get_slope();
58 template<typename F> void add_slope_callback(F &&callback) { this->slope_callback_.add(std::forward<F>(callback)); }
59
60 // T
61 void get_t();
62 void set_t(float value);
63 void set_tempcomp_value(float temp); // For backwards compatibility
64 template<typename F> void add_t_callback(F &&callback) { this->t_callback_.add(std::forward<F>(callback)); }
65
66 // Calibration
67 void get_calibration();
68 void set_calibration_point_low(float value);
69 void set_calibration_point_mid(float value);
70 void set_calibration_point_high(float value);
71 void set_calibration_generic(float value);
72 void clear_calibration();
73 template<typename F> void add_calibration_callback(F &&callback) {
74 this->calibration_callback_.add(std::forward<F>(callback));
75 }
76
77 // LED
78 void get_led_state();
79 void set_led_state(bool on);
80 template<typename F> void add_led_state_callback(F &&callback) { this->led_callback_.add(std::forward<F>(callback)); }
81
82 // Custom
83 void send_custom(const std::string &to_send);
84 template<typename F> void add_custom_callback(F &&callback) { this->custom_callback_.add(std::forward<F>(callback)); }
85
86 protected:
87 std::deque<std::unique_ptr<EzoCommand>> commands_;
89
90 void add_command_(const char *command, EzoCommandType command_type, uint16_t delay_ms = 300);
91
93
96 CallbackManager<void(std::string)> slope_callback_{};
97 CallbackManager<void(std::string)> t_callback_{};
98 CallbackManager<void(std::string)> custom_callback_{};
100
102};
103
104} // namespace esphome::ezo
uint8_t address
Definition bl0906.h:4
This class simplifies creating components that periodically check a state.
Definition component.h:585
This class implements support for the EZO circuits in i2c mode.
Definition ezo.h:35
void set_led_state(bool on)
Definition ezo.cpp:234
void set_address(uint8_t address)
Definition ezo.cpp:178
CallbackManager< void(std::string)> calibration_callback_
Definition ezo.h:95
void loop() override
Definition ezo.cpp:53
void set_calibration_point_mid(float value)
Definition ezo.cpp:215
void set_calibration_point_high(float value)
Definition ezo.cpp:219
void set_calibration_point_low(float value)
Definition ezo.cpp:211
void add_t_callback(F &&callback)
Definition ezo.h:64
void set_t(float value)
Definition ezo.cpp:200
CallbackManager< void(bool)> led_callback_
Definition ezo.h:99
void add_calibration_callback(F &&callback)
Definition ezo.h:73
void set_calibration_generic(float value)
Definition ezo.cpp:223
void set_tempcomp_value(float temp)
Definition ezo.cpp:207
void update() override
Definition ezo.cpp:22
void add_led_state_callback(F &&callback)
Definition ezo.h:80
void get_device_information()
Definition ezo.cpp:190
CallbackManager< void(std::string)> device_infomation_callback_
Definition ezo.h:94
uint32_t start_time_
Definition ezo.h:101
void add_device_infomation_callback(F &&callback)
Definition ezo.h:46
CallbackManager< void(std::string)> t_callback_
Definition ezo.h:97
void set_calibration_point_(EzoCalibrationType type, float value)
Definition ezo.cpp:171
CallbackManager< void(std::string)> slope_callback_
Definition ezo.h:96
std::deque< std::unique_ptr< EzoCommand > > commands_
Definition ezo.h:87
void send_custom(const std::string &to_send)
Definition ezo.cpp:236
CallbackManager< void(std::string)> custom_callback_
Definition ezo.h:98
void add_slope_callback(F &&callback)
Definition ezo.h:58
void add_command_(const char *command, EzoCommandType command_type, uint16_t delay_ms=300)
Definition ezo.cpp:163
void dump_config() override
Definition ezo.cpp:13
void add_custom_callback(F &&callback)
Definition ezo.h:84
EzoCommandType command_type
Definition ezo.h:31
std::string command
Definition ezo.h:28
uint16_t delay_ms
Definition ezo.h:29
This Class provides the methods to read/write bytes from/to an i2c device.
Definition i2c.h:132
Base-class for all sensors.
Definition sensor.h:47
uint16_t type
EzoCalibrationType
Definition ezo.h:24
@ EZO_CAL_MID
Definition ezo.h:24
@ EZO_CAL_HIGH
Definition ezo.h:24
@ EZO_CAL_LOW
Definition ezo.h:24
EzoCommandType
Definition ezo.h:12
@ EZO_SLOPE
Definition ezo.h:16
@ EZO_READ
Definition ezo.h:13
@ EZO_LED
Definition ezo.h:14
@ EZO_CUSTOM
Definition ezo.h:21
@ EZO_DEVICE_INFORMATION
Definition ezo.h:15
@ EZO_SLEEP
Definition ezo.h:18
@ EZO_CALIBRATION
Definition ezo.h:17
@ EZO_T
Definition ezo.h:20
@ EZO_I2C
Definition ezo.h:19
static void uint32_t