mirror of
https://github.com/home-assistant/core.git
synced 2026-04-20 16:39:02 +02:00
Fix UniFi Protect G6 Instant speaker volume control (#157549)
This commit is contained in:
@@ -79,7 +79,13 @@ class ProtectMediaPlayer(ProtectDeviceEntity, MediaPlayerEntity):
|
||||
def _async_update_device_from_protect(self, device: ProtectDeviceType) -> None:
|
||||
super()._async_update_device_from_protect(device)
|
||||
updated_device = self.device
|
||||
self._attr_volume_level = float(updated_device.speaker_settings.volume / 100)
|
||||
speaker_settings = updated_device.speaker_settings
|
||||
volume = (
|
||||
speaker_settings.speaker_volume
|
||||
if speaker_settings.speaker_volume is not None
|
||||
else speaker_settings.volume
|
||||
)
|
||||
self._attr_volume_level = float(volume / 100)
|
||||
|
||||
if (
|
||||
updated_device.talkback_stream is not None
|
||||
|
||||
@@ -92,6 +92,36 @@ CAMERA_NUMBERS: tuple[ProtectNumberEntityDescription, ...] = (
|
||||
ufp_set_method="set_mic_volume",
|
||||
ufp_perm=PermRequired.WRITE,
|
||||
),
|
||||
ProtectNumberEntityDescription(
|
||||
key="system_sounds_volume",
|
||||
translation_key="system_sounds_volume",
|
||||
icon="mdi:volume-high",
|
||||
entity_category=EntityCategory.CONFIG,
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
ufp_min=0,
|
||||
ufp_max=100,
|
||||
ufp_step=1,
|
||||
ufp_required_field="feature_flags.has_speaker",
|
||||
ufp_value="speaker_settings.volume",
|
||||
ufp_enabled="feature_flags.has_speaker",
|
||||
ufp_set_method="set_volume",
|
||||
ufp_perm=PermRequired.WRITE,
|
||||
),
|
||||
ProtectNumberEntityDescription(
|
||||
key="doorbell_ring_volume",
|
||||
translation_key="doorbell_ring_volume",
|
||||
icon="mdi:bell-ring",
|
||||
entity_category=EntityCategory.CONFIG,
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
ufp_min=0,
|
||||
ufp_max=100,
|
||||
ufp_step=1,
|
||||
ufp_required_field="feature_flags.is_doorbell",
|
||||
ufp_value="speaker_settings.ring_volume",
|
||||
ufp_enabled="feature_flags.is_doorbell",
|
||||
ufp_set_method="set_ring_volume",
|
||||
ufp_perm=PermRequired.WRITE,
|
||||
),
|
||||
ProtectNumberEntityDescription(
|
||||
key="zoom_position",
|
||||
translation_key="zoom_level",
|
||||
|
||||
@@ -289,6 +289,9 @@
|
||||
"chime_duration": {
|
||||
"name": "Chime duration"
|
||||
},
|
||||
"doorbell_ring_volume": {
|
||||
"name": "Doorbell ring volume"
|
||||
},
|
||||
"infrared_custom_lux_trigger": {
|
||||
"name": "Infrared custom lux trigger"
|
||||
},
|
||||
@@ -298,6 +301,9 @@
|
||||
"motion_sensitivity": {
|
||||
"name": "Motion sensitivity"
|
||||
},
|
||||
"system_sounds_volume": {
|
||||
"name": "System sounds volume"
|
||||
},
|
||||
"volume": {
|
||||
"name": "[%key:component::sensor::entity_component::volume::name%]"
|
||||
},
|
||||
|
||||
@@ -173,7 +173,9 @@
|
||||
"speakerSettings": {
|
||||
"isEnabled": true,
|
||||
"areSystemSoundsEnabled": false,
|
||||
"volume": 100
|
||||
"volume": 100,
|
||||
"speakerVolume": 100,
|
||||
"ringVolume": 100
|
||||
},
|
||||
"recordingSettings": {
|
||||
"prePaddingSecs": 10,
|
||||
|
||||
@@ -66,7 +66,7 @@ async def test_media_player_setup(
|
||||
assert entity
|
||||
assert entity.unique_id == unique_id
|
||||
|
||||
expected_volume = float(doorbell.speaker_settings.volume / 100)
|
||||
expected_volume = float(doorbell.speaker_settings.speaker_volume / 100)
|
||||
|
||||
state = hass.states.get(entity_id)
|
||||
assert state
|
||||
|
||||
@@ -107,8 +107,12 @@ async def test_number_setup_camera_all(
|
||||
camera.feature_flags.has_led_ir = True
|
||||
camera.isp_settings.icr_custom_value = 1
|
||||
camera.isp_settings.ir_led_mode = IRLEDMode.CUSTOM
|
||||
camera.feature_flags.has_speaker = True
|
||||
camera.speaker_settings.volume = 1
|
||||
camera.feature_flags.is_doorbell = True
|
||||
camera.speaker_settings.ring_volume = 1
|
||||
await init_entry(hass, ufp, [camera])
|
||||
assert_entity_counts(hass, Platform.NUMBER, 5, 5)
|
||||
assert_entity_counts(hass, Platform.NUMBER, 7, 7)
|
||||
|
||||
for description in CAMERA_NUMBERS:
|
||||
unique_id, entity_id = await ids_from_device_description(
|
||||
|
||||
Reference in New Issue
Block a user