Add state classes to Toon (#50978)

This commit is contained in:
Franck Nijhof 2021-05-24 20:15:41 +02:00 committed by GitHub
parent 8721675218
commit 394e044c66
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 76 additions and 12 deletions

View File

@ -1,14 +1,17 @@
"""Constants for the Toon integration.""" """Constants for the Toon integration."""
from datetime import timedelta from datetime import datetime, timedelta
from homeassistant.components.binary_sensor import ( from homeassistant.components.binary_sensor import (
DEVICE_CLASS_CONNECTIVITY, DEVICE_CLASS_CONNECTIVITY,
DEVICE_CLASS_PROBLEM, DEVICE_CLASS_PROBLEM,
) )
from homeassistant.components.sensor import ( from homeassistant.components.sensor import (
ATTR_LAST_RESET,
ATTR_STATE_CLASS,
DEVICE_CLASS_ENERGY, DEVICE_CLASS_ENERGY,
DEVICE_CLASS_POWER, DEVICE_CLASS_POWER,
DEVICE_CLASS_TEMPERATURE, DEVICE_CLASS_TEMPERATURE,
STATE_CLASS_MEASUREMENT,
) )
from homeassistant.const import ( from homeassistant.const import (
ATTR_DEVICE_CLASS, ATTR_DEVICE_CLASS,
@ -127,6 +130,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: DEVICE_CLASS_TEMPERATURE, ATTR_DEVICE_CLASS: DEVICE_CLASS_TEMPERATURE,
ATTR_ICON: None, ATTR_ICON: None,
ATTR_DEFAULT_ENABLED: False, ATTR_DEFAULT_ENABLED: False,
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
ATTR_LAST_RESET: None,
}, },
"gas_average": { "gas_average": {
ATTR_NAME: "Average Gas Usage", ATTR_NAME: "Average Gas Usage",
@ -136,6 +141,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:gas-cylinder", ATTR_ICON: "mdi:gas-cylinder",
ATTR_DEFAULT_ENABLED: True, ATTR_DEFAULT_ENABLED: True,
ATTR_STATE_CLASS: None,
ATTR_LAST_RESET: None,
}, },
"gas_average_daily": { "gas_average_daily": {
ATTR_NAME: "Average Daily Gas Usage", ATTR_NAME: "Average Daily Gas Usage",
@ -145,6 +152,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:gas-cylinder", ATTR_ICON: "mdi:gas-cylinder",
ATTR_DEFAULT_ENABLED: False, ATTR_DEFAULT_ENABLED: False,
ATTR_STATE_CLASS: None,
ATTR_LAST_RESET: None,
}, },
"gas_daily_usage": { "gas_daily_usage": {
ATTR_NAME: "Gas Usage Today", ATTR_NAME: "Gas Usage Today",
@ -154,6 +163,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:gas-cylinder", ATTR_ICON: "mdi:gas-cylinder",
ATTR_DEFAULT_ENABLED: True, ATTR_DEFAULT_ENABLED: True,
ATTR_STATE_CLASS: None,
ATTR_LAST_RESET: None,
}, },
"gas_daily_cost": { "gas_daily_cost": {
ATTR_NAME: "Gas Cost Today", ATTR_NAME: "Gas Cost Today",
@ -163,6 +174,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:gas-cylinder", ATTR_ICON: "mdi:gas-cylinder",
ATTR_DEFAULT_ENABLED: True, ATTR_DEFAULT_ENABLED: True,
ATTR_STATE_CLASS: None,
ATTR_LAST_RESET: None,
}, },
"gas_meter_reading": { "gas_meter_reading": {
ATTR_NAME: "Gas Meter", ATTR_NAME: "Gas Meter",
@ -172,6 +185,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:gas-cylinder", ATTR_ICON: "mdi:gas-cylinder",
ATTR_DEFAULT_ENABLED: False, ATTR_DEFAULT_ENABLED: False,
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
ATTR_LAST_RESET: datetime.fromtimestamp(0),
}, },
"gas_value": { "gas_value": {
ATTR_NAME: "Current Gas Usage", ATTR_NAME: "Current Gas Usage",
@ -181,6 +196,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:gas-cylinder", ATTR_ICON: "mdi:gas-cylinder",
ATTR_DEFAULT_ENABLED: True, ATTR_DEFAULT_ENABLED: True,
ATTR_STATE_CLASS: None,
ATTR_LAST_RESET: None,
}, },
"power_average": { "power_average": {
ATTR_NAME: "Average Power Usage", ATTR_NAME: "Average Power Usage",
@ -190,6 +207,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER, ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER,
ATTR_ICON: None, ATTR_ICON: None,
ATTR_DEFAULT_ENABLED: False, ATTR_DEFAULT_ENABLED: False,
ATTR_STATE_CLASS: None,
ATTR_LAST_RESET: None,
}, },
"power_average_daily": { "power_average_daily": {
ATTR_NAME: "Average Daily Energy Usage", ATTR_NAME: "Average Daily Energy Usage",
@ -199,6 +218,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY,
ATTR_ICON: None, ATTR_ICON: None,
ATTR_DEFAULT_ENABLED: False, ATTR_DEFAULT_ENABLED: False,
ATTR_STATE_CLASS: None,
ATTR_LAST_RESET: None,
}, },
"power_daily_cost": { "power_daily_cost": {
ATTR_NAME: "Energy Cost Today", ATTR_NAME: "Energy Cost Today",
@ -208,6 +229,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:power-plug", ATTR_ICON: "mdi:power-plug",
ATTR_DEFAULT_ENABLED: True, ATTR_DEFAULT_ENABLED: True,
ATTR_STATE_CLASS: None,
ATTR_LAST_RESET: None,
}, },
"power_daily_value": { "power_daily_value": {
ATTR_NAME: "Energy Usage Today", ATTR_NAME: "Energy Usage Today",
@ -217,6 +240,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY,
ATTR_ICON: None, ATTR_ICON: None,
ATTR_DEFAULT_ENABLED: True, ATTR_DEFAULT_ENABLED: True,
ATTR_STATE_CLASS: None,
ATTR_LAST_RESET: None,
}, },
"power_meter_reading": { "power_meter_reading": {
ATTR_NAME: "Electricity Meter Feed IN Tariff 1", ATTR_NAME: "Electricity Meter Feed IN Tariff 1",
@ -226,6 +251,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY,
ATTR_ICON: None, ATTR_ICON: None,
ATTR_DEFAULT_ENABLED: False, ATTR_DEFAULT_ENABLED: False,
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
ATTR_LAST_RESET: datetime.fromtimestamp(0),
}, },
"power_meter_reading_low": { "power_meter_reading_low": {
ATTR_NAME: "Electricity Meter Feed IN Tariff 2", ATTR_NAME: "Electricity Meter Feed IN Tariff 2",
@ -235,6 +262,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY,
ATTR_ICON: None, ATTR_ICON: None,
ATTR_DEFAULT_ENABLED: False, ATTR_DEFAULT_ENABLED: False,
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
ATTR_LAST_RESET: datetime.fromtimestamp(0),
}, },
"power_value": { "power_value": {
ATTR_NAME: "Current Power Usage", ATTR_NAME: "Current Power Usage",
@ -244,6 +273,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER, ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER,
ATTR_ICON: None, ATTR_ICON: None,
ATTR_DEFAULT_ENABLED: True, ATTR_DEFAULT_ENABLED: True,
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
ATTR_LAST_RESET: None,
}, },
"solar_meter_reading_produced": { "solar_meter_reading_produced": {
ATTR_NAME: "Electricity Meter Feed OUT Tariff 1", ATTR_NAME: "Electricity Meter Feed OUT Tariff 1",
@ -253,6 +284,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY,
ATTR_ICON: None, ATTR_ICON: None,
ATTR_DEFAULT_ENABLED: False, ATTR_DEFAULT_ENABLED: False,
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
ATTR_LAST_RESET: datetime.fromtimestamp(0),
}, },
"solar_meter_reading_low_produced": { "solar_meter_reading_low_produced": {
ATTR_NAME: "Electricity Meter Feed OUT Tariff 2", ATTR_NAME: "Electricity Meter Feed OUT Tariff 2",
@ -262,6 +295,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY,
ATTR_ICON: None, ATTR_ICON: None,
ATTR_DEFAULT_ENABLED: False, ATTR_DEFAULT_ENABLED: False,
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
ATTR_LAST_RESET: datetime.fromtimestamp(0),
}, },
"solar_value": { "solar_value": {
ATTR_NAME: "Current Solar Power Production", ATTR_NAME: "Current Solar Power Production",
@ -271,6 +306,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER, ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER,
ATTR_ICON: None, ATTR_ICON: None,
ATTR_DEFAULT_ENABLED: True, ATTR_DEFAULT_ENABLED: True,
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
ATTR_LAST_RESET: None,
}, },
"solar_maximum": { "solar_maximum": {
ATTR_NAME: "Max Solar Power Production Today", ATTR_NAME: "Max Solar Power Production Today",
@ -280,6 +317,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER, ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER,
ATTR_ICON: None, ATTR_ICON: None,
ATTR_DEFAULT_ENABLED: True, ATTR_DEFAULT_ENABLED: True,
ATTR_STATE_CLASS: None,
ATTR_LAST_RESET: None,
}, },
"solar_produced": { "solar_produced": {
ATTR_NAME: "Solar Power Production to Grid", ATTR_NAME: "Solar Power Production to Grid",
@ -289,6 +328,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER, ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER,
ATTR_ICON: None, ATTR_ICON: None,
ATTR_DEFAULT_ENABLED: True, ATTR_DEFAULT_ENABLED: True,
ATTR_STATE_CLASS: ATTR_MEASUREMENT,
ATTR_LAST_RESET: None,
}, },
"power_usage_day_produced_solar": { "power_usage_day_produced_solar": {
ATTR_NAME: "Solar Energy Produced Today", ATTR_NAME: "Solar Energy Produced Today",
@ -298,6 +339,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY,
ATTR_ICON: None, ATTR_ICON: None,
ATTR_DEFAULT_ENABLED: True, ATTR_DEFAULT_ENABLED: True,
ATTR_STATE_CLASS: None,
ATTR_LAST_RESET: None,
}, },
"power_usage_day_to_grid_usage": { "power_usage_day_to_grid_usage": {
ATTR_NAME: "Energy Produced To Grid Today", ATTR_NAME: "Energy Produced To Grid Today",
@ -307,6 +350,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY,
ATTR_ICON: None, ATTR_ICON: None,
ATTR_DEFAULT_ENABLED: False, ATTR_DEFAULT_ENABLED: False,
ATTR_STATE_CLASS: None,
ATTR_LAST_RESET: None,
}, },
"power_usage_day_from_grid_usage": { "power_usage_day_from_grid_usage": {
ATTR_NAME: "Energy Usage From Grid Today", ATTR_NAME: "Energy Usage From Grid Today",
@ -316,6 +361,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY,
ATTR_ICON: None, ATTR_ICON: None,
ATTR_DEFAULT_ENABLED: False, ATTR_DEFAULT_ENABLED: False,
ATTR_STATE_CLASS: None,
ATTR_LAST_RESET: None,
}, },
"solar_average_produced": { "solar_average_produced": {
ATTR_NAME: "Average Solar Power Production to Grid", ATTR_NAME: "Average Solar Power Production to Grid",
@ -325,6 +372,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER, ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER,
ATTR_ICON: None, ATTR_ICON: None,
ATTR_DEFAULT_ENABLED: False, ATTR_DEFAULT_ENABLED: False,
ATTR_STATE_CLASS: None,
ATTR_LAST_RESET: None,
}, },
"thermostat_info_current_modulation_level": { "thermostat_info_current_modulation_level": {
ATTR_NAME: "Boiler Modulation Level", ATTR_NAME: "Boiler Modulation Level",
@ -334,6 +383,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:percent", ATTR_ICON: "mdi:percent",
ATTR_DEFAULT_ENABLED: False, ATTR_DEFAULT_ENABLED: False,
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
ATTR_LAST_RESET: None,
}, },
"power_usage_current_covered_by_solar": { "power_usage_current_covered_by_solar": {
ATTR_NAME: "Current Power Usage Covered By Solar", ATTR_NAME: "Current Power Usage Covered By Solar",
@ -343,6 +394,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:solar-power", ATTR_ICON: "mdi:solar-power",
ATTR_DEFAULT_ENABLED: True, ATTR_DEFAULT_ENABLED: True,
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
ATTR_LAST_RESET: None,
}, },
"water_average": { "water_average": {
ATTR_NAME: "Average Water Usage", ATTR_NAME: "Average Water Usage",
@ -352,6 +405,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:water", ATTR_ICON: "mdi:water",
ATTR_DEFAULT_ENABLED: False, ATTR_DEFAULT_ENABLED: False,
ATTR_STATE_CLASS: None,
ATTR_LAST_RESET: None,
}, },
"water_average_daily": { "water_average_daily": {
ATTR_NAME: "Average Daily Water Usage", ATTR_NAME: "Average Daily Water Usage",
@ -361,6 +416,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:water", ATTR_ICON: "mdi:water",
ATTR_DEFAULT_ENABLED: False, ATTR_DEFAULT_ENABLED: False,
ATTR_STATE_CLASS: None,
ATTR_LAST_RESET: None,
}, },
"water_daily_usage": { "water_daily_usage": {
ATTR_NAME: "Water Usage Today", ATTR_NAME: "Water Usage Today",
@ -370,6 +427,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:water", ATTR_ICON: "mdi:water",
ATTR_DEFAULT_ENABLED: False, ATTR_DEFAULT_ENABLED: False,
ATTR_STATE_CLASS: None,
ATTR_LAST_RESET: None,
}, },
"water_meter_reading": { "water_meter_reading": {
ATTR_NAME: "Water Meter", ATTR_NAME: "Water Meter",
@ -379,6 +438,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:water", ATTR_ICON: "mdi:water",
ATTR_DEFAULT_ENABLED: False, ATTR_DEFAULT_ENABLED: False,
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
ATTR_LAST_RESET: datetime.fromtimestamp(0),
}, },
"water_value": { "water_value": {
ATTR_NAME: "Current Water Usage", ATTR_NAME: "Current Water Usage",
@ -388,6 +449,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:water-pump", ATTR_ICON: "mdi:water-pump",
ATTR_DEFAULT_ENABLED: False, ATTR_DEFAULT_ENABLED: False,
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
ATTR_LAST_RESET: None,
}, },
"water_daily_cost": { "water_daily_cost": {
ATTR_NAME: "Water Cost Today", ATTR_NAME: "Water Cost Today",
@ -397,6 +460,8 @@ SENSOR_ENTITIES = {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:water-pump", ATTR_ICON: "mdi:water-pump",
ATTR_DEFAULT_ENABLED: False, ATTR_DEFAULT_ENABLED: False,
ATTR_STATE_CLASS: None,
ATTR_LAST_RESET: None,
}, },
} }

