Add Sonos subwoofer and surround on/off controls ()

This commit is contained in:
jjlawren 2021-12-03 09:05:40 -06:00 committed by GitHub
parent 7d8b3e9de3
commit b883014ed4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 23 additions and 1 deletions
homeassistant/components/sonos
tests/components/sonos

View file

@ -196,6 +196,8 @@ class SonosSpeaker:
self.cross_fade: bool | None = None
self.bass: int | None = None
self.treble: int | None = None
self.sub_enabled: bool | None = None
self.surround_enabled: bool | None = None
# Misc features
self.buttons_enabled: bool | None = None

View file

@ -38,6 +38,8 @@ ATTR_CROSSFADE = "cross_fade"
ATTR_NIGHT_SOUND = "night_mode"
ATTR_SPEECH_ENHANCEMENT = "dialog_mode"
ATTR_STATUS_LIGHT = "status_light"
ATTR_SUB_ENABLED = "sub_enabled"
ATTR_SURROUND_ENABLED = "surround_enabled"
ATTR_TOUCH_CONTROLS = "buttons_enabled"
ALL_FEATURES = (
@ -45,6 +47,8 @@ ALL_FEATURES = (
ATTR_CROSSFADE,
ATTR_NIGHT_SOUND,
ATTR_SPEECH_ENHANCEMENT,
ATTR_SUB_ENABLED,
ATTR_SURROUND_ENABLED,
ATTR_STATUS_LIGHT,
)
@ -60,6 +64,8 @@ FRIENDLY_NAMES = {
ATTR_NIGHT_SOUND: "Night Sound",
ATTR_SPEECH_ENHANCEMENT: "Speech Enhancement",
ATTR_STATUS_LIGHT: "Status Light",
ATTR_SUB_ENABLED: "Subwoofer Enabled",
ATTR_SURROUND_ENABLED: "Surround Enabled",
ATTR_TOUCH_CONTROLS: "Touch Controls",
}
@ -68,6 +74,8 @@ FEATURE_ICONS = {
ATTR_SPEECH_ENHANCEMENT: "mdi:ear-hearing",
ATTR_CROSSFADE: "mdi:swap-horizontal",
ATTR_STATUS_LIGHT: "mdi:led-on",
ATTR_SUB_ENABLED: "mdi:dog",
ATTR_SURROUND_ENABLED: "mdi:surround-sound",
ATTR_TOUCH_CONTROLS: "mdi:gesture-tap",
}

View file

@ -72,6 +72,8 @@ def soco_fixture(music_library, speaker_info, battery_info, alarm_clock):
mock_soco.volume = 19
mock_soco.bass = 1
mock_soco.treble = -1
mock_soco.sub_enabled = False
mock_soco.surround_enabled = True
mock_soco.get_battery_info.return_value = battery_info
mock_soco.all_zones = [mock_soco]
yield mock_soco

View file

@ -14,7 +14,7 @@ from homeassistant.components.sonos.switch import (
ATTR_VOLUME,
)
from homeassistant.config_entries import RELOAD_AFTER_UPDATE_DELAY
from homeassistant.const import ATTR_TIME, STATE_ON
from homeassistant.const import ATTR_TIME, STATE_OFF, STATE_ON
from homeassistant.helpers.entity_registry import async_get as async_get_entity_registry
from homeassistant.setup import async_setup_component
from homeassistant.util import dt
@ -42,6 +42,8 @@ async def test_entity_registry(hass, config_entry, config):
assert "switch.sonos_zone_a_status_light" in entity_registry.entities
assert "switch.sonos_zone_a_night_sound" in entity_registry.entities
assert "switch.sonos_zone_a_speech_enhancement" in entity_registry.entities
assert "switch.sonos_zone_a_subwoofer_enabled" in entity_registry.entities
assert "switch.sonos_zone_a_surround_enabled" in entity_registry.entities
assert "switch.sonos_zone_a_touch_controls" in entity_registry.entities
@ -83,6 +85,14 @@ async def test_switch_attributes(hass, config_entry, config, soco):
touch_controls = entity_registry.entities["switch.sonos_zone_a_touch_controls"]
assert hass.states.get(touch_controls.entity_id) is None
sub_switch = entity_registry.entities["switch.sonos_zone_a_subwoofer_enabled"]
sub_switch_state = hass.states.get(sub_switch.entity_id)
assert sub_switch_state.state == STATE_OFF
surround_switch = entity_registry.entities["switch.sonos_zone_a_surround_enabled"]
surround_switch_state = hass.states.get(surround_switch.entity_id)
assert surround_switch_state.state == STATE_ON
# Enable disabled switches
for entity in (status_light, touch_controls):
entity_registry.async_update_entity(