mirror of
https://github.com/Threnklyn/esphome-dev.git
synced 2026-06-07 05:13:31 +02:00
Deprecate virtual methods to set entity properties (#3021)
This commit is contained in:
@@ -9,6 +9,8 @@ from esphome.const import (
|
||||
DEVICE_CLASS_ENERGY,
|
||||
CONF_METHOD,
|
||||
STATE_CLASS_TOTAL_INCREASING,
|
||||
CONF_UNIT_OF_MEASUREMENT,
|
||||
CONF_ACCURACY_DECIMALS,
|
||||
)
|
||||
from esphome.core.entity_helpers import inherit_property_from
|
||||
|
||||
@@ -27,6 +29,15 @@ TotalDailyEnergy = total_daily_energy_ns.class_(
|
||||
"TotalDailyEnergy", sensor.Sensor, cg.Component
|
||||
)
|
||||
|
||||
|
||||
def inherit_unit_of_measurement(uom, config):
|
||||
return uom + "h"
|
||||
|
||||
|
||||
def inherit_accuracy_decimals(decimals, config):
|
||||
return decimals + 2
|
||||
|
||||
|
||||
CONFIG_SCHEMA = (
|
||||
sensor.sensor_schema(
|
||||
device_class=DEVICE_CLASS_ENERGY,
|
||||
@@ -54,11 +65,19 @@ FINAL_VALIDATE_SCHEMA = cv.All(
|
||||
{
|
||||
cv.Required(CONF_ID): cv.use_id(TotalDailyEnergy),
|
||||
cv.Optional(CONF_ICON): cv.icon,
|
||||
cv.Optional(CONF_UNIT_OF_MEASUREMENT): sensor.validate_unit_of_measurement,
|
||||
cv.Optional(CONF_ACCURACY_DECIMALS): sensor.validate_accuracy_decimals,
|
||||
cv.Required(CONF_POWER_ID): cv.use_id(sensor.Sensor),
|
||||
},
|
||||
extra=cv.ALLOW_EXTRA,
|
||||
),
|
||||
inherit_property_from(CONF_ICON, CONF_POWER_ID),
|
||||
inherit_property_from(
|
||||
CONF_UNIT_OF_MEASUREMENT, CONF_POWER_ID, transform=inherit_unit_of_measurement
|
||||
),
|
||||
inherit_property_from(
|
||||
CONF_ACCURACY_DECIMALS, CONF_POWER_ID, transform=inherit_accuracy_decimals
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -25,8 +25,6 @@ class TotalDailyEnergy : public sensor::Sensor, public Component {
|
||||
void setup() override;
|
||||
void dump_config() override;
|
||||
float get_setup_priority() const override { return setup_priority::DATA; }
|
||||
std::string unit_of_measurement() override { return this->parent_->get_unit_of_measurement() + "h"; }
|
||||
int8_t accuracy_decimals() override { return this->parent_->get_accuracy_decimals() + 2; }
|
||||
void loop() override;
|
||||
|
||||
void publish_state_and_save(float state);
|
||||
|
||||
Reference in New Issue
Block a user