mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
Wolf Smartset: Adding Heatpump Parameters: Frequency, RPM and Flow rate (#140844)
* Add missing Heatpump parameters and units * Fix merge issue * Fix snapshot * Removing bundle_id as extra state attribute till functionality is needed and updating api translation with missing phrase * Fix translations for listparameters * Fix translations for listparameters
This commit is contained in:
parent
eca10ea591
commit
f9bb250621
@ -7,12 +7,15 @@ from dataclasses import dataclass
|
|||||||
|
|
||||||
from wolf_comm.models import (
|
from wolf_comm.models import (
|
||||||
EnergyParameter,
|
EnergyParameter,
|
||||||
|
FlowParameter,
|
||||||
|
FrequencyParameter,
|
||||||
HoursParameter,
|
HoursParameter,
|
||||||
ListItemParameter,
|
ListItemParameter,
|
||||||
Parameter,
|
Parameter,
|
||||||
PercentageParameter,
|
PercentageParameter,
|
||||||
PowerParameter,
|
PowerParameter,
|
||||||
Pressure,
|
Pressure,
|
||||||
|
RPMParameter,
|
||||||
SimpleParameter,
|
SimpleParameter,
|
||||||
Temperature,
|
Temperature,
|
||||||
)
|
)
|
||||||
@ -21,15 +24,19 @@ from homeassistant.components.sensor import (
|
|||||||
SensorDeviceClass,
|
SensorDeviceClass,
|
||||||
SensorEntity,
|
SensorEntity,
|
||||||
SensorEntityDescription,
|
SensorEntityDescription,
|
||||||
|
SensorStateClass,
|
||||||
)
|
)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
|
REVOLUTIONS_PER_MINUTE,
|
||||||
UnitOfEnergy,
|
UnitOfEnergy,
|
||||||
|
UnitOfFrequency,
|
||||||
UnitOfPower,
|
UnitOfPower,
|
||||||
UnitOfPressure,
|
UnitOfPressure,
|
||||||
UnitOfTemperature,
|
UnitOfTemperature,
|
||||||
UnitOfTime,
|
UnitOfTime,
|
||||||
|
UnitOfVolumeFlowRate,
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.device_registry import DeviceInfo
|
from homeassistant.helpers.device_registry import DeviceInfo
|
||||||
@ -98,6 +105,24 @@ SENSOR_DESCRIPTIONS = [
|
|||||||
native_unit_of_measurement=UnitOfTime.HOURS,
|
native_unit_of_measurement=UnitOfTime.HOURS,
|
||||||
supported_fn=lambda param: isinstance(param, HoursParameter),
|
supported_fn=lambda param: isinstance(param, HoursParameter),
|
||||||
),
|
),
|
||||||
|
WolflinkSensorEntityDescription(
|
||||||
|
key="flow",
|
||||||
|
device_class=SensorDeviceClass.VOLUME_FLOW_RATE,
|
||||||
|
native_unit_of_measurement=UnitOfVolumeFlowRate.LITERS_PER_MINUTE,
|
||||||
|
supported_fn=lambda param: isinstance(param, FlowParameter),
|
||||||
|
),
|
||||||
|
WolflinkSensorEntityDescription(
|
||||||
|
key="frequency",
|
||||||
|
device_class=SensorDeviceClass.FREQUENCY,
|
||||||
|
native_unit_of_measurement=UnitOfFrequency.HERTZ,
|
||||||
|
supported_fn=lambda param: isinstance(param, FrequencyParameter),
|
||||||
|
),
|
||||||
|
WolflinkSensorEntityDescription(
|
||||||
|
key="rpm",
|
||||||
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
|
native_unit_of_measurement=REVOLUTIONS_PER_MINUTE,
|
||||||
|
supported_fn=lambda param: isinstance(param, RPMParameter),
|
||||||
|
),
|
||||||
WolflinkSensorEntityDescription(
|
WolflinkSensorEntityDescription(
|
||||||
key="default",
|
key="default",
|
||||||
supported_fn=lambda param: isinstance(param, SimpleParameter),
|
supported_fn=lambda param: isinstance(param, SimpleParameter),
|
||||||
|
@ -8,12 +8,15 @@ from unittest.mock import MagicMock, patch
|
|||||||
import pytest
|
import pytest
|
||||||
from wolf_comm import (
|
from wolf_comm import (
|
||||||
EnergyParameter,
|
EnergyParameter,
|
||||||
|
FlowParameter,
|
||||||
|
FrequencyParameter,
|
||||||
HoursParameter,
|
HoursParameter,
|
||||||
ListItem,
|
ListItem,
|
||||||
ListItemParameter,
|
ListItemParameter,
|
||||||
PercentageParameter,
|
PercentageParameter,
|
||||||
PowerParameter,
|
PowerParameter,
|
||||||
Pressure,
|
Pressure,
|
||||||
|
RPMParameter,
|
||||||
SimpleParameter,
|
SimpleParameter,
|
||||||
Temperature,
|
Temperature,
|
||||||
Value,
|
Value,
|
||||||
@ -86,6 +89,13 @@ def mock_wolflink() -> Generator[MagicMock]:
|
|||||||
),
|
),
|
||||||
HoursParameter(7002800000, "Hours Parameter", "Heating", 7005200000, 1000),
|
HoursParameter(7002800000, "Hours Parameter", "Heating", 7005200000, 1000),
|
||||||
SimpleParameter(1002800000, "Simple Parameter", "DHW", 1005200000, 1000),
|
SimpleParameter(1002800000, "Simple Parameter", "DHW", 1005200000, 1000),
|
||||||
|
FrequencyParameter(
|
||||||
|
9002800000, "Frequency Parameter", "Heating", 9005200000, 1000
|
||||||
|
),
|
||||||
|
RPMParameter(1000280001, "RPM Parameter", "Heating", 10005200000, 7000),
|
||||||
|
FlowParameter(1100280001, "Flow Parameter", "Heating", 11005200000, 8000),
|
||||||
|
HoursParameter(7002800000, "Hours Parameter", "Heating", 7005200000, 1000),
|
||||||
|
SimpleParameter(1002800000, "Simple Parameter", "DHW", 1005200000, 1000),
|
||||||
]
|
]
|
||||||
|
|
||||||
wolflink.fetch_value.return_value = [
|
wolflink.fetch_value.return_value = [
|
||||||
@ -97,6 +107,9 @@ def mock_wolflink() -> Generator[MagicMock]:
|
|||||||
Value(2002800000, "20", 1),
|
Value(2002800000, "20", 1),
|
||||||
Value(7002800000, "10", 1),
|
Value(7002800000, "10", 1),
|
||||||
Value(1002800000, "12", 1),
|
Value(1002800000, "12", 1),
|
||||||
|
Value(9002800000, "50", 1),
|
||||||
|
Value(1000280001, "1500", 1),
|
||||||
|
Value(1100280001, "5", 1),
|
||||||
]
|
]
|
||||||
|
|
||||||
yield wolflink
|
yield wolflink
|
||||||
|
@ -84,6 +84,110 @@
|
|||||||
'state': '183',
|
'state': '183',
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
|
# name: test_sensors[sensor.flow_parameter-entry]
|
||||||
|
EntityRegistryEntrySnapshot({
|
||||||
|
'aliases': set({
|
||||||
|
}),
|
||||||
|
'area_id': None,
|
||||||
|
'capabilities': None,
|
||||||
|
'config_entry_id': <ANY>,
|
||||||
|
'config_subentry_id': <ANY>,
|
||||||
|
'device_class': None,
|
||||||
|
'device_id': <ANY>,
|
||||||
|
'disabled_by': None,
|
||||||
|
'domain': 'sensor',
|
||||||
|
'entity_category': None,
|
||||||
|
'entity_id': 'sensor.flow_parameter',
|
||||||
|
'has_entity_name': False,
|
||||||
|
'hidden_by': None,
|
||||||
|
'icon': None,
|
||||||
|
'id': <ANY>,
|
||||||
|
'labels': set({
|
||||||
|
}),
|
||||||
|
'name': None,
|
||||||
|
'options': dict({
|
||||||
|
}),
|
||||||
|
'original_device_class': <SensorDeviceClass.VOLUME_FLOW_RATE: 'volume_flow_rate'>,
|
||||||
|
'original_icon': None,
|
||||||
|
'original_name': 'Flow Parameter',
|
||||||
|
'platform': 'wolflink',
|
||||||
|
'previous_unique_id': None,
|
||||||
|
'supported_features': 0,
|
||||||
|
'translation_key': None,
|
||||||
|
'unique_id': '1234:11005200000',
|
||||||
|
'unit_of_measurement': <UnitOfVolumeFlowRate.LITERS_PER_MINUTE: 'L/min'>,
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_sensors[sensor.flow_parameter-state]
|
||||||
|
StateSnapshot({
|
||||||
|
'attributes': ReadOnlyDict({
|
||||||
|
'device_class': 'volume_flow_rate',
|
||||||
|
'friendly_name': 'Flow Parameter',
|
||||||
|
'parameter_id': 11005200000,
|
||||||
|
'parent': 'Heating',
|
||||||
|
'unit_of_measurement': <UnitOfVolumeFlowRate.LITERS_PER_MINUTE: 'L/min'>,
|
||||||
|
'value_id': 1100280001,
|
||||||
|
}),
|
||||||
|
'context': <ANY>,
|
||||||
|
'entity_id': 'sensor.flow_parameter',
|
||||||
|
'last_changed': <ANY>,
|
||||||
|
'last_reported': <ANY>,
|
||||||
|
'last_updated': <ANY>,
|
||||||
|
'state': '5',
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_sensors[sensor.frequency_parameter-entry]
|
||||||
|
EntityRegistryEntrySnapshot({
|
||||||
|
'aliases': set({
|
||||||
|
}),
|
||||||
|
'area_id': None,
|
||||||
|
'capabilities': None,
|
||||||
|
'config_entry_id': <ANY>,
|
||||||
|
'config_subentry_id': <ANY>,
|
||||||
|
'device_class': None,
|
||||||
|
'device_id': <ANY>,
|
||||||
|
'disabled_by': None,
|
||||||
|
'domain': 'sensor',
|
||||||
|
'entity_category': None,
|
||||||
|
'entity_id': 'sensor.frequency_parameter',
|
||||||
|
'has_entity_name': False,
|
||||||
|
'hidden_by': None,
|
||||||
|
'icon': None,
|
||||||
|
'id': <ANY>,
|
||||||
|
'labels': set({
|
||||||
|
}),
|
||||||
|
'name': None,
|
||||||
|
'options': dict({
|
||||||
|
}),
|
||||||
|
'original_device_class': <SensorDeviceClass.FREQUENCY: 'frequency'>,
|
||||||
|
'original_icon': None,
|
||||||
|
'original_name': 'Frequency Parameter',
|
||||||
|
'platform': 'wolflink',
|
||||||
|
'previous_unique_id': None,
|
||||||
|
'supported_features': 0,
|
||||||
|
'translation_key': None,
|
||||||
|
'unique_id': '1234:9005200000',
|
||||||
|
'unit_of_measurement': <UnitOfFrequency.HERTZ: 'Hz'>,
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_sensors[sensor.frequency_parameter-state]
|
||||||
|
StateSnapshot({
|
||||||
|
'attributes': ReadOnlyDict({
|
||||||
|
'device_class': 'frequency',
|
||||||
|
'friendly_name': 'Frequency Parameter',
|
||||||
|
'parameter_id': 9005200000,
|
||||||
|
'parent': 'Heating',
|
||||||
|
'unit_of_measurement': <UnitOfFrequency.HERTZ: 'Hz'>,
|
||||||
|
'value_id': 9002800000,
|
||||||
|
}),
|
||||||
|
'context': <ANY>,
|
||||||
|
'entity_id': 'sensor.frequency_parameter',
|
||||||
|
'last_changed': <ANY>,
|
||||||
|
'last_reported': <ANY>,
|
||||||
|
'last_updated': <ANY>,
|
||||||
|
'state': '50',
|
||||||
|
})
|
||||||
|
# ---
|
||||||
# name: test_sensors[sensor.hours_parameter-entry]
|
# name: test_sensors[sensor.hours_parameter-entry]
|
||||||
EntityRegistryEntrySnapshot({
|
EntityRegistryEntrySnapshot({
|
||||||
'aliases': set({
|
'aliases': set({
|
||||||
@ -341,6 +445,60 @@
|
|||||||
'state': '3',
|
'state': '3',
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
|
# name: test_sensors[sensor.rpm_parameter-entry]
|
||||||
|
EntityRegistryEntrySnapshot({
|
||||||
|
'aliases': set({
|
||||||
|
}),
|
||||||
|
'area_id': None,
|
||||||
|
'capabilities': dict({
|
||||||
|
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
|
||||||
|
}),
|
||||||
|
'config_entry_id': <ANY>,
|
||||||
|
'config_subentry_id': <ANY>,
|
||||||
|
'device_class': None,
|
||||||
|
'device_id': <ANY>,
|
||||||
|
'disabled_by': None,
|
||||||
|
'domain': 'sensor',
|
||||||
|
'entity_category': None,
|
||||||
|
'entity_id': 'sensor.rpm_parameter',
|
||||||
|
'has_entity_name': False,
|
||||||
|
'hidden_by': None,
|
||||||
|
'icon': None,
|
||||||
|
'id': <ANY>,
|
||||||
|
'labels': set({
|
||||||
|
}),
|
||||||
|
'name': None,
|
||||||
|
'options': dict({
|
||||||
|
}),
|
||||||
|
'original_device_class': None,
|
||||||
|
'original_icon': None,
|
||||||
|
'original_name': 'RPM Parameter',
|
||||||
|
'platform': 'wolflink',
|
||||||
|
'previous_unique_id': None,
|
||||||
|
'supported_features': 0,
|
||||||
|
'translation_key': None,
|
||||||
|
'unique_id': '1234:10005200000',
|
||||||
|
'unit_of_measurement': 'rpm',
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_sensors[sensor.rpm_parameter-state]
|
||||||
|
StateSnapshot({
|
||||||
|
'attributes': ReadOnlyDict({
|
||||||
|
'friendly_name': 'RPM Parameter',
|
||||||
|
'parameter_id': 10005200000,
|
||||||
|
'parent': 'Heating',
|
||||||
|
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
|
||||||
|
'unit_of_measurement': 'rpm',
|
||||||
|
'value_id': 1000280001,
|
||||||
|
}),
|
||||||
|
'context': <ANY>,
|
||||||
|
'entity_id': 'sensor.rpm_parameter',
|
||||||
|
'last_changed': <ANY>,
|
||||||
|
'last_reported': <ANY>,
|
||||||
|
'last_updated': <ANY>,
|
||||||
|
'state': '1500',
|
||||||
|
})
|
||||||
|
# ---
|
||||||
# name: test_sensors[sensor.simple_parameter-entry]
|
# name: test_sensors[sensor.simple_parameter-entry]
|
||||||
EntityRegistryEntrySnapshot({
|
EntityRegistryEntrySnapshot({
|
||||||
'aliases': set({
|
'aliases': set({
|
||||||
|
Loading…
x
Reference in New Issue
Block a user