mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 17:27:52 +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 (
|
||||
EnergyParameter,
|
||||
FlowParameter,
|
||||
FrequencyParameter,
|
||||
HoursParameter,
|
||||
ListItemParameter,
|
||||
Parameter,
|
||||
PercentageParameter,
|
||||
PowerParameter,
|
||||
Pressure,
|
||||
RPMParameter,
|
||||
SimpleParameter,
|
||||
Temperature,
|
||||
)
|
||||
@ -21,15 +24,19 @@ from homeassistant.components.sensor import (
|
||||
SensorDeviceClass,
|
||||
SensorEntity,
|
||||
SensorEntityDescription,
|
||||
SensorStateClass,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import (
|
||||
PERCENTAGE,
|
||||
REVOLUTIONS_PER_MINUTE,
|
||||
UnitOfEnergy,
|
||||
UnitOfFrequency,
|
||||
UnitOfPower,
|
||||
UnitOfPressure,
|
||||
UnitOfTemperature,
|
||||
UnitOfTime,
|
||||
UnitOfVolumeFlowRate,
|
||||
)
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.device_registry import DeviceInfo
|
||||
@ -98,6 +105,24 @@ SENSOR_DESCRIPTIONS = [
|
||||
native_unit_of_measurement=UnitOfTime.HOURS,
|
||||
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(
|
||||
key="default",
|
||||
supported_fn=lambda param: isinstance(param, SimpleParameter),
|
||||
|
@ -8,12 +8,15 @@ from unittest.mock import MagicMock, patch
|
||||
import pytest
|
||||
from wolf_comm import (
|
||||
EnergyParameter,
|
||||
FlowParameter,
|
||||
FrequencyParameter,
|
||||
HoursParameter,
|
||||
ListItem,
|
||||
ListItemParameter,
|
||||
PercentageParameter,
|
||||
PowerParameter,
|
||||
Pressure,
|
||||
RPMParameter,
|
||||
SimpleParameter,
|
||||
Temperature,
|
||||
Value,
|
||||
@ -86,6 +89,13 @@ def mock_wolflink() -> Generator[MagicMock]:
|
||||
),
|
||||
HoursParameter(7002800000, "Hours Parameter", "Heating", 7005200000, 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 = [
|
||||
@ -97,6 +107,9 @@ def mock_wolflink() -> Generator[MagicMock]:
|
||||
Value(2002800000, "20", 1),
|
||||
Value(7002800000, "10", 1),
|
||||
Value(1002800000, "12", 1),
|
||||
Value(9002800000, "50", 1),
|
||||
Value(1000280001, "1500", 1),
|
||||
Value(1100280001, "5", 1),
|
||||
]
|
||||
|
||||
yield wolflink
|
||||
|
@ -84,6 +84,110 @@
|
||||
'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]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
@ -341,6 +445,60 @@
|
||||
'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]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
|
Loading…
x
Reference in New Issue
Block a user