ESPHome 2026.5.0b1
Loading...
Searching...
No Matches
ufire_ec.h
Go to the documentation of this file.
1#pragma once
2
5#include "esphome/core/hal.h"
8
9namespace esphome::ufire_ec {
10
11static const uint8_t CONFIG_TEMP_COMPENSATION = 0x02;
12
13static const uint8_t REGISTER_VERSION = 0;
14static const uint8_t REGISTER_MS = 1;
15static const uint8_t REGISTER_TEMP = 5;
16static const uint8_t REGISTER_SOLUTION = 9;
17static const uint8_t REGISTER_COEFFICENT = 13;
18static const uint8_t REGISTER_CALIBRATE_OFFSET = 33;
19static const uint8_t REGISTER_COMPENSATION = 45;
20static const uint8_t REGISTER_CONFIG = 54;
21static const uint8_t REGISTER_TASK = 55;
22
23static const uint8_t COMMAND_CALIBRATE_PROBE = 20;
24static const uint8_t COMMAND_MEASURE_TEMP = 40;
25static const uint8_t COMMAND_MEASURE_EC = 80;
26
28 public:
29 void setup() override;
30 void update() override;
31 void dump_config() override;
32
33 void set_temperature_sensor(sensor::Sensor *temperature_sensor) { this->temperature_sensor_ = temperature_sensor; }
35 this->temperature_sensor_external_ = temperature_sensor;
36 }
37 void set_ec_sensor(sensor::Sensor *ec_sensor) { this->ec_sensor_ = ec_sensor; }
38 void set_temperature_compensation(float compensation) { this->temperature_compensation_ = compensation; }
39 void set_temperature_coefficient(float coefficient) { this->temperature_coefficient_ = coefficient; }
40 void calibrate_probe(float solution, float temperature);
41 void reset_board();
42
43 protected:
45 float measure_ms_();
46 bool set_solution_(float solution, float temperature);
48 void set_coefficient_(float coefficient);
49 void set_temperature_(float temperature);
50 float read_data_(uint8_t reg);
51 void write_data_(uint8_t reg, float data);
52 void update_internal_();
53
59};
60
61template<typename... Ts> class UFireECCalibrateProbeAction : public Action<Ts...> {
62 public:
64 TEMPLATABLE_VALUE(float, solution)
66
67 void play(const Ts &...x) override {
68 this->parent_->calibrate_probe(this->solution_.value(x...), this->temperature_.value(x...));
69 }
70
71 protected:
73};
74
75template<typename... Ts> class UFireECResetAction : public Action<Ts...> {
76 public:
78
79 void play(const Ts &...x) override { this->parent_->reset_board(); }
80
81 protected:
83};
84
85} // namespace esphome::ufire_ec
This class simplifies creating components that periodically check a state.
Definition component.h:602
This Class provides the methods to read/write bytes from/to an i2c device.
Definition i2c.h:132
I2CRegister reg(uint8_t a_register)
calls the I2CRegister constructor
Definition i2c.h:152
Base-class for all sensors.
Definition sensor.h:47
TEMPLATABLE_VALUE(float, solution) TEMPLATABLE_VALUE(float
UFireECCalibrateProbeAction(UFireECComponent *parent)
Definition ufire_ec.h:63
temperature void play(const Ts &...x) override
Definition ufire_ec.h:67
void set_temperature_sensor_external(sensor::Sensor *temperature_sensor)
Definition ufire_ec.h:34
void set_compensation_(float temperature)
Definition ufire_ec.cpp:74
void calibrate_probe(float solution, float temperature)
Definition ufire_ec.cpp:80
void set_ec_sensor(sensor::Sensor *ec_sensor)
Definition ufire_ec.h:37
sensor::Sensor * temperature_sensor_external_
Definition ufire_ec.h:55
void set_temperature_coefficient(float coefficient)
Definition ufire_ec.h:39
void set_temperature_compensation(float compensation)
Definition ufire_ec.h:38
void set_temperature_(float temperature)
Definition ufire_ec.cpp:78
void write_data_(uint8_t reg, float data)
Definition ufire_ec.cpp:103
sensor::Sensor * temperature_sensor_
Definition ufire_ec.h:54
void set_temperature_sensor(sensor::Sensor *temperature_sensor)
Definition ufire_ec.h:33
void set_coefficient_(float coefficient)
Definition ufire_ec.cpp:76
bool set_solution_(float solution, float temperature)
Definition ufire_ec.cpp:63
UFireECResetAction(UFireECComponent *parent)
Definition ufire_ec.h:77
void play(const Ts &...x) override
Definition ufire_ec.h:79
uint16_t temperature
Definition sun_gtil2.cpp:12
uint16_t x
Definition tt21100.cpp:5