From c00d1c8507a46f79763394fd375fba6fd8808341 Mon Sep 17 00:00:00 2001 From: starkillerOG Date: Fri, 18 Sep 2026 09:59:01 +0200 Subject: [PATCH] Reolink check if stream is supported (#182567) --- homeassistant/components/reolink/camera.py | 32 ++++++++++++++++------ homeassistant/components/reolink/select.py | 24 ++++++++++++---- 2 files changed, 42 insertions(+), 14 deletions(-) diff --git a/homeassistant/components/reolink/camera.py b/homeassistant/components/reolink/camera.py index dd9ad0ea7548..e9e4bd8ab4fa 100644 --- a/homeassistant/components/reolink/camera.py +++ b/homeassistant/components/reolink/camera.py @@ -36,27 +36,35 @@ CAMERA_ENTITIES = ( key="sub", stream="sub", translation_key="sub", - supported=lambda api, ch: api.supported(ch, "stream"), + supported=lambda api, ch: ( + api.supported(ch, "stream") and api.supported(ch, "sub") + ), ), ReolinkCameraEntityDescription( key="main", stream="main", translation_key="main", - supported=lambda api, ch: api.supported(ch, "stream"), + supported=lambda api, ch: ( + api.supported(ch, "stream") and api.supported(ch, "main") + ), entity_registry_enabled_default=False, ), ReolinkCameraEntityDescription( key="snapshots_sub", stream="snapshots_sub", translation_key="snapshots_sub", - supported=lambda api, ch: api.supported(ch, "snapshot"), + supported=lambda api, ch: ( + api.supported(ch, "snapshot") and api.supported(ch, "sub") + ), entity_registry_enabled_default=False, ), ReolinkCameraEntityDescription( key="snapshots", stream="snapshots_main", translation_key="snapshots_main", - supported=lambda api, ch: api.supported(ch, "snapshot"), + supported=lambda api, ch: ( + api.supported(ch, "snapshot") and api.supported(ch, "main") + ), entity_registry_enabled_default=False, ), ReolinkCameraEntityDescription( @@ -70,27 +78,35 @@ CAMERA_ENTITIES = ( key="autotrack_sub", stream="telephoto_sub", translation_key="telephoto_sub", - supported=lambda api, ch: api.supported(ch, "autotrack_stream"), + supported=lambda api, ch: ( + api.supported(ch, "autotrack_stream") and api.supported(ch, "sub") + ), ), ReolinkCameraEntityDescription( key="autotrack_main", stream="telephoto_main", translation_key="telephoto_main", - supported=lambda api, ch: api.supported(ch, "autotrack_stream"), + supported=lambda api, ch: ( + api.supported(ch, "autotrack_stream") and api.supported(ch, "main") + ), entity_registry_enabled_default=False, ), ReolinkCameraEntityDescription( key="autotrack_snapshots_sub", stream="autotrack_snapshots_sub", translation_key="telephoto_snapshots_sub", - supported=lambda api, ch: api.supported(ch, "autotrack_snapshot"), + supported=lambda api, ch: ( + api.supported(ch, "autotrack_snapshot") and api.supported(ch, "sub") + ), entity_registry_enabled_default=False, ), ReolinkCameraEntityDescription( key="autotrack_snapshots_main", stream="autotrack_snapshots_main", translation_key="telephoto_snapshots_main", - supported=lambda api, ch: api.supported(ch, "autotrack_snapshot"), + supported=lambda api, ch: ( + api.supported(ch, "autotrack_snapshot") and api.supported(ch, "main") + ), entity_registry_enabled_default=False, ), ) diff --git a/homeassistant/components/reolink/select.py b/homeassistant/components/reolink/select.py index c584a8911379..cf5461420d35 100644 --- a/homeassistant/components/reolink/select.py +++ b/homeassistant/components/reolink/select.py @@ -253,7 +253,9 @@ SELECT_ENTITIES = ( entity_registry_enabled_default=False, unit_of_measurement=UnitOfFrequency.HERTZ, get_options=lambda api, ch: [str(v) for v in api.frame_rate_list(ch, "main")], - supported=lambda api, ch: api.supported(ch, "frame_rate"), + supported=lambda api, ch: ( + api.supported(ch, "frame_rate") and api.supported(ch, "main") + ), value=lambda api, ch: str(api.frame_rate(ch, "main")), method=lambda api, ch, value: api.set_frame_rate(ch, int(value), "main"), ), @@ -266,7 +268,9 @@ SELECT_ENTITIES = ( entity_registry_enabled_default=False, unit_of_measurement=UnitOfFrequency.HERTZ, get_options=lambda api, ch: [str(v) for v in api.frame_rate_list(ch, "sub")], - supported=lambda api, ch: api.supported(ch, "frame_rate"), + supported=lambda api, ch: ( + api.supported(ch, "frame_rate") and api.supported(ch, "sub") + ), value=lambda api, ch: str(api.frame_rate(ch, "sub")), method=lambda api, ch, value: api.set_frame_rate(ch, int(value), "sub"), ), @@ -279,7 +283,9 @@ SELECT_ENTITIES = ( entity_registry_enabled_default=False, unit_of_measurement=UnitOfDataRate.KILOBITS_PER_SECOND, get_options=lambda api, ch: [str(v) for v in api.bit_rate_list(ch, "main")], - supported=lambda api, ch: api.supported(ch, "bit_rate"), + supported=lambda api, ch: ( + api.supported(ch, "bit_rate") and api.supported(ch, "main") + ), value=lambda api, ch: str(api.bit_rate(ch, "main")), method=lambda api, ch, value: api.set_bit_rate(ch, int(value), "main"), ), @@ -292,7 +298,9 @@ SELECT_ENTITIES = ( entity_registry_enabled_default=False, unit_of_measurement=UnitOfDataRate.KILOBITS_PER_SECOND, get_options=lambda api, ch: [str(v) for v in api.bit_rate_list(ch, "sub")], - supported=lambda api, ch: api.supported(ch, "bit_rate"), + supported=lambda api, ch: ( + api.supported(ch, "bit_rate") and api.supported(ch, "sub") + ), value=lambda api, ch: str(api.bit_rate(ch, "sub")), method=lambda api, ch, value: api.set_bit_rate(ch, int(value), "sub"), ), @@ -304,7 +312,9 @@ SELECT_ENTITIES = ( entity_category=EntityCategory.CONFIG, entity_registry_enabled_default=False, get_options=[val.name for val in EncodingEnum], - supported=lambda api, ch: api.supported(ch, "encoding"), + supported=lambda api, ch: ( + api.supported(ch, "encoding") and api.supported(ch, "main") + ), value=lambda api, ch: api.encoding(ch, "main"), method=lambda api, ch, value: api.set_encoding(ch, value, "main"), ), @@ -316,7 +326,9 @@ SELECT_ENTITIES = ( entity_category=EntityCategory.CONFIG, entity_registry_enabled_default=False, get_options=[val.name for val in EncodingEnum], - supported=lambda api, ch: api.supported(ch, "encoding"), + supported=lambda api, ch: ( + api.supported(ch, "encoding") and api.supported(ch, "sub") + ), value=lambda api, ch: api.encoding(ch, "sub"), method=lambda api, ch, value: api.set_encoding(ch, value, "sub"), ),