Skip to content

Commit 4d49fe6

Browse files
raman325balloob
authored andcommitted
Don't attempt to set Vizio is_volume_muted property if Vizio API doesn't provide muted state (#34782)
1 parent ade4e36 commit 4d49fe6

File tree

2 files changed

+32
-6
lines changed

2 files changed

+32
-6
lines changed

homeassistant/components/vizio/media_player.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ def __init__(
132132
self._state = None
133133
self._volume_level = None
134134
self._volume_step = config_entry.options[CONF_VOLUME_STEP]
135-
self._is_muted = None
135+
self._is_volume_muted = None
136136
self._current_input = None
137137
self._current_app = None
138138
self._current_app_config = None
@@ -190,7 +190,7 @@ async def async_update(self) -> None:
190190
if not is_on:
191191
self._state = STATE_OFF
192192
self._volume_level = None
193-
self._is_muted = None
193+
self._is_volume_muted = None
194194
self._current_input = None
195195
self._available_inputs = None
196196
self._current_app = None
@@ -207,7 +207,10 @@ async def async_update(self) -> None:
207207
)
208208
if audio_settings is not None:
209209
self._volume_level = float(audio_settings["volume"]) / self._max_volume
210-
self._is_muted = audio_settings["mute"].lower() == "on"
210+
if "mute" in audio_settings:
211+
self._is_volume_muted = audio_settings["mute"].lower() == "on"
212+
else:
213+
self._is_volume_muted = None
211214

212215
if VIZIO_SOUND_MODE in audio_settings:
213216
self._supported_commands |= SUPPORT_SELECT_SOUND_MODE
@@ -324,7 +327,7 @@ def volume_level(self) -> float:
324327
@property
325328
def is_volume_muted(self):
326329
"""Boolean if volume is currently muted."""
327-
return self._is_muted
330+
return self._is_volume_muted
328331

329332
@property
330333
def source(self) -> str:
@@ -428,10 +431,10 @@ async def async_mute_volume(self, mute: bool) -> None:
428431
"""Mute the volume."""
429432
if mute:
430433
await self._device.mute_on()
431-
self._is_muted = True
434+
self._is_volume_muted = True
432435
else:
433436
await self._device.mute_off()
434-
self._is_muted = False
437+
self._is_volume_muted = False
435438

436439
async def async_media_previous_track(self) -> None:
437440
"""Send previous channel command."""

tests/components/vizio/test_media_player.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -621,3 +621,26 @@ async def test_setup_with_no_running_app(
621621
assert attr["source"] == "CAST"
622622
assert "app_id" not in attr
623623
assert "app_name" not in attr
624+
625+
626+
async def test_setup_tv_without_mute(
627+
hass: HomeAssistantType,
628+
vizio_connect: pytest.fixture,
629+
vizio_update: pytest.fixture,
630+
) -> None:
631+
"""Test Vizio TV entity setup when mute property isn't returned by Vizio API."""
632+
config_entry = MockConfigEntry(
633+
domain=DOMAIN,
634+
data=vol.Schema(VIZIO_SCHEMA)(MOCK_USER_VALID_TV_CONFIG),
635+
unique_id=UNIQUE_ID,
636+
)
637+
638+
async with _cm_for_test_setup_without_apps(
639+
{"volume": int(MAX_VOLUME[VIZIO_DEVICE_CLASS_TV] / 2)}, STATE_ON,
640+
):
641+
await _add_config_entry_to_hass(hass, config_entry)
642+
643+
attr = _get_attr_and_assert_base_attr(hass, DEVICE_CLASS_TV, STATE_ON)
644+
_assert_sources_and_volume(attr, VIZIO_DEVICE_CLASS_TV)
645+
assert "sound_mode" not in attr
646+
assert "is_volume_muted" not in attr

0 commit comments

Comments
 (0)