ESPHome  2025.2.0
daly_bms.h
Go to the documentation of this file.
1 #pragma once
2 
4 #include "esphome/core/defines.h"
5 #ifdef USE_SENSOR
7 #endif
8 #ifdef USE_TEXT_SENSOR
10 #endif
11 #ifdef USE_BINARY_SENSOR
13 #endif
15 
16 #include <vector>
17 
18 namespace esphome {
19 namespace daly_bms {
20 
22  public:
23  DalyBmsComponent() = default;
24 
25 #ifdef USE_SENSOR
26  SUB_SENSOR(voltage)
27  SUB_SENSOR(current)
28  SUB_SENSOR(battery_level)
29  SUB_SENSOR(max_cell_voltage)
30  SUB_SENSOR(max_cell_voltage_number)
31  SUB_SENSOR(min_cell_voltage)
32  SUB_SENSOR(min_cell_voltage_number)
33  SUB_SENSOR(max_temperature)
34  SUB_SENSOR(max_temperature_probe_number)
35  SUB_SENSOR(min_temperature)
36  SUB_SENSOR(min_temperature_probe_number)
37  SUB_SENSOR(remaining_capacity)
38  SUB_SENSOR(cells_number)
39  SUB_SENSOR(temperature_1)
40  SUB_SENSOR(temperature_2)
41  SUB_SENSOR(cell_1_voltage)
42  SUB_SENSOR(cell_2_voltage)
43  SUB_SENSOR(cell_3_voltage)
44  SUB_SENSOR(cell_4_voltage)
45  SUB_SENSOR(cell_5_voltage)
46  SUB_SENSOR(cell_6_voltage)
47  SUB_SENSOR(cell_7_voltage)
48  SUB_SENSOR(cell_8_voltage)
49  SUB_SENSOR(cell_9_voltage)
50  SUB_SENSOR(cell_10_voltage)
51  SUB_SENSOR(cell_11_voltage)
52  SUB_SENSOR(cell_12_voltage)
53  SUB_SENSOR(cell_13_voltage)
54  SUB_SENSOR(cell_14_voltage)
55  SUB_SENSOR(cell_15_voltage)
56  SUB_SENSOR(cell_16_voltage)
57  SUB_SENSOR(cell_17_voltage)
58  SUB_SENSOR(cell_18_voltage)
59 #endif
60 
61 #ifdef USE_TEXT_SENSOR
62  SUB_TEXT_SENSOR(status)
63 #endif
64 
65 #ifdef USE_BINARY_SENSOR
66  SUB_BINARY_SENSOR(charging_mos_enabled)
67  SUB_BINARY_SENSOR(discharging_mos_enabled)
68 #endif
69 
70  void setup() override;
71  void dump_config() override;
72  void update() override;
73  void loop() override;
74 
75  float get_setup_priority() const override;
76  void set_address(uint8_t address) { this->addr_ = address; }
77 
78  protected:
79  void request_data_(uint8_t data_id);
80  void decode_data_(std::vector<uint8_t> data);
81 
82  uint8_t addr_;
83 
84  std::vector<uint8_t> data_;
85  bool receiving_{false};
86  uint8_t data_count_;
87  uint32_t last_transmission_{0};
89  uint8_t next_request_;
90 };
91 
92 } // namespace daly_bms
93 } // namespace esphome
void set_address(uint8_t address)
Definition: daly_bms.h:76
This class simplifies creating components that periodically check a state.
Definition: component.h:283
void request_data_(uint8_t data_id)
Definition: daly_bms.cpp:107
SUB_SENSOR(voltage) SUB_SENSOR(current) SUB_SENSOR(battery_level) SUB_SENSOR(max_cell_voltage) SUB_SENSOR(max_cell_voltage_number) SUB_SENSOR(min_cell_voltage) SUB_SENSOR(min_cell_voltage_number) SUB_SENSOR(max_temperature) SUB_SENSOR(max_temperature_probe_number) SUB_SENSOR(min_temperature) SUB_SENSOR(min_temperature_probe_number) SUB_SENSOR(remaining_capacity) SUB_SENSOR(cells_number) SUB_SENSOR(temperature_1) SUB_SENSOR(temperature_2) SUB_SENSOR(cell_1_voltage) SUB_SENSOR(cell_2_voltage) SUB_SENSOR(cell_3_voltage) SUB_SENSOR(cell_4_voltage) SUB_SENSOR(cell_5_voltage) SUB_SENSOR(cell_6_voltage) SUB_SENSOR(cell_7_voltage) SUB_SENSOR(cell_8_voltage) SUB_SENSOR(cell_9_voltage) SUB_SENSOR(cell_10_voltage) SUB_SENSOR(cell_11_voltage) SUB_SENSOR(cell_12_voltage) SUB_SENSOR(cell_13_voltage) SUB_SENSOR(cell_14_voltage) SUB_SENSOR(cell_15_voltage) SUB_SENSOR(cell_16_voltage) SUB_SENSOR(cell_17_voltage) SUB_SENSOR(cell_18_voltage) SUB_TEXT_SENSOR(status) SUB_BINARY_SENSOR(charging_mos_enabled) SUB_BINARY_SENSOR(discharging_mos_enabled) void setup() override
virtual void setup()
Where the component&#39;s initialization should happen.
Definition: component.cpp:48
void decode_data_(std::vector< uint8_t > data)
Definition: daly_bms.cpp:131
std::vector< uint8_t > data_
Definition: daly_bms.h:84
uint8_t status
Definition: bl0942.h:74
float get_setup_priority() const override
Definition: daly_bms.cpp:105
Implementation of SPI Controller mode.
Definition: a01nyub.cpp:7
uint8_t address
Definition: bl0906.h:211