diff --git a/homeassistant/components/braviatv/coordinator.py b/homeassistant/components/braviatv/coordinator.py index b5d91263b34e51e0f5d148e30b242f79f8136f16..bb6bf59f681cb5efdbb7fa1a2e177e871bbd040e 100644 --- a/homeassistant/components/braviatv/coordinator.py +++ b/homeassistant/components/braviatv/coordinator.py @@ -10,6 +10,7 @@ from typing import Any, Final, TypeVar from pybravia import BraviaTV, BraviaTVError from typing_extensions import Concatenate, ParamSpec +from homeassistant.components import persistent_notification from homeassistant.components.media_player.const import ( MEDIA_TYPE_APP, MEDIA_TYPE_CHANNEL, @@ -256,3 +257,16 @@ class BraviaTVCoordinator(DataUpdateCoordinator[None]): for _ in range(repeats): for cmd in command: await self.client.send_command(cmd) + + @catch_braviatv_errors + async def async_learn_command(self, entity_id: str) -> None: + """Display a list of available commands in a persistent notification.""" + commands = await self.client.get_command_list() + codes = ", ".join(commands.keys()) + title = "Bravia TV" + message = f"**List of available commands for `{entity_id}`**:\n\n{codes}" + persistent_notification.async_create( + self.hass, + title=title, + message=message, + ) diff --git a/homeassistant/components/braviatv/remote.py b/homeassistant/components/braviatv/remote.py index f45b2d740041b8e3f67d91334869eca0364beee6..411b459fcedd1bdfbe86a8a4cb1d96b5a3058a39 100644 --- a/homeassistant/components/braviatv/remote.py +++ b/homeassistant/components/braviatv/remote.py @@ -47,3 +47,7 @@ class BraviaTVRemote(BraviaTVEntity, RemoteEntity): """Send a command to device.""" repeats = kwargs[ATTR_NUM_REPEATS] await self.coordinator.async_send_command(command, repeats) + + async def async_learn_command(self, **kwargs: Any) -> None: + """Learn commands from the device.""" + await self.coordinator.async_learn_command(self.entity_id)