Add service calls for enabling/disabling ActiveVoiceAmplifier and SpaceFitSound

This commit is contained in:
samuelspagl 2024-05-20 21:02:21 +02:00
parent 4839f403e8
commit 97ae0615b3
4 changed files with 80 additions and 12 deletions

View File

@ -16,6 +16,8 @@
- "soundmode" feature - "soundmode" feature
- "speaker_level" - "speaker_level"
- "rear_speaker_mode" - "rear_speaker_mode"
- "space_fit_sound"
- "active_voice_amplifier"
### Changed ### Changed

View File

@ -14,15 +14,15 @@ log = logging.getLogger(__name__)
class SoundbarDevice: class SoundbarDevice:
def __init__( def __init__(
self, self,
device: DeviceEntity, device: DeviceEntity,
session, session,
max_volume: int, max_volume: int,
device_name: str, device_name: str,
enable_eq: bool = False, enable_eq: bool = False,
enable_soundmode: bool = False, enable_soundmode: bool = False,
enable_advanced_audio: bool = False, enable_advanced_audio: bool = False,
enable_woofer: bool = False, enable_woofer: bool = False,
): ):
self.device = device self.device = device
self._device_id = self.device.device_id self._device_id = self.device.device_id
@ -91,8 +91,8 @@ class SoundbarDevice:
payload = await self.get_execute_status() payload = await self.get_execute_status()
retry = 0 retry = 0
while ( while (
"x.com.samsung.networkaudio.supportedSoundmode" not in payload "x.com.samsung.networkaudio.supportedSoundmode" not in payload
and retry < 10 and retry < 10
): ):
await asyncio.sleep(1) await asyncio.sleep(1)
payload = await self.get_execute_status() payload = await self.get_execute_status()
@ -420,6 +420,22 @@ class SoundbarDevice:
value=mode.value, value=mode.value,
) )
# ------------ OTHER FUNCTIONS ------------
async def set_active_voice_amplifier(self, enabled: bool):
await self.set_custom_execution_data(
href="/sec/networkaudio/activeVoiceAmplifier",
property="x.com.samsung.networkaudio.activeVoiceAmplifier",
value=1 if enabled else 0
)
async def set_space_fit_sound(self, enabled: bool):
await self.set_custom_execution_data(
href="/sec/networkaudio/spacefitSound",
property="x.com.samsung.networkaudio.spacefitSound",
value=1 if enabled else 0
)
# ------------ SUPPORT FUNCTIONS ------------ # ------------ SUPPORT FUNCTIONS ------------
async def update_execution_data(self, argument: str): async def update_execution_data(self, argument: str):

View File

@ -92,6 +92,20 @@ def addServices():
SmartThingsSoundbarMediaPlayer.async_set_rear_speaker_mode.__name__, SmartThingsSoundbarMediaPlayer.async_set_rear_speaker_mode.__name__,
) )
platform.async_register_entity_service(
"set_active_voice_amplifier",
cv.make_entity_service_schema({vol.Required("enabled"): bool}),
SmartThingsSoundbarMediaPlayer.async_set_active_voice_amplifier.__name__,
)
platform.async_register_entity_service(
"set_space_fit_sound",
cv.make_entity_service_schema({vol.Required("enabled"): bool}),
SmartThingsSoundbarMediaPlayer.async_set_space_fit_sound.__name__,
)
async def async_setup_entry(hass, config_entry, async_add_entities): async def async_setup_entry(hass, config_entry, async_add_entities):
domain_data = hass.data[DOMAIN] domain_data = hass.data[DOMAIN]
@ -267,6 +281,12 @@ class SmartThingsSoundbarMediaPlayer(MediaPlayerEntity):
async def async_set_rear_speaker_mode(self, speaker_mode: str): async def async_set_rear_speaker_mode(self, speaker_mode: str):
await self.device.set_rear_speaker_mode(RearSpeakerMode(speaker_mode)) await self.device.set_rear_speaker_mode(RearSpeakerMode(speaker_mode))
async def async_set_active_voice_amplifier(self, enabled: bool):
await self.device.set_active_voice_amplifier(enabled)
async def async_set_space_fit_sound(self, enabled: bool):
await self.device.set_space_fit_sound(enabled)
# This property can be uncommented for some extra_attributes # This property can be uncommented for some extra_attributes
# Still enabling this can cause side-effects. # Still enabling this can cause side-effects.
# @property # @property

View File

@ -134,4 +134,34 @@ set_rear_speaker_mode:
translation_key: "speaker_identifier" translation_key: "speaker_identifier"
options: options:
- "Rear" - "Rear"
- "Front" - "Front"
set_active_voice_amplifier:
name: Set active voice amplifier
description: Activates / deactivates the active voice amplifier
target:
device:
integration: samsung_soundbar
fields:
enabled:
name: Enabled / Disabled
required: true
example: true
default: false
selector:
boolean:
set_space_fit_sound:
name: Set SpaceFitSound
description: Activates / deactivates the SpaceFitSound
target:
device:
integration: samsung_soundbar
fields:
enabled:
name: Enabled / Disabled
required: true
example: true
default: false
selector:
boolean: