Sonos add bass & treble EQ option (#53978)

This commit is contained in:
Ben Edmunds 2021-08-25 16:42:40 +01:00 committed by GitHub
parent 5c6451d11b
commit b167e05a56
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 48 additions and 1 deletions

View File

@ -125,6 +125,8 @@ ATTR_NIGHT_SOUND = "night_sound"
ATTR_SPEECH_ENHANCE = "speech_enhance"
ATTR_QUEUE_POSITION = "queue_position"
ATTR_STATUS_LIGHT = "status_light"
ATTR_EQ_BASS = "bass_level"
ATTR_EQ_TREBLE = "treble_level"
async def async_setup_entry(
@ -221,7 +223,6 @@ async def async_setup_entry(
{
vol.Required(ATTR_ALARM_ID): cv.positive_int,
vol.Optional(ATTR_TIME): cv.time,
vol.Optional(ATTR_VOLUME): cv.small_float,
vol.Optional(ATTR_ENABLED): cv.boolean,
vol.Optional(ATTR_INCLUDE_LINKED_ZONES): cv.boolean,
},
@ -236,6 +237,12 @@ async def async_setup_entry(
vol.Optional(ATTR_NIGHT_SOUND): cv.boolean,
vol.Optional(ATTR_SPEECH_ENHANCE): cv.boolean,
vol.Optional(ATTR_STATUS_LIGHT): cv.boolean,
vol.Optional(ATTR_EQ_BASS): vol.All(
vol.Coerce(int), vol.Range(min=-10, max=10)
),
vol.Optional(ATTR_EQ_TREBLE): vol.All(
vol.Coerce(int), vol.Range(min=-10, max=10)
),
},
"set_option",
)
@ -615,6 +622,8 @@ class SonosMediaPlayerEntity(SonosEntity, MediaPlayerEntity):
night_sound: bool | None = None,
speech_enhance: bool | None = None,
status_light: bool | None = None,
bass_level: int | None = None,
treble_level: int | None = None,
) -> None:
"""Modify playback options."""
if buttons_enabled is not None:
@ -632,6 +641,12 @@ class SonosMediaPlayerEntity(SonosEntity, MediaPlayerEntity):
if status_light is not None:
self.soco.status_light = status_light
if bass_level is not None:
self.soco.bass = bass_level
if treble_level is not None:
self.soco.treble = treble_level
@soco_error()
def play_queue(self, queue_position: int = 0) -> None:
"""Start playing the queue."""
@ -649,6 +664,12 @@ class SonosMediaPlayerEntity(SonosEntity, MediaPlayerEntity):
ATTR_SONOS_GROUP: self.speaker.sonos_group_entities
}
if self.speaker.bass_level is not None:
attributes[ATTR_EQ_BASS] = self.speaker.bass_level
if self.speaker.treble_level is not None:
attributes[ATTR_EQ_TREBLE] = self.speaker.treble_level
if self.speaker.night_mode is not None:
attributes[ATTR_NIGHT_SOUND] = self.speaker.night_mode

View File

@ -121,6 +121,22 @@ set_option:
description: Enable Status (LED) Light
selector:
boolean:
bass_level:
name: Bass Level
description: Bass level for EQ.
selector:
number:
min: -10
max: 10
mode: box
treble_level:
name: Treble Level
description: Treble level for EQ.
selector:
number:
min: -10
max: 10
mode: box
play_queue:
name: Play queue

View File

@ -190,6 +190,8 @@ class SonosSpeaker:
self.muted: bool | None = None
self.night_mode: bool | None = None
self.dialog_mode: bool | None = None
self.bass_level: int | None = None
self.treble_level: int | None = None
# Grouping
self.coordinator: SonosSpeaker | None = None
@ -460,6 +462,12 @@ class SonosSpeaker:
if "dialog_level" in variables:
self.dialog_mode = variables["dialog_level"] == "1"
if "bass_level" in variables:
self.bass_level = variables["bass_level"]
if "treble_level" in variables:
self.treble_level = variables["treble_level"]
self.async_write_entity_states()
#
@ -982,6 +990,8 @@ class SonosSpeaker:
self.muted = self.soco.mute
self.night_mode = self.soco.night_mode
self.dialog_mode = self.soco.dialog_mode
self.bass_level = self.soco.bass
self.treble_level = self.soco.treble
def update_media(self, event: SonosEvent | None = None) -> None:
"""Update information about currently playing media."""