Add source zone exclusion to Russound RIO (#130392)

* Add source zone exclusion to Russound RIO

* Ruff format
This commit is contained in:
Noah Husby 2024-12-12 15:13:37 -05:00 committed by GitHub
parent 839f06b2dc
commit d79dc8d22f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 18 additions and 2 deletions

View File

@ -5,8 +5,10 @@ from __future__ import annotations
import logging
from aiorussound import Controller
from aiorussound.const import FeatureFlag
from aiorussound.models import PlayStatus, Source
from aiorussound.rio import ZoneControlSurface
from aiorussound.util import is_feature_supported
from homeassistant.components.media_player import (
MediaPlayerDeviceClass,
@ -155,7 +157,18 @@ class RussoundZoneDevice(RussoundBaseEntity, MediaPlayerEntity):
@property
def source_list(self) -> list[str]:
"""Return a list of available input sources."""
return [x.name for x in self._sources.values()]
available_sources = (
[
source
for source_id, source in self._sources.items()
if source_id in self._zone.enabled_sources
]
if is_feature_supported(
self._client.rio_version, FeatureFlag.SUPPORT_ZONE_SOURCE_EXCLUSION
)
else self._sources.values()
)
return [x.name for x in available_sources]
@property
def media_title(self) -> str | None:

View File

@ -11,7 +11,7 @@ import pytest
from homeassistant.components.russound_rio.const import DOMAIN
from homeassistant.core import HomeAssistant
from .const import HARDWARE_MAC, HOST, MOCK_CONFIG, MODEL, PORT
from .const import API_VERSION, HARDWARE_MAC, HOST, MOCK_CONFIG, MODEL, PORT
from tests.common import MockConfigEntry, load_json_object_fixture
@ -71,4 +71,6 @@ def mock_russound_client() -> Generator[AsyncMock]:
client.connection_handler = RussoundTcpConnectionHandler(HOST, PORT)
client.is_connected = Mock(return_value=True)
client.unregister_state_update_callbacks.return_value = True
client.rio_version = API_VERSION
yield client

View File

@ -8,6 +8,7 @@ HOST = "127.0.0.1"
PORT = 9621
MODEL = "MCA-C5"
HARDWARE_MAC = "00:11:22:33:44:55"
API_VERSION = "1.08.00"
MOCK_CONFIG = {
"host": HOST,