diff --git a/homeassistant/components/dsmr_reader/definitions.py b/homeassistant/components/dsmr_reader/definitions.py index 5fda67e65a3..309f0d297ec 100644 --- a/homeassistant/components/dsmr_reader/definitions.py +++ b/homeassistant/components/dsmr_reader/definitions.py @@ -2,8 +2,14 @@ from homeassistant.const import ( CURRENCY_EURO, + DEVICE_CLASS_CURRENT, + DEVICE_CLASS_ENERGY, + DEVICE_CLASS_POWER, + DEVICE_CLASS_TIMESTAMP, + DEVICE_CLASS_VOLTAGE, ELECTRICAL_CURRENT_AMPERE, ENERGY_KILO_WATT_HOUR, + POWER_KILO_WATT, VOLT, VOLUME_CUBIC_METERS, ) @@ -26,243 +32,297 @@ def tariff_transform(value): DEFINITIONS = { "dsmr/reading/electricity_delivered_1": { "name": "Low tariff usage", - "icon": "mdi:flash", + "enable_default": True, + "device_class": DEVICE_CLASS_ENERGY, "unit": ENERGY_KILO_WATT_HOUR, }, "dsmr/reading/electricity_returned_1": { "name": "Low tariff returned", - "icon": "mdi:flash-outline", + "enable_default": True, + "device_class": DEVICE_CLASS_ENERGY, "unit": ENERGY_KILO_WATT_HOUR, }, "dsmr/reading/electricity_delivered_2": { "name": "High tariff usage", - "icon": "mdi:flash", + "enable_default": True, + "device_class": DEVICE_CLASS_ENERGY, "unit": ENERGY_KILO_WATT_HOUR, }, "dsmr/reading/electricity_returned_2": { "name": "High tariff returned", - "icon": "mdi:flash-outline", + "enable_default": True, + "device_class": DEVICE_CLASS_ENERGY, "unit": ENERGY_KILO_WATT_HOUR, }, "dsmr/reading/electricity_currently_delivered": { "name": "Current power usage", - "icon": "mdi:flash", - "unit": "kW", + "enable_default": True, + "device_class": DEVICE_CLASS_POWER, + "unit": POWER_KILO_WATT, }, "dsmr/reading/electricity_currently_returned": { "name": "Current power return", - "icon": "mdi:flash-outline", - "unit": "kW", + "enable_default": True, + "device_class": DEVICE_CLASS_POWER, + "unit": POWER_KILO_WATT, }, "dsmr/reading/phase_currently_delivered_l1": { "name": "Current power usage L1", - "icon": "mdi:flash", - "unit": "kW", + "enable_default": True, + "device_class": DEVICE_CLASS_POWER, + "unit": POWER_KILO_WATT, }, "dsmr/reading/phase_currently_delivered_l2": { "name": "Current power usage L2", - "icon": "mdi:flash", - "unit": "kW", + "enable_default": True, + "device_class": DEVICE_CLASS_POWER, + "unit": POWER_KILO_WATT, }, "dsmr/reading/phase_currently_delivered_l3": { "name": "Current power usage L3", - "icon": "mdi:flash", - "unit": "kW", + "enable_default": True, + "device_class": DEVICE_CLASS_POWER, + "unit": POWER_KILO_WATT, }, "dsmr/reading/phase_currently_returned_l1": { "name": "Current power return L1", - "icon": "mdi:flash-outline", - "unit": "kW", + "enable_default": True, + "device_class": DEVICE_CLASS_POWER, + "unit": POWER_KILO_WATT, }, "dsmr/reading/phase_currently_returned_l2": { "name": "Current power return L2", - "icon": "mdi:flash-outline", - "unit": "kW", + "enable_default": True, + "device_class": DEVICE_CLASS_POWER, + "unit": POWER_KILO_WATT, }, "dsmr/reading/phase_currently_returned_l3": { "name": "Current power return L3", - "icon": "mdi:flash-outline", - "unit": "kW", + "enable_default": True, + "device_class": DEVICE_CLASS_POWER, + "unit": POWER_KILO_WATT, }, "dsmr/reading/extra_device_delivered": { "name": "Gas meter usage", + "enable_default": True, "icon": "mdi:fire", "unit": VOLUME_CUBIC_METERS, }, "dsmr/reading/phase_voltage_l1": { "name": "Current voltage L1", - "icon": "mdi:flash", + "enable_default": True, + "device_class": DEVICE_CLASS_VOLTAGE, "unit": VOLT, }, "dsmr/reading/phase_voltage_l2": { "name": "Current voltage L2", - "icon": "mdi:flash", + "enable_default": True, + "device_class": DEVICE_CLASS_VOLTAGE, "unit": VOLT, }, "dsmr/reading/phase_voltage_l3": { "name": "Current voltage L3", - "icon": "mdi:flash", + "enable_default": True, + "device_class": DEVICE_CLASS_VOLTAGE, "unit": VOLT, }, "dsmr/reading/phase_power_current_l1": { "name": "Phase power current L1", - "icon": "mdi:flash", + "enable_default": True, + "device_class": DEVICE_CLASS_CURRENT, "unit": ELECTRICAL_CURRENT_AMPERE, }, "dsmr/reading/phase_power_current_l2": { "name": "Phase power current L2", - "icon": "mdi:flash", + "enable_default": True, + "device_class": DEVICE_CLASS_CURRENT, "unit": ELECTRICAL_CURRENT_AMPERE, }, "dsmr/reading/phase_power_current_l3": { "name": "Phase power current L3", - "icon": "mdi:flash", + "enable_default": True, + "device_class": DEVICE_CLASS_CURRENT, "unit": ELECTRICAL_CURRENT_AMPERE, }, + "dsmr/reading/timestamp": { + "name": "Telegram timestamp", + "enable_default": False, + "device_class": DEVICE_CLASS_TIMESTAMP, + }, "dsmr/consumption/gas/delivered": { "name": "Gas usage", + "enable_default": True, "icon": "mdi:fire", "unit": VOLUME_CUBIC_METERS, }, "dsmr/consumption/gas/currently_delivered": { "name": "Current gas usage", + "enable_default": True, "icon": "mdi:fire", "unit": VOLUME_CUBIC_METERS, }, "dsmr/consumption/gas/read_at": { "name": "Gas meter read", - "icon": "mdi:clock", - "unit": "", + "enable_default": True, + "device_class": DEVICE_CLASS_TIMESTAMP, }, "dsmr/day-consumption/electricity1": { "name": "Low tariff usage", - "icon": "mdi:counter", + "enable_default": True, + "device_class": DEVICE_CLASS_ENERGY, "unit": ENERGY_KILO_WATT_HOUR, }, "dsmr/day-consumption/electricity2": { "name": "High tariff usage", - "icon": "mdi:counter", + "enable_default": True, + "device_class": DEVICE_CLASS_ENERGY, "unit": ENERGY_KILO_WATT_HOUR, }, "dsmr/day-consumption/electricity1_returned": { "name": "Low tariff return", - "icon": "mdi:counter", + "enable_default": True, + "device_class": DEVICE_CLASS_ENERGY, "unit": ENERGY_KILO_WATT_HOUR, }, "dsmr/day-consumption/electricity2_returned": { "name": "High tariff return", - "icon": "mdi:counter", + "enable_default": True, + "device_class": DEVICE_CLASS_ENERGY, "unit": ENERGY_KILO_WATT_HOUR, }, "dsmr/day-consumption/electricity_merged": { "name": "Power usage total", - "icon": "mdi:counter", + "enable_default": True, + "device_class": DEVICE_CLASS_ENERGY, "unit": ENERGY_KILO_WATT_HOUR, }, "dsmr/day-consumption/electricity_returned_merged": { "name": "Power return total", - "icon": "mdi:counter", + "enable_default": True, + "device_class": DEVICE_CLASS_ENERGY, "unit": ENERGY_KILO_WATT_HOUR, }, "dsmr/day-consumption/electricity1_cost": { "name": "Low tariff cost", + "enable_default": True, "icon": "mdi:currency-eur", "unit": CURRENCY_EURO, }, "dsmr/day-consumption/electricity2_cost": { "name": "High tariff cost", + "enable_default": True, "icon": "mdi:currency-eur", "unit": CURRENCY_EURO, }, "dsmr/day-consumption/electricity_cost_merged": { "name": "Power total cost", + "enable_default": True, "icon": "mdi:currency-eur", "unit": CURRENCY_EURO, }, "dsmr/day-consumption/gas": { "name": "Gas usage", + "enable_default": True, "icon": "mdi:counter", "unit": VOLUME_CUBIC_METERS, }, "dsmr/day-consumption/gas_cost": { "name": "Gas cost", + "enable_default": True, "icon": "mdi:currency-eur", "unit": CURRENCY_EURO, }, "dsmr/day-consumption/total_cost": { "name": "Total cost", + "enable_default": True, "icon": "mdi:currency-eur", "unit": CURRENCY_EURO, }, "dsmr/day-consumption/energy_supplier_price_electricity_delivered_1": { "name": "Low tariff delivered price", + "enable_default": True, "icon": "mdi:currency-eur", "unit": CURRENCY_EURO, }, "dsmr/day-consumption/energy_supplier_price_electricity_delivered_2": { "name": "High tariff delivered price", + "enable_default": True, "icon": "mdi:currency-eur", "unit": CURRENCY_EURO, }, "dsmr/day-consumption/energy_supplier_price_electricity_returned_1": { "name": "Low tariff returned price", + "enable_default": True, "icon": "mdi:currency-eur", "unit": CURRENCY_EURO, }, "dsmr/day-consumption/energy_supplier_price_electricity_returned_2": { "name": "High tariff returned price", + "enable_default": True, "icon": "mdi:currency-eur", "unit": CURRENCY_EURO, }, "dsmr/day-consumption/energy_supplier_price_gas": { "name": "Gas price", + "enable_default": True, "icon": "mdi:currency-eur", "unit": CURRENCY_EURO, }, "dsmr/meter-stats/dsmr_version": { "name": "DSMR version", + "enable_default": True, "icon": "mdi:alert-circle", "transform": dsmr_transform, }, "dsmr/meter-stats/electricity_tariff": { "name": "Electricity tariff", + "enable_default": True, "icon": "mdi:flash", "transform": tariff_transform, }, "dsmr/meter-stats/power_failure_count": { "name": "Power failure count", + "enable_default": True, "icon": "mdi:flash", }, "dsmr/meter-stats/long_power_failure_count": { "name": "Long power failure count", + "enable_default": True, "icon": "mdi:flash", }, "dsmr/meter-stats/voltage_sag_count_l1": { "name": "Voltage sag L1", + "enable_default": True, "icon": "mdi:flash", }, "dsmr/meter-stats/voltage_sag_count_l2": { "name": "Voltage sag L2", + "enable_default": True, "icon": "mdi:flash", }, "dsmr/meter-stats/voltage_sag_count_l3": { "name": "Voltage sag L3", + "enable_default": True, "icon": "mdi:flash", }, "dsmr/meter-stats/voltage_swell_count_l1": { "name": "Voltage swell L1", + "enable_default": True, "icon": "mdi:flash", }, "dsmr/meter-stats/voltage_swell_count_l2": { "name": "Voltage swell L2", + "enable_default": True, "icon": "mdi:flash", }, "dsmr/meter-stats/voltage_swell_count_l3": { "name": "Voltage swell L3", + "enable_default": True, "icon": "mdi:flash", }, "dsmr/meter-stats/rejected_telegrams": { "name": "Rejected telegrams", + "enable_default": True, "icon": "mdi:flash", }, } diff --git a/homeassistant/components/dsmr_reader/sensor.py b/homeassistant/components/dsmr_reader/sensor.py index 341451522d4..14234b49dbe 100644 --- a/homeassistant/components/dsmr_reader/sensor.py +++ b/homeassistant/components/dsmr_reader/sensor.py @@ -31,6 +31,8 @@ class DSMRSensor(Entity): self._topic = topic self._name = self._definition.get("name", topic.split("/")[-1]) + self._device_class = self._definition.get("device_class") + self._enable_default = self._definition.get("enable_default") self._unit_of_measurement = self._definition.get("unit") self._icon = self._definition.get("icon") self._transform = self._definition.get("transform") @@ -67,11 +69,21 @@ class DSMRSensor(Entity): """Return the current state of the entity.""" return self._state + @property + def device_class(self): + """Return the device_class of this sensor.""" + return self._device_class + @property def unit_of_measurement(self): """Return the unit_of_measurement of this sensor.""" return self._unit_of_measurement + @property + def entity_registry_enabled_default(self) -> bool: + """Return if the entity should be enabled when first added to the entity registry.""" + return self._enable_default + @property def icon(self): """Return the icon of this sensor."""