"""Device handler for smartthings moistureV4 sensor.""" from zigpy.profiles import zha from zigpy.quirks import CustomCluster, CustomDevice from zigpy.zcl.clusters.general import Basic, BinaryInput, Identify, Ota, PollControl from zigpy.zcl.clusters.measurement import TemperatureMeasurement from zigpy.zcl.clusters.security import IasZone from zhaquirks import PowerConfigurationCluster from zhaquirks.const import ( DEVICE_TYPE, ENDPOINTS, INPUT_CLUSTERS, MODELS_INFO, OUTPUT_CLUSTERS, PROFILE_ID, ZONE_TYPE, ) from zhaquirks.smartthings import SMART_THINGS class CustomIasZone(CustomCluster, IasZone): """Custom IasZone cluster.""" _CONSTANT_ATTRIBUTES = {ZONE_TYPE: IasZone.ZoneType.Water_Sensor} class SmartThingsMoistureV4(CustomDevice): """SmartThingsMoistureV4.""" signature = { # MODELS_INFO: [(SMART_THINGS, "moisturev4")], ENDPOINTS: { 1: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.IAS_ZONE, INPUT_CLUSTERS: [ Basic.cluster_id, PowerConfigurationCluster.cluster_id, Identify.cluster_id, BinaryInput.cluster_id, PollControl.cluster_id, TemperatureMeasurement.cluster_id, IasZone.cluster_id, ], OUTPUT_CLUSTERS: [Ota.cluster_id], } }, } replacement = { ENDPOINTS: { 1: { INPUT_CLUSTERS: [ Basic.cluster_id, PowerConfigurationCluster, Identify.cluster_id, BinaryInput.cluster_id, PollControl.cluster_id, TemperatureMeasurement.cluster_id, CustomIasZone, ], OUTPUT_CLUSTERS: [Ota.cluster_id], } } }