ESPHome 2025.5.0
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 {
11namespace sml {
12
14 public:
15 std::string server_id;
16 std::string obis_code;
17 SmlListener(std::string server_id, std::string obis_code);
18 virtual void publish_val(const ObisInfo &obis_info){};
19};
20
21class Sml : public Component, public uart::UARTDevice {
22 public:
23 void register_sml_listener(SmlListener *listener);
24 void loop() override;
25 void dump_config() override;
26 std::vector<SmlListener *> sml_listeners_{};
27 void add_on_data_callback(std::function<void(std::vector<uint8_t>, bool)> &&callback);
28
29 protected:
30 void process_sml_file_(const BytesView &sml_data);
31 void log_obis_info_(const std::vector<ObisInfo> &obis_info_vec);
32 void publish_obis_info_(const std::vector<ObisInfo> &obis_info_vec);
33 char check_start_end_bytes_(uint8_t byte);
34 void publish_value_(const ObisInfo &obis_info);
35
36 // Serial parser
37 bool record_ = false;
38 uint16_t incoming_mask_ = 0;
40
41 CallbackManager<void(const std::vector<uint8_t> &, bool)> data_callbacks_{};
42};
43
44bool check_sml_data(const bytes &buffer);
45
46uint8_t get_code(uint8_t byte);
47} // namespace sml
48} // namespace esphome
uint16_t incoming_mask_
Definition sml.h:38
void process_sml_file_(const BytesView &sml_data)
Definition sml.cpp:68
char check_start_end_bytes_(uint8_t byte)
Definition sml.cpp:17
void loop() override
Definition sml.cpp:27
std::vector< SmlListener * > sml_listeners_
Definition sml.h:26
CallbackManager< void(const std::vector< uint8_t > &, bool)> data_callbacks_
Definition sml.h:41
void add_on_data_callback(std::function< void(std::vector< uint8_t >, bool)> &&callback)
Definition sml.cpp:64
void register_sml_listener(SmlListener *listener)
Definition sml.cpp:108
void dump_config() override
Definition sml.cpp:106
bytes sml_data_
Definition sml.h:39
void log_obis_info_(const std::vector< ObisInfo > &obis_info_vec)
Definition sml.cpp:76
void publish_value_(const ObisInfo &obis_info)
Definition sml.cpp:95
void publish_obis_info_(const std::vector< ObisInfo > &obis_info_vec)
Definition sml.cpp:89
bool record_
Definition sml.h:37
std::string server_id
Definition sml.h:15
virtual void publish_val(const ObisInfo &obis_info)
Definition sml.h:18
SmlListener(std::string server_id, std::string obis_code)
Definition sml.cpp:14
std::string obis_code
Definition sml.h:16
bool check_sml_data(const bytes &buffer)
Definition sml.cpp:110
uint8_t get_code(uint8_t byte)
Definition sml.cpp:134
std::vector< uint8_t > bytes
Definition sml_parser.h:13
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7