ESPHome 2026.3.0-dev
Loading...
Searching...
No Matches
sy6970_binary_sensor.h
Go to the documentation of this file.
1#pragma once
2
3#include "../sy6970.h"
5
6namespace esphome::sy6970 {
7
8template<uint8_t REG, uint8_t SHIFT, uint8_t MASK, uint8_t TRUE_VALUE>
10 public:
11 void on_data(const SY6970Data &data) override {
12 uint8_t value = (data.registers[REG] >> SHIFT) & MASK;
13 this->publish_state(value == TRUE_VALUE);
14 }
15};
16
17template<uint8_t REG, uint8_t SHIFT, uint8_t MASK, uint8_t FALSE_VALUE>
19 public:
20 void on_data(const SY6970Data &data) override {
21 uint8_t value = (data.registers[REG] >> SHIFT) & MASK;
22 this->publish_state(value != FALSE_VALUE);
23 }
24};
25
26// Custom binary sensor for charging (true when pre-charge or fast charge)
28 public:
29 void on_data(const SY6970Data &data) override {
30 uint8_t chrg_stat = (data.registers[SY6970_REG_STATUS] >> 3) & 0x03;
31 bool charging = chrg_stat != CHARGE_STATUS_NOT_CHARGING && chrg_stat != CHARGE_STATUS_CHARGE_DONE;
32 this->publish_state(charging);
33 }
34};
35
36// Specialized sensor types using templates
37// VBUS connected: BUS_STATUS != NO_INPUT
39
40// Charge done: CHARGE_STATUS == CHARGE_DONE
42
43} // namespace esphome::sy6970
Base class for all binary_sensor-type classes.
void publish_state(bool new_state)
Publish a new state to the front-end.
void on_data(const SY6970Data &data) override
void on_data(const SY6970Data &data) override
void on_data(const SY6970Data &data) override
@ CHARGE_STATUS_CHARGE_DONE
Definition sy6970.h:62
@ CHARGE_STATUS_NOT_CHARGING
Definition sy6970.h:59