ESPHome 2026.3.0-dev
Loading...
Searching...
No Matches
sy6970_sensor.h
Go to the documentation of this file.
1#pragma once
2
3#include "../sy6970.h"
5
6namespace esphome::sy6970 {
7
8// Template for voltage sensors (converts mV to V)
9template<uint8_t REG, uint8_t MASK, uint16_t BASE, uint16_t STEP>
11 public:
12 void on_data(const SY6970Data &data) override {
13 uint8_t val = data.registers[REG] & MASK;
14 uint16_t voltage_mv = BASE + (val * STEP);
15 this->publish_state(voltage_mv * 0.001f); // Convert mV to V
16 }
17};
18
19// Template for current sensors (returns mA)
20template<uint8_t REG, uint8_t MASK, uint16_t BASE, uint16_t STEP>
22 public:
23 void on_data(const SY6970Data &data) override {
24 uint8_t val = data.registers[REG] & MASK;
25 uint16_t current_ma = BASE + (val * STEP);
26 this->publish_state(current_ma);
27 }
28};
29
30// Specialized sensor types using templates
35
36// Precharge current sensor needs special handling (bit shift)
38 public:
39 void on_data(const SY6970Data &data) override {
40 uint8_t iprechg = (data.registers[SY6970_REG_PRECHARGE_CURRENT] >> 4) & 0x0F;
41 uint16_t iprechg_ma = PRE_CHG_BASE_MA + (iprechg * PRE_CHG_STEP_MA);
42 this->publish_state(iprechg_ma);
43 }
44};
45
46} // namespace esphome::sy6970
Base-class for all sensors.
Definition sensor.h:43
void publish_state(float state)
Publish a new state to the front-end.
Definition sensor.cpp:65
void on_data(const SY6970Data &data) override
void on_data(const SY6970Data &data) override
void on_data(const SY6970Data &data) override
mopeka_std_values val[4]