"""Third Reality vibrate devices.""" from typing import Final from zigpy.profiles import zha from zigpy.quirks import CustomDevice import zigpy.types as t from zigpy.zcl.clusters.general import Basic, Ota, PowerConfiguration from zigpy.zcl.clusters.security import IasZone from zigpy.zcl.foundation import BaseAttributeDefs, ZCLAttributeDef from zhaquirks import CustomCluster from zhaquirks.const import ( DEVICE_TYPE, ENDPOINTS, INPUT_CLUSTERS, MODELS_INFO, OUTPUT_CLUSTERS, PROFILE_ID, ) from zhaquirks.thirdreality import THIRD_REALITY MANUFACTURER_SPECIFIC_CLUSTER_ID = 0xFFF1 class ThirdRealityAccelCluster(CustomCluster): """ThirdReality Acceleration Cluster.""" cluster_id = MANUFACTURER_SPECIFIC_CLUSTER_ID class AttributeDefs(BaseAttributeDefs): """Attribute definitions.""" x_axis: Final = ZCLAttributeDef( id=0x0001, type=t.int16s, is_manufacturer_specific=True ) y_axis: Final = ZCLAttributeDef( id=0x0002, type=t.int16s, is_manufacturer_specific=True ) z_axis: Final = ZCLAttributeDef( id=0x0003, type=t.int16s, is_manufacturer_specific=True ) class Vibrate(CustomDevice): """ThirdReality vibrate device.""" signature = { MODELS_INFO: [(THIRD_REALITY, "3RVS01031Z")], ENDPOINTS: { 1: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.IAS_ZONE, INPUT_CLUSTERS: [ Basic.cluster_id, PowerConfiguration.cluster_id, IasZone.cluster_id, ThirdRealityAccelCluster.cluster_id, ], OUTPUT_CLUSTERS: [ Ota.cluster_id, ], } }, } replacement = { ENDPOINTS: { 1: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.IAS_ZONE, INPUT_CLUSTERS: [ Basic.cluster_id, PowerConfiguration.cluster_id, IasZone.cluster_id, ThirdRealityAccelCluster, ], OUTPUT_CLUSTERS: [ Ota.cluster_id, ], } }, }