[pzemac] Use register_apply_action for pzemac.reset_energy (#19650)

This commit is contained in:
J. Nick Koston
2026-09-25 14:28:01 -04:00
committed by GitHub
parent 857a519946
commit 340e105a76
3 changed files with 4 additions and 23 deletions
+1 -1
View File
@@ -77,7 +77,7 @@ void PZEMAC::dump_config() {
LOG_SENSOR("", "Power Factor", this->power_factor_sensor_);
}
void PZEMAC::reset_energy_() {
void PZEMAC::reset_energy() {
const uint8_t pdu[] = {PZEM_CMD_RESET_ENERGY};
this->queue_pdu(pdu);
}
+1 -16
View File
@@ -1,6 +1,5 @@
#pragma once
#include "esphome/core/automation.h"
#include "esphome/core/component.h"
#include "esphome/components/sensor/sensor.h"
#include "esphome/components/modbus/modbus.h"
@@ -9,8 +8,6 @@
namespace esphome::pzemac {
template<typename... Ts> class ResetEnergyAction;
class PZEMAC final : public PollingComponent, public modbus::ModbusClientDevice {
public:
void set_voltage_sensor(sensor::Sensor *voltage_sensor) { voltage_sensor_ = voltage_sensor; }
@@ -28,27 +25,15 @@ class PZEMAC final : public PollingComponent, public modbus::ModbusClientDevice
modbus::ResponseStatus status) override;
void dump_config() override;
void reset_energy();
protected:
template<typename... Ts> friend class ResetEnergyAction;
sensor::Sensor *voltage_sensor_{nullptr};
sensor::Sensor *current_sensor_{nullptr};
sensor::Sensor *power_sensor_{nullptr};
sensor::Sensor *energy_sensor_{nullptr};
sensor::Sensor *frequency_sensor_{nullptr};
sensor::Sensor *power_factor_sensor_{nullptr};
void reset_energy_();
};
template<typename... Ts> class ResetEnergyAction final : public Action<Ts...> {
public:
ResetEnergyAction(PZEMAC *pzemac) : pzemac_(pzemac) {}
void play(const Ts &...x) override { this->pzemac_->reset_energy_(); }
protected:
PZEMAC *pzemac_;
};
} // namespace esphome::pzemac
+2 -6
View File
@@ -33,9 +33,6 @@ AUTO_LOAD = ["modbus"]
pzemac_ns = cg.esphome_ns.namespace("pzemac")
PZEMAC = pzemac_ns.class_("PZEMAC", cg.PollingComponent, modbus.ModbusClientDevice)
# Actions
ResetEnergyAction = pzemac_ns.class_("ResetEnergyAction", automation.Action)
CONFIG_SCHEMA = (
cv.Schema(
{
@@ -83,15 +80,14 @@ CONFIG_SCHEMA = (
)
automation.register_simple_action(
automation.register_apply_action(
"pzemac.reset_energy",
ResetEnergyAction,
maybe_simple_id(
{
cv.Required(CONF_ID): cv.use_id(PZEMAC),
}
),
synchronous=True,
automation.ApplyCall("reset_energy()"),
)