Add translatable states to SmartThings media source input (#139353)

Add translatable states to media source input
This commit is contained in:
Joost Lekkerkerker 2025-02-26 16:40:34 +01:00 committed by GitHub
parent b964bc58be
commit 998757f09e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 59 additions and 4 deletions

View File

@ -67,6 +67,7 @@ class SmartThingsSensorEntityDescription(SensorEntityDescription):
extra_state_attributes_fn: Callable[[Any], dict[str, Any]] | None = None
unique_id_separator: str = "."
capability_ignore_list: list[set[Capability]] | None = None
options_attribute: Attribute | None = None
CAPABILITY_TO_SENSORS: dict[
@ -374,6 +375,9 @@ CAPABILITY_TO_SENSORS: dict[
SmartThingsSensorEntityDescription(
key=Attribute.INPUT_SOURCE,
translation_key="media_input_source",
device_class=SensorDeviceClass.ENUM,
options_attribute=Attribute.SUPPORTED_INPUT_SOURCES,
value_fn=lambda value: value.lower(),
)
]
},
@ -841,3 +845,13 @@ class SmartThingsSensor(SmartThingsEntity, SensorEntity):
self.get_attribute_value(self.capability, self._attribute)
)
return None
@property
def options(self) -> list[str] | None:
"""Return the options for this sensor."""
if self.entity_description.options_attribute:
options = self.get_attribute_value(
self.capability, self.entity_description.options_attribute
)
return [option.lower() for option in options]
return super().options

View File

@ -128,7 +128,34 @@
"name": "Infrared level"
},
"media_input_source": {
"name": "Media input source"
"name": "Media input source",
"state": {
"am": "AM",
"fm": "FM",
"cd": "CD",
"hdmi": "HDMI",
"hdmi1": "HDMI 1",
"hdmi2": "HDMI 2",
"hdmi3": "HDMI 3",
"hdmi4": "HDMI 4",
"hdmi5": "HDMI 5",
"hdmi6": "HDMI 6",
"digitaltv": "Digital TV",
"usb": "USB",
"youtube": "YouTube",
"aux": "AUX",
"bluetooth": "Bluetooth",
"digital": "Digital",
"melon": "Melon",
"wifi": "Wi-Fi",
"network": "Network",
"optical": "Optical",
"coaxial": "Coaxial",
"analog1": "Analog 1",
"analog2": "Analog 2",
"analog3": "Analog 3",
"phono": "Phono"
}
},
"media_playback_repeat": {
"name": "Media playback repeat"

View File

@ -4483,7 +4483,14 @@
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'capabilities': dict({
'options': list([
'digitaltv',
'hdmi1',
'hdmi4',
'hdmi4',
]),
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
@ -4501,7 +4508,7 @@
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
'original_icon': None,
'original_name': 'Media input source',
'platform': 'smartthings',
@ -4515,14 +4522,21 @@
# name: test_all_entities[vd_stv_2017_k][sensor.tv_samsung_8_series_49_media_input_source-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'enum',
'friendly_name': '[TV] Samsung 8 Series (49) Media input source',
'options': list([
'digitaltv',
'hdmi1',
'hdmi4',
'hdmi4',
]),
}),
'context': <ANY>,
'entity_id': 'sensor.tv_samsung_8_series_49_media_input_source',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'HDMI1',
'state': 'hdmi1',
})
# ---
# name: test_all_entities[vd_stv_2017_k][sensor.tv_samsung_8_series_49_media_playback_status-entry]