ESPHome 2026.5.1
Loading...
Searching...
No Matches
sml.h
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4#include <vector>
8#include "sml_parser.h"
9
10namespace esphome::sml {
11
13 public:
14 std::string server_id;
15 std::string obis_code;
16 SmlListener(std::string server_id, std::string obis_code);
17 virtual void publish_val(const ObisInfo &obis_info){};
18};
19
20class Sml : public Component, public uart::UARTDevice {
21 public:
22 void register_sml_listener(SmlListener *listener);
23 void loop() override;
24 void dump_config() override;
25 std::vector<SmlListener *> sml_listeners_{};
26 template<typename F> void add_on_data_callback(F &&callback) { this->data_callbacks_.add(std::forward<F>(callback)); }
27
28 protected:
29 void process_sml_file_(const BytesView &sml_data);
30 void log_obis_info_(const std::vector<ObisInfo> &obis_info_vec);
31 void publish_obis_info_(const std::vector<ObisInfo> &obis_info_vec);
32 char check_start_end_bytes_(uint8_t byte);
33 void publish_value_(const ObisInfo &obis_info);
34
35 // Serial parser
36 bool record_ = false;
37 uint16_t incoming_mask_ = 0;
39
40 CallbackManager<void(const std::vector<uint8_t> &, bool)> data_callbacks_{};
41};
42
43bool check_sml_data(const bytes &buffer);
44
45uint8_t get_code(uint8_t byte);
46} // namespace esphome::sml
uint16_t incoming_mask_
Definition sml.h:37
void process_sml_file_(const BytesView &sml_data)
Definition sml.cpp:63
char check_start_end_bytes_(uint8_t byte)
Definition sml.cpp:16
void loop() override
Definition sml.cpp:26
std::vector< SmlListener * > sml_listeners_
Definition sml.h:25
CallbackManager< void(const std::vector< uint8_t > &, bool)> data_callbacks_
Definition sml.h:40
void register_sml_listener(SmlListener *listener)
Definition sml.cpp:103
void dump_config() override
Definition sml.cpp:101
void add_on_data_callback(F &&callback)
Definition sml.h:26
bytes sml_data_
Definition sml.h:38
void log_obis_info_(const std::vector< ObisInfo > &obis_info_vec)
Definition sml.cpp:71
void publish_value_(const ObisInfo &obis_info)
Definition sml.cpp:90
void publish_obis_info_(const std::vector< ObisInfo > &obis_info_vec)
Definition sml.cpp:84
bool record_
Definition sml.h:36
std::string server_id
Definition sml.h:14
virtual void publish_val(const ObisInfo &obis_info)
Definition sml.h:17
SmlListener(std::string server_id, std::string obis_code)
Definition sml.cpp:13
std::string obis_code
Definition sml.h:15
bool check_sml_data(const bytes &buffer)
Definition sml.cpp:105
uint8_t get_code(uint8_t byte)
Definition sml.cpp:129
std::vector< uint8_t > bytes
Definition sml_parser.h:12