Remove last_reset_type and convert all those sensors to TOTAL_INCREASING (#2233)

This commit is contained in:
Jesse Hills 2021-09-06 08:30:47 +12:00 committed by GitHub
parent f9b0666adf
commit ff6bed54c6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 60 additions and 191 deletions

View file

@ -473,7 +473,8 @@ message ListEntitiesSensorResponse {
bool force_update = 8; bool force_update = 8;
string device_class = 9; string device_class = 9;
SensorStateClass state_class = 10; SensorStateClass state_class = 10;
SensorLastResetType last_reset_type = 11; // Last reset type removed in 2021.9.0
SensorLastResetType legacy_last_reset_type = 11;
bool disabled_by_default = 12; bool disabled_by_default = 12;
} }
message SensorStateResponse { message SensorStateResponse {

View file

@ -418,7 +418,6 @@ bool APIConnection::send_sensor_info(sensor::Sensor *sensor) {
msg.force_update = sensor->get_force_update(); msg.force_update = sensor->get_force_update();
msg.device_class = sensor->get_device_class(); msg.device_class = sensor->get_device_class();
msg.state_class = static_cast<enums::SensorStateClass>(sensor->state_class); msg.state_class = static_cast<enums::SensorStateClass>(sensor->state_class);
msg.last_reset_type = static_cast<enums::SensorLastResetType>(sensor->last_reset_type);
msg.disabled_by_default = sensor->is_disabled_by_default(); msg.disabled_by_default = sensor->is_disabled_by_default();
return this->send_list_entities_sensor_response(msg); return this->send_list_entities_sensor_response(msg);

View file

@ -1817,7 +1817,7 @@ bool ListEntitiesSensorResponse::decode_varint(uint32_t field_id, ProtoVarInt va
return true; return true;
} }
case 11: { case 11: {
this->last_reset_type = value.as_enum<enums::SensorLastResetType>(); this->legacy_last_reset_type = value.as_enum<enums::SensorLastResetType>();
return true; return true;
} }
case 12: { case 12: {
@ -1879,7 +1879,7 @@ void ListEntitiesSensorResponse::encode(ProtoWriteBuffer buffer) const {
buffer.encode_bool(8, this->force_update); buffer.encode_bool(8, this->force_update);
buffer.encode_string(9, this->device_class); buffer.encode_string(9, this->device_class);
buffer.encode_enum<enums::SensorStateClass>(10, this->state_class); buffer.encode_enum<enums::SensorStateClass>(10, this->state_class);
buffer.encode_enum<enums::SensorLastResetType>(11, this->last_reset_type); buffer.encode_enum<enums::SensorLastResetType>(11, this->legacy_last_reset_type);
buffer.encode_bool(12, this->disabled_by_default); buffer.encode_bool(12, this->disabled_by_default);
} }
#ifdef HAS_PROTO_MESSAGE_DUMP #ifdef HAS_PROTO_MESSAGE_DUMP
@ -1928,8 +1928,8 @@ void ListEntitiesSensorResponse::dump_to(std::string &out) const {
out.append(proto_enum_to_string<enums::SensorStateClass>(this->state_class)); out.append(proto_enum_to_string<enums::SensorStateClass>(this->state_class));
out.append("\n"); out.append("\n");
out.append(" last_reset_type: "); out.append(" legacy_last_reset_type: ");
out.append(proto_enum_to_string<enums::SensorLastResetType>(this->last_reset_type)); out.append(proto_enum_to_string<enums::SensorLastResetType>(this->legacy_last_reset_type));
out.append("\n"); out.append("\n");
out.append(" disabled_by_default: "); out.append(" disabled_by_default: ");

View file

@ -510,7 +510,7 @@ class ListEntitiesSensorResponse : public ProtoMessage {
bool force_update{false}; bool force_update{false};
std::string device_class{}; std::string device_class{};
enums::SensorStateClass state_class{}; enums::SensorStateClass state_class{};
enums::SensorLastResetType last_reset_type{}; enums::SensorLastResetType legacy_last_reset_type{};
bool disabled_by_default{false}; bool disabled_by_default{false};
void encode(ProtoWriteBuffer buffer) const override; void encode(ProtoWriteBuffer buffer) const override;
#ifdef HAS_PROTO_MESSAGE_DUMP #ifdef HAS_PROTO_MESSAGE_DUMP

View file

@ -19,8 +19,8 @@ from esphome.const import (
DEVICE_CLASS_VOLTAGE, DEVICE_CLASS_VOLTAGE,
ICON_LIGHTBULB, ICON_LIGHTBULB,
ICON_CURRENT_AC, ICON_CURRENT_AC,
LAST_RESET_TYPE_AUTO,
STATE_CLASS_MEASUREMENT, STATE_CLASS_MEASUREMENT,
STATE_CLASS_TOTAL_INCREASING,
UNIT_HERTZ, UNIT_HERTZ,
UNIT_VOLT, UNIT_VOLT,
UNIT_AMPERE, UNIT_AMPERE,
@ -94,15 +94,13 @@ ATM90E32_PHASE_SCHEMA = cv.Schema(
unit_of_measurement=UNIT_WATT_HOURS, unit_of_measurement=UNIT_WATT_HOURS,
accuracy_decimals=2, accuracy_decimals=2,
device_class=DEVICE_CLASS_ENERGY, device_class=DEVICE_CLASS_ENERGY,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_TOTAL_INCREASING,
last_reset_type=LAST_RESET_TYPE_AUTO,
), ),
cv.Optional(CONF_REVERSE_ACTIVE_ENERGY): sensor.sensor_schema( cv.Optional(CONF_REVERSE_ACTIVE_ENERGY): sensor.sensor_schema(
unit_of_measurement=UNIT_WATT_HOURS, unit_of_measurement=UNIT_WATT_HOURS,
accuracy_decimals=2, accuracy_decimals=2,
device_class=DEVICE_CLASS_ENERGY, device_class=DEVICE_CLASS_ENERGY,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_TOTAL_INCREASING,
last_reset_type=LAST_RESET_TYPE_AUTO,
), ),
cv.Optional(CONF_GAIN_VOLTAGE, default=7305): cv.uint16_t, cv.Optional(CONF_GAIN_VOLTAGE, default=7305): cv.uint16_t,
cv.Optional(CONF_GAIN_CT, default=27961): cv.uint16_t, cv.Optional(CONF_GAIN_CT, default=27961): cv.uint16_t,

View file

@ -19,7 +19,6 @@ from esphome.const import (
CONF_ICON, CONF_ICON,
CONF_ID, CONF_ID,
CONF_INVERTED, CONF_INVERTED,
CONF_LAST_RESET_TYPE,
CONF_MAX_VALUE, CONF_MAX_VALUE,
CONF_MIN_VALUE, CONF_MIN_VALUE,
CONF_NAME, CONF_NAME,
@ -40,8 +39,8 @@ from esphome.const import (
ICON_BLUR, ICON_BLUR,
ICON_EMPTY, ICON_EMPTY,
ICON_THERMOMETER, ICON_THERMOMETER,
LAST_RESET_TYPE_AUTO,
STATE_CLASS_MEASUREMENT, STATE_CLASS_MEASUREMENT,
STATE_CLASS_TOTAL_INCREASING,
UNIT_CELSIUS, UNIT_CELSIUS,
UNIT_EMPTY, UNIT_EMPTY,
UNIT_PERCENT, UNIT_PERCENT,
@ -336,8 +335,7 @@ CONFIG_SCHEMA = cv.Schema(
CONF_UNIT_OF_MEASUREMENT: UNIT_WATT_HOURS, CONF_UNIT_OF_MEASUREMENT: UNIT_WATT_HOURS,
CONF_ACCURACY_DECIMALS: 0, CONF_ACCURACY_DECIMALS: 0,
CONF_DEVICE_CLASS: DEVICE_CLASS_ENERGY, CONF_DEVICE_CLASS: DEVICE_CLASS_ENERGY,
CONF_STATE_CLASS: STATE_CLASS_MEASUREMENT, CONF_STATE_CLASS: STATE_CLASS_TOTAL_INCREASING,
CONF_LAST_RESET_TYPE: LAST_RESET_TYPE_AUTO,
}, },
], ],
): [ ): [

View file

@ -11,8 +11,8 @@ class DemoSensor : public sensor::Sensor, public PollingComponent {
public: public:
void update() override { void update() override {
float val = random_float(); float val = random_float();
bool is_auto = this->last_reset_type == sensor::LAST_RESET_TYPE_AUTO; bool increasing = this->state_class == sensor::STATE_CLASS_TOTAL_INCREASING;
if (is_auto) { if (increasing) {
float base = isnan(this->state) ? 0.0f : this->state; float base = isnan(this->state) ? 0.0f : this->state;
this->publish_state(base + val * 10); this->publish_state(base + val * 10);
} else { } else {

View file

@ -9,9 +9,9 @@ from esphome.const import (
DEVICE_CLASS_POWER, DEVICE_CLASS_POWER,
DEVICE_CLASS_VOLTAGE, DEVICE_CLASS_VOLTAGE,
ICON_EMPTY, ICON_EMPTY,
LAST_RESET_TYPE_NEVER,
STATE_CLASS_MEASUREMENT, STATE_CLASS_MEASUREMENT,
STATE_CLASS_NONE, STATE_CLASS_NONE,
STATE_CLASS_TOTAL_INCREASING,
UNIT_AMPERE, UNIT_AMPERE,
UNIT_EMPTY, UNIT_EMPTY,
UNIT_VOLT, UNIT_VOLT,
@ -26,52 +26,22 @@ CONFIG_SCHEMA = cv.Schema(
{ {
cv.GenerateID(CONF_DSMR_ID): cv.use_id(Dsmr), cv.GenerateID(CONF_DSMR_ID): cv.use_id(Dsmr),
cv.Optional("energy_delivered_lux"): sensor.sensor_schema( cv.Optional("energy_delivered_lux"): sensor.sensor_schema(
"kWh", "kWh", ICON_EMPTY, 3, DEVICE_CLASS_ENERGY, STATE_CLASS_TOTAL_INCREASING
ICON_EMPTY,
3,
DEVICE_CLASS_ENERGY,
STATE_CLASS_MEASUREMENT,
LAST_RESET_TYPE_NEVER,
), ),
cv.Optional("energy_delivered_tariff1"): sensor.sensor_schema( cv.Optional("energy_delivered_tariff1"): sensor.sensor_schema(
"kWh", "kWh", ICON_EMPTY, 3, DEVICE_CLASS_ENERGY, STATE_CLASS_TOTAL_INCREASING
ICON_EMPTY,
3,
DEVICE_CLASS_ENERGY,
STATE_CLASS_MEASUREMENT,
LAST_RESET_TYPE_NEVER,
), ),
cv.Optional("energy_delivered_tariff2"): sensor.sensor_schema( cv.Optional("energy_delivered_tariff2"): sensor.sensor_schema(
"kWh", "kWh", ICON_EMPTY, 3, DEVICE_CLASS_ENERGY, STATE_CLASS_TOTAL_INCREASING
ICON_EMPTY,
3,
DEVICE_CLASS_ENERGY,
STATE_CLASS_MEASUREMENT,
LAST_RESET_TYPE_NEVER,
), ),
cv.Optional("energy_returned_lux"): sensor.sensor_schema( cv.Optional("energy_returned_lux"): sensor.sensor_schema(
"kWh", "kWh", ICON_EMPTY, 3, DEVICE_CLASS_ENERGY, STATE_CLASS_TOTAL_INCREASING
ICON_EMPTY,
3,
DEVICE_CLASS_ENERGY,
STATE_CLASS_MEASUREMENT,
LAST_RESET_TYPE_NEVER,
), ),
cv.Optional("energy_returned_tariff1"): sensor.sensor_schema( cv.Optional("energy_returned_tariff1"): sensor.sensor_schema(
"kWh", "kWh", ICON_EMPTY, 3, DEVICE_CLASS_ENERGY, STATE_CLASS_TOTAL_INCREASING
ICON_EMPTY,
3,
DEVICE_CLASS_ENERGY,
STATE_CLASS_MEASUREMENT,
LAST_RESET_TYPE_NEVER,
), ),
cv.Optional("energy_returned_tariff2"): sensor.sensor_schema( cv.Optional("energy_returned_tariff2"): sensor.sensor_schema(
"kWh", "kWh", ICON_EMPTY, 3, DEVICE_CLASS_ENERGY, STATE_CLASS_TOTAL_INCREASING
ICON_EMPTY,
3,
DEVICE_CLASS_ENERGY,
STATE_CLASS_MEASUREMENT,
LAST_RESET_TYPE_NEVER,
), ),
cv.Optional("total_imported_energy"): sensor.sensor_schema( cv.Optional("total_imported_energy"): sensor.sensor_schema(
"kvarh", ICON_EMPTY, 3, DEVICE_CLASS_ENERGY, STATE_CLASS_NONE "kvarh", ICON_EMPTY, 3, DEVICE_CLASS_ENERGY, STATE_CLASS_NONE
@ -176,20 +146,10 @@ CONFIG_SCHEMA = cv.Schema(
UNIT_VOLT, ICON_EMPTY, 1, DEVICE_CLASS_VOLTAGE, STATE_CLASS_NONE UNIT_VOLT, ICON_EMPTY, 1, DEVICE_CLASS_VOLTAGE, STATE_CLASS_NONE
), ),
cv.Optional("gas_delivered"): sensor.sensor_schema( cv.Optional("gas_delivered"): sensor.sensor_schema(
"", "", ICON_EMPTY, 3, DEVICE_CLASS_GAS, STATE_CLASS_TOTAL_INCREASING
ICON_EMPTY,
3,
DEVICE_CLASS_GAS,
STATE_CLASS_MEASUREMENT,
LAST_RESET_TYPE_NEVER,
), ),
cv.Optional("gas_delivered_be"): sensor.sensor_schema( cv.Optional("gas_delivered_be"): sensor.sensor_schema(
"", "", ICON_EMPTY, 3, DEVICE_CLASS_GAS, STATE_CLASS_TOTAL_INCREASING
ICON_EMPTY,
3,
DEVICE_CLASS_GAS,
STATE_CLASS_MEASUREMENT,
LAST_RESET_TYPE_NEVER,
), ),
} }
).extend(cv.COMPONENT_SCHEMA) ).extend(cv.COMPONENT_SCHEMA)

View file

@ -13,9 +13,8 @@ from esphome.const import (
DEVICE_CLASS_POWER, DEVICE_CLASS_POWER,
DEVICE_CLASS_VOLTAGE, DEVICE_CLASS_VOLTAGE,
ICON_CURRENT_AC, ICON_CURRENT_AC,
LAST_RESET_TYPE_AUTO,
STATE_CLASS_MEASUREMENT, STATE_CLASS_MEASUREMENT,
STATE_CLASS_NONE, STATE_CLASS_TOTAL_INCREASING,
UNIT_AMPERE, UNIT_AMPERE,
UNIT_DEGREES, UNIT_DEGREES,
UNIT_HERTZ, UNIT_HERTZ,
@ -143,25 +142,23 @@ CONFIG_SCHEMA = (
unit_of_measurement=UNIT_KILOWATT_HOURS, unit_of_measurement=UNIT_KILOWATT_HOURS,
accuracy_decimals=2, accuracy_decimals=2,
device_class=DEVICE_CLASS_ENERGY, device_class=DEVICE_CLASS_ENERGY,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_TOTAL_INCREASING,
last_reset_type=LAST_RESET_TYPE_AUTO,
), ),
cv.Optional(CONF_TOTAL_ENERGY_PRODUCTION): sensor.sensor_schema( cv.Optional(CONF_TOTAL_ENERGY_PRODUCTION): sensor.sensor_schema(
unit_of_measurement=UNIT_KILOWATT_HOURS, unit_of_measurement=UNIT_KILOWATT_HOURS,
accuracy_decimals=0, accuracy_decimals=0,
device_class=DEVICE_CLASS_ENERGY, device_class=DEVICE_CLASS_ENERGY,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_TOTAL_INCREASING,
last_reset_type=LAST_RESET_TYPE_AUTO,
), ),
cv.Optional(CONF_TOTAL_GENERATION_TIME): sensor.sensor_schema( cv.Optional(CONF_TOTAL_GENERATION_TIME): sensor.sensor_schema(
unit_of_measurement=UNIT_HOURS, unit_of_measurement=UNIT_HOURS,
accuracy_decimals=0, accuracy_decimals=0,
state_class=STATE_CLASS_NONE, state_class=STATE_CLASS_TOTAL_INCREASING,
), ),
cv.Optional(CONF_TODAY_GENERATION_TIME): sensor.sensor_schema( cv.Optional(CONF_TODAY_GENERATION_TIME): sensor.sensor_schema(
unit_of_measurement=UNIT_MINUTE, unit_of_measurement=UNIT_MINUTE,
accuracy_decimals=0, accuracy_decimals=0,
state_class=STATE_CLASS_NONE, state_class=STATE_CLASS_TOTAL_INCREASING,
), ),
cv.Optional(CONF_INVERTER_MODULE_TEMP): sensor.sensor_schema( cv.Optional(CONF_INVERTER_MODULE_TEMP): sensor.sensor_schema(
unit_of_measurement=UNIT_DEGREES, unit_of_measurement=UNIT_DEGREES,

View file

@ -18,8 +18,8 @@ from esphome.const import (
DEVICE_CLASS_ENERGY, DEVICE_CLASS_ENERGY,
DEVICE_CLASS_POWER, DEVICE_CLASS_POWER,
DEVICE_CLASS_VOLTAGE, DEVICE_CLASS_VOLTAGE,
LAST_RESET_TYPE_AUTO,
STATE_CLASS_MEASUREMENT, STATE_CLASS_MEASUREMENT,
STATE_CLASS_TOTAL_INCREASING,
UNIT_VOLT, UNIT_VOLT,
UNIT_AMPERE, UNIT_AMPERE,
UNIT_WATT, UNIT_WATT,
@ -78,8 +78,7 @@ CONFIG_SCHEMA = cv.Schema(
unit_of_measurement=UNIT_WATT_HOURS, unit_of_measurement=UNIT_WATT_HOURS,
accuracy_decimals=1, accuracy_decimals=1,
device_class=DEVICE_CLASS_ENERGY, device_class=DEVICE_CLASS_ENERGY,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_TOTAL_INCREASING,
last_reset_type=LAST_RESET_TYPE_AUTO,
), ),
cv.Optional(CONF_CURRENT_RESISTOR, default=0.001): cv.resistance, cv.Optional(CONF_CURRENT_RESISTOR, default=0.001): cv.resistance,
cv.Optional(CONF_VOLTAGE_DIVIDER, default=2351): cv.positive_float, cv.Optional(CONF_VOLTAGE_DIVIDER, default=2351): cv.positive_float,

View file

@ -13,7 +13,7 @@ from esphome.const import (
CONF_TOTAL, CONF_TOTAL,
ICON_PULSE, ICON_PULSE,
STATE_CLASS_MEASUREMENT, STATE_CLASS_MEASUREMENT,
STATE_CLASS_NONE, STATE_CLASS_TOTAL_INCREASING,
UNIT_PULSES_PER_MINUTE, UNIT_PULSES_PER_MINUTE,
UNIT_PULSES, UNIT_PULSES,
) )
@ -95,7 +95,7 @@ CONFIG_SCHEMA = (
unit_of_measurement=UNIT_PULSES, unit_of_measurement=UNIT_PULSES,
icon=ICON_PULSE, icon=ICON_PULSE,
accuracy_decimals=0, accuracy_decimals=0,
state_class=STATE_CLASS_NONE, state_class=STATE_CLASS_TOTAL_INCREASING,
), ),
} }
) )

View file

@ -11,8 +11,8 @@ from esphome.const import (
CONF_TOTAL, CONF_TOTAL,
CONF_VALUE, CONF_VALUE,
ICON_PULSE, ICON_PULSE,
LAST_RESET_TYPE_AUTO,
STATE_CLASS_MEASUREMENT, STATE_CLASS_MEASUREMENT,
STATE_CLASS_TOTAL_INCREASING,
UNIT_PULSES, UNIT_PULSES,
UNIT_PULSES_PER_MINUTE, UNIT_PULSES_PER_MINUTE,
) )
@ -64,8 +64,7 @@ CONFIG_SCHEMA = sensor.sensor_schema(
unit_of_measurement=UNIT_PULSES, unit_of_measurement=UNIT_PULSES,
icon=ICON_PULSE, icon=ICON_PULSE,
accuracy_decimals=0, accuracy_decimals=0,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_TOTAL_INCREASING,
last_reset_type=LAST_RESET_TYPE_AUTO,
), ),
} }
) )