View File

@ -1,7 +1,11 @@
"""Support for Toon sensors.""" """Support for Toon sensors."""
from __future__ import annotations from __future__ import annotations
from homeassistant.components.sensor import SensorEntity from homeassistant.components.sensor import (
ATTR_LAST_RESET,
ATTR_STATE_CLASS,
SensorEntity,
)
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
@ -124,6 +128,11 @@ class ToonSensor(ToonEntity, SensorEntity):
name=SENSOR_ENTITIES[key][ATTR_NAME], name=SENSOR_ENTITIES[key][ATTR_NAME],
) )
self._attr_last_reset = SENSOR_ENTITIES[key][ATTR_LAST_RESET]
self._attr_state_class = SENSOR_ENTITIES[key][ATTR_STATE_CLASS]
self._attr_unit_of_measurement = SENSOR_ENTITIES[key][ATTR_UNIT_OF_MEASUREMENT]
self._sttr_device_class = SENSOR_ENTITIES[key][ATTR_DEVICE_CLASS]
@property @property
def unique_id(self) -> str: def unique_id(self) -> str:
"""Return the unique ID for this sensor.""" """Return the unique ID for this sensor."""
@ -140,16 +149,6 @@ class ToonSensor(ToonEntity, SensorEntity):
) )
return getattr(section, SENSOR_ENTITIES[self.key][ATTR_MEASUREMENT]) return getattr(section, SENSOR_ENTITIES[self.key][ATTR_MEASUREMENT])
@property
def unit_of_measurement(self) -> str | None:
"""Return the unit this state is expressed in."""
return SENSOR_ENTITIES[self.key][ATTR_UNIT_OF_MEASUREMENT]
@property
def device_class(self) -> str | None:
"""Return the device class."""
return SENSOR_ENTITIES[self.key][ATTR_DEVICE_CLASS]
class ToonElectricityMeterDeviceSensor(ToonSensor, ToonElectricityMeterDeviceEntity): class ToonElectricityMeterDeviceSensor(ToonSensor, ToonElectricityMeterDeviceEntity):
"""Defines a Electricity Meter sensor.""" """Defines a Electricity Meter sensor."""