7#ifdef USE_BINARY_SENSOR
18#define SELEC_METER_SENSOR(name) \
20 sensor::Sensor *name##_sensor_{nullptr}; \
23 void set_##name##_sensor(sensor::Sensor *(name)) { this->name##_sensor_ = name; }
26#define SELEC_METER_PHASE_SENSOR(name) \
27 void set_##name##_sensor(uint8_t phase, sensor::Sensor *(name)) { this->phases_[phase].name##_sensor_ = name; }
63#ifdef USE_SELEC_METER_EM4M
65 SELEC_METER_PHASE_SENSOR(voltage)
66 SELEC_METER_PHASE_SENSOR(current)
67 SELEC_METER_PHASE_SENSOR(active_power)
68 SELEC_METER_PHASE_SENSOR(reactive_power)
69 SELEC_METER_PHASE_SENSOR(apparent_power)
70 SELEC_METER_PHASE_SENSOR(power_factor)
71 SELEC_METER_PHASE_SENSOR(import_active_energy)
72 SELEC_METER_PHASE_SENSOR(export_active_energy)
73 SELEC_METER_PHASE_SENSOR(import_reactive_energy)
74 SELEC_METER_PHASE_SENSOR(export_reactive_energy)
75 SELEC_METER_PHASE_SENSOR(apparent_energy)
90 void set_model(
Model model) { this->
model_ = model; }
94#if defined(USE_SELEC_METER_EM4M) && defined(USE_TEXT_SENSOR)
97#if defined(USE_SELEC_METER_EM4M) && defined(USE_BINARY_SENSOR)
105 bool on_no_response(std::span<const uint8_t> request_pdu)
override;
106 void on_not_sent(std::span<const uint8_t> request_pdu)
override;
120 bool publish_fields_(std::span<const uint16_t> registers, std::span<const FloatField> fields, uint8_t min_count);
122#ifdef USE_SELEC_METER_EM4M
124#ifdef USE_TEXT_SENSOR
127#ifdef USE_BINARY_SENSOR
147#ifdef USE_SELEC_METER_EM4M
170#if defined(USE_SELEC_METER_EM4M) && defined(USE_TEXT_SENSOR)
175#if defined(USE_SELEC_METER_EM4M) && defined(USE_BINARY_SENSOR)
This class simplifies creating components that periodically check a state.
Base class for all binary_sensor-type classes.
binary_sensor::BinarySensor * dg_sensing_sensor_
ReadState next_read_state_after_(ReadState current) const
SELEC_METER_SENSOR(total_active_energy) SELEC_METER_SENSOR(import_active_energy) SELEC_METER_SENSOR(export_active_energy) SELEC_METER_SENSOR(total_reactive_energy) SELEC_METER_SENSOR(import_reactive_energy) SELEC_METER_SENSOR(export_reactive_energy) SELEC_METER_SENSOR(apparent_energy) SELEC_METER_SENSOR(active_power) SELEC_METER_SENSOR(reactive_power) SELEC_METER_SENSOR(apparent_power) SELEC_METER_SENSOR(voltage) SELEC_METER_SENSOR(current) SELEC_METER_SENSOR(power_factor) SELEC_METER_SENSOR(frequency) SELEC_METER_SENSOR(maximum_demand_active_power) SELEC_METER_SENSOR(maximum_demand_reactive_power) SELEC_METER_SENSOR(maximum_demand_apparent_power) SELEC_METER_PHASE_SENSOR(voltage) SELEC_METER_PHASE_SENSOR(current) SELEC_METER_PHASE_SENSOR(active_power) SELEC_METER_PHASE_SENSOR(reactive_power) SELEC_METER_PHASE_SENSOR(apparent_power) SELEC_METER_PHASE_SENSOR(power_factor) SELEC_METER_PHASE_SENSOR(import_active_energy) SELEC_METER_PHASE_SENSOR(export_active_energy) SELEC_METER_PHASE_SENSOR(import_reactive_energy) SELEC_METER_PHASE_SENSOR(export_reactive_energy) SELEC_METER_PHASE_SENSOR(apparent_energy) SELEC_METER_SENSOR(voltage_l12) SELEC_METER_SENSOR(voltage_l23) SELEC_METER_SENSOR(voltage_l31) SELEC_METER_SENSOR(average_voltage_ll) SELEC_METER_SENSOR(net_active_energy_mains) SELEC_METER_SENSOR(net_reactive_energy_mains) SELEC_METER_SENSOR(net_apparent_energy_mains) SELEC_METER_SENSOR(net_active_energy_dg) SELEC_METER_SENSOR(net_reactive_energy_dg) SELEC_METER_SENSOR(net_apparent_energy_dg) void set_model(Model model)
void set_serial_number_sensor(text_sensor::TextSensor *serial_number)
void start_read_(ReadState state)
void set_word_swap(bool word_swap)
void on_not_sent(std::span< const uint8_t > request_pdu) override
bool publish_fields_(std::span< const uint16_t > registers, std::span< const FloatField > fields, uint8_t min_count)
void on_read_input_registers(uint16_t start_address, std::span< const uint16_t > registers, modbus::ResponseStatus status) override
ReadRange read_range_(ReadState state) const
uint8_t serial_number_failures_
bool decode_em4m_(std::span< const uint16_t > registers)
void decode_serial_number_(std::span< const uint16_t > registers)
void fail_current_read_(const LogString *reason, bool durable=false)
text_sensor::TextSensor * serial_number_sensor_
uint8_t dg_sensing_failures_
bool wanted_(ReadState state) const
void dump_config() override
bool decode_em2m_(std::span< const uint16_t > registers)
void set_dg_sensing_sensor(binary_sensor::BinarySensor *dg_sensing)
void decode_dg_sensing_(std::span< const uint16_t > registers)
bool on_no_response(std::span< const uint8_t > request_pdu) override
Base-class for all sensors.
std::optional< ExceptionCode > ResponseStatus
@ READ_STATE_SERIAL_NUMBER
sensor::Sensor *SelecMeter::* sensor
sensor::Sensor * power_factor_sensor_
sensor::Sensor * export_active_energy_sensor_
sensor::Sensor * import_reactive_energy_sensor_
sensor::Sensor * reactive_power_sensor_
sensor::Sensor * import_active_energy_sensor_
sensor::Sensor * export_reactive_energy_sensor_
sensor::Sensor * current_sensor_
sensor::Sensor * apparent_power_sensor_
sensor::Sensor * voltage_sensor_
sensor::Sensor * active_power_sensor_
sensor::Sensor * apparent_energy_sensor_