View file

@ -11,8 +11,8 @@ from esphome.const import (
DEVICE_CLASS_ENERGY, DEVICE_CLASS_ENERGY,
DEVICE_CLASS_POWER, DEVICE_CLASS_POWER,
DEVICE_CLASS_VOLTAGE, DEVICE_CLASS_VOLTAGE,
LAST_RESET_TYPE_AUTO,
STATE_CLASS_MEASUREMENT, STATE_CLASS_MEASUREMENT,
STATE_CLASS_TOTAL_INCREASING,
UNIT_VOLT, UNIT_VOLT,
UNIT_AMPERE, UNIT_AMPERE,
UNIT_WATT, UNIT_WATT,
@ -50,8 +50,7 @@ CONFIG_SCHEMA = (
unit_of_measurement=UNIT_WATT_HOURS, unit_of_measurement=UNIT_WATT_HOURS,
accuracy_decimals=0, accuracy_decimals=0,
device_class=DEVICE_CLASS_ENERGY, device_class=DEVICE_CLASS_ENERGY,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_TOTAL_INCREASING,
last_reset_type=LAST_RESET_TYPE_AUTO,
), ),
} }
) )

View file

@ -15,8 +15,8 @@ from esphome.const import (
DEVICE_CLASS_POWER, DEVICE_CLASS_POWER,
DEVICE_CLASS_ENERGY, DEVICE_CLASS_ENERGY,
ICON_CURRENT_AC, ICON_CURRENT_AC,
LAST_RESET_TYPE_AUTO,
STATE_CLASS_MEASUREMENT, STATE_CLASS_MEASUREMENT,
STATE_CLASS_TOTAL_INCREASING,
UNIT_HERTZ, UNIT_HERTZ,
UNIT_VOLT, UNIT_VOLT,
UNIT_AMPERE, UNIT_AMPERE,
@ -55,8 +55,7 @@ CONFIG_SCHEMA = (
unit_of_measurement=UNIT_WATT_HOURS, unit_of_measurement=UNIT_WATT_HOURS,
accuracy_decimals=0, accuracy_decimals=0,
device_class=DEVICE_CLASS_ENERGY, device_class=DEVICE_CLASS_ENERGY,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_TOTAL_INCREASING,
last_reset_type=LAST_RESET_TYPE_AUTO,
), ),
cv.Optional(CONF_FREQUENCY): sensor.sensor_schema( cv.Optional(CONF_FREQUENCY): sensor.sensor_schema(
unit_of_measurement=UNIT_HERTZ, unit_of_measurement=UNIT_HERTZ,

View file

@ -23,8 +23,8 @@ from esphome.const import (
DEVICE_CLASS_VOLTAGE, DEVICE_CLASS_VOLTAGE,
ICON_CURRENT_AC, ICON_CURRENT_AC,
ICON_FLASH, ICON_FLASH,
LAST_RESET_TYPE_AUTO,
STATE_CLASS_MEASUREMENT, STATE_CLASS_MEASUREMENT,
STATE_CLASS_TOTAL_INCREASING,
UNIT_AMPERE, UNIT_AMPERE,
UNIT_DEGREES, UNIT_DEGREES,
UNIT_HERTZ, UNIT_HERTZ,
@ -104,29 +104,25 @@ CONFIG_SCHEMA = (
unit_of_measurement=UNIT_KILOWATT_HOURS, unit_of_measurement=UNIT_KILOWATT_HOURS,
accuracy_decimals=2, accuracy_decimals=2,
device_class=DEVICE_CLASS_ENERGY, device_class=DEVICE_CLASS_ENERGY,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_TOTAL_INCREASING,
last_reset_type=LAST_RESET_TYPE_AUTO,
), ),
cv.Optional(CONF_EXPORT_ACTIVE_ENERGY): sensor.sensor_schema( cv.Optional(CONF_EXPORT_ACTIVE_ENERGY): sensor.sensor_schema(
unit_of_measurement=UNIT_KILOWATT_HOURS, unit_of_measurement=UNIT_KILOWATT_HOURS,
accuracy_decimals=2, accuracy_decimals=2,
device_class=DEVICE_CLASS_ENERGY, device_class=DEVICE_CLASS_ENERGY,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_TOTAL_INCREASING,
last_reset_type=LAST_RESET_TYPE_AUTO,
), ),
cv.Optional(CONF_IMPORT_REACTIVE_ENERGY): sensor.sensor_schema( cv.Optional(CONF_IMPORT_REACTIVE_ENERGY): sensor.sensor_schema(
unit_of_measurement=UNIT_KILOVOLT_AMPS_REACTIVE_HOURS, unit_of_measurement=UNIT_KILOVOLT_AMPS_REACTIVE_HOURS,
accuracy_decimals=2, accuracy_decimals=2,
device_class=DEVICE_CLASS_ENERGY, device_class=DEVICE_CLASS_ENERGY,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_TOTAL_INCREASING,
last_reset_type=LAST_RESET_TYPE_AUTO,
), ),
cv.Optional(CONF_EXPORT_REACTIVE_ENERGY): sensor.sensor_schema( cv.Optional(CONF_EXPORT_REACTIVE_ENERGY): sensor.sensor_schema(
unit_of_measurement=UNIT_KILOVOLT_AMPS_REACTIVE_HOURS, unit_of_measurement=UNIT_KILOVOLT_AMPS_REACTIVE_HOURS,
accuracy_decimals=2, accuracy_decimals=2,
device_class=DEVICE_CLASS_ENERGY, device_class=DEVICE_CLASS_ENERGY,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_TOTAL_INCREASING,
last_reset_type=LAST_RESET_TYPE_AUTO,
), ),
} }
) )

