mirror of
https://github.com/esphome/esphome.git
synced 2024-12-22 13:34:54 +01:00
[bl0942] Improve energy reporting (#7428)
This commit is contained in:
parent
b5e5741ffd
commit
f5c2921b85
5 changed files with 13 additions and 4 deletions
|
@ -137,7 +137,8 @@ void BL0942::setup() {
|
|||
}
|
||||
|
||||
this->write_reg_(BL0942_REG_USR_WRPROT, BL0942_REG_USR_WRPROT_MAGIC);
|
||||
this->write_reg_(BL0942_REG_SOFT_RESET, BL0942_REG_SOFT_RESET_MAGIC);
|
||||
if (this->reset_)
|
||||
this->write_reg_(BL0942_REG_SOFT_RESET, BL0942_REG_SOFT_RESET_MAGIC);
|
||||
|
||||
uint32_t mode = BL0942_REG_MODE_DEFAULT;
|
||||
mode |= BL0942_REG_MODE_RMS_UPDATE_SEL; /* 800ms refresh time */
|
||||
|
@ -196,6 +197,7 @@ void BL0942::received_package_(DataPacket *data) {
|
|||
|
||||
void BL0942::dump_config() { // NOLINT(readability-function-cognitive-complexity)
|
||||
ESP_LOGCONFIG(TAG, "BL0942:");
|
||||
ESP_LOGCONFIG(TAG, " Reset: %s", TRUEFALSE(this->reset_));
|
||||
ESP_LOGCONFIG(TAG, " Address: %d", this->address_);
|
||||
ESP_LOGCONFIG(TAG, " Nominal line frequency: %d Hz", this->line_freq_);
|
||||
ESP_LOGCONFIG(TAG, " Current reference: %f", this->current_reference_);
|
||||
|
|
|
@ -93,6 +93,7 @@ class BL0942 : public PollingComponent, public uart::UARTDevice {
|
|||
void set_frequency_sensor(sensor::Sensor *frequency_sensor) { frequency_sensor_ = frequency_sensor; }
|
||||
void set_line_freq(LineFrequency freq) { this->line_freq_ = freq; }
|
||||
void set_address(uint8_t address) { this->address_ = address; }
|
||||
void set_reset(bool reset) { this->reset_ = reset; }
|
||||
void set_current_reference(float current_ref) {
|
||||
this->current_reference_ = current_ref;
|
||||
this->current_reference_set_ = true;
|
||||
|
@ -137,6 +138,7 @@ class BL0942 : public PollingComponent, public uart::UARTDevice {
|
|||
float energy_reference_ = BL0942_EREF;
|
||||
bool energy_reference_set_ = false;
|
||||
uint8_t address_ = 0;
|
||||
bool reset_ = false;
|
||||
LineFrequency line_freq_ = LINE_FREQUENCY_50HZ;
|
||||
uint32_t rx_start_ = 0;
|
||||
uint32_t prev_cf_cnt_ = 0;
|
||||
|
|
|
@ -27,6 +27,7 @@ from esphome.const import (
|
|||
CONF_CURRENT_REFERENCE = "current_reference"
|
||||
CONF_ENERGY_REFERENCE = "energy_reference"
|
||||
CONF_POWER_REFERENCE = "power_reference"
|
||||
CONF_RESET = "reset"
|
||||
CONF_VOLTAGE_REFERENCE = "voltage_reference"
|
||||
|
||||
DEPENDENCIES = ["uart"]
|
||||
|
@ -58,19 +59,19 @@ CONFIG_SCHEMA = (
|
|||
),
|
||||
cv.Optional(CONF_POWER): sensor.sensor_schema(
|
||||
unit_of_measurement=UNIT_WATT,
|
||||
accuracy_decimals=0,
|
||||
accuracy_decimals=1,
|
||||
device_class=DEVICE_CLASS_POWER,
|
||||
state_class=STATE_CLASS_MEASUREMENT,
|
||||
),
|
||||
cv.Optional(CONF_ENERGY): sensor.sensor_schema(
|
||||
unit_of_measurement=UNIT_KILOWATT_HOURS,
|
||||
accuracy_decimals=0,
|
||||
accuracy_decimals=3,
|
||||
device_class=DEVICE_CLASS_ENERGY,
|
||||
state_class=STATE_CLASS_TOTAL_INCREASING,
|
||||
),
|
||||
cv.Optional(CONF_FREQUENCY): sensor.sensor_schema(
|
||||
unit_of_measurement=UNIT_HERTZ,
|
||||
accuracy_decimals=0,
|
||||
accuracy_decimals=2,
|
||||
device_class=DEVICE_CLASS_FREQUENCY,
|
||||
state_class=STATE_CLASS_MEASUREMENT,
|
||||
),
|
||||
|
@ -82,6 +83,7 @@ CONFIG_SCHEMA = (
|
|||
),
|
||||
),
|
||||
cv.Optional(CONF_ADDRESS, default=0): cv.int_range(min=0, max=3),
|
||||
cv.Optional(CONF_RESET, default=True): cv.boolean,
|
||||
cv.Optional(CONF_CURRENT_REFERENCE): cv.float_,
|
||||
cv.Optional(CONF_ENERGY_REFERENCE): cv.float_,
|
||||
cv.Optional(CONF_POWER_REFERENCE): cv.float_,
|
||||
|
@ -115,6 +117,7 @@ async def to_code(config):
|
|||
cg.add(var.set_frequency_sensor(sens))
|
||||
cg.add(var.set_line_freq(config[CONF_LINE_FREQUENCY]))
|
||||
cg.add(var.set_address(config[CONF_ADDRESS]))
|
||||
cg.add(var.set_reset(config[CONF_RESET]))
|
||||
if (current_reference := config.get(CONF_CURRENT_REFERENCE, None)) is not None:
|
||||
cg.add(var.set_current_reference(current_reference))
|
||||
if (voltage_reference := config.get(CONF_VOLTAGE_REFERENCE, None)) is not None:
|
||||
|
|
|
@ -10,6 +10,7 @@ sensor:
|
|||
- platform: bl0942
|
||||
address: 0
|
||||
line_frequency: 50Hz
|
||||
reset: false
|
||||
voltage:
|
||||
name: BL0942 Voltage
|
||||
current:
|
||||
|
|
|
@ -8,6 +8,7 @@ uart:
|
|||
|
||||
sensor:
|
||||
- platform: bl0942
|
||||
reset: true
|
||||
voltage:
|
||||
name: BL0942 Voltage
|
||||
current:
|
||||
|
|
Loading…
Reference in a new issue