"""Xiaomi lumi.plug plug.""" from zigpy.profiles import zha from zigpy.zcl.clusters.general import ( AnalogInput, Basic, BinaryInput, BinaryOutput, DeviceTemperature, Groups, Identify, OnOff, Ota, PowerConfiguration, Scenes, Time, ) from zhaquirks.const import ( DEVICE_TYPE, ENDPOINTS, INPUT_CLUSTERS, MODELS_INFO, OUTPUT_CLUSTERS, PROFILE_ID, ) from zhaquirks.xiaomi import ( LUMI, AnalogInputCluster, BasicCluster, ElectricalMeasurementCluster, MeteringCluster, XiaomiCustomDevice, ) class Plug(XiaomiCustomDevice): """lumi.plug plug.""" signature = { MODELS_INFO: [(LUMI, "lumi.plug")], ENDPOINTS: { # 1: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.SMART_PLUG, INPUT_CLUSTERS: [ Basic.cluster_id, PowerConfiguration.cluster_id, DeviceTemperature.cluster_id, Groups.cluster_id, Identify.cluster_id, OnOff.cluster_id, Scenes.cluster_id, BinaryOutput.cluster_id, Time.cluster_id, ], OUTPUT_CLUSTERS: [Ota.cluster_id, Time.cluster_id], }, # 2: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.MAIN_POWER_OUTLET, INPUT_CLUSTERS: [AnalogInput.cluster_id], OUTPUT_CLUSTERS: [AnalogInput.cluster_id, Groups.cluster_id], }, # 3: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.METER_INTERFACE, INPUT_CLUSTERS: [AnalogInput.cluster_id], OUTPUT_CLUSTERS: [AnalogInput.cluster_id], }, }, } replacement = { ENDPOINTS: { 1: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.SMART_PLUG, INPUT_CLUSTERS: [ BasicCluster, PowerConfiguration.cluster_id, DeviceTemperature.cluster_id, Groups.cluster_id, Identify.cluster_id, OnOff.cluster_id, Scenes.cluster_id, BinaryOutput.cluster_id, Time.cluster_id, ElectricalMeasurementCluster, MeteringCluster, ], OUTPUT_CLUSTERS: [Ota.cluster_id, Time.cluster_id], }, 2: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.MAIN_POWER_OUTLET, INPUT_CLUSTERS: [AnalogInputCluster], OUTPUT_CLUSTERS: [AnalogInput.cluster_id, Groups.cluster_id], }, 3: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.METER_INTERFACE, INPUT_CLUSTERS: [AnalogInput.cluster_id], OUTPUT_CLUSTERS: [AnalogInput.cluster_id], }, }, } class Plug2(Plug): """lumi.plug with alternative signature.""" signature = { MODELS_INFO: Plug.signature[MODELS_INFO], ENDPOINTS: { # 1: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.SMART_PLUG, INPUT_CLUSTERS: [ Basic.cluster_id, PowerConfiguration.cluster_id, DeviceTemperature.cluster_id, Groups.cluster_id, Identify.cluster_id, OnOff.cluster_id, Scenes.cluster_id, BinaryOutput.cluster_id, Time.cluster_id, ], OUTPUT_CLUSTERS: [Ota.cluster_id, Time.cluster_id], }, # 2: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.MAIN_POWER_OUTLET, INPUT_CLUSTERS: [AnalogInput.cluster_id], OUTPUT_CLUSTERS: [AnalogInput.cluster_id, Groups.cluster_id], }, # 3: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.METER_INTERFACE, INPUT_CLUSTERS: [AnalogInput.cluster_id], OUTPUT_CLUSTERS: [AnalogInput.cluster_id], }, # 100: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.OCCUPANCY_SENSOR, INPUT_CLUSTERS: [BinaryInput.cluster_id], OUTPUT_CLUSTERS: [Groups.cluster_id, BinaryInput.cluster_id], }, }, } replacement = { ENDPOINTS: { 1: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.SMART_PLUG, INPUT_CLUSTERS: [ BasicCluster, PowerConfiguration.cluster_id, DeviceTemperature.cluster_id, Groups.cluster_id, Identify.cluster_id, OnOff.cluster_id, Scenes.cluster_id, BinaryOutput.cluster_id, Time.cluster_id, ElectricalMeasurementCluster, MeteringCluster, ], OUTPUT_CLUSTERS: [Ota.cluster_id, Time.cluster_id], }, 2: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.MAIN_POWER_OUTLET, INPUT_CLUSTERS: [AnalogInputCluster], OUTPUT_CLUSTERS: [AnalogInput.cluster_id, Groups.cluster_id], }, 3: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.METER_INTERFACE, INPUT_CLUSTERS: [AnalogInput.cluster_id], OUTPUT_CLUSTERS: [AnalogInput.cluster_id], }, 100: { PROFILE_ID: zha.PROFILE_ID, DEVICE_TYPE: zha.DeviceType.OCCUPANCY_SENSOR, INPUT_CLUSTERS: [BinaryInput.cluster_id], OUTPUT_CLUSTERS: [Groups.cluster_id, BinaryInput.cluster_id], }, }, }