Add entity translations to incomfort (#118876)

This commit is contained in:
Joost Lekkerkerker 2024-06-05 17:03:58 +02:00 committed by GitHub
parent 60c06732b1
commit c4cfd9adf0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 83 additions and 127 deletions

View file

@ -32,7 +32,7 @@ class IncomfortBinarySensorEntityDescription(BinarySensorEntityDescription):
SENSOR_TYPES: tuple[IncomfortBinarySensorEntityDescription, ...] = (
IncomfortBinarySensorEntityDescription(
key="failed",
name="Fault",
translation_key="fault",
device_class=BinarySensorDeviceClass.PROBLEM,
value_key="is_failed",
extra_state_attributes_fn=lambda status: {"fault_code": status["fault_code"]},

View file

@ -22,10 +22,6 @@ from . import InComfortConfigEntry
from .coordinator import InComfortDataCoordinator
from .entity import IncomfortBoilerEntity
INCOMFORT_HEATER_TEMP = "CV Temp"
INCOMFORT_PRESSURE = "CV Pressure"
INCOMFORT_TAP_TEMP = "Tap Temp"
@dataclass(frozen=True, kw_only=True)
class IncomfortSensorEntityDescription(SensorEntityDescription):
@ -33,15 +29,11 @@ class IncomfortSensorEntityDescription(SensorEntityDescription):
value_key: str
extra_key: str | None = None
# IncomfortSensor does not support UNDEFINED or None,
# restrict the type to str
name: str = ""
SENSOR_TYPES: tuple[IncomfortSensorEntityDescription, ...] = (
IncomfortSensorEntityDescription(
key="cv_pressure",
name=INCOMFORT_PRESSURE,
device_class=SensorDeviceClass.PRESSURE,
state_class=SensorStateClass.MEASUREMENT,
native_unit_of_measurement=UnitOfPressure.BAR,
@ -49,7 +41,6 @@ SENSOR_TYPES: tuple[IncomfortSensorEntityDescription, ...] = (
),
IncomfortSensorEntityDescription(
key="cv_temp",
name=INCOMFORT_HEATER_TEMP,
device_class=SensorDeviceClass.TEMPERATURE,
state_class=SensorStateClass.MEASUREMENT,
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
@ -58,7 +49,7 @@ SENSOR_TYPES: tuple[IncomfortSensorEntityDescription, ...] = (
),
IncomfortSensorEntityDescription(
key="tap_temp",
name=INCOMFORT_TAP_TEMP,
translation_key="tap_temperature",
device_class=SensorDeviceClass.TEMPERATURE,
state_class=SensorStateClass.MEASUREMENT,
native_unit_of_measurement=UnitOfTemperature.CELSIUS,

View file

@ -52,5 +52,17 @@
"title": "YAML import failed because of timeout issues",
"description": "Configuring {integration_title} using YAML is being removed but there was a timeout while connecting to your {integration_title} while importing your existing configuration.\nSetup will not proceed.\n\nVerify that your {integration_title} is operating correctly and restart Home Assistant to attempt the import again.\n\nAlternatively, you may remove the `{domain}` configuration from your configuration.yaml entirely, restart Home Assistant, and add the {integration_title} integration manually."
}
},
"entity": {
"binary_sensor": {
"fault": {
"name": "Fault"
}
},
"sensor": {
"tap_temperature": {
"name": "Tap temperature"
}
}
}
}

View file

@ -27,7 +27,7 @@
'platform': 'incomfort',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': None,
'translation_key': 'fault',
'unique_id': 'c0ffeec0ffee_failed',
'unit_of_measurement': None,
})
@ -47,50 +47,3 @@
'state': 'off',
})
# ---
# name: test_setup_platforms[binary_sensor.boiler_fault-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'binary_sensor',
'entity_category': None,
'entity_id': 'binary_sensor.boiler_fault',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Fault',
'platform': 'incomfort',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': None,
'unique_id': 'c0ffeec0ffee_failed',
'unit_of_measurement': None,
})
# ---
# name: test_setup_platforms[binary_sensor.boiler_fault-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'fault_code': None,
'friendly_name': 'Boiler Fault',
}),
'context': <ANY>,
'entity_id': 'binary_sensor.boiler_fault',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'off',
})
# ---

View file

@ -1,5 +1,5 @@
# serializer version: 1
# name: test_setup_platform[sensor.boiler_cv_pressure-entry]
# name: test_setup_platform[sensor.boiler_pressure-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
@ -13,7 +13,7 @@
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.boiler_cv_pressure',
'entity_id': 'sensor.boiler_pressure',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
@ -25,7 +25,7 @@
}),
'original_device_class': <SensorDeviceClass.PRESSURE: 'pressure'>,
'original_icon': None,
'original_name': 'CV Pressure',
'original_name': 'Pressure',
'platform': 'incomfort',
'previous_unique_id': None,
'supported_features': 0,
@ -34,23 +34,23 @@
'unit_of_measurement': <UnitOfPressure.BAR: 'bar'>,
})
# ---
# name: test_setup_platform[sensor.boiler_cv_pressure-state]
# name: test_setup_platform[sensor.boiler_pressure-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'pressure',
'friendly_name': 'Boiler CV Pressure',
'friendly_name': 'Boiler Pressure',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfPressure.BAR: 'bar'>,
}),
'context': <ANY>,
'entity_id': 'sensor.boiler_cv_pressure',
'entity_id': 'sensor.boiler_pressure',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '1.86',
})
# ---
# name: test_setup_platform[sensor.boiler_cv_temp-entry]
# name: test_setup_platform[sensor.boiler_tap_temperature-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
@ -64,7 +64,7 @@
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.boiler_cv_temp',
'entity_id': 'sensor.boiler_tap_temperature',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
@ -76,7 +76,59 @@
}),
'original_device_class': <SensorDeviceClass.TEMPERATURE: 'temperature'>,
'original_icon': None,
'original_name': 'CV Temp',
'original_name': 'Tap temperature',
'platform': 'incomfort',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'tap_temperature',
'unique_id': 'c0ffeec0ffee_tap_temp',
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
})
# ---
# name: test_setup_platform[sensor.boiler_tap_temperature-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'temperature',
'friendly_name': 'Boiler Tap temperature',
'is_tapping': False,
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
}),
'context': <ANY>,
'entity_id': 'sensor.boiler_tap_temperature',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '30.21',
})
# ---
# name: test_setup_platform[sensor.boiler_temperature-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.boiler_temperature',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.TEMPERATURE: 'temperature'>,
'original_icon': None,
'original_name': 'Temperature',
'platform': 'incomfort',
'previous_unique_id': None,
'supported_features': 0,
@ -85,72 +137,20 @@
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
})
# ---
# name: test_setup_platform[sensor.boiler_cv_temp-state]
# name: test_setup_platform[sensor.boiler_temperature-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'temperature',
'friendly_name': 'Boiler CV Temp',
'friendly_name': 'Boiler Temperature',
'is_pumping': False,
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
}),
'context': <ANY>,
'entity_id': 'sensor.boiler_cv_temp',
'entity_id': 'sensor.boiler_temperature',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '35.34',
})
# ---
# name: test_setup_platform[sensor.boiler_tap_temp-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.boiler_tap_temp',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.TEMPERATURE: 'temperature'>,
'original_icon': None,
'original_name': 'Tap Temp',
'platform': 'incomfort',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': None,
'unique_id': 'c0ffeec0ffee_tap_temp',
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
})
# ---
# name: test_setup_platform[sensor.boiler_tap_temp-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'temperature',
'friendly_name': 'Boiler Tap Temp',
'is_tapping': False,
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
}),
'context': <ANY>,
'entity_id': 'sensor.boiler_tap_temp',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '30.21',
})
# ---

View file

@ -41,7 +41,7 @@ async def test_coordinator_updates(
assert state.attributes["current_temperature"] == 21.4
mock_incomfort().mock_room_status["room_temp"] = 20.91
state = hass.states.get("sensor.boiler_cv_pressure")
state = hass.states.get("sensor.boiler_pressure")
assert state is not None
assert state.state == "1.86"
mock_incomfort().mock_heater_status["pressure"] = 1.84
@ -54,7 +54,7 @@ async def test_coordinator_updates(
assert state is not None
assert state.attributes["current_temperature"] == 20.9
state = hass.states.get("sensor.boiler_cv_pressure")
state = hass.states.get("sensor.boiler_pressure")
assert state is not None
assert state.state == "1.84"
@ -77,7 +77,7 @@ async def test_coordinator_update_fails(
) -> None:
"""Test the incomfort coordinator update fails."""
await hass.config_entries.async_setup(mock_config_entry.entry_id)
state = hass.states.get("sensor.boiler_cv_pressure")
state = hass.states.get("sensor.boiler_pressure")
assert state is not None
assert state.state == "1.86"
@ -88,6 +88,6 @@ async def test_coordinator_update_fails(
async_fire_time_changed(hass)
await hass.async_block_till_done(wait_background_tasks=True)
state = hass.states.get("sensor.boiler_cv_pressure")
state = hass.states.get("sensor.boiler_pressure")
assert state is not None
assert state.state == STATE_UNAVAILABLE