ESPHome 2026.5.0-dev
Loading...
Searching...
No Matches
emontx.h
Go to the documentation of this file.
1#pragma once
2
10
11#include <array>
12
13#ifdef USE_SENSOR
15#endif
16
17namespace esphome::emontx {
18
20static constexpr size_t MAX_LINE_LENGTH = 1024;
21
29class EmonTx : public Component, public uart::UARTDevice {
30 public:
31 EmonTx() = default;
32
33 void loop() override;
34 void setup() override;
35 void dump_config() override;
36
37 template<typename F> void add_on_json_callback(F &&callback) { this->json_callbacks_.add(std::forward<F>(callback)); }
38
39 template<typename F> void add_on_data_callback(F &&callback) { this->data_callbacks_.add(std::forward<F>(callback)); }
40
41 // Send command to emonTx via UART
42 void send_command(const std::string &command);
43
44#ifdef USE_SENSOR
45 void init_sensors(size_t count) { this->sensors_.init(count); }
46 void register_sensor(const char *tag_name, sensor::Sensor *sensor);
47#endif
48
49 protected:
50 void parse_json_(const char *data, size_t len);
51
52#ifdef USE_SENSOR
54#endif
57 uint16_t buffer_pos_{0};
58 std::array<char, MAX_LINE_LENGTH + 1> buffer_{};
59};
60
61// Action to send command to emonTx
62template<typename... Ts> class EmonTxSendCommandAction : public Action<Ts...>, public Parented<EmonTx> {
63 public:
64 TEMPLATABLE_VALUE(std::string, command)
65
66 void play(const Ts &...x) override { this->parent_->send_command(this->command_.value(x...)); }
67};
68
69} // namespace esphome::emontx
virtual void play(const Ts &...x)=0
Fixed-capacity vector - allocates once at runtime, never reallocates This avoids std::vector template...
Definition helpers.h:522
Helper class to easily give an object a parent of type T.
Definition helpers.h:2013
StringRef is a reference to a string owned by something else.
Definition string_ref.h:26
Main class for the EmonTx component.
Definition emontx.h:29
void setup() override
Definition emontx.cpp:9
FixedVector< std::pair< const char *, sensor::Sensor * > > sensors_
Definition emontx.h:53
void add_on_json_callback(F &&callback)
Definition emontx.h:37
void init_sensors(size_t count)
Definition emontx.h:45
void add_on_data_callback(F &&callback)
Definition emontx.h:39
void loop() override
Implements the main loop for parsing data from the serial port.
Definition emontx.cpp:18
void dump_config() override
Logs the EmonTx component configuration details.
Definition emontx.cpp:79
std::array< char, MAX_LINE_LENGTH+1 > buffer_
Definition emontx.h:58
void send_command(const std::string &command)
Sends a command string to the emonTx device via UART.
Definition emontx.cpp:97
void register_sensor(const char *tag_name, sensor::Sensor *sensor)
Registers a sensor to receive updates for a specific JSON tag.
Definition emontx.cpp:110
LazyCallbackManager< void(JsonObject, StringRef)> json_callbacks_
Definition emontx.h:55
LazyCallbackManager< void(StringRef)> data_callbacks_
Definition emontx.h:56
void parse_json_(const char *data, size_t len)
Definition emontx.cpp:54
TEMPLATABLE_VALUE(std::string, command) void play(const Ts &...x) override
Definition emontx.h:64
Base-class for all sensors.
Definition sensor.h:47
std::string size_t len
Definition helpers.h:1045
uint16_t x
Definition tt21100.cpp:5