7namespace ade7953_base {
9static const char *
const TAG =
"ade7953";
14static const float ADE_POWER_FACTOR = 154.0f;
15static const float ADE_WATTSEC_POWER_FACTOR = ADE_POWER_FACTOR * ADE_POWER_FACTOR / 3600;
27 config_v &=
static_cast<uint16_t
>(~CONFIG_LOCK_BIT);
59 LOG_UPDATE_INTERVAL(
this);
72 " USE_ACC_ENERGY_REGS: %d\n"
76 " AVGAIN_32: 0x%08jX\n"
77 " BVGAIN_32: 0x%08jX\n"
78 " AIGAIN_32: 0x%08jX\n"
79 " BIGAIN_32: 0x%08jX\n"
80 " AWGAIN_32: 0x%08jX\n"
81 " BWGAIN_32: 0x%08jX",
86#define ADE_PUBLISH_(name, val, factor) \
87 if (err == 0 && this->name##_sensor_) { \
88 float value = (val) / (factor); \
89 this->name##_sensor_->publish_state(value); \
91#define ADE_PUBLISH(name, val, factor) ADE_PUBLISH_(name, val, factor)
113 ADE_PUBLISH(power_factor_a, (int16_t) val_16, (0x7FFF / 100.0f));
115 ADE_PUBLISH(power_factor_b, (int16_t) val_16, (0x7FFF / 100.0f));
117 float pf = ADE_POWER_FACTOR;
121 this->last_update_ = now;
123 pf = ADE_WATTSEC_POWER_FACTOR * (diff < 10 ? 10 : diff) / 1000;
124 ESP_LOGVV(TAG,
"ADE7953::update() diff=%" PRIu32
" pf=%f", diff, pf);
130 ADE_PUBLISH(apparent_power_a, (int32_t)
val, pf);
132 ADE_PUBLISH(apparent_power_b, (int32_t)
val, pf);
137 ADE_PUBLISH(active_power_a, (int32_t)
val, pf);
139 ADE_PUBLISH(active_power_b, (int32_t)
val, pf);
144 ADE_PUBLISH(reactive_power_a, (int32_t)
val, pf);
146 ADE_PUBLISH(reactive_power_b, (int32_t)
val, pf);
160 ADE_PUBLISH(
frequency, 223750.0f, 1 + val_16);
ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") void set_timeout(const std voi set_timeout)(const char *name, uint32_t timeout, std::function< void()> &&f)
Set a timeout function with a unique name.
virtual bool ade_write_32(uint16_t reg, uint32_t value)=0
virtual bool ade_read_16(uint16_t reg, uint16_t *value)=0
sensor::Sensor * reactive_power_b_sensor_
InternalGPIOPin * irq_pin_
sensor::Sensor * reactive_power_a_sensor_
sensor::Sensor * current_a_sensor_
sensor::Sensor * power_factor_b_sensor_
sensor::Sensor * power_factor_a_sensor_
virtual bool ade_read_8(uint16_t reg, uint8_t *value)=0
sensor::Sensor * active_power_a_sensor_
virtual bool ade_read_32(uint16_t reg, uint32_t *value)=0
sensor::Sensor * apparent_power_b_sensor_
void dump_config() override
virtual bool ade_write_16(uint16_t reg, uint16_t value)=0
sensor::Sensor * apparent_power_a_sensor_
sensor::Sensor * current_b_sensor_
virtual bool ade_write_8(uint16_t reg, uint8_t value)=0
bool use_acc_energy_regs_
sensor::Sensor * active_power_b_sensor_
sensor::Sensor * voltage_sensor_
constexpr uint16_t CONFIG_LOCK_BIT
constexpr uint16_t CONFIG_DEFAULT
Providing packet encoding functions for exchanging data with a remote host.
uint32_t IRAM_ATTR HOT millis()