mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 19:27:45 +00:00
Fix plugwise longterm statistics (#58127)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
This commit is contained in:
parent
5a102d793e
commit
1aa7a8170c
@ -31,8 +31,8 @@ ZEROCONF_MAP = {
|
|||||||
|
|
||||||
# Sensor mapping
|
# Sensor mapping
|
||||||
SENSOR_MAP_DEVICE_CLASS = 2
|
SENSOR_MAP_DEVICE_CLASS = 2
|
||||||
SENSOR_MAP_ICON = 3
|
|
||||||
SENSOR_MAP_MODEL = 0
|
SENSOR_MAP_MODEL = 0
|
||||||
|
SENSOR_MAP_STATE_CLASS = 3
|
||||||
SENSOR_MAP_UOM = 1
|
SENSOR_MAP_UOM = 1
|
||||||
|
|
||||||
# Default directives
|
# Default directives
|
||||||
|
@ -2,14 +2,20 @@
|
|||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from homeassistant.components.sensor import SensorEntity
|
from homeassistant.components.sensor import (
|
||||||
from homeassistant.const import (
|
|
||||||
DEVICE_CLASS_BATTERY,
|
DEVICE_CLASS_BATTERY,
|
||||||
DEVICE_CLASS_ENERGY,
|
DEVICE_CLASS_ENERGY,
|
||||||
|
DEVICE_CLASS_GAS,
|
||||||
DEVICE_CLASS_ILLUMINANCE,
|
DEVICE_CLASS_ILLUMINANCE,
|
||||||
DEVICE_CLASS_POWER,
|
DEVICE_CLASS_POWER,
|
||||||
DEVICE_CLASS_PRESSURE,
|
DEVICE_CLASS_PRESSURE,
|
||||||
DEVICE_CLASS_TEMPERATURE,
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
|
STATE_CLASS_MEASUREMENT,
|
||||||
|
STATE_CLASS_TOTAL,
|
||||||
|
STATE_CLASS_TOTAL_INCREASING,
|
||||||
|
SensorEntity,
|
||||||
|
)
|
||||||
|
from homeassistant.const import (
|
||||||
ENERGY_KILO_WATT_HOUR,
|
ENERGY_KILO_WATT_HOUR,
|
||||||
ENERGY_WATT_HOUR,
|
ENERGY_WATT_HOUR,
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
@ -29,6 +35,7 @@ from .const import (
|
|||||||
IDLE_ICON,
|
IDLE_ICON,
|
||||||
SENSOR_MAP_DEVICE_CLASS,
|
SENSOR_MAP_DEVICE_CLASS,
|
||||||
SENSOR_MAP_MODEL,
|
SENSOR_MAP_MODEL,
|
||||||
|
SENSOR_MAP_STATE_CLASS,
|
||||||
SENSOR_MAP_UOM,
|
SENSOR_MAP_UOM,
|
||||||
UNIT_LUMEN,
|
UNIT_LUMEN,
|
||||||
)
|
)
|
||||||
@ -40,18 +47,26 @@ ATTR_TEMPERATURE = [
|
|||||||
"Temperature",
|
"Temperature",
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
DEVICE_CLASS_TEMPERATURE,
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
|
STATE_CLASS_MEASUREMENT,
|
||||||
]
|
]
|
||||||
ATTR_BATTERY_LEVEL = [
|
ATTR_BATTERY_LEVEL = [
|
||||||
"Charge",
|
"Charge",
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
DEVICE_CLASS_BATTERY,
|
DEVICE_CLASS_BATTERY,
|
||||||
|
STATE_CLASS_MEASUREMENT,
|
||||||
]
|
]
|
||||||
ATTR_ILLUMINANCE = [
|
ATTR_ILLUMINANCE = [
|
||||||
"Illuminance",
|
"Illuminance",
|
||||||
UNIT_LUMEN,
|
UNIT_LUMEN,
|
||||||
DEVICE_CLASS_ILLUMINANCE,
|
DEVICE_CLASS_ILLUMINANCE,
|
||||||
|
STATE_CLASS_MEASUREMENT,
|
||||||
|
]
|
||||||
|
ATTR_PRESSURE = [
|
||||||
|
"Pressure",
|
||||||
|
PRESSURE_BAR,
|
||||||
|
DEVICE_CLASS_PRESSURE,
|
||||||
|
STATE_CLASS_MEASUREMENT,
|
||||||
]
|
]
|
||||||
ATTR_PRESSURE = ["Pressure", PRESSURE_BAR, DEVICE_CLASS_PRESSURE]
|
|
||||||
|
|
||||||
TEMP_SENSOR_MAP = {
|
TEMP_SENSOR_MAP = {
|
||||||
"setpoint": ATTR_TEMPERATURE,
|
"setpoint": ATTR_TEMPERATURE,
|
||||||
@ -64,97 +79,138 @@ TEMP_SENSOR_MAP = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ENERGY_SENSOR_MAP = {
|
ENERGY_SENSOR_MAP = {
|
||||||
"electricity_consumed": ["Current Consumed Power", POWER_WATT, DEVICE_CLASS_POWER],
|
"electricity_consumed": [
|
||||||
"electricity_produced": ["Current Produced Power", POWER_WATT, DEVICE_CLASS_POWER],
|
"Current Consumed Power",
|
||||||
|
POWER_WATT,
|
||||||
|
DEVICE_CLASS_POWER,
|
||||||
|
STATE_CLASS_MEASUREMENT,
|
||||||
|
],
|
||||||
|
"electricity_produced": [
|
||||||
|
"Current Produced Power",
|
||||||
|
POWER_WATT,
|
||||||
|
DEVICE_CLASS_POWER,
|
||||||
|
STATE_CLASS_MEASUREMENT,
|
||||||
|
],
|
||||||
"electricity_consumed_interval": [
|
"electricity_consumed_interval": [
|
||||||
"Consumed Power Interval",
|
"Consumed Power Interval",
|
||||||
ENERGY_WATT_HOUR,
|
ENERGY_WATT_HOUR,
|
||||||
DEVICE_CLASS_ENERGY,
|
DEVICE_CLASS_ENERGY,
|
||||||
|
STATE_CLASS_TOTAL,
|
||||||
],
|
],
|
||||||
"electricity_consumed_peak_interval": [
|
"electricity_consumed_peak_interval": [
|
||||||
"Consumed Power Interval",
|
"Consumed Power Interval",
|
||||||
ENERGY_WATT_HOUR,
|
ENERGY_WATT_HOUR,
|
||||||
DEVICE_CLASS_ENERGY,
|
DEVICE_CLASS_ENERGY,
|
||||||
|
STATE_CLASS_TOTAL,
|
||||||
],
|
],
|
||||||
"electricity_consumed_off_peak_interval": [
|
"electricity_consumed_off_peak_interval": [
|
||||||
"Consumed Power Interval (off peak)",
|
"Consumed Power Interval (off peak)",
|
||||||
ENERGY_WATT_HOUR,
|
ENERGY_WATT_HOUR,
|
||||||
DEVICE_CLASS_ENERGY,
|
DEVICE_CLASS_ENERGY,
|
||||||
|
STATE_CLASS_TOTAL,
|
||||||
],
|
],
|
||||||
"electricity_produced_interval": [
|
"electricity_produced_interval": [
|
||||||
"Produced Power Interval",
|
"Produced Power Interval",
|
||||||
ENERGY_WATT_HOUR,
|
ENERGY_WATT_HOUR,
|
||||||
DEVICE_CLASS_ENERGY,
|
DEVICE_CLASS_ENERGY,
|
||||||
|
STATE_CLASS_TOTAL,
|
||||||
],
|
],
|
||||||
"electricity_produced_peak_interval": [
|
"electricity_produced_peak_interval": [
|
||||||
"Produced Power Interval",
|
"Produced Power Interval",
|
||||||
ENERGY_WATT_HOUR,
|
ENERGY_WATT_HOUR,
|
||||||
DEVICE_CLASS_ENERGY,
|
DEVICE_CLASS_ENERGY,
|
||||||
|
STATE_CLASS_TOTAL,
|
||||||
],
|
],
|
||||||
"electricity_produced_off_peak_interval": [
|
"electricity_produced_off_peak_interval": [
|
||||||
"Produced Power Interval (off peak)",
|
"Produced Power Interval (off peak)",
|
||||||
ENERGY_WATT_HOUR,
|
ENERGY_WATT_HOUR,
|
||||||
DEVICE_CLASS_ENERGY,
|
DEVICE_CLASS_ENERGY,
|
||||||
|
STATE_CLASS_TOTAL,
|
||||||
],
|
],
|
||||||
"electricity_consumed_off_peak_point": [
|
"electricity_consumed_off_peak_point": [
|
||||||
"Current Consumed Power (off peak)",
|
"Current Consumed Power (off peak)",
|
||||||
POWER_WATT,
|
POWER_WATT,
|
||||||
DEVICE_CLASS_POWER,
|
DEVICE_CLASS_POWER,
|
||||||
|
STATE_CLASS_MEASUREMENT,
|
||||||
],
|
],
|
||||||
"electricity_consumed_peak_point": [
|
"electricity_consumed_peak_point": [
|
||||||
"Current Consumed Power",
|
"Current Consumed Power",
|
||||||
POWER_WATT,
|
POWER_WATT,
|
||||||
DEVICE_CLASS_POWER,
|
DEVICE_CLASS_POWER,
|
||||||
|
STATE_CLASS_MEASUREMENT,
|
||||||
],
|
],
|
||||||
"electricity_consumed_off_peak_cumulative": [
|
"electricity_consumed_off_peak_cumulative": [
|
||||||
"Cumulative Consumed Power (off peak)",
|
"Cumulative Consumed Power (off peak)",
|
||||||
ENERGY_KILO_WATT_HOUR,
|
ENERGY_KILO_WATT_HOUR,
|
||||||
DEVICE_CLASS_ENERGY,
|
DEVICE_CLASS_ENERGY,
|
||||||
|
STATE_CLASS_TOTAL_INCREASING,
|
||||||
],
|
],
|
||||||
"electricity_consumed_peak_cumulative": [
|
"electricity_consumed_peak_cumulative": [
|
||||||
"Cumulative Consumed Power",
|
"Cumulative Consumed Power",
|
||||||
ENERGY_KILO_WATT_HOUR,
|
ENERGY_KILO_WATT_HOUR,
|
||||||
DEVICE_CLASS_ENERGY,
|
DEVICE_CLASS_ENERGY,
|
||||||
|
STATE_CLASS_TOTAL_INCREASING,
|
||||||
],
|
],
|
||||||
"electricity_produced_off_peak_point": [
|
"electricity_produced_off_peak_point": [
|
||||||
"Current Produced Power (off peak)",
|
"Current Produced Power (off peak)",
|
||||||
POWER_WATT,
|
POWER_WATT,
|
||||||
DEVICE_CLASS_POWER,
|
DEVICE_CLASS_POWER,
|
||||||
|
STATE_CLASS_MEASUREMENT,
|
||||||
],
|
],
|
||||||
"electricity_produced_peak_point": [
|
"electricity_produced_peak_point": [
|
||||||
"Current Produced Power",
|
"Current Produced Power",
|
||||||
POWER_WATT,
|
POWER_WATT,
|
||||||
DEVICE_CLASS_POWER,
|
DEVICE_CLASS_POWER,
|
||||||
|
STATE_CLASS_MEASUREMENT,
|
||||||
],
|
],
|
||||||
"electricity_produced_off_peak_cumulative": [
|
"electricity_produced_off_peak_cumulative": [
|
||||||
"Cumulative Produced Power (off peak)",
|
"Cumulative Produced Power (off peak)",
|
||||||
ENERGY_KILO_WATT_HOUR,
|
ENERGY_KILO_WATT_HOUR,
|
||||||
DEVICE_CLASS_ENERGY,
|
DEVICE_CLASS_ENERGY,
|
||||||
|
STATE_CLASS_TOTAL_INCREASING,
|
||||||
],
|
],
|
||||||
"electricity_produced_peak_cumulative": [
|
"electricity_produced_peak_cumulative": [
|
||||||
"Cumulative Produced Power",
|
"Cumulative Produced Power",
|
||||||
ENERGY_KILO_WATT_HOUR,
|
ENERGY_KILO_WATT_HOUR,
|
||||||
DEVICE_CLASS_ENERGY,
|
DEVICE_CLASS_ENERGY,
|
||||||
|
STATE_CLASS_TOTAL_INCREASING,
|
||||||
],
|
],
|
||||||
"gas_consumed_interval": [
|
"gas_consumed_interval": [
|
||||||
"Current Consumed Gas Interval",
|
"Current Consumed Gas Interval",
|
||||||
VOLUME_CUBIC_METERS,
|
VOLUME_CUBIC_METERS,
|
||||||
None,
|
DEVICE_CLASS_GAS,
|
||||||
|
STATE_CLASS_TOTAL,
|
||||||
|
],
|
||||||
|
"gas_consumed_cumulative": [
|
||||||
|
"Consumed Gas",
|
||||||
|
VOLUME_CUBIC_METERS,
|
||||||
|
DEVICE_CLASS_GAS,
|
||||||
|
STATE_CLASS_TOTAL_INCREASING,
|
||||||
|
],
|
||||||
|
"net_electricity_point": [
|
||||||
|
"Current net Power",
|
||||||
|
POWER_WATT,
|
||||||
|
DEVICE_CLASS_POWER,
|
||||||
|
STATE_CLASS_MEASUREMENT,
|
||||||
],
|
],
|
||||||
"gas_consumed_cumulative": ["Cumulative Consumed Gas", VOLUME_CUBIC_METERS, None],
|
|
||||||
"net_electricity_point": ["Current net Power", POWER_WATT, DEVICE_CLASS_POWER],
|
|
||||||
"net_electricity_cumulative": [
|
"net_electricity_cumulative": [
|
||||||
"Cumulative net Power",
|
"Cumulative net Power",
|
||||||
ENERGY_KILO_WATT_HOUR,
|
ENERGY_KILO_WATT_HOUR,
|
||||||
DEVICE_CLASS_ENERGY,
|
DEVICE_CLASS_ENERGY,
|
||||||
|
STATE_CLASS_TOTAL,
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
MISC_SENSOR_MAP = {
|
MISC_SENSOR_MAP = {
|
||||||
"battery": ATTR_BATTERY_LEVEL,
|
"battery": ATTR_BATTERY_LEVEL,
|
||||||
"illuminance": ATTR_ILLUMINANCE,
|
"illuminance": ATTR_ILLUMINANCE,
|
||||||
"modulation_level": ["Heater Modulation Level", PERCENTAGE, None],
|
"modulation_level": [
|
||||||
"valve_position": ["Valve Position", PERCENTAGE, None],
|
"Heater Modulation Level",
|
||||||
|
PERCENTAGE,
|
||||||
|
None,
|
||||||
|
STATE_CLASS_MEASUREMENT,
|
||||||
|
],
|
||||||
|
"valve_position": ["Valve Position", PERCENTAGE, None, STATE_CLASS_MEASUREMENT],
|
||||||
"water_pressure": ATTR_PRESSURE,
|
"water_pressure": ATTR_PRESSURE,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,6 +305,7 @@ class SmileSensor(SmileGateway, SensorEntity):
|
|||||||
self._dev_class = None
|
self._dev_class = None
|
||||||
self._icon = None
|
self._icon = None
|
||||||
self._state = None
|
self._state = None
|
||||||
|
self._state_class = None
|
||||||
self._unit_of_measurement = None
|
self._unit_of_measurement = None
|
||||||
|
|
||||||
if dev_id == self._api.heater_id:
|
if dev_id == self._api.heater_id:
|
||||||
@ -282,6 +339,11 @@ class SmileSensor(SmileGateway, SensorEntity):
|
|||||||
"""Return the unit of measurement of this entity, if any."""
|
"""Return the unit of measurement of this entity, if any."""
|
||||||
return self._unit_of_measurement
|
return self._unit_of_measurement
|
||||||
|
|
||||||
|
@property
|
||||||
|
def state_class(self):
|
||||||
|
"""Return the state_class of this entity."""
|
||||||
|
return self._state_class
|
||||||
|
|
||||||
|
|
||||||
class PwThermostatSensor(SmileSensor):
|
class PwThermostatSensor(SmileSensor):
|
||||||
"""Thermostat (or generic) sensor devices."""
|
"""Thermostat (or generic) sensor devices."""
|
||||||
@ -294,6 +356,7 @@ class PwThermostatSensor(SmileSensor):
|
|||||||
self._model = sensor_type[SENSOR_MAP_MODEL]
|
self._model = sensor_type[SENSOR_MAP_MODEL]
|
||||||
self._unit_of_measurement = sensor_type[SENSOR_MAP_UOM]
|
self._unit_of_measurement = sensor_type[SENSOR_MAP_UOM]
|
||||||
self._dev_class = sensor_type[SENSOR_MAP_DEVICE_CLASS]
|
self._dev_class = sensor_type[SENSOR_MAP_DEVICE_CLASS]
|
||||||
|
self._state_class = sensor_type[SENSOR_MAP_STATE_CLASS]
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def _async_process_data(self):
|
def _async_process_data(self):
|
||||||
@ -363,6 +426,7 @@ class PwPowerSensor(SmileSensor):
|
|||||||
|
|
||||||
self._unit_of_measurement = sensor_type[SENSOR_MAP_UOM]
|
self._unit_of_measurement = sensor_type[SENSOR_MAP_UOM]
|
||||||
self._dev_class = sensor_type[SENSOR_MAP_DEVICE_CLASS]
|
self._dev_class = sensor_type[SENSOR_MAP_DEVICE_CLASS]
|
||||||
|
self._state_class = sensor_type[SENSOR_MAP_STATE_CLASS]
|
||||||
|
|
||||||
if dev_id == self._api.gateway_id:
|
if dev_id == self._api.gateway_id:
|
||||||
self._model = "P1 DSMR"
|
self._model = "P1 DSMR"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user