238 {&SelecMeter::total_active_energy_sensor_, SELEC_TOTAL_ACTIVE_ENERGY,
false},
239 {&SelecMeter::import_active_energy_sensor_, SELEC_IMPORT_ACTIVE_ENERGY,
false},
240 {&SelecMeter::export_active_energy_sensor_, SELEC_EXPORT_ACTIVE_ENERGY,
false},
241 {&SelecMeter::total_reactive_energy_sensor_, SELEC_TOTAL_REACTIVE_ENERGY,
false},
242 {&SelecMeter::import_reactive_energy_sensor_, SELEC_IMPORT_REACTIVE_ENERGY,
false},
243 {&SelecMeter::export_reactive_energy_sensor_, SELEC_EXPORT_REACTIVE_ENERGY,
false},
244 {&SelecMeter::apparent_energy_sensor_, SELEC_APPARENT_ENERGY,
false},
245 {&SelecMeter::active_power_sensor_, SELEC_ACTIVE_POWER,
true},
246 {&SelecMeter::reactive_power_sensor_, SELEC_REACTIVE_POWER,
true},
247 {&SelecMeter::apparent_power_sensor_, SELEC_APPARENT_POWER,
true},
248 {&SelecMeter::voltage_sensor_, SELEC_VOLTAGE,
false},
249 {&SelecMeter::current_sensor_, SELEC_CURRENT,
false},
250 {&SelecMeter::power_factor_sensor_, SELEC_POWER_FACTOR,
false},
251 {&SelecMeter::frequency_sensor_, SELEC_FREQUENCY,
false},
252 {&SelecMeter::maximum_demand_active_power_sensor_, SELEC_MAXIMUM_DEMAND_ACTIVE_POWER,
true},
253 {&SelecMeter::maximum_demand_reactive_power_sensor_, SELEC_MAXIMUM_DEMAND_REACTIVE_POWER,
true},
254 {&SelecMeter::maximum_demand_apparent_power_sensor_, SELEC_MAXIMUM_DEMAND_APPARENT_POWER,
true},
256 return this->
publish_fields_(registers, EM2M_FIELDS, EM2M_REGISTER_COUNT);
263 {&SelecMeter::voltage_sensor_, EM4M_VOLTAGE,
false},
264 {&SelecMeter::current_sensor_, EM4M_CURRENT,
false},
265 {&SelecMeter::active_power_sensor_, EM4M_ACTIVE_POWER,
true},
266 {&SelecMeter::reactive_power_sensor_, EM4M_REACTIVE_POWER,
true},
267 {&SelecMeter::apparent_power_sensor_, EM4M_APPARENT_POWER,
true},
268 {&SelecMeter::power_factor_sensor_, EM4M_POWER_FACTOR,
false},
269 {&SelecMeter::frequency_sensor_, EM4M_FREQUENCY,
false},
270 {&SelecMeter::maximum_demand_active_power_sensor_, EM4M_MAXIMUM_DEMAND_ACTIVE_POWER,
true},
271 {&SelecMeter::maximum_demand_reactive_power_sensor_, EM4M_MAXIMUM_DEMAND_REACTIVE_POWER,
true},
272 {&SelecMeter::maximum_demand_apparent_power_sensor_, EM4M_MAXIMUM_DEMAND_APPARENT_POWER,
true},
273 {&SelecMeter::import_active_energy_sensor_, EM4M_IMPORT_ACTIVE_ENERGY,
false},
274 {&SelecMeter::export_active_energy_sensor_, EM4M_EXPORT_ACTIVE_ENERGY,
false},
275 {&SelecMeter::import_reactive_energy_sensor_, EM4M_IMPORT_REACTIVE_ENERGY,
false},
276 {&SelecMeter::export_reactive_energy_sensor_, EM4M_EXPORT_REACTIVE_ENERGY,
false},
278 {&SelecMeter::voltage_l12_sensor_, EM4M_VOLTAGE_L12,
false},
279 {&SelecMeter::voltage_l23_sensor_, EM4M_VOLTAGE_L23,
false},
280 {&SelecMeter::voltage_l31_sensor_, EM4M_VOLTAGE_L31,
false},
281 {&SelecMeter::average_voltage_ll_sensor_, EM4M_AVERAGE_VOLTAGE_LL,
false},
282 {&SelecMeter::net_active_energy_mains_sensor_, EM4M_NET_ACTIVE_ENERGY_MAINS,
false},
283 {&SelecMeter::net_reactive_energy_mains_sensor_, EM4M_NET_REACTIVE_ENERGY_MAINS,
false},
284 {&SelecMeter::net_apparent_energy_mains_sensor_, EM4M_NET_APPARENT_ENERGY_MAINS,
false},
285 {&SelecMeter::net_active_energy_dg_sensor_, EM4M_NET_ACTIVE_ENERGY_DG,
false},
286 {&SelecMeter::net_reactive_energy_dg_sensor_, EM4M_NET_REACTIVE_ENERGY_DG,
false},
287 {&SelecMeter::net_apparent_energy_dg_sensor_, EM4M_NET_APPARENT_ENERGY_DG,
false},
296 static constexpr PhaseField PHASE_FIELDS[] PROGMEM = {
310 if (!this->
publish_fields_(registers, EM4M_FIELDS, EM4M_REGISTER_COUNT))
312 for (
const auto &entry : PHASE_FIELDS) {
315 for (uint8_t phase = 0; phase < 3; phase++) {
318 publish_float(sens, registers, field.reg_l1 + phase * EM4M_PHASE_STRIDE, field.kilo, this->word_swap_);
351 this->
word_swap_ ? LOG_STR_LITERAL(
"little_endian (LSRF)") : LOG_STR_LITERAL(
"big_endian (MSRF)"),
353 LOG_SENSOR(
" ",
"Total Active Energy", this->total_active_energy_sensor_);
354 LOG_SENSOR(
" ",
"Import Active Energy", this->import_active_energy_sensor_);
355 LOG_SENSOR(
" ",
"Export Active Energy", this->export_active_energy_sensor_);
356 LOG_SENSOR(
" ",
"Total Reactive Energy", this->total_reactive_energy_sensor_);
357 LOG_SENSOR(
" ",
"Import Reactive Energy", this->import_reactive_energy_sensor_);
358 LOG_SENSOR(
" ",
"Export Reactive Energy", this->export_reactive_energy_sensor_);
359 LOG_SENSOR(
" ",
"Apparent Energy", this->apparent_energy_sensor_);
360 LOG_SENSOR(
" ",
"Active Power", this->active_power_sensor_);
361 LOG_SENSOR(
" ",
"Reactive Power", this->reactive_power_sensor_);
362 LOG_SENSOR(
" ",
"Apparent Power", this->apparent_power_sensor_);
363 LOG_SENSOR(
" ",
"Voltage", this->voltage_sensor_);
364 LOG_SENSOR(
" ",
"Current", this->current_sensor_);
365 LOG_SENSOR(
" ",
"Power Factor", this->power_factor_sensor_);
366 LOG_SENSOR(
" ",
"Frequency", this->frequency_sensor_);
367 LOG_SENSOR(
" ",
"Maximum Demand Active Power", this->maximum_demand_active_power_sensor_);
368 LOG_SENSOR(
" ",
"Maximum Demand Reactive Power", this->maximum_demand_reactive_power_sensor_);
369 LOG_SENSOR(
" ",
"Maximum Demand Apparent Power", this->maximum_demand_apparent_power_sensor_);
370#ifdef USE_SELEC_METER_EM4M
372 LOG_SENSOR(
" ",
"Voltage L1-L2", this->voltage_l12_sensor_);
373 LOG_SENSOR(
" ",
"Voltage L2-L3", this->voltage_l23_sensor_);
374 LOG_SENSOR(
" ",
"Voltage L3-L1", this->voltage_l31_sensor_);
375 LOG_SENSOR(
" ",
"Average Voltage LL", this->average_voltage_ll_sensor_);
376 for (uint8_t phase = 0; phase < 3; phase++) {
377 const auto &p = this->
phases_[phase];
378 ESP_LOGCONFIG(TAG,
" Phase %c",
'A' + phase);
379 LOG_SENSOR(
" ",
"Voltage", p.voltage_sensor_);
380 LOG_SENSOR(
" ",
"Current", p.current_sensor_);
381 LOG_SENSOR(
" ",
"Active Power", p.active_power_sensor_);
382 LOG_SENSOR(
" ",
"Reactive Power", p.reactive_power_sensor_);
383 LOG_SENSOR(
" ",
"Apparent Power", p.apparent_power_sensor_);
384 LOG_SENSOR(
" ",
"Power Factor", p.power_factor_sensor_);
385 LOG_SENSOR(
" ",
"Import Active Energy", p.import_active_energy_sensor_);
386 LOG_SENSOR(
" ",
"Export Active Energy", p.export_active_energy_sensor_);
387 LOG_SENSOR(
" ",
"Import Reactive Energy", p.import_reactive_energy_sensor_);
388 LOG_SENSOR(
" ",
"Export Reactive Energy", p.export_reactive_energy_sensor_);
389 LOG_SENSOR(
" ",
"Apparent Energy", p.apparent_energy_sensor_);
391 LOG_SENSOR(
" ",
"Net Active Energy (Mains)", this->net_active_energy_mains_sensor_);
392 LOG_SENSOR(
" ",
"Net Reactive Energy (Mains)", this->net_reactive_energy_mains_sensor_);
393 LOG_SENSOR(
" ",
"Net Apparent Energy (Mains)", this->net_apparent_energy_mains_sensor_);
394 LOG_SENSOR(
" ",
"Net Active Energy (DG)", this->net_active_energy_dg_sensor_);
395 LOG_SENSOR(
" ",
"Net Reactive Energy (DG)", this->net_reactive_energy_dg_sensor_);
396 LOG_SENSOR(
" ",
"Net Apparent Energy (DG)", this->net_apparent_energy_dg_sensor_);
398#ifdef USE_TEXT_SENSOR
401#ifdef USE_BINARY_SENSOR