mirror of
https://github.com/esphome/esphome.git
synced 2026-09-28 15:30:21 +00:00
[pzemac] Use register_apply_action for pzemac.reset_energy (#19650)
This commit is contained in:
@@ -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,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
|
||||
|
||||
@@ -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()"),
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user