View file

@ -20,8 +20,8 @@ from esphome.const import (
DEVICE_CLASS_POWER_FACTOR, DEVICE_CLASS_POWER_FACTOR,
DEVICE_CLASS_VOLTAGE, DEVICE_CLASS_VOLTAGE,
ICON_CURRENT_AC, ICON_CURRENT_AC,
LAST_RESET_TYPE_AUTO,
STATE_CLASS_MEASUREMENT, STATE_CLASS_MEASUREMENT,
STATE_CLASS_TOTAL_INCREASING,
UNIT_AMPERE, UNIT_AMPERE,
UNIT_HERTZ, UNIT_HERTZ,
UNIT_VOLT, UNIT_VOLT,
@ -54,50 +54,43 @@ SENSORS = {
unit_of_measurement=UNIT_KILOWATT_HOURS, unit_of_measurement=UNIT_KILOWATT_HOURS,
accuracy_decimals=2, accuracy_decimals=2,
device_class=DEVICE_CLASS_ENERGY, device_class=DEVICE_CLASS_ENERGY,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_TOTAL_INCREASING,
last_reset_type=LAST_RESET_TYPE_AUTO,
), ),
CONF_IMPORT_ACTIVE_ENERGY: sensor.sensor_schema( CONF_IMPORT_ACTIVE_ENERGY: sensor.sensor_schema(
unit_of_measurement=UNIT_KILOWATT_HOURS, unit_of_measurement=UNIT_KILOWATT_HOURS,
accuracy_decimals=2, accuracy_decimals=2,
device_class=DEVICE_CLASS_ENERGY, device_class=DEVICE_CLASS_ENERGY,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_TOTAL_INCREASING,
last_reset_type=LAST_RESET_TYPE_AUTO,
), ),
CONF_EXPORT_ACTIVE_ENERGY: sensor.sensor_schema( CONF_EXPORT_ACTIVE_ENERGY: sensor.sensor_schema(
unit_of_measurement=UNIT_KILOWATT_HOURS, unit_of_measurement=UNIT_KILOWATT_HOURS,
accuracy_decimals=2, accuracy_decimals=2,
device_class=DEVICE_CLASS_ENERGY, device_class=DEVICE_CLASS_ENERGY,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_TOTAL_INCREASING,
last_reset_type=LAST_RESET_TYPE_AUTO,
), ),
CONF_TOTAL_REACTIVE_ENERGY: sensor.sensor_schema( CONF_TOTAL_REACTIVE_ENERGY: sensor.sensor_schema(
unit_of_measurement=UNIT_KILOVOLT_AMPS_REACTIVE_HOURS, unit_of_measurement=UNIT_KILOVOLT_AMPS_REACTIVE_HOURS,
accuracy_decimals=2, accuracy_decimals=2,
device_class=DEVICE_CLASS_ENERGY, device_class=DEVICE_CLASS_ENERGY,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_TOTAL_INCREASING,
last_reset_type=LAST_RESET_TYPE_AUTO,
), ),
CONF_IMPORT_REACTIVE_ENERGY: sensor.sensor_schema( CONF_IMPORT_REACTIVE_ENERGY: sensor.sensor_schema(
unit_of_measurement=UNIT_KILOVOLT_AMPS_REACTIVE_HOURS, unit_of_measurement=UNIT_KILOVOLT_AMPS_REACTIVE_HOURS,
accuracy_decimals=2, accuracy_decimals=2,
device_class=DEVICE_CLASS_ENERGY, device_class=DEVICE_CLASS_ENERGY,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_TOTAL_INCREASING,
last_reset_type=LAST_RESET_TYPE_AUTO,
), ),
CONF_EXPORT_REACTIVE_ENERGY: sensor.sensor_schema( CONF_EXPORT_REACTIVE_ENERGY: sensor.sensor_schema(
unit_of_measurement=UNIT_KILOVOLT_AMPS_REACTIVE_HOURS, unit_of_measurement=UNIT_KILOVOLT_AMPS_REACTIVE_HOURS,
accuracy_decimals=2, accuracy_decimals=2,
device_class=DEVICE_CLASS_ENERGY, device_class=DEVICE_CLASS_ENERGY,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_TOTAL_INCREASING,
last_reset_type=LAST_RESET_TYPE_AUTO,
), ),
CONF_APPARENT_ENERGY: sensor.sensor_schema( CONF_APPARENT_ENERGY: sensor.sensor_schema(
unit_of_measurement=UNIT_KILOVOLT_AMPS_HOURS, unit_of_measurement=UNIT_KILOVOLT_AMPS_HOURS,
accuracy_decimals=2, accuracy_decimals=2,
device_class=DEVICE_CLASS_ENERGY, device_class=DEVICE_CLASS_ENERGY,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_TOTAL_INCREASING,
last_reset_type=LAST_RESET_TYPE_AUTO,
), ),
CONF_ACTIVE_POWER: sensor.sensor_schema( CONF_ACTIVE_POWER: sensor.sensor_schema(
unit_of_measurement=UNIT_WATT, unit_of_measurement=UNIT_WATT,

View file

@ -17,7 +17,6 @@ from esphome.const import (
CONF_ICON, CONF_ICON,
CONF_ID, CONF_ID,
CONF_INTERNAL, CONF_INTERNAL,
CONF_LAST_RESET_TYPE,
CONF_ON_RAW_VALUE, CONF_ON_RAW_VALUE,
CONF_ON_VALUE, CONF_ON_VALUE,
CONF_ON_VALUE_RANGE, CONF_ON_VALUE_RANGE,
@ -31,9 +30,6 @@ from esphome.const import (
CONF_NAME, CONF_NAME,
CONF_MQTT_ID, CONF_MQTT_ID,
CONF_FORCE_UPDATE, CONF_FORCE_UPDATE,
LAST_RESET_TYPE_AUTO,
LAST_RESET_TYPE_NEVER,
LAST_RESET_TYPE_NONE,
DEVICE_CLASS_EMPTY, DEVICE_CLASS_EMPTY,
DEVICE_CLASS_BATTERY, DEVICE_CLASS_BATTERY,
DEVICE_CLASS_CARBON_MONOXIDE, DEVICE_CLASS_CARBON_MONOXIDE,
@ -85,15 +81,6 @@ STATE_CLASSES = {
} }
validate_state_class = cv.enum(STATE_CLASSES, lower=True, space="_") validate_state_class = cv.enum(STATE_CLASSES, lower=True, space="_")
LastResetTypes = sensor_ns.enum("LastResetType")
LAST_RESET_TYPES = {
LAST_RESET_TYPE_NONE: LastResetTypes.LAST_RESET_TYPE_NONE,
LAST_RESET_TYPE_NEVER: LastResetTypes.LAST_RESET_TYPE_NEVER,
LAST_RESET_TYPE_AUTO: LastResetTypes.LAST_RESET_TYPE_AUTO,
}
validate_last_reset_type = cv.enum(LAST_RESET_TYPES, lower=True, space="_")
IS_PLATFORM_COMPONENT = True IS_PLATFORM_COMPONENT = True
@ -183,7 +170,9 @@ SENSOR_SCHEMA = cv.NAMEABLE_SCHEMA.extend(cv.MQTT_COMPONENT_SCHEMA).extend(
cv.Optional(CONF_ACCURACY_DECIMALS): validate_accuracy_decimals, cv.Optional(CONF_ACCURACY_DECIMALS): validate_accuracy_decimals,
cv.Optional(CONF_DEVICE_CLASS): validate_device_class, cv.Optional(CONF_DEVICE_CLASS): validate_device_class,
cv.Optional(CONF_STATE_CLASS): validate_state_class, cv.Optional(CONF_STATE_CLASS): validate_state_class,
cv.Optional(CONF_LAST_RESET_TYPE): validate_last_reset_type, cv.Optional("last_reset_type"): cv.invalid(
"last_reset_type has been removed since 2021.9.0. state_class: total_increasing should be used for total values."
),
cv.Optional(CONF_FORCE_UPDATE, default=False): cv.boolean, cv.Optional(CONF_FORCE_UPDATE, default=False): cv.boolean,
cv.Optional(CONF_EXPIRE_AFTER): cv.All( cv.Optional(CONF_EXPIRE_AFTER): cv.All(
cv.requires_component("mqtt"), cv.requires_component("mqtt"),
@ -220,7 +209,6 @@ def sensor_schema(
accuracy_decimals: int = _UNDEF, accuracy_decimals: int = _UNDEF,
device_class: str = _UNDEF, device_class: str = _UNDEF,
state_class: str = _UNDEF, state_class: str = _UNDEF,
last_reset_type: str = _UNDEF,
) -> cv.Schema: ) -> cv.Schema:
schema = SENSOR_SCHEMA schema = SENSOR_SCHEMA
if unit_of_measurement is not _UNDEF: if unit_of_measurement is not _UNDEF:
@ -253,14 +241,6 @@ def sensor_schema(
schema = schema.extend( schema = schema.extend(
{cv.Optional(CONF_STATE_CLASS, default=state_class): validate_state_class} {cv.Optional(CONF_STATE_CLASS, default=state_class): validate_state_class}
) )
if last_reset_type is not _UNDEF:
schema = schema.extend(
{
cv.Optional(
CONF_LAST_RESET_TYPE, default=last_reset_type
): validate_last_reset_type
}
)
return schema return schema
@ -511,8 +491,6 @@ async def setup_sensor_core_(var, config):
cg.add(var.set_icon(config[CONF_ICON])) cg.add(var.set_icon(config[CONF_ICON]))
if CONF_ACCURACY_DECIMALS in config: if CONF_ACCURACY_DECIMALS in config:
cg.add(var.set_accuracy_decimals(config[CONF_ACCURACY_DECIMALS])) cg.add(var.set_accuracy_decimals(config[CONF_ACCURACY_DECIMALS]))
if CONF_LAST_RESET_TYPE in config:
cg.add(var.set_last_reset_type(config[CONF_LAST_RESET_TYPE]))
cg.add(var.set_force_update(config[CONF_FORCE_UPDATE])) cg.add(var.set_force_update(config[CONF_FORCE_UPDATE]))
if config.get(CONF_FILTERS): # must exist and not be empty if config.get(CONF_FILTERS): # must exist and not be empty
filters = await build_filters(config[CONF_FILTERS]) filters = await build_filters(config[CONF_FILTERS])

View file

@ -18,18 +18,6 @@ const char *state_class_to_string(StateClass state_class) {
} }
} }
const char *last_reset_type_to_string(LastResetType last_reset_type) {
switch (last_reset_type) {
case LAST_RESET_TYPE_NEVER:
return "never";
case LAST_RESET_TYPE_AUTO:
return "auto";
case LAST_RESET_TYPE_NONE:
default:
return "";
}
}
void Sensor::publish_state(float state) { void Sensor::publish_state(float state) {
this->raw_state = state; this->raw_state = state;
this->raw_callback_.call(state); this->raw_callback_.call(state);
@ -80,7 +68,6 @@ void Sensor::set_state_class(const std::string &state_class) {
ESP_LOGW(TAG, "'%s' - Unrecognized state class %s", this->get_name().c_str(), state_class.c_str()); ESP_LOGW(TAG, "'%s' - Unrecognized state class %s", this->get_name().c_str(), state_class.c_str());
} }
} }
void Sensor::set_last_reset_type(LastResetType last_reset_type) { this->last_reset_type = last_reset_type; }
std::string Sensor::get_unit_of_measurement() { std::string Sensor::get_unit_of_measurement() {
if (this->unit_of_measurement_.has_value()) if (this->unit_of_measurement_.has_value())
return *this->unit_of_measurement_; return *this->unit_of_measurement_;

View file

@ -14,10 +14,6 @@ namespace sensor {
ESP_LOGCONFIG(TAG, "%s Device Class: '%s'", prefix, (obj)->get_device_class().c_str()); \ ESP_LOGCONFIG(TAG, "%s Device Class: '%s'", prefix, (obj)->get_device_class().c_str()); \
} \ } \
ESP_LOGCONFIG(TAG, "%s State Class: '%s'", prefix, state_class_to_string((obj)->state_class)); \ ESP_LOGCONFIG(TAG, "%s State Class: '%s'", prefix, state_class_to_string((obj)->state_class)); \
if ((obj)->state_class == sensor::STATE_CLASS_MEASUREMENT && \
(obj)->last_reset_type != sensor::LAST_RESET_TYPE_NONE) { \
ESP_LOGCONFIG(TAG, "%s Last Reset Type: '%s'", prefix, last_reset_type_to_string((obj)->last_reset_type)); \
} \
ESP_LOGCONFIG(TAG, "%s Unit of Measurement: '%s'", prefix, (obj)->get_unit_of_measurement().c_str()); \ ESP_LOGCONFIG(TAG, "%s Unit of Measurement: '%s'", prefix, (obj)->get_unit_of_measurement().c_str()); \
ESP_LOGCONFIG(TAG, "%s Accuracy Decimals: %d", prefix, (obj)->get_accuracy_decimals()); \ ESP_LOGCONFIG(TAG, "%s Accuracy Decimals: %d", prefix, (obj)->get_accuracy_decimals()); \
if (!(obj)->get_icon().empty()) { \ if (!(obj)->get_icon().empty()) { \
@ -42,20 +38,6 @@ enum StateClass : uint8_t {
const char *state_class_to_string(StateClass state_class); const char *state_class_to_string(StateClass state_class);
/**
* Sensor last reset types
*/
enum LastResetType : uint8_t {
/// This sensor does not support resetting. ie, it is not accumulative
LAST_RESET_TYPE_NONE = 0,
/// This sensor is expected to never reset its value
LAST_RESET_TYPE_NEVER = 1,
/// This sensor may reset and Home Assistant will watch for this
LAST_RESET_TYPE_AUTO = 2,
};
const char *last_reset_type_to_string(LastResetType last_reset_type);
/** Base-class for all sensors. /** Base-class for all sensors.
* *
* A sensor has unit of measurement and can use publish_state to send out a new value with the specified accuracy. * A sensor has unit of measurement and can use publish_state to send out a new value with the specified accuracy.
@ -174,12 +156,6 @@ class Sensor : public Nameable {
*/ */
virtual std::string device_class(); virtual std::string device_class();
// The Last reset type of this sensor
LastResetType last_reset_type{LAST_RESET_TYPE_NONE};
/// Manually set the Home Assistant last reset type for this sensor.
void set_last_reset_type(LastResetType last_reset_type);
/** A unique ID for this sensor, empty for no unique id. See unique ID requirements: /** A unique ID for this sensor, empty for no unique id. See unique ID requirements:
* https://developers.home-assistant.io/docs/en/entity_registry_index.html#unique-id-requirements * https://developers.home-assistant.io/docs/en/entity_registry_index.html#unique-id-requirements
* *

View file

@ -5,9 +5,8 @@ from esphome.const import (
CONF_ID, CONF_ID,
CONF_TIME_ID, CONF_TIME_ID,
DEVICE_CLASS_ENERGY, DEVICE_CLASS_ENERGY,
LAST_RESET_TYPE_AUTO,
STATE_CLASS_MEASUREMENT,
CONF_METHOD, CONF_METHOD,
STATE_CLASS_TOTAL_INCREASING,
) )
DEPENDENCIES = ["time"] DEPENDENCIES = ["time"]
@ -28,8 +27,7 @@ TotalDailyEnergy = total_daily_energy_ns.class_(
CONFIG_SCHEMA = ( CONFIG_SCHEMA = (
sensor.sensor_schema( sensor.sensor_schema(
device_class=DEVICE_CLASS_ENERGY, device_class=DEVICE_CLASS_ENERGY,
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_TOTAL_INCREASING,
last_reset_type=LAST_RESET_TYPE_AUTO,
) )
.extend( .extend(
{ {

View file

@ -323,7 +323,6 @@ CONF_KEY = "key"
CONF_LAMBDA = "lambda" CONF_LAMBDA = "lambda"
CONF_LAST_CONFIDENCE = "last_confidence" CONF_LAST_CONFIDENCE = "last_confidence"
CONF_LAST_FINGER_ID = "last_finger_id" CONF_LAST_FINGER_ID = "last_finger_id"
CONF_LAST_RESET_TYPE = "last_reset_type"
CONF_LATITUDE = "latitude" CONF_LATITUDE = "latitude"
CONF_LENGTH = "length" CONF_LENGTH = "length"
CONF_LEVEL = "level" CONF_LEVEL = "level"
@ -857,10 +856,3 @@ STATE_CLASS_MEASUREMENT = "measurement"
# The state represents a total that only increases, a decrease is considered a reset. # The state represents a total that only increases, a decrease is considered a reset.
STATE_CLASS_TOTAL_INCREASING = "total_increasing" STATE_CLASS_TOTAL_INCREASING = "total_increasing"
# This sensor does not support resetting. ie, it is not accumulative
LAST_RESET_TYPE_NONE = ""
# This sensor is expected to never reset its value
LAST_RESET_TYPE_NEVER = "never"
# This sensor may reset and Home Assistant will watch for this
LAST_RESET_TYPE_AUTO = "auto"

View file

@ -778,9 +778,9 @@ def build_service_message_type(mt):
hout += f"bool {func}(const {mt.name} &msg);\n" hout += f"bool {func}(const {mt.name} &msg);\n"
cout += f"bool {class_name}::{func}(const {mt.name} &msg) {{\n" cout += f"bool {class_name}::{func}(const {mt.name} &msg) {{\n"
if log: if log:
cout += f'#ifdef HAS_PROTO_MESSAGE_DUMP\n' cout += f"#ifdef HAS_PROTO_MESSAGE_DUMP\n"
cout += f' ESP_LOGVV(TAG, "{func}: %s", msg.dump().c_str());\n' cout += f' ESP_LOGVV(TAG, "{func}: %s", msg.dump().c_str());\n'
cout += f'#endif\n' cout += f"#endif\n"
# cout += f' this->set_nodelay({str(nodelay).lower()});\n' # cout += f' this->set_nodelay({str(nodelay).lower()});\n'
cout += f" return this->send_message_<{mt.name}>(msg, {id_});\n" cout += f" return this->send_message_<{mt.name}>(msg, {id_});\n"
cout += f"}}\n" cout += f"}}\n"
@ -794,9 +794,9 @@ def build_service_message_type(mt):
case += f"{mt.name} msg;\n" case += f"{mt.name} msg;\n"
case += f"msg.decode(msg_data, msg_size);\n" case += f"msg.decode(msg_data, msg_size);\n"
if log: if log:
case += f'#ifdef HAS_PROTO_MESSAGE_DUMP\n' case += f"#ifdef HAS_PROTO_MESSAGE_DUMP\n"
case += f'ESP_LOGVV(TAG, "{func}: %s", msg.dump().c_str());\n' case += f'ESP_LOGVV(TAG, "{func}: %s", msg.dump().c_str());\n'
case += f'#endif\n' case += f"#endif\n"
case += f"this->{func}(msg);\n" case += f"this->{func}(msg);\n"
if ifdef is not None: if ifdef is not None:
case += f"#endif\n" case += f"#endif\n"