22static constexpr uint8_t PZEM_CMD_RESET_ENERGY = 0x42;
25static constexpr uint8_t PZEM_REGISTER_COUNT = 64;
26static constexpr size_t PZEM_PAYLOAD_SIZE = PZEM_REGISTER_COUNT * 2;
30static constexpr uint8_t MAX_CONSECUTIVE_READ_FAILURES = 3;
35 return {PZEM_CMD_RESET_ENERGY, 0x00,
static_cast<uint8_t
>(phase)};
92 void on_response(std::span<const uint8_t> request_pdu, std::span<const uint8_t> response_pdu)
override;
96 bool on_no_response(std::span<const uint8_t> request_pdu)
override;
98 void on_not_sent(std::span<const uint8_t> request_pdu)
override;
This class simplifies creating components that periodically check a state.
void set_total_reactive_power_sensor(sensor::Sensor *sensor)
void set_apparent_energy_b_sensor(sensor::Sensor *sensor)
sensor::Sensor * active_energy_c_
void set_reactive_energy_b_sensor(sensor::Sensor *sensor)
sensor::Sensor * voltage_b_
sensor::Sensor * apparent_energy_c_
sensor::Sensor * active_power_c_
void set_total_apparent_energy_sensor(sensor::Sensor *sensor)
void publish_(const uint8_t *data)
void set_reactive_power_b_sensor(sensor::Sensor *sensor)
void set_total_active_power_sensor(sensor::Sensor *sensor)
sensor::Sensor * reactive_energy_b_
sensor::Sensor * reactive_energy_a_
sensor::Sensor * power_factor_c_
void set_voltage_b_sensor(sensor::Sensor *sensor)
sensor::Sensor * power_factor_b_
sensor::Sensor * active_energy_a_
sensor::Sensor * apparent_energy_a_
void set_active_power_a_sensor(sensor::Sensor *sensor)
bool on_no_response(std::span< const uint8_t > request_pdu) override
void set_power_factor_a_sensor(sensor::Sensor *sensor)
void set_apparent_power_c_sensor(sensor::Sensor *sensor)
void set_active_energy_c_sensor(sensor::Sensor *sensor)
void set_reactive_power_a_sensor(sensor::Sensor *sensor)
void set_frequency_sensor(sensor::Sensor *sensor)
void reset_energy(ResetPhase phase_option)
sensor::Sensor * reactive_power_c_
sensor::Sensor * total_reactive_power_
void set_current_b_sensor(sensor::Sensor *sensor)
void set_reactive_energy_a_sensor(sensor::Sensor *sensor)
sensor::Sensor * reactive_power_a_
uint8_t reads_outstanding_
sensor::Sensor * apparent_power_a_
sensor::Sensor * voltage_a_
void set_current_c_sensor(sensor::Sensor *sensor)
void set_current_a_sensor(sensor::Sensor *sensor)
sensor::Sensor * current_b_
void on_response(std::span< const uint8_t > request_pdu, std::span< const uint8_t > response_pdu) override
void dump_config() override
void set_apparent_energy_c_sensor(sensor::Sensor *sensor)
void set_power_factor_b_sensor(sensor::Sensor *sensor)
sensor::Sensor * total_active_energy_
sensor::Sensor * active_power_a_
sensor::Sensor * total_power_factor_
void set_reactive_energy_c_sensor(sensor::Sensor *sensor)
void set_apparent_power_a_sensor(sensor::Sensor *sensor)
sensor::Sensor * total_active_power_
void set_voltage_c_sensor(sensor::Sensor *sensor)
void set_active_power_b_sensor(sensor::Sensor *sensor)
sensor::Sensor * reactive_energy_c_
void set_apparent_power_b_sensor(sensor::Sensor *sensor)
void set_total_apparent_power_sensor(sensor::Sensor *sensor)
sensor::Sensor * current_a_
void set_total_reactive_energy_sensor(sensor::Sensor *sensor)
uint8_t consecutive_failures_
sensor::Sensor * active_power_b_
sensor::Sensor * total_reactive_energy_
void set_total_active_energy_sensor(sensor::Sensor *sensor)
void set_active_energy_a_sensor(sensor::Sensor *sensor)
void on_error(std::span< const uint8_t > request_pdu, modbus::ExceptionCode exception_code) override
sensor::Sensor * apparent_energy_b_
void on_not_sent(std::span< const uint8_t > request_pdu) override
void set_voltage_a_sensor(sensor::Sensor *sensor)
void set_active_energy_b_sensor(sensor::Sensor *sensor)
void set_active_power_c_sensor(sensor::Sensor *sensor)
void set_total_power_factor_sensor(sensor::Sensor *sensor)
void request_failed_(std::span< const uint8_t > request_pdu)
sensor::Sensor * frequency_
sensor::Sensor * total_apparent_energy_
sensor::Sensor * apparent_power_b_
sensor::Sensor * voltage_c_
void set_power_factor_c_sensor(sensor::Sensor *sensor)
void set_apparent_energy_a_sensor(sensor::Sensor *sensor)
sensor::Sensor * active_energy_b_
sensor::Sensor * apparent_power_c_
sensor::Sensor * current_c_
sensor::Sensor * total_apparent_power_
sensor::Sensor * power_factor_a_
sensor::Sensor * reactive_power_b_
void set_reactive_power_c_sensor(sensor::Sensor *sensor)
Base-class for all sensors.
constexpr std::array< uint8_t, 3 > build_reset_pdu(ResetPhase phase)