1
0
mirror of https://github.com/home-assistant/core.git synced 2026-06-08 16:37:30 +01:00

Fix Tuya siren entity naming to avoid incorrect main entity assignment (#170008)

Co-authored-by: mik-laj <12058428+mik-laj@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
This commit is contained in:
Kamil Breguła
2026-05-07 15:24:37 +02:00
committed by GitHub
parent ab668ac576
commit 59bc46a9d2
4 changed files with 43 additions and 35 deletions
+4 -1
View File
@@ -27,21 +27,25 @@ SIRENS: dict[DeviceCategory, tuple[SirenEntityDescription, ...]] = {
SirenEntityDescription(
key=DPCode.ALARM_SWITCH,
entity_category=EntityCategory.CONFIG,
translation_key="siren",
),
),
DeviceCategory.DGNBJ: (
SirenEntityDescription(
key=DPCode.ALARM_SWITCH,
translation_key="siren",
),
),
DeviceCategory.SGBJ: (
SirenEntityDescription(
key=DPCode.ALARM_SWITCH,
name=None,
),
),
DeviceCategory.SP: (
SirenEntityDescription(
key=DPCode.SIREN_SWITCH,
translation_key="siren",
),
),
}
@@ -84,7 +88,6 @@ class TuyaSirenEntity(TuyaEntity, SirenEntity):
"""Tuya Siren Entity."""
_attr_supported_features = SirenEntityFeature.TURN_ON | SirenEntityFeature.TURN_OFF
_attr_name = None
def __init__(
self,
@@ -917,6 +917,11 @@
"name": "[%key:component::sensor::entity_component::wind_direction::name%]"
}
},
"siren": {
"siren": {
"name": "[%key:component::siren::title%]"
}
},
"switch": {
"anion": {
"name": "Anion"
+32 -32
View File
@@ -1,5 +1,5 @@
# serializer version: 1
# name: test_platform_setup_and_discovery[siren.aqi-entry]
# name: test_platform_setup_and_discovery[siren.aqi_siren-entry]
EntityRegistryEntrySnapshot({
'aliases': list([
None,
@@ -13,7 +13,7 @@
'disabled_by': None,
'domain': 'siren',
'entity_category': <EntityCategory.CONFIG: 'config'>,
'entity_id': 'siren.aqi',
'entity_id': 'siren.aqi_siren',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
@@ -21,36 +21,36 @@
'labels': set({
}),
'name': None,
'object_id_base': None,
'object_id_base': 'Siren',
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': None,
'original_name': 'Siren',
'platform': 'tuya',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': <SirenEntityFeature: 3>,
'translation_key': None,
'translation_key': 'siren',
'unique_id': 'tuya.iks13mcaiyie3rryjb2ocalarm_switch',
'unit_of_measurement': None,
})
# ---
# name: test_platform_setup_and_discovery[siren.aqi-state]
# name: test_platform_setup_and_discovery[siren.aqi_siren-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'AQI',
'friendly_name': 'AQI Siren',
'supported_features': <SirenEntityFeature: 3>,
}),
'context': <ANY>,
'entity_id': 'siren.aqi',
'entity_id': 'siren.aqi_siren',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'off',
})
# ---
# name: test_platform_setup_and_discovery[siren.burocam-entry]
# name: test_platform_setup_and_discovery[siren.burocam_siren-entry]
EntityRegistryEntrySnapshot({
'aliases': list([
None,
@@ -64,7 +64,7 @@
'disabled_by': None,
'domain': 'siren',
'entity_category': None,
'entity_id': 'siren.burocam',
'entity_id': 'siren.burocam_siren',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
@@ -72,36 +72,36 @@
'labels': set({
}),
'name': None,
'object_id_base': None,
'object_id_base': 'Siren',
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': None,
'original_name': 'Siren',
'platform': 'tuya',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': <SirenEntityFeature: 3>,
'translation_key': None,
'translation_key': 'siren',
'unique_id': 'tuya.svjjuwykgijjedurpssiren_switch',
'unit_of_measurement': None,
})
# ---
# name: test_platform_setup_and_discovery[siren.burocam-state]
# name: test_platform_setup_and_discovery[siren.burocam_siren-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Bürocam',
'friendly_name': 'Bürocam Siren',
'supported_features': <SirenEntityFeature: 3>,
}),
'context': <ANY>,
'entity_id': 'siren.burocam',
'entity_id': 'siren.burocam_siren',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'off',
})
# ---
# name: test_platform_setup_and_discovery[siren.c9-entry]
# name: test_platform_setup_and_discovery[siren.c9_siren-entry]
EntityRegistryEntrySnapshot({
'aliases': list([
None,
@@ -115,7 +115,7 @@
'disabled_by': None,
'domain': 'siren',
'entity_category': None,
'entity_id': 'siren.c9',
'entity_id': 'siren.c9_siren',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
@@ -123,36 +123,36 @@
'labels': set({
}),
'name': None,
'object_id_base': None,
'object_id_base': 'Siren',
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': None,
'original_name': 'Siren',
'platform': 'tuya',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': <SirenEntityFeature: 3>,
'translation_key': None,
'translation_key': 'siren',
'unique_id': 'tuya.fjdyw5ld2f5f5ddspssiren_switch',
'unit_of_measurement': None,
})
# ---
# name: test_platform_setup_and_discovery[siren.c9-state]
# name: test_platform_setup_and_discovery[siren.c9_siren-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'C9',
'friendly_name': 'C9 Siren',
'supported_features': <SirenEntityFeature: 3>,
}),
'context': <ANY>,
'entity_id': 'siren.c9',
'entity_id': 'siren.c9_siren',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'off',
})
# ---
# name: test_platform_setup_and_discovery[siren.security_camera-entry]
# name: test_platform_setup_and_discovery[siren.security_camera_siren-entry]
EntityRegistryEntrySnapshot({
'aliases': list([
None,
@@ -166,7 +166,7 @@
'disabled_by': None,
'domain': 'siren',
'entity_category': None,
'entity_id': 'siren.security_camera',
'entity_id': 'siren.security_camera_siren',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
@@ -174,29 +174,29 @@
'labels': set({
}),
'name': None,
'object_id_base': None,
'object_id_base': 'Siren',
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': None,
'original_name': 'Siren',
'platform': 'tuya',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': <SirenEntityFeature: 3>,
'translation_key': None,
'translation_key': 'siren',
'unique_id': 'tuya.xihygtyd0d1faknkpssiren_switch',
'unit_of_measurement': None,
})
# ---
# name: test_platform_setup_and_discovery[siren.security_camera-state]
# name: test_platform_setup_and_discovery[siren.security_camera_siren-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Security Camera',
'friendly_name': 'Security Camera Siren',
'supported_features': <SirenEntityFeature: 3>,
}),
'context': <ANY>,
'entity_id': 'siren.security_camera',
'entity_id': 'siren.security_camera_siren',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
+2 -2
View File
@@ -82,7 +82,7 @@ async def test_selective_state_update(
mock_device,
notification_helper,
freezer,
entity_id="siren.c9",
entity_id="siren.c9_siren",
dpcode="siren_switch",
initial_state="off",
updates=updates,
@@ -117,7 +117,7 @@ async def test_action(
expected_commands: list[dict[str, Any]],
) -> None:
"""Test siren action."""
entity_id = "siren.c9"
entity_id = "siren.c9_siren"
await initialize_entry(hass, mock_manager, mock_config_entry, mock_device)
state = hass.states.get(entity_id)