Deprecate virtual methods to set entity properties (#3021)

This commit is contained in:
Oxan van Leeuwen
2022-01-10 13:32:39 +01:00
committed by GitHub
parent 41bcc8c0f4
commit 073828235f
12 changed files with 76 additions and 32 deletions
@@ -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);