diff --git a/zha/application/platforms/__init__.py b/zha/application/platforms/__init__.py index 41e98f847..410082a28 100644 --- a/zha/application/platforms/__init__.py +++ b/zha/application/platforms/__init__.py @@ -72,6 +72,9 @@ class PlatformFeatureGroup(StrEnum): # Model-specific overrides for local temperature calibration LOCAL_TEMPERATURE_CALIBRATION = "local_temperature_calibration" + # Prefer OTA client update entities over OTA server update entities + OTA_UPDATE = "ota_update" + @dataclasses.dataclass(frozen=True) class ClusterHandlerMatch: diff --git a/zha/application/platforms/update.py b/zha/application/platforms/update.py index 66dc89e79..03f68ed89 100644 --- a/zha/application/platforms/update.py +++ b/zha/application/platforms/update.py @@ -20,6 +20,7 @@ ClusterHandlerMatch, EntityCategory, PlatformEntity, + PlatformFeatureGroup, register_entity, ) from zha.exceptions import ZHAException @@ -285,7 +286,8 @@ class FirmwareUpdateEntity(BaseFirmwareUpdateEntity): _unique_id_suffix = "firmware_update" _cluster_handler_match = ClusterHandlerMatch( - client_cluster_handlers=frozenset({CLUSTER_HANDLER_OTA}) + client_cluster_handlers=frozenset({CLUSTER_HANDLER_OTA}), + feature_priority=(PlatformFeatureGroup.OTA_UPDATE, 1), ) def __init__( @@ -335,7 +337,8 @@ class FirmwareUpdateServerEntity(BaseFirmwareUpdateEntity): _unique_id_suffix = "firmware_update" _cluster_handler_match = ClusterHandlerMatch( - cluster_handlers=frozenset({CLUSTER_HANDLER_OTA}) + cluster_handlers=frozenset({CLUSTER_HANDLER_OTA}), + feature_priority=(PlatformFeatureGroup.OTA_UPDATE, 0), ) def __init__(