diff --git a/tests/data/devices/adeo-zb-watersensor-d0001.json b/tests/data/devices/adeo-zb-watersensor-d0001.json index e46070c64..c7019e5aa 100644 --- a/tests/data/devices/adeo-zb-watersensor-d0001.json +++ b/tests/data/devices/adeo-zb-watersensor-d0001.json @@ -9,7 +9,7 @@ "name": "ADEO ZB-WaterSensor-D0001", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4727, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/adurosmart-eria-ad-rgbw3001.json b/tests/data/devices/adurosmart-eria-ad-rgbw3001.json index 4b94de6f0..81248a903 100644 --- a/tests/data/devices/adurosmart-eria-ad-rgbw3001.json +++ b/tests/data/devices/adurosmart-eria-ad-rgbw3001.json @@ -9,7 +9,7 @@ "name": "AduroSmart Eria AD-RGBW3001", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4653, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/adurosmart-eria-vms-adurolight.json b/tests/data/devices/adurosmart-eria-vms-adurolight.json index 7bf7fc87f..a32072956 100644 --- a/tests/data/devices/adurosmart-eria-vms-adurolight.json +++ b/tests/data/devices/adurosmart-eria-vms-adurolight.json @@ -9,7 +9,7 @@ "name": "AduroSmart Eria VMS_ADUROLIGHT", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4653, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/aqara-lumi-airrtc-aeu001.json b/tests/data/devices/aqara-lumi-airrtc-aeu001.json index 0e0f6930c..ff5b97a6b 100644 --- a/tests/data/devices/aqara-lumi-airrtc-aeu001.json +++ b/tests/data/devices/aqara-lumi-airrtc-aeu001.json @@ -9,7 +9,7 @@ "name": "Aqara lumi.airrtc.aeu001", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Mains", "lqi": 184, diff --git a/tests/data/devices/aqara-lumi-light-agl003.json b/tests/data/devices/aqara-lumi-light-agl003.json index d4277f044..d150ff68c 100644 --- a/tests/data/devices/aqara-lumi-light-agl003.json +++ b/tests/data/devices/aqara-lumi-light-agl003.json @@ -9,7 +9,7 @@ "name": "Aqara lumi.light.agl003", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Mains", "lqi": 65, diff --git a/tests/data/devices/aqara-lumi-light-agl005.json b/tests/data/devices/aqara-lumi-light-agl005.json index 9ce9273de..5a6138952 100644 --- a/tests/data/devices/aqara-lumi-light-agl005.json +++ b/tests/data/devices/aqara-lumi-light-agl005.json @@ -9,7 +9,7 @@ "name": "Aqara lumi.light.agl005", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Mains", "lqi": 65, diff --git a/tests/data/devices/aqara-lumi-lunar-acn01.json b/tests/data/devices/aqara-lumi-lunar-acn01.json index 36839be6f..6158a1f07 100644 --- a/tests/data/devices/aqara-lumi-lunar-acn01.json +++ b/tests/data/devices/aqara-lumi-lunar-acn01.json @@ -9,7 +9,7 @@ "name": "aqara lumi.lunar.acn01", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4660, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/aqara-lumi-motion-ac01.json b/tests/data/devices/aqara-lumi-motion-ac01.json index 076890de8..0095bfb60 100644 --- a/tests/data/devices/aqara-lumi-motion-ac01.json +++ b/tests/data/devices/aqara-lumi-motion-ac01.json @@ -9,7 +9,7 @@ "name": "aqara lumi.motion.ac01", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.motion_ac01.AqaraLumiMotionAc01", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4660, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/aqara-lumi-switch-acn047.json b/tests/data/devices/aqara-lumi-switch-acn047.json index 57e48266c..11612a3cc 100644 --- a/tests/data/devices/aqara-lumi-switch-acn047.json +++ b/tests/data/devices/aqara-lumi-switch-acn047.json @@ -9,7 +9,7 @@ "name": "Aqara lumi.switch.acn047", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.switch_acn047.AqaraT2Relay", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Mains", "lqi": 108, diff --git a/tests/data/devices/aqara-lumi-switch-aeu003.json b/tests/data/devices/aqara-lumi-switch-aeu003.json index cbf24ed35..e62622069 100644 --- a/tests/data/devices/aqara-lumi-switch-aeu003.json +++ b/tests/data/devices/aqara-lumi-switch-aeu003.json @@ -9,7 +9,7 @@ "name": "Aqara lumi.switch.aeu003", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Mains", "lqi": 196, diff --git a/tests/data/devices/aqara-lumi-switch-agl010.json b/tests/data/devices/aqara-lumi-switch-agl010.json index 6f3ecb0c8..2b3274177 100644 --- a/tests/data/devices/aqara-lumi-switch-agl010.json +++ b/tests/data/devices/aqara-lumi-switch-agl010.json @@ -9,7 +9,7 @@ "name": "Aqara lumi.switch.agl010", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Mains", "lqi": 81, diff --git a/tests/data/devices/aug-winkhaus-gmbh-co-kg-fm-v-zb.json b/tests/data/devices/aug-winkhaus-gmbh-co-kg-fm-v-zb.json index 848aec2ce..fd1d54729 100644 --- a/tests/data/devices/aug-winkhaus-gmbh-co-kg-fm-v-zb.json +++ b/tests/data/devices/aug-winkhaus-gmbh-co-kg-fm-v-zb.json @@ -9,7 +9,7 @@ "name": "Aug. Winkhaus GmbH & Co. KG FM.V.ZB", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/awox-esmlfzm-w6-dimm.json b/tests/data/devices/awox-esmlfzm-w6-dimm.json index 903ddc171..b37d79ae4 100644 --- a/tests/data/devices/awox-esmlfzm-w6-dimm.json +++ b/tests/data/devices/awox-esmlfzm-w6-dimm.json @@ -9,7 +9,7 @@ "name": "AwoX ESMLFzm_w6_Dimm", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/awox-tlsr82xx.json b/tests/data/devices/awox-tlsr82xx.json index 88a7a6a7b..686133fdf 100644 --- a/tests/data/devices/awox-tlsr82xx.json +++ b/tests/data/devices/awox-tlsr82xx.json @@ -9,7 +9,7 @@ "name": "AwoX TLSR82xx", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/bosch-rbsh-mms-zb-eu.json b/tests/data/devices/bosch-rbsh-mms-zb-eu.json index 0262e7a05..4984dd726 100644 --- a/tests/data/devices/bosch-rbsh-mms-zb-eu.json +++ b/tests/data/devices/bosch-rbsh-mms-zb-eu.json @@ -9,7 +9,7 @@ "name": "Bosch BMCT-SLZ", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4617, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/bosch-rbsh-rth0-bat-zb-eu.json b/tests/data/devices/bosch-rbsh-rth0-bat-zb-eu.json index 482e245bd..4eb4763ed 100644 --- a/tests/data/devices/bosch-rbsh-rth0-bat-zb-eu.json +++ b/tests/data/devices/bosch-rbsh-rth0-bat-zb-eu.json @@ -9,7 +9,7 @@ "name": "Bosch RBSH-RTH0-BAT-ZB-EU", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4617, "power_source": "Battery or Unknown", "lqi": 255, diff --git a/tests/data/devices/bosch-rbsh-rth0-zb-eu.json b/tests/data/devices/bosch-rbsh-rth0-zb-eu.json index b5dbedb98..d203e7e36 100644 --- a/tests/data/devices/bosch-rbsh-rth0-zb-eu.json +++ b/tests/data/devices/bosch-rbsh-rth0-zb-eu.json @@ -9,7 +9,7 @@ "name": "Bosch RBSH-RTH0-ZB-EU", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4617, "power_source": "Mains", "lqi": 164, diff --git a/tests/data/devices/bosch-rbsh-trv0-zb-eu.json b/tests/data/devices/bosch-rbsh-trv0-zb-eu.json index 1c37f0d4e..7cf0d35a5 100644 --- a/tests/data/devices/bosch-rbsh-trv0-zb-eu.json +++ b/tests/data/devices/bosch-rbsh-trv0-zb-eu.json @@ -9,7 +9,7 @@ "name": "BOSCH RBSH-TRV0-ZB-EU", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4617, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/bosch-rbsh-us4btn-zb-eu.json b/tests/data/devices/bosch-rbsh-us4btn-zb-eu.json index 28a1680d9..5223c1ed2 100644 --- a/tests/data/devices/bosch-rbsh-us4btn-zb-eu.json +++ b/tests/data/devices/bosch-rbsh-us4btn-zb-eu.json @@ -9,7 +9,7 @@ "name": "Bosch RBSH-US4BTN-ZB-EU", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4617, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/candeo-c-zb-lc20-dim.json b/tests/data/devices/candeo-c-zb-lc20-dim.json index cd099e5b8..e205498ab 100644 --- a/tests/data/devices/candeo-c-zb-lc20-dim.json +++ b/tests/data/devices/candeo-c-zb-lc20-dim.json @@ -9,7 +9,7 @@ "name": "Candeo C-ZB-LC20-Dim", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4687, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/candeo-c-zb-lc20-rgb.json b/tests/data/devices/candeo-c-zb-lc20-rgb.json index 5c67ab8c5..e05a34c48 100644 --- a/tests/data/devices/candeo-c-zb-lc20-rgb.json +++ b/tests/data/devices/candeo-c-zb-lc20-rgb.json @@ -9,7 +9,7 @@ "name": "Candeo C-ZB-LC20-RGB", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4687, "power_source": "Mains", "lqi": 196, diff --git a/tests/data/devices/centralite-3320-l.json b/tests/data/devices/centralite-3320-l.json index 21e3ca2e2..11ceed939 100644 --- a/tests/data/devices/centralite-3320-l.json +++ b/tests/data/devices/centralite-3320-l.json @@ -9,7 +9,7 @@ "name": "CentraLite 3320-L", "quirk_applied": true, "quirk_class": "zhaquirks.centralite.ias.CentraLiteIASSensor", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 49887, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/centralite-3326-l.json b/tests/data/devices/centralite-3326-l.json index d8d4b112a..cdbdd7de1 100644 --- a/tests/data/devices/centralite-3326-l.json +++ b/tests/data/devices/centralite-3326-l.json @@ -9,7 +9,7 @@ "name": "CentraLite 3326-L", "quirk_applied": true, "quirk_class": "zhaquirks.centralite.motion.CentraLiteMotionSensor", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 49887, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/centralite-3405-l.json b/tests/data/devices/centralite-3405-l.json index 64231c9c5..e0976ea1f 100644 --- a/tests/data/devices/centralite-3405-l.json +++ b/tests/data/devices/centralite-3405-l.json @@ -9,7 +9,7 @@ "name": "CentraLite 3405-L", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4174, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/centralite-systems-3156105.json b/tests/data/devices/centralite-systems-3156105.json index 70d626c42..1bb6617d3 100644 --- a/tests/data/devices/centralite-systems-3156105.json +++ b/tests/data/devices/centralite-systems-3156105.json @@ -9,7 +9,7 @@ "name": "CentraLite Systems 3156105", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 49887, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/climaxtechnology-sd8sc-00-00-03-12tc.json b/tests/data/devices/climaxtechnology-sd8sc-00-00-03-12tc.json index bd5318c87..49df88030 100644 --- a/tests/data/devices/climaxtechnology-sd8sc-00-00-03-12tc.json +++ b/tests/data/devices/climaxtechnology-sd8sc-00-00-03-12tc.json @@ -9,7 +9,7 @@ "name": "ClimaxTechnology SD8SC_00.00.03.12TC", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/danfoss-etrv0103.json b/tests/data/devices/danfoss-etrv0103.json index dff9ef257..47175e91b 100644 --- a/tests/data/devices/danfoss-etrv0103.json +++ b/tests/data/devices/danfoss-etrv0103.json @@ -9,7 +9,9 @@ "name": "Danfoss eTRV0103", "quirk_applied": true, "quirk_class": "zhaquirks.danfoss.thermostat.DanfossThermostat", - "quirk_id": "danfoss.ally_thermostat", + "exposes_features": [ + "danfoss.ally_thermostat" + ], "manufacturer_code": 4678, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/develco-products-a-s-zhemi-zigbee-external-meter-interface.json b/tests/data/devices/develco-products-a-s-zhemi-zigbee-external-meter-interface.json index 4722e16f4..e73969296 100644 --- a/tests/data/devices/develco-products-a-s-zhemi-zigbee-external-meter-interface.json +++ b/tests/data/devices/develco-products-a-s-zhemi-zigbee-external-meter-interface.json @@ -9,7 +9,7 @@ "name": "Develco Products A/S ZHEMI - ZigBee External Meter Interface", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Battery or Unknown", "lqi": 87, diff --git a/tests/data/devices/digi-xbee3.json b/tests/data/devices/digi-xbee3.json index 9413746c7..b132d3bed 100644 --- a/tests/data/devices/digi-xbee3.json +++ b/tests/data/devices/digi-xbee3.json @@ -9,7 +9,7 @@ "name": "Digi XBee3", "quirk_applied": true, "quirk_class": "zhaquirks.xbee.xbee3_io.XBee3Sensor", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4126, "power_source": "Mains", "lqi": 255, diff --git a/tests/data/devices/ecodim-bv-eco-dim-05-zigbee.json b/tests/data/devices/ecodim-bv-eco-dim-05-zigbee.json index 24d2944e9..1f813fa04 100644 --- a/tests/data/devices/ecodim-bv-eco-dim-05-zigbee.json +++ b/tests/data/devices/ecodim-bv-eco-dim-05-zigbee.json @@ -9,7 +9,7 @@ "name": "EcoDim BV Eco-Dim.05 Zigbee", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": 179, diff --git a/tests/data/devices/ecolink-4655bc0-r.json b/tests/data/devices/ecolink-4655bc0-r.json index 9eef22f10..44e7fae65 100644 --- a/tests/data/devices/ecolink-4655bc0-r.json +++ b/tests/data/devices/ecolink-4655bc0-r.json @@ -9,7 +9,7 @@ "name": "Ecolink 4655BC0-R", "quirk_applied": true, "quirk_class": "zhaquirks.ecolink.contact.Ecolink4655BC0R", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4335, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/enktro-acmidea.json b/tests/data/devices/enktro-acmidea.json index 14ab4bbf8..a6f579c8e 100644 --- a/tests/data/devices/enktro-acmidea.json +++ b/tests/data/devices/enktro-acmidea.json @@ -9,7 +9,7 @@ "name": "enktro ACmidea", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4660, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/ericsity-gl-c-008p.json b/tests/data/devices/ericsity-gl-c-008p.json index dd3dadcc5..201206479 100755 --- a/tests/data/devices/ericsity-gl-c-008p.json +++ b/tests/data/devices/ericsity-gl-c-008p.json @@ -9,7 +9,7 @@ "name": "ERICSITY GL-C-008P", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4687, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/ericsity-gl-c-009p.json b/tests/data/devices/ericsity-gl-c-009p.json index b1b4973f3..0e9f0b4d7 100644 --- a/tests/data/devices/ericsity-gl-c-009p.json +++ b/tests/data/devices/ericsity-gl-c-009p.json @@ -9,7 +9,7 @@ "name": "ERICSITY GL-C-009P", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4687, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/espressif-zigbeeanalogdevice.json b/tests/data/devices/espressif-zigbeeanalogdevice.json index aa41758b9..636f7f4b8 100644 --- a/tests/data/devices/espressif-zigbeeanalogdevice.json +++ b/tests/data/devices/espressif-zigbeeanalogdevice.json @@ -9,7 +9,7 @@ "name": "Espressif ZigbeeAnalogDevice", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4660, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/espressif-zigbeebinaryoutputdevice.json b/tests/data/devices/espressif-zigbeebinaryoutputdevice.json index e025a09a5..9c979175f 100644 --- a/tests/data/devices/espressif-zigbeebinaryoutputdevice.json +++ b/tests/data/devices/espressif-zigbeebinaryoutputdevice.json @@ -9,7 +9,7 @@ "name": "Espressif ZigbeeBinaryAnalogDevice", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4660, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/espressif-zigbeecarbondioxidesensor.json b/tests/data/devices/espressif-zigbeecarbondioxidesensor.json index 439111770..1cc3efd11 100644 --- a/tests/data/devices/espressif-zigbeecarbondioxidesensor.json +++ b/tests/data/devices/espressif-zigbeecarbondioxidesensor.json @@ -9,7 +9,7 @@ "name": "Espressif ZigbeeCarbonDioxideSensor", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4660, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/eurotronic-spzb0001.json b/tests/data/devices/eurotronic-spzb0001.json index f79a2a723..10593acd5 100644 --- a/tests/data/devices/eurotronic-spzb0001.json +++ b/tests/data/devices/eurotronic-spzb0001.json @@ -9,7 +9,7 @@ "name": "Eurotronic SPZB0001", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4151, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/ewelink-ck-bl702-al-01-7009-z102lg03-1.json b/tests/data/devices/ewelink-ck-bl702-al-01-7009-z102lg03-1.json index 623ee1449..f7a527484 100644 --- a/tests/data/devices/ewelink-ck-bl702-al-01-7009-z102lg03-1.json +++ b/tests/data/devices/ewelink-ck-bl702-al-01-7009-z102lg03-1.json @@ -9,7 +9,7 @@ "name": "eWeLink CK-BL702-AL-01(7009_Z102LG03-1)", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/ewelink-ds01.json b/tests/data/devices/ewelink-ds01.json index a94d16221..8b7a4c576 100644 --- a/tests/data/devices/ewelink-ds01.json +++ b/tests/data/devices/ewelink-ds01.json @@ -9,7 +9,7 @@ "name": "eWeLink DS01", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Battery or Unknown", "lqi": 232, diff --git a/tests/data/devices/ewelink-sa-003-zigbee.json b/tests/data/devices/ewelink-sa-003-zigbee.json index f174ad32c..5dfb4a591 100644 --- a/tests/data/devices/ewelink-sa-003-zigbee.json +++ b/tests/data/devices/ewelink-sa-003-zigbee.json @@ -9,7 +9,7 @@ "name": "eWeLink SA-003-Zigbee", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/ewelink-snzb-01p.json b/tests/data/devices/ewelink-snzb-01p.json index d757025db..7b1d2b021 100644 --- a/tests/data/devices/ewelink-snzb-01p.json +++ b/tests/data/devices/ewelink-snzb-01p.json @@ -9,7 +9,7 @@ "name": "eWeLink SNZB-01P", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/ewelink-snzb-02p.json b/tests/data/devices/ewelink-snzb-02p.json index d271fa709..190bcf980 100644 --- a/tests/data/devices/ewelink-snzb-02p.json +++ b/tests/data/devices/ewelink-snzb-02p.json @@ -9,7 +9,7 @@ "name": "eWeLink SNZB-02P", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/ewelink-snzb-04p.json b/tests/data/devices/ewelink-snzb-04p.json index 7f3cac58d..17189b1fb 100644 --- a/tests/data/devices/ewelink-snzb-04p.json +++ b/tests/data/devices/ewelink-snzb-04p.json @@ -9,7 +9,7 @@ "name": "eWeLink SNZB-04P", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/ewelink-th01.json b/tests/data/devices/ewelink-th01.json index b4d2290c0..359db1bf8 100644 --- a/tests/data/devices/ewelink-th01.json +++ b/tests/data/devices/ewelink-th01.json @@ -9,7 +9,7 @@ "name": "eWeLink TH01", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Battery or Unknown", "lqi": 192, diff --git a/tests/data/devices/ewelink-wb01.json b/tests/data/devices/ewelink-wb01.json index da22a6e32..b0fdc92aa 100644 --- a/tests/data/devices/ewelink-wb01.json +++ b/tests/data/devices/ewelink-wb01.json @@ -9,7 +9,7 @@ "name": "eWeLink WB01", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/ewelink-zb-sw02.json b/tests/data/devices/ewelink-zb-sw02.json index 242ae9af4..4bb2118a0 100644 --- a/tests/data/devices/ewelink-zb-sw02.json +++ b/tests/data/devices/ewelink-zb-sw02.json @@ -9,7 +9,7 @@ "name": "eWeLink ZB-SW02", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/ezviz-cs-t55-r100-g.json b/tests/data/devices/ezviz-cs-t55-r100-g.json index 1ee497248..f678c748e 100644 --- a/tests/data/devices/ezviz-cs-t55-r100-g.json +++ b/tests/data/devices/ezviz-cs-t55-r100-g.json @@ -9,7 +9,7 @@ "name": "EZVIZ CS-T55-R100-G", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4451, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/feibit-inc-co-fzb56-zcw27lx1-0.json b/tests/data/devices/feibit-inc-co-fzb56-zcw27lx1-0.json index 1d695ef2e..2cd899731 100644 --- a/tests/data/devices/feibit-inc-co-fzb56-zcw27lx1-0.json +++ b/tests/data/devices/feibit-inc-co-fzb56-zcw27lx1-0.json @@ -9,7 +9,7 @@ "name": "Feibit Inc co. FZB56-ZCW27LX1.0", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/frient-a-s-aqszb-110.json b/tests/data/devices/frient-a-s-aqszb-110.json index 488f5bad6..65564021c 100644 --- a/tests/data/devices/frient-a-s-aqszb-110.json +++ b/tests/data/devices/frient-a-s-aqszb-110.json @@ -9,7 +9,7 @@ "name": "frient A/S AQSZB-110", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4117, "power_source": "Battery or Unknown", "lqi": 255, diff --git a/tests/data/devices/frient-a-s-emizb-141.json b/tests/data/devices/frient-a-s-emizb-141.json index 7aee90253..6d3f252bc 100644 --- a/tests/data/devices/frient-a-s-emizb-141.json +++ b/tests/data/devices/frient-a-s-emizb-141.json @@ -9,7 +9,7 @@ "name": "frient A/S EMIZB-141", "quirk_applied": true, "quirk_class": "zhaquirks.develco.ManufacturerDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4117, "power_source": "Battery or Unknown", "lqi": 255, diff --git a/tests/data/devices/frient-a-s-emizb-151.json b/tests/data/devices/frient-a-s-emizb-151.json index 9bd561d17..e12411b03 100644 --- a/tests/data/devices/frient-a-s-emizb-151.json +++ b/tests/data/devices/frient-a-s-emizb-151.json @@ -9,7 +9,7 @@ "name": "frient A/S EMIZB-151", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4117, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/frient-a-s-flszb-110.json b/tests/data/devices/frient-a-s-flszb-110.json index 9065adff4..c08c9483e 100644 --- a/tests/data/devices/frient-a-s-flszb-110.json +++ b/tests/data/devices/frient-a-s-flszb-110.json @@ -9,7 +9,7 @@ "name": "frient A/S FLSZB-110", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4117, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/frient-a-s-hmszb-120.json b/tests/data/devices/frient-a-s-hmszb-120.json index db84f3c18..aa9f9d8fa 100644 --- a/tests/data/devices/frient-a-s-hmszb-120.json +++ b/tests/data/devices/frient-a-s-hmszb-120.json @@ -9,7 +9,7 @@ "name": "frient A/S HMSZB-120", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4117, "power_source": "Battery or Unknown", "lqi": 255, diff --git a/tests/data/devices/frient-a-s-iomzb-110.json b/tests/data/devices/frient-a-s-iomzb-110.json index a3378f107..8fb313d04 100644 --- a/tests/data/devices/frient-a-s-iomzb-110.json +++ b/tests/data/devices/frient-a-s-iomzb-110.json @@ -9,7 +9,7 @@ "name": "frient A/S IOMZB-110", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4117, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/frient-a-s-kepzb-110.json b/tests/data/devices/frient-a-s-kepzb-110.json index 70e7919dd..2ac86fb34 100644 --- a/tests/data/devices/frient-a-s-kepzb-110.json +++ b/tests/data/devices/frient-a-s-kepzb-110.json @@ -9,7 +9,7 @@ "name": "frient A/S KEPZB-110", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4117, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/frient-a-s-moszb-153.json b/tests/data/devices/frient-a-s-moszb-153.json index eca24b574..ffad7d719 100644 --- a/tests/data/devices/frient-a-s-moszb-153.json +++ b/tests/data/devices/frient-a-s-moszb-153.json @@ -9,7 +9,7 @@ "name": "frient A/S MOSZB-153", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4117, "power_source": "Battery or Unknown", "lqi": 255, diff --git a/tests/data/devices/frient-a-s-sbtzb-110.json b/tests/data/devices/frient-a-s-sbtzb-110.json index 85d3bbafd..0cd2334eb 100644 --- a/tests/data/devices/frient-a-s-sbtzb-110.json +++ b/tests/data/devices/frient-a-s-sbtzb-110.json @@ -9,7 +9,7 @@ "name": "frient A/S SBTZB-110", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4117, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/frient-a-s-sirzb-111.json b/tests/data/devices/frient-a-s-sirzb-111.json index 6c75d3b43..839d5b92d 100644 --- a/tests/data/devices/frient-a-s-sirzb-111.json +++ b/tests/data/devices/frient-a-s-sirzb-111.json @@ -9,7 +9,7 @@ "name": "frient A/S SIRZB-111", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4117, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/frient-a-s-smszb-120.json b/tests/data/devices/frient-a-s-smszb-120.json index 70897f0c3..47f2c7b27 100644 --- a/tests/data/devices/frient-a-s-smszb-120.json +++ b/tests/data/devices/frient-a-s-smszb-120.json @@ -9,7 +9,7 @@ "name": "frient A/S SMSZB-120", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4117, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/frient-a-s-splzb-141.json b/tests/data/devices/frient-a-s-splzb-141.json index 5036c33c6..ab9ed49f4 100644 --- a/tests/data/devices/frient-a-s-splzb-141.json +++ b/tests/data/devices/frient-a-s-splzb-141.json @@ -9,7 +9,7 @@ "name": "frient A/S SPLZB-141", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4117, "power_source": "Mains", "lqi": 255, diff --git a/tests/data/devices/frient-a-s-wiszb-131.json b/tests/data/devices/frient-a-s-wiszb-131.json index 93091641a..dd43e0200 100644 --- a/tests/data/devices/frient-a-s-wiszb-131.json +++ b/tests/data/devices/frient-a-s-wiszb-131.json @@ -9,7 +9,7 @@ "name": "frient A/S WISZB-131", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4117, "power_source": "Battery or Unknown", "lqi": 255, diff --git a/tests/data/devices/gledopto-gl-b-008p.json b/tests/data/devices/gledopto-gl-b-008p.json index 2659efb22..86726435f 100644 --- a/tests/data/devices/gledopto-gl-b-008p.json +++ b/tests/data/devices/gledopto-gl-b-008p.json @@ -9,7 +9,7 @@ "name": "GLEDOPTO GL-B-008P", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4687, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/hive-mbr1.json b/tests/data/devices/hive-mbr1.json index 61650ac2d..6db7b17e2 100644 --- a/tests/data/devices/hive-mbr1.json +++ b/tests/data/devices/hive-mbr1.json @@ -9,7 +9,7 @@ "name": "Hive MBR1", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4153, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/hobeian-zg-101zl.json b/tests/data/devices/hobeian-zg-101zl.json index 384123472..032d3df28 100644 --- a/tests/data/devices/hobeian-zg-101zl.json +++ b/tests/data/devices/hobeian-zg-101zl.json @@ -9,7 +9,7 @@ "name": "HOBEIAN ZG-101ZL", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Battery or Unknown", "lqi": 124, diff --git a/tests/data/devices/hobeian-zg-102zm.json b/tests/data/devices/hobeian-zg-102zm.json index a86b2e792..4a2ed9051 100644 --- a/tests/data/devices/hobeian-zg-102zm.json +++ b/tests/data/devices/hobeian-zg-102zm.json @@ -9,7 +9,7 @@ "name": "HOBEIAN ZG-102ZM", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Battery or Unknown", "lqi": 240, diff --git a/tests/data/devices/hobeian-zg-204zv.json b/tests/data/devices/hobeian-zg-204zv.json index c7f018989..bbe693001 100644 --- a/tests/data/devices/hobeian-zg-204zv.json +++ b/tests/data/devices/hobeian-zg-204zv.json @@ -9,7 +9,7 @@ "name": "HOBEIAN ZG-204ZV", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Battery or Unknown", "lqi": 184, diff --git a/tests/data/devices/homr-hrmsn01.json b/tests/data/devices/homr-hrmsn01.json index 83941b7b5..50f80a8c1 100644 --- a/tests/data/devices/homr-hrmsn01.json +++ b/tests/data/devices/homr-hrmsn01.json @@ -9,7 +9,7 @@ "name": "Homr HRMSN01", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4660, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-badring-water-leakage-sensor.json b/tests/data/devices/ikea-of-sweden-badring-water-leakage-sensor.json index 16fa32da0..20251f288 100644 --- a/tests/data/devices/ikea-of-sweden-badring-water-leakage-sensor.json +++ b/tests/data/devices/ikea-of-sweden-badring-water-leakage-sensor.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden BADRING Water Leakage Sensor", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-fyrtur-block-out-roller-blind.json b/tests/data/devices/ikea-of-sweden-fyrtur-block-out-roller-blind.json index 97c56c14b..e344eb105 100644 --- a/tests/data/devices/ikea-of-sweden-fyrtur-block-out-roller-blind.json +++ b/tests/data/devices/ikea-of-sweden-fyrtur-block-out-roller-blind.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden FYRTUR block-out roller blind", "quirk_applied": true, "quirk_class": "zhaquirks.ikea.blinds.IkeaTradfriRollerBlinds", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-inspelning-smart-plug.json b/tests/data/devices/ikea-of-sweden-inspelning-smart-plug.json index fecbd2115..2eddd1bd4 100644 --- a/tests/data/devices/ikea-of-sweden-inspelning-smart-plug.json +++ b/tests/data/devices/ikea-of-sweden-inspelning-smart-plug.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden INSPELNING Smart plug", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-ormanas-led-strip.json b/tests/data/devices/ikea-of-sweden-ormanas-led-strip.json index 7f333d4ee..779101203 100644 --- a/tests/data/devices/ikea-of-sweden-ormanas-led-strip.json +++ b/tests/data/devices/ikea-of-sweden-ormanas-led-strip.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden ORMANAS LED Strip", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Mains", "lqi": 204, diff --git a/tests/data/devices/ikea-of-sweden-parasoll-door-window-sensor.json b/tests/data/devices/ikea-of-sweden-parasoll-door-window-sensor.json index 471ecbc7e..2fbd108f9 100644 --- a/tests/data/devices/ikea-of-sweden-parasoll-door-window-sensor.json +++ b/tests/data/devices/ikea-of-sweden-parasoll-door-window-sensor.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden PARASOLL Door/Window Sensor", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-praktlysing-cellular-blind.json b/tests/data/devices/ikea-of-sweden-praktlysing-cellular-blind.json index 16221dfb2..5e0df60db 100644 --- a/tests/data/devices/ikea-of-sweden-praktlysing-cellular-blind.json +++ b/tests/data/devices/ikea-of-sweden-praktlysing-cellular-blind.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden PRAKTLYSING cellular blind", "quirk_applied": true, "quirk_class": "zhaquirks.ikea.blinds.IkeaTradfriRollerBlinds", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-remote-control-n2.json b/tests/data/devices/ikea-of-sweden-remote-control-n2.json index 02f5a8b47..f936d5f78 100644 --- a/tests/data/devices/ikea-of-sweden-remote-control-n2.json +++ b/tests/data/devices/ikea-of-sweden-remote-control-n2.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden Remote Control N2", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-rodret-dimmer.json b/tests/data/devices/ikea-of-sweden-rodret-dimmer.json index 61ee5f327..078a11f25 100644 --- a/tests/data/devices/ikea-of-sweden-rodret-dimmer.json +++ b/tests/data/devices/ikea-of-sweden-rodret-dimmer.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden RODRET Dimmer", "quirk_applied": true, "quirk_class": "zhaquirks.ikea.twobtnremote.IkeaRodretRemote2Btn", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-rodret-wireless-dimmer.json b/tests/data/devices/ikea-of-sweden-rodret-wireless-dimmer.json index 91dd12b7d..f36a4e708 100644 --- a/tests/data/devices/ikea-of-sweden-rodret-wireless-dimmer.json +++ b/tests/data/devices/ikea-of-sweden-rodret-wireless-dimmer.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden RODRET wireless dimmer", "quirk_applied": true, "quirk_class": "zhaquirks.ikea.twobtnremote.IkeaRodretRemote2BtnNew", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Battery or Unknown", "lqi": 39, diff --git a/tests/data/devices/ikea-of-sweden-somrig-shortcut-button.json b/tests/data/devices/ikea-of-sweden-somrig-shortcut-button.json index 8330b6310..08224cbff 100644 --- a/tests/data/devices/ikea-of-sweden-somrig-shortcut-button.json +++ b/tests/data/devices/ikea-of-sweden-somrig-shortcut-button.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden SOMRIG shortcut button", "quirk_applied": true, "quirk_class": "zhaquirks.ikea.somrigsmartbtn.IkeaSomrigSmartButton", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Battery or Unknown", "lqi": 180, diff --git a/tests/data/devices/ikea-of-sweden-starkvind-air-purifier.json b/tests/data/devices/ikea-of-sweden-starkvind-air-purifier.json index 7281ef4f8..0797bb459 100644 --- a/tests/data/devices/ikea-of-sweden-starkvind-air-purifier.json +++ b/tests/data/devices/ikea-of-sweden-starkvind-air-purifier.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden STARKVIND Air purifier", "quirk_applied": true, "quirk_class": "zhaquirks.ikea.starkvind.IkeaSTARKVIND", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-symfonisk-sound-remote-gen2.json b/tests/data/devices/ikea-of-sweden-symfonisk-sound-remote-gen2.json index 60a708e93..8b315d2f5 100644 --- a/tests/data/devices/ikea-of-sweden-symfonisk-sound-remote-gen2.json +++ b/tests/data/devices/ikea-of-sweden-symfonisk-sound-remote-gen2.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden SYMFONISK sound remote gen2", "quirk_applied": true, "quirk_class": "zhaquirks.ikea.symfonisk2.IkeaSymfoniskGen2v1", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Battery or Unknown", "lqi": 255, diff --git a/tests/data/devices/ikea-of-sweden-tradfri-bulb-e12-w-op-ch-400lm.json b/tests/data/devices/ikea-of-sweden-tradfri-bulb-e12-w-op-ch-400lm.json index 296f530a8..c105d60fb 100644 --- a/tests/data/devices/ikea-of-sweden-tradfri-bulb-e12-w-op-ch-400lm.json +++ b/tests/data/devices/ikea-of-sweden-tradfri-bulb-e12-w-op-ch-400lm.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden TRADFRI bulb E12 W op/ch 400lm", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-tradfri-bulb-e12-ws-opal-400lm.json b/tests/data/devices/ikea-of-sweden-tradfri-bulb-e12-ws-opal-400lm.json index 1f27706cb..4a386553b 100644 --- a/tests/data/devices/ikea-of-sweden-tradfri-bulb-e12-ws-opal-400lm.json +++ b/tests/data/devices/ikea-of-sweden-tradfri-bulb-e12-ws-opal-400lm.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden TRADFRI bulb E12 WS opal 400lm", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-tradfri-bulb-e14-ws-globe-470lm.json b/tests/data/devices/ikea-of-sweden-tradfri-bulb-e14-ws-globe-470lm.json index 276b2d127..06e2aa137 100644 --- a/tests/data/devices/ikea-of-sweden-tradfri-bulb-e14-ws-globe-470lm.json +++ b/tests/data/devices/ikea-of-sweden-tradfri-bulb-e14-ws-globe-470lm.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden TRADFRI bulb E14 WS globe 470lm", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Mains", "lqi": 160, diff --git a/tests/data/devices/ikea-of-sweden-tradfri-bulb-e26-opal-1000lm.json b/tests/data/devices/ikea-of-sweden-tradfri-bulb-e26-opal-1000lm.json index 256922160..0516641c8 100644 --- a/tests/data/devices/ikea-of-sweden-tradfri-bulb-e26-opal-1000lm.json +++ b/tests/data/devices/ikea-of-sweden-tradfri-bulb-e26-opal-1000lm.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden TRADFRI bulb E26 opal 1000lm", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-tradfri-bulb-e26-w-opal-1000lm.json b/tests/data/devices/ikea-of-sweden-tradfri-bulb-e26-w-opal-1000lm.json index 5bd737f19..af8719122 100644 --- a/tests/data/devices/ikea-of-sweden-tradfri-bulb-e26-w-opal-1000lm.json +++ b/tests/data/devices/ikea-of-sweden-tradfri-bulb-e26-w-opal-1000lm.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden TRADFRI bulb E26 W opal 1000lm", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-tradfri-bulb-e26-ws-opal-980lm.json b/tests/data/devices/ikea-of-sweden-tradfri-bulb-e26-ws-opal-980lm.json index 8f396553d..c63bd0646 100644 --- a/tests/data/devices/ikea-of-sweden-tradfri-bulb-e26-ws-opal-980lm.json +++ b/tests/data/devices/ikea-of-sweden-tradfri-bulb-e26-ws-opal-980lm.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden TRADFRI bulb E26 WS opal 980lm", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-tradfri-bulb-e27-ww-g95-cl-470lm.json b/tests/data/devices/ikea-of-sweden-tradfri-bulb-e27-ww-g95-cl-470lm.json index 737b3257a..81c2c1b73 100644 --- a/tests/data/devices/ikea-of-sweden-tradfri-bulb-e27-ww-g95-cl-470lm.json +++ b/tests/data/devices/ikea-of-sweden-tradfri-bulb-e27-ww-g95-cl-470lm.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden TRADFRI bulb E27 WW G95 CL 470lm", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-tradfri-bulb-gu10-ws-400lm.json b/tests/data/devices/ikea-of-sweden-tradfri-bulb-gu10-ws-400lm.json index 291230f1c..2773e0def 100644 --- a/tests/data/devices/ikea-of-sweden-tradfri-bulb-gu10-ws-400lm.json +++ b/tests/data/devices/ikea-of-sweden-tradfri-bulb-gu10-ws-400lm.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden TRADFRI bulb GU10 WS 400lm", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-tradfri-control-outlet.json b/tests/data/devices/ikea-of-sweden-tradfri-control-outlet.json index 873153e9e..3468db878 100644 --- a/tests/data/devices/ikea-of-sweden-tradfri-control-outlet.json +++ b/tests/data/devices/ikea-of-sweden-tradfri-control-outlet.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden TRADFRI control outlet", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-tradfri-motion-sensor.json b/tests/data/devices/ikea-of-sweden-tradfri-motion-sensor.json index a4e89c744..415c102de 100644 --- a/tests/data/devices/ikea-of-sweden-tradfri-motion-sensor.json +++ b/tests/data/devices/ikea-of-sweden-tradfri-motion-sensor.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden TRADFRI motion sensor", "quirk_applied": true, "quirk_class": "zhaquirks.ikea.motionzha.IkeaTradfriMotionE1745_Var02", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-tradfri-on-off-switch.json b/tests/data/devices/ikea-of-sweden-tradfri-on-off-switch.json index 9d72700ae..231f16ccd 100644 --- a/tests/data/devices/ikea-of-sweden-tradfri-on-off-switch.json +++ b/tests/data/devices/ikea-of-sweden-tradfri-on-off-switch.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden TRADFRI on/off switch", "quirk_applied": true, "quirk_class": "zhaquirks.ikea.twobtnremote.IkeaTradfriRemote2Btn", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-tradfri-open-close-remote.json b/tests/data/devices/ikea-of-sweden-tradfri-open-close-remote.json index 859188feb..fd5084eda 100644 --- a/tests/data/devices/ikea-of-sweden-tradfri-open-close-remote.json +++ b/tests/data/devices/ikea-of-sweden-tradfri-open-close-remote.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden TRADFRI open/close remote", "quirk_applied": true, "quirk_class": "zhaquirks.ikea.opencloseremote.IkeaTradfriOpenCloseRemote", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-tradfri-remote-control.json b/tests/data/devices/ikea-of-sweden-tradfri-remote-control.json index 93832bc6c..b98e3bb6b 100644 --- a/tests/data/devices/ikea-of-sweden-tradfri-remote-control.json +++ b/tests/data/devices/ikea-of-sweden-tradfri-remote-control.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden TRADFRI remote control", "quirk_applied": true, "quirk_class": "zhaquirks.ikea.fivebtnremote.IkeaTradfriRemote1", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-tradfri-wireless-dimmer.json b/tests/data/devices/ikea-of-sweden-tradfri-wireless-dimmer.json index 49d092f32..c8516a151 100644 --- a/tests/data/devices/ikea-of-sweden-tradfri-wireless-dimmer.json +++ b/tests/data/devices/ikea-of-sweden-tradfri-wireless-dimmer.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden TRADFRI wireless dimmer", "quirk_applied": true, "quirk_class": "zhaquirks.ikea.dimmer.IkeaDimmer", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/ikea-of-sweden-vallhorn-wireless-motion-sensor.json b/tests/data/devices/ikea-of-sweden-vallhorn-wireless-motion-sensor.json index 1ec8f2054..dd65afbb9 100644 --- a/tests/data/devices/ikea-of-sweden-vallhorn-wireless-motion-sensor.json +++ b/tests/data/devices/ikea-of-sweden-vallhorn-wireless-motion-sensor.json @@ -9,7 +9,7 @@ "name": "IKEA of Sweden VALLHORN Wireless Motion Sensor", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/innr-ae-280-c.json b/tests/data/devices/innr-ae-280-c.json index ae48b39de..2d6ec1b0c 100644 --- a/tests/data/devices/innr-ae-280-c.json +++ b/tests/data/devices/innr-ae-280-c.json @@ -9,7 +9,7 @@ "name": "innr AE 280 C", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4454, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/innr-rb-285-c.json b/tests/data/devices/innr-rb-285-c.json index f8455e313..36ff7b13a 100644 --- a/tests/data/devices/innr-rb-285-c.json +++ b/tests/data/devices/innr-rb-285-c.json @@ -9,7 +9,7 @@ "name": "innr RB 285 C", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4454, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/innr-sp-120.json b/tests/data/devices/innr-sp-120.json index e22876d33..f6ab3c802 100644 --- a/tests/data/devices/innr-sp-120.json +++ b/tests/data/devices/innr-sp-120.json @@ -9,7 +9,7 @@ "name": "innr SP 120", "quirk_applied": true, "quirk_class": "zhaquirks.innr.innr_sp120_plug.SP120", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4454, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/innr-sp-234.json b/tests/data/devices/innr-sp-234.json index bc5ea3060..d8e1ba72d 100755 --- a/tests/data/devices/innr-sp-234.json +++ b/tests/data/devices/innr-sp-234.json @@ -9,7 +9,7 @@ "name": "innr SP 234", "quirk_applied": true, "quirk_class": "zhaquirks.innr.innr_sp234_plug.SP234", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4454, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/innr-sp-240.json b/tests/data/devices/innr-sp-240.json index 50e269576..f299db27b 100644 --- a/tests/data/devices/innr-sp-240.json +++ b/tests/data/devices/innr-sp-240.json @@ -9,7 +9,7 @@ "name": "innr SP 240", "quirk_applied": true, "quirk_class": "zhaquirks.innr.innr_sp240_plug.SP240", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4454, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/innr-sp-242.json b/tests/data/devices/innr-sp-242.json index ffa23c06d..e89baa1c3 100644 --- a/tests/data/devices/innr-sp-242.json +++ b/tests/data/devices/innr-sp-242.json @@ -9,7 +9,7 @@ "name": "innr SP 242", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4454, "power_source": "Mains", "lqi": 172, diff --git a/tests/data/devices/inovelli-vzm30-sn.json b/tests/data/devices/inovelli-vzm30-sn.json index 596bbd62f..ffc11c4b1 100644 --- a/tests/data/devices/inovelli-vzm30-sn.json +++ b/tests/data/devices/inovelli-vzm30-sn.json @@ -9,7 +9,7 @@ "name": "Inovelli VZM30-SN", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4655, "power_source": "Mains", "lqi": 192, diff --git a/tests/data/devices/inovelli-vzm31-sn.json b/tests/data/devices/inovelli-vzm31-sn.json index 27aa9736f..75edb5b5d 100644 --- a/tests/data/devices/inovelli-vzm31-sn.json +++ b/tests/data/devices/inovelli-vzm31-sn.json @@ -9,7 +9,7 @@ "name": "Inovelli VZM31-SN", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4655, "power_source": "Mains", "lqi": 112, diff --git a/tests/data/devices/inovelli-vzm35-sn.json b/tests/data/devices/inovelli-vzm35-sn.json index 841c50cf4..18fa6f0e4 100644 --- a/tests/data/devices/inovelli-vzm35-sn.json +++ b/tests/data/devices/inovelli-vzm35-sn.json @@ -9,7 +9,7 @@ "name": "Inovelli VZM35-SN", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4655, "power_source": "Mains", "lqi": 184, diff --git a/tests/data/devices/isilentllc-dog-feeder.json b/tests/data/devices/isilentllc-dog-feeder.json index 8dc08a98c..cbe07f3cc 100644 --- a/tests/data/devices/isilentllc-dog-feeder.json +++ b/tests/data/devices/isilentllc-dog-feeder.json @@ -9,7 +9,7 @@ "name": "iSilentLLC Dog Feeder", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4126, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/isilentllc-doorbell.json b/tests/data/devices/isilentllc-doorbell.json index dd0706ed9..e622d57e9 100644 --- a/tests/data/devices/isilentllc-doorbell.json +++ b/tests/data/devices/isilentllc-doorbell.json @@ -9,7 +9,7 @@ "name": "iSilentLLC DoorBell", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4126, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/isilentllc-freezer-monitor.json b/tests/data/devices/isilentllc-freezer-monitor.json index 3864602f5..8f98b72ff 100644 --- a/tests/data/devices/isilentllc-freezer-monitor.json +++ b/tests/data/devices/isilentllc-freezer-monitor.json @@ -9,7 +9,7 @@ "name": "iSilentLLC Freezer Monitor", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4660, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/isilentllc-home-energy-monitor.json b/tests/data/devices/isilentllc-home-energy-monitor.json index be65a19ee..ef180ccf9 100644 --- a/tests/data/devices/isilentllc-home-energy-monitor.json +++ b/tests/data/devices/isilentllc-home-energy-monitor.json @@ -9,7 +9,7 @@ "name": "iSilentLLC Home Energy Monitor", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4126, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/isilentllc-masterbed-light-controller.json b/tests/data/devices/isilentllc-masterbed-light-controller.json index 7ce6f0727..832aec24f 100644 --- a/tests/data/devices/isilentllc-masterbed-light-controller.json +++ b/tests/data/devices/isilentllc-masterbed-light-controller.json @@ -9,7 +9,7 @@ "name": "iSilentLLC MasterBed Light Controller", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4126, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/isilentllc-safe.json b/tests/data/devices/isilentllc-safe.json index 6c9f4ac40..163d9dc5c 100644 --- a/tests/data/devices/isilentllc-safe.json +++ b/tests/data/devices/isilentllc-safe.json @@ -9,7 +9,7 @@ "name": "iSilentLLC Safe", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4126, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/isilentllc-test-device.json b/tests/data/devices/isilentllc-test-device.json index 87e5a8489..fb47d7321 100644 --- a/tests/data/devices/isilentllc-test-device.json +++ b/tests/data/devices/isilentllc-test-device.json @@ -9,7 +9,7 @@ "name": "iSilentLLC Test Device", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4660, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/isilentllc-test-mule.json b/tests/data/devices/isilentllc-test-mule.json index 393f4303b..df46538b7 100644 --- a/tests/data/devices/isilentllc-test-mule.json +++ b/tests/data/devices/isilentllc-test-mule.json @@ -9,7 +9,7 @@ "name": "iSilentLLC Test Mule", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4660, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/isilentllc-water-heater.json b/tests/data/devices/isilentllc-water-heater.json index a1b43d33e..017dc4702 100644 --- a/tests/data/devices/isilentllc-water-heater.json +++ b/tests/data/devices/isilentllc-water-heater.json @@ -9,7 +9,7 @@ "name": "iSilentLLC Water Heater", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4126, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/jasco-products-45856.json b/tests/data/devices/jasco-products-45856.json index aac9b3a27..6e1a7d62d 100644 --- a/tests/data/devices/jasco-products-45856.json +++ b/tests/data/devices/jasco-products-45856.json @@ -9,7 +9,7 @@ "name": "Jasco Products 45856", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4388, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/jasco-products-45857.json b/tests/data/devices/jasco-products-45857.json index 9d6104c07..8c958eaff 100644 --- a/tests/data/devices/jasco-products-45857.json +++ b/tests/data/devices/jasco-products-45857.json @@ -9,7 +9,7 @@ "name": "Jasco Products 45857", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4388, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/ke-tradfri-open-close-remote.json b/tests/data/devices/ke-tradfri-open-close-remote.json index a1f136dbb..ad6f36086 100644 --- a/tests/data/devices/ke-tradfri-open-close-remote.json +++ b/tests/data/devices/ke-tradfri-open-close-remote.json @@ -9,7 +9,7 @@ "name": "\u0002KE TRADFRI open/close remote", "quirk_applied": true, "quirk_class": "zhaquirks.ikea.opencloseremote.IkeaTradfriOpenCloseRemote", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4476, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/keen-home-inc-sv01-410-mp-1-1.json b/tests/data/devices/keen-home-inc-sv01-410-mp-1-1.json index 1f55d1a76..c3ade2000 100644 --- a/tests/data/devices/keen-home-inc-sv01-410-mp-1-1.json +++ b/tests/data/devices/keen-home-inc-sv01-410-mp-1-1.json @@ -9,7 +9,7 @@ "name": "Keen Home Inc SV01-410-MP-1.1", "quirk_applied": true, "quirk_class": "zhaquirks.keenhome.sv02612mp13.KeenHomeSmartVent", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4443, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/keen-home-inc-sv02-610-mp-1-3.json b/tests/data/devices/keen-home-inc-sv02-610-mp-1-3.json index dd1b4f565..93db86cc9 100644 --- a/tests/data/devices/keen-home-inc-sv02-610-mp-1-3.json +++ b/tests/data/devices/keen-home-inc-sv02-610-mp-1-3.json @@ -9,7 +9,7 @@ "name": "Keen Home Inc SV02-610-MP-1.3", "quirk_applied": true, "quirk_class": "zhaquirks.keenhome.sv02612mp13.KeenHomeSmartVent", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4443, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/keen-home-inc-sv02-612-mp-1-3.json b/tests/data/devices/keen-home-inc-sv02-612-mp-1-3.json index 60ed9e749..f74407eda 100644 --- a/tests/data/devices/keen-home-inc-sv02-612-mp-1-3.json +++ b/tests/data/devices/keen-home-inc-sv02-612-mp-1-3.json @@ -9,7 +9,7 @@ "name": "Keen Home Inc SV02-612-MP-1.3", "quirk_applied": true, "quirk_class": "zhaquirks.keenhome.sv02612mp13.KeenHomeSmartVent", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4443, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/king-of-fans-inc-hbuniversalcfremote.json b/tests/data/devices/king-of-fans-inc-hbuniversalcfremote.json index ae6f19405..21d3ead27 100644 --- a/tests/data/devices/king-of-fans-inc-hbuniversalcfremote.json +++ b/tests/data/devices/king-of-fans-inc-hbuniversalcfremote.json @@ -9,7 +9,7 @@ "name": "King Of Fans, Inc. HBUniversalCFRemote", "quirk_applied": true, "quirk_class": "zhaquirks.kof.kof_mr101z.CeilingFan", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/king-of-fans-inc-hdc52eastwindfan.json b/tests/data/devices/king-of-fans-inc-hdc52eastwindfan.json index 612fd2ad9..9226fd17a 100644 --- a/tests/data/devices/king-of-fans-inc-hdc52eastwindfan.json +++ b/tests/data/devices/king-of-fans-inc-hdc52eastwindfan.json @@ -9,7 +9,7 @@ "name": "King Of Fans, Inc. HDC52EastwindFan", "quirk_applied": true, "quirk_class": "zhaquirks.kof.kof_mr101z.CeilingFan", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/konke-3afe140103020000.json b/tests/data/devices/konke-3afe140103020000.json index 33f09a96a..5e43c7dab 100644 --- a/tests/data/devices/konke-3afe140103020000.json +++ b/tests/data/devices/konke-3afe140103020000.json @@ -9,7 +9,7 @@ "name": "Konke 3AFE140103020000", "quirk_applied": true, "quirk_class": "zhaquirks.konke.temp.KonkeTempHumidity", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/konke-3afe220103020000.json b/tests/data/devices/konke-3afe220103020000.json index e64267638..6875ef434 100644 --- a/tests/data/devices/konke-3afe220103020000.json +++ b/tests/data/devices/konke-3afe220103020000.json @@ -9,7 +9,7 @@ "name": "Konke 3AFE220103020000", "quirk_applied": true, "quirk_class": "zhaquirks.konke.temp.KonkeTempHumidity", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4712, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/konke-3afe270104020015.json b/tests/data/devices/konke-3afe270104020015.json index c8d2660f5..d513eb8ae 100644 --- a/tests/data/devices/konke-3afe270104020015.json +++ b/tests/data/devices/konke-3afe270104020015.json @@ -9,7 +9,7 @@ "name": "Konke 3AFE270104020015", "quirk_applied": true, "quirk_class": "zhaquirks.konke.magnet.KonkeMagnet", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4712, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/konke-3afe280100510001.json b/tests/data/devices/konke-3afe280100510001.json index 6de791ffb..2586ecfb6 100644 --- a/tests/data/devices/konke-3afe280100510001.json +++ b/tests/data/devices/konke-3afe280100510001.json @@ -9,7 +9,9 @@ "name": "Konke 3AFE280100510001", "quirk_applied": true, "quirk_class": "zhaquirks.konke.button.KonkeButtonRemote1", - "quirk_id": "konke.button_remote", + "exposes_features": [ + "konke.button_remote" + ], "manufacturer_code": 4712, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/konke-3afe28010402000d.json b/tests/data/devices/konke-3afe28010402000d.json index cc5612546..c6bbd3b86 100755 --- a/tests/data/devices/konke-3afe28010402000d.json +++ b/tests/data/devices/konke-3afe28010402000d.json @@ -9,7 +9,7 @@ "name": "Konke 3AFE28010402000D", "quirk_applied": true, "quirk_class": "zhaquirks.konke.motion.KonkeMotion", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4712, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/kwikset-smartcode-convert-gen1.json b/tests/data/devices/kwikset-smartcode-convert-gen1.json index 5c91bbe76..c4c6db8a3 100644 --- a/tests/data/devices/kwikset-smartcode-convert-gen1.json +++ b/tests/data/devices/kwikset-smartcode-convert-gen1.json @@ -9,7 +9,7 @@ "name": "Kwikset SMARTCODE_CONVERT_GEN1", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4242, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lds-zb-onoffplug-d0005.json b/tests/data/devices/lds-zb-onoffplug-d0005.json index 62fb59d36..56f3dcff0 100644 --- a/tests/data/devices/lds-zb-onoffplug-d0005.json +++ b/tests/data/devices/lds-zb-onoffplug-d0005.json @@ -9,7 +9,7 @@ "name": "LDS ZB-ONOFFPlug-D0005", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4456, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/lds-zbt-cctswitch-d0001.json b/tests/data/devices/lds-zbt-cctswitch-d0001.json index 08554d44b..27a91956b 100644 --- a/tests/data/devices/lds-zbt-cctswitch-d0001.json +++ b/tests/data/devices/lds-zbt-cctswitch-d0001.json @@ -9,7 +9,7 @@ "name": "LDS ZBT-CCTSwitch-D0001", "quirk_applied": true, "quirk_class": "zhaquirks.lds.cctswitch.CCTSwitch", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4456, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/ledvance-flex-rgbw.json b/tests/data/devices/ledvance-flex-rgbw.json index 5b176d135..0f4288d82 100755 --- a/tests/data/devices/ledvance-flex-rgbw.json +++ b/tests/data/devices/ledvance-flex-rgbw.json @@ -9,7 +9,7 @@ "name": "LEDVANCE FLEX RGBW", "quirk_applied": true, "quirk_class": "zhaquirks.ledvance.flexrgbw.FlexRGBW", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4489, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/ledvance-outdoor-accent-light-rgb.json b/tests/data/devices/ledvance-outdoor-accent-light-rgb.json index 2bce26f86..ab4cec1a5 100644 --- a/tests/data/devices/ledvance-outdoor-accent-light-rgb.json +++ b/tests/data/devices/ledvance-outdoor-accent-light-rgb.json @@ -9,7 +9,7 @@ "name": "LEDVANCE Outdoor Accent Light RGB", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4489, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/ledvance-plug.json b/tests/data/devices/ledvance-plug.json index a4f4b7406..0ed465122 100644 --- a/tests/data/devices/ledvance-plug.json +++ b/tests/data/devices/ledvance-plug.json @@ -9,7 +9,7 @@ "name": "LEDVANCE PLUG", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4489, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/legrand-contactor.json b/tests/data/devices/legrand-contactor.json index 538d715d6..65ce8f8d9 100644 --- a/tests/data/devices/legrand-contactor.json +++ b/tests/data/devices/legrand-contactor.json @@ -9,7 +9,7 @@ "name": " Legrand Contactor", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4129, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/legrand-dimmer-switch-w-o-neutral.json b/tests/data/devices/legrand-dimmer-switch-w-o-neutral.json index 199c709c2..2a1dbf3cb 100644 --- a/tests/data/devices/legrand-dimmer-switch-w-o-neutral.json +++ b/tests/data/devices/legrand-dimmer-switch-w-o-neutral.json @@ -9,7 +9,7 @@ "name": " Legrand Dimmer switch w/o neutral", "quirk_applied": true, "quirk_class": "zhaquirks.legrand.dimmer.DimmerWithoutNeutralAndBallast", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4129, "power_source": "Mains", "lqi": 57, diff --git a/tests/data/devices/legrand-double-gangs-remote-switch.json b/tests/data/devices/legrand-double-gangs-remote-switch.json index 127d3bccf..4729ceab5 100644 --- a/tests/data/devices/legrand-double-gangs-remote-switch.json +++ b/tests/data/devices/legrand-double-gangs-remote-switch.json @@ -9,7 +9,7 @@ "name": " Legrand Double gangs remote switch", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4129, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/legrand-light-switch-with-neutral.json b/tests/data/devices/legrand-light-switch-with-neutral.json index cb5bffdd7..21c30edf1 100644 --- a/tests/data/devices/legrand-light-switch-with-neutral.json +++ b/tests/data/devices/legrand-light-switch-with-neutral.json @@ -9,7 +9,7 @@ "name": " Legrand Light switch with neutral", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4129, "power_source": "Mains", "lqi": 220, diff --git a/tests/data/devices/level-home-b2.json b/tests/data/devices/level-home-b2.json index b0f711b02..3a0eeca66 100644 --- a/tests/data/devices/level-home-b2.json +++ b/tests/data/devices/level-home-b2.json @@ -9,7 +9,7 @@ "name": "Level Home B2", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4660, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/level-home-bolt.json b/tests/data/devices/level-home-bolt.json index dbc1de0a8..431c964ac 100644 --- a/tests/data/devices/level-home-bolt.json +++ b/tests/data/devices/level-home-bolt.json @@ -9,7 +9,7 @@ "name": "Level Home Bolt", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4660, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lk-zb-doorsensor-d0003.json b/tests/data/devices/lk-zb-doorsensor-d0003.json index 43366628f..daaa1cad8 100755 --- a/tests/data/devices/lk-zb-doorsensor-d0003.json +++ b/tests/data/devices/lk-zb-doorsensor-d0003.json @@ -9,7 +9,7 @@ "name": "lk ZB-DoorSensor-D0003", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4456, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lk-zbt-dimswitch-d0001.json b/tests/data/devices/lk-zbt-dimswitch-d0001.json index b05d2adf6..e2bcc2934 100644 --- a/tests/data/devices/lk-zbt-dimswitch-d0001.json +++ b/tests/data/devices/lk-zbt-dimswitch-d0001.json @@ -9,7 +9,7 @@ "name": "lk ZBT-DIMSwitch-D0001", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4456, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lk-zbt-onoffplug-d0001.json b/tests/data/devices/lk-zbt-onoffplug-d0001.json index 96c3026cc..6a107267c 100644 --- a/tests/data/devices/lk-zbt-onoffplug-d0001.json +++ b/tests/data/devices/lk-zbt-onoffplug-d0001.json @@ -9,7 +9,7 @@ "name": "lk ZBT-OnOffPlug-D0001", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4456, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-airmonitor-acn01.json b/tests/data/devices/lumi-lumi-airmonitor-acn01.json index 12d7631a3..aace21816 100644 --- a/tests/data/devices/lumi-lumi-airmonitor-acn01.json +++ b/tests/data/devices/lumi-lumi-airmonitor-acn01.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.airmonitor.acn01", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.tvoc.TVOCMonitor", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-airrtc-agl001.json b/tests/data/devices/lumi-lumi-airrtc-agl001.json index 4ffde35dc..eab8620e9 100644 --- a/tests/data/devices/lumi-lumi-airrtc-agl001.json +++ b/tests/data/devices/lumi-lumi-airrtc-agl001.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.airrtc.agl001", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-curtain-acn002.json b/tests/data/devices/lumi-lumi-curtain-acn002.json index 3c2194a47..0af230c8e 100644 --- a/tests/data/devices/lumi-lumi-curtain-acn002.json +++ b/tests/data/devices/lumi-lumi-curtain-acn002.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.curtain.acn002", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-curtain-agl001.json b/tests/data/devices/lumi-lumi-curtain-agl001.json index eb77e1095..cbffd68ab 100644 --- a/tests/data/devices/lumi-lumi-curtain-agl001.json +++ b/tests/data/devices/lumi-lumi-curtain-agl001.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.curtain.agl001", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.driver_curtain_e1.DriverE1", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-flood-acn001.json b/tests/data/devices/lumi-lumi-flood-acn001.json index 315896252..35b008965 100644 --- a/tests/data/devices/lumi-lumi-flood-acn001.json +++ b/tests/data/devices/lumi-lumi-flood-acn001.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.flood.acn001", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.water_acn001.WaterE1", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-flood-agl02.json b/tests/data/devices/lumi-lumi-flood-agl02.json index f9b896690..09f097cb9 100644 --- a/tests/data/devices/lumi-lumi-flood-agl02.json +++ b/tests/data/devices/lumi-lumi-flood-agl02.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.flood.agl02", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.water_agl02.WaterT1", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-light-aqcn02.json b/tests/data/devices/lumi-lumi-light-aqcn02.json index f35db699c..766f4e71f 100644 --- a/tests/data/devices/lumi-lumi-light-aqcn02.json +++ b/tests/data/devices/lumi-lumi-light-aqcn02.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.light.aqcn02", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-magnet-ac01.json b/tests/data/devices/lumi-lumi-magnet-ac01.json index f1a0b21e4..6c15bf684 100644 --- a/tests/data/devices/lumi-lumi-magnet-ac01.json +++ b/tests/data/devices/lumi-lumi-magnet-ac01.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.magnet.ac01", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.magnet_ac01.LumiMagnetAC01", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-magnet-acn001.json b/tests/data/devices/lumi-lumi-magnet-acn001.json index cac59cde2..b34ed5fd3 100644 --- a/tests/data/devices/lumi-lumi-magnet-acn001.json +++ b/tests/data/devices/lumi-lumi-magnet-acn001.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.magnet.acn001", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.magnet_acn001.MagnetE1", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-magnet-agl02.json b/tests/data/devices/lumi-lumi-magnet-agl02.json index fcf0eb6b5..dcd78f895 100644 --- a/tests/data/devices/lumi-lumi-magnet-agl02.json +++ b/tests/data/devices/lumi-lumi-magnet-agl02.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.magnet.agl02", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.magnet_agl02.MagnetT1", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": 255, diff --git a/tests/data/devices/lumi-lumi-motion-ac02.json b/tests/data/devices/lumi-lumi-motion-ac02.json index 613683c53..b0734fb42 100755 --- a/tests/data/devices/lumi-lumi-motion-ac02.json +++ b/tests/data/devices/lumi-lumi-motion-ac02.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.motion.ac02", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.motion_ac02.LumiMotionAC02", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-motion-agl02.json b/tests/data/devices/lumi-lumi-motion-agl02.json index 6ab8d41a9..1f2d67ad9 100644 --- a/tests/data/devices/lumi-lumi-motion-agl02.json +++ b/tests/data/devices/lumi-lumi-motion-agl02.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.motion.agl02", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.motion_agl02.MotionT1", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-motion-agl04.json b/tests/data/devices/lumi-lumi-motion-agl04.json index 65928ff7e..be70be7c9 100644 --- a/tests/data/devices/lumi-lumi-motion-agl04.json +++ b/tests/data/devices/lumi-lumi-motion-agl04.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.motion.agl04", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.motion_agl04.LumiLumiMotionAgl04", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-plug-maus01.json b/tests/data/devices/lumi-lumi-plug-maus01.json index 7265190b6..27b226e15 100644 --- a/tests/data/devices/lumi-lumi-plug-maus01.json +++ b/tests/data/devices/lumi-lumi-plug-maus01.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.plug.maus01", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.plug_maus01.Plug", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-relay-c2acn01.json b/tests/data/devices/lumi-lumi-relay-c2acn01.json index 3001bce36..99fed870c 100644 --- a/tests/data/devices/lumi-lumi-relay-c2acn01.json +++ b/tests/data/devices/lumi-lumi-relay-c2acn01.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.relay.c2acn01", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.relay_c2acn01.Relay", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4151, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-remote-b286opcn01.json b/tests/data/devices/lumi-lumi-remote-b286opcn01.json index 49f002dd8..b47ff2a23 100644 --- a/tests/data/devices/lumi-lumi-remote-b286opcn01.json +++ b/tests/data/devices/lumi-lumi-remote-b286opcn01.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.remote.b286opcn01", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.opple_remote.RemoteB286OPCN01V4", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-remote-b486opcn01.json b/tests/data/devices/lumi-lumi-remote-b486opcn01.json index 651ff1ea9..9d48aeca3 100755 --- a/tests/data/devices/lumi-lumi-remote-b486opcn01.json +++ b/tests/data/devices/lumi-lumi-remote-b486opcn01.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.remote.b486opcn01", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.opple_remote.RemoteB486OPCN01V2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-remote-b686opcn01.json b/tests/data/devices/lumi-lumi-remote-b686opcn01.json index dc8c6ef11..35811c9f5 100644 --- a/tests/data/devices/lumi-lumi-remote-b686opcn01.json +++ b/tests/data/devices/lumi-lumi-remote-b686opcn01.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.remote.b686opcn01", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.opple_remote.RemoteB686OPCN01V3", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-remote-cagl02.json b/tests/data/devices/lumi-lumi-remote-cagl02.json index 52a27c709..abf43354c 100644 --- a/tests/data/devices/lumi-lumi-remote-cagl02.json +++ b/tests/data/devices/lumi-lumi-remote-cagl02.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.remote.cagl02", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.cube_aqgl01.CubeCAGL02", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-sen-ill-mgl01.json b/tests/data/devices/lumi-lumi-sen-ill-mgl01.json index 951fe8191..bdef14698 100644 --- a/tests/data/devices/lumi-lumi-sen-ill-mgl01.json +++ b/tests/data/devices/lumi-lumi-sen-ill-mgl01.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.sen_ill.mgl01", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.illumination.Illumination", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-sensor-86sw2.json b/tests/data/devices/lumi-lumi-sensor-86sw2.json index 4f17f0a36..052d50b38 100644 --- a/tests/data/devices/lumi-lumi-sensor-86sw2.json +++ b/tests/data/devices/lumi-lumi-sensor-86sw2.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.sensor_86sw2", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.remote_b286acn01.RemoteB286ACN01", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4151, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-sensor-ht-agl02.json b/tests/data/devices/lumi-lumi-sensor-ht-agl02.json index b8e00cb78..e738bdf70 100644 --- a/tests/data/devices/lumi-lumi-sensor-ht-agl02.json +++ b/tests/data/devices/lumi-lumi-sensor-ht-agl02.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.sensor_ht.agl02", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.sensor_ht_agl02.LumiSensorHtAgl02", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-sensor-magnet-aq2.json b/tests/data/devices/lumi-lumi-sensor-magnet-aq2.json index bdde62c46..788b7cbe8 100644 --- a/tests/data/devices/lumi-lumi-sensor-magnet-aq2.json +++ b/tests/data/devices/lumi-lumi-sensor-magnet-aq2.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.sensor_magnet.aq2", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.magnet_aq2.MagnetAQ2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4151, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-sensor-motion-aq2.json b/tests/data/devices/lumi-lumi-sensor-motion-aq2.json index 9abe44a4e..d88c491bf 100644 --- a/tests/data/devices/lumi-lumi-sensor-motion-aq2.json +++ b/tests/data/devices/lumi-lumi-sensor-motion-aq2.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.sensor_motion.aq2", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.motion_aq2.MotionAQ2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4151, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-sensor-smoke-acn03.json b/tests/data/devices/lumi-lumi-sensor-smoke-acn03.json index 53eeba710..0c96a4649 100644 --- a/tests/data/devices/lumi-lumi-sensor-smoke-acn03.json +++ b/tests/data/devices/lumi-lumi-sensor-smoke-acn03.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.sensor_smoke.acn03", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.smoke.LumiSensorSmokeAcn03", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-sensor-smoke.json b/tests/data/devices/lumi-lumi-sensor-smoke.json index 4f850b598..4594de7cd 100644 --- a/tests/data/devices/lumi-lumi-sensor-smoke.json +++ b/tests/data/devices/lumi-lumi-sensor-smoke.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.sensor_smoke", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.mija.smoke.MijiaHoneywellSmokeDetectorSensor", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4151, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-sensor-switch-aq2.json b/tests/data/devices/lumi-lumi-sensor-switch-aq2.json index dc0fddd9d..6def341c2 100644 --- a/tests/data/devices/lumi-lumi-sensor-switch-aq2.json +++ b/tests/data/devices/lumi-lumi-sensor-switch-aq2.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.sensor_switch.aq2", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.switch_aq2.SwitchAQ2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4151, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-sensor-switch-aq3.json b/tests/data/devices/lumi-lumi-sensor-switch-aq3.json index 0c2a76254..d2e0836e8 100644 --- a/tests/data/devices/lumi-lumi-sensor-switch-aq3.json +++ b/tests/data/devices/lumi-lumi-sensor-switch-aq3.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.sensor_switch.aq3", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.sensor_switch_aq3.SwitchAQ3", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4151, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-sensor-switch.json b/tests/data/devices/lumi-lumi-sensor-switch.json index 31cbfb544..393e85ef4 100644 --- a/tests/data/devices/lumi-lumi-sensor-switch.json +++ b/tests/data/devices/lumi-lumi-sensor-switch.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.sensor_switch", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.mija.sensor_switch.MijaButton", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4151, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-switch-b1laus01.json b/tests/data/devices/lumi-lumi-switch-b1laus01.json index 5a1e3282f..e2afbcd7a 100755 --- a/tests/data/devices/lumi-lumi-switch-b1laus01.json +++ b/tests/data/devices/lumi-lumi-switch-b1laus01.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.switch.b1laus01", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-switch-b1naus01.json b/tests/data/devices/lumi-lumi-switch-b1naus01.json index f56fd69a5..1325867ec 100755 --- a/tests/data/devices/lumi-lumi-switch-b1naus01.json +++ b/tests/data/devices/lumi-lumi-switch-b1naus01.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.switch.b1naus01", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-switch-l1aeu1.json b/tests/data/devices/lumi-lumi-switch-l1aeu1.json index fe240dbaf..99e450279 100644 --- a/tests/data/devices/lumi-lumi-switch-l1aeu1.json +++ b/tests/data/devices/lumi-lumi-switch-l1aeu1.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.switch.l1aeu1", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": 240, diff --git a/tests/data/devices/lumi-lumi-switch-l2aeu1.json b/tests/data/devices/lumi-lumi-switch-l2aeu1.json index 5778ddc87..88750c13e 100644 --- a/tests/data/devices/lumi-lumi-switch-l2aeu1.json +++ b/tests/data/devices/lumi-lumi-switch-l2aeu1.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.switch.l2aeu1", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": 220, diff --git a/tests/data/devices/lumi-lumi-switch-n0agl1.json b/tests/data/devices/lumi-lumi-switch-n0agl1.json index 33ced963a..7808ab9b0 100644 --- a/tests/data/devices/lumi-lumi-switch-n0agl1.json +++ b/tests/data/devices/lumi-lumi-switch-n0agl1.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.switch.n0agl1", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.switch_t1.SwitchT1Alt3", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Mains", "lqi": 255, diff --git a/tests/data/devices/lumi-lumi-vibration-agl01.json b/tests/data/devices/lumi-lumi-vibration-agl01.json index 422a6fd1c..f64e4b14d 100644 --- a/tests/data/devices/lumi-lumi-vibration-agl01.json +++ b/tests/data/devices/lumi-lumi-vibration-agl01.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.vibration.agl01", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4447, "power_source": "Battery or Unknown", "lqi": 108, diff --git a/tests/data/devices/lumi-lumi-vibration-aq1.json b/tests/data/devices/lumi-lumi-vibration-aq1.json index 1dc13394a..e5163fe1d 100644 --- a/tests/data/devices/lumi-lumi-vibration-aq1.json +++ b/tests/data/devices/lumi-lumi-vibration-aq1.json @@ -9,7 +9,9 @@ "name": "LUMI lumi.vibration.aq1", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.vibration_aq1.VibrationAQ1", - "quirk_id": "xiaomi.aqara_vibration_aq1", + "exposes_features": [ + "xiaomi.aqara_vibration_aq1" + ], "manufacturer_code": 4151, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lumi-lumi-weather.json b/tests/data/devices/lumi-lumi-weather.json index 31f0dfbd3..db4e18e86 100755 --- a/tests/data/devices/lumi-lumi-weather.json +++ b/tests/data/devices/lumi-lumi-weather.json @@ -9,7 +9,7 @@ "name": "LUMI lumi.weather", "quirk_applied": true, "quirk_class": "zhaquirks.xiaomi.aqara.weather.Weather", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4151, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lutron-lzl4bwhl01-remote.json b/tests/data/devices/lutron-lzl4bwhl01-remote.json index c54ea1a3a..10954975c 100644 --- a/tests/data/devices/lutron-lzl4bwhl01-remote.json +++ b/tests/data/devices/lutron-lzl4bwhl01-remote.json @@ -9,7 +9,7 @@ "name": " Lutron LZL4BWHL01 Remote", "quirk_applied": true, "quirk_class": "zhaquirks.lutron.lzl4bwhl01remote.LutronLZL4BWHL01Remote", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4420, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/lutron-z3-1brl.json b/tests/data/devices/lutron-z3-1brl.json index 112ed005d..dcdf3ec0f 100644 --- a/tests/data/devices/lutron-z3-1brl.json +++ b/tests/data/devices/lutron-z3-1brl.json @@ -9,7 +9,7 @@ "name": "Lutron Z3-1BRL", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4420, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/mli-tint-extendedcolor.json b/tests/data/devices/mli-tint-extendedcolor.json index 8a2d89de2..dad3f9dee 100644 --- a/tests/data/devices/mli-tint-extendedcolor.json +++ b/tests/data/devices/mli-tint-extendedcolor.json @@ -9,7 +9,7 @@ "name": "MLI tint-ExtendedColor", "quirk_applied": true, "quirk_class": "zhaquirks.mli.tintE14rgbcct.TintRGBCCTLight", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4635, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/mli-zbt-remote-all-rgbw.json b/tests/data/devices/mli-zbt-remote-all-rgbw.json index 5aee42147..95042a55e 100644 --- a/tests/data/devices/mli-zbt-remote-all-rgbw.json +++ b/tests/data/devices/mli-zbt-remote-all-rgbw.json @@ -9,7 +9,7 @@ "name": "MLI ZBT-Remote-ALL-RGBW", "quirk_applied": true, "quirk_class": "zhaquirks.mli.tint.TintRemote", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4635, "power_source": "Battery or Unknown", "lqi": 255, diff --git a/tests/data/devices/nabu-casa-ha-connect-zbt-1.json b/tests/data/devices/nabu-casa-ha-connect-zbt-1.json index 1bf9b39d9..cc389d40e 100644 --- a/tests/data/devices/nabu-casa-ha-connect-zbt-1.json +++ b/tests/data/devices/nabu-casa-ha-connect-zbt-1.json @@ -9,7 +9,7 @@ "name": "HA Connect ZBT-1", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 43981, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/namron-as-4512785.json b/tests/data/devices/namron-as-4512785.json index 8a1257037..a7c56034b 100644 --- a/tests/data/devices/namron-as-4512785.json +++ b/tests/data/devices/namron-as-4512785.json @@ -9,7 +9,7 @@ "name": "Namron AS 4512785", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4714, "power_source": "Mains", "lqi": 255, diff --git a/tests/data/devices/neuhaus-lighting-group-nlg-remote.json b/tests/data/devices/neuhaus-lighting-group-nlg-remote.json index 30dded544..dff0f1b9b 100644 --- a/tests/data/devices/neuhaus-lighting-group-nlg-remote.json +++ b/tests/data/devices/neuhaus-lighting-group-nlg-remote.json @@ -9,7 +9,7 @@ "name": "Neuhaus Lighting Group NLG-remote", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4151, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/nodon-sin-4-rs-20.json b/tests/data/devices/nodon-sin-4-rs-20.json index 340f9c6fd..83e601266 100644 --- a/tests/data/devices/nodon-sin-4-rs-20.json +++ b/tests/data/devices/nodon-sin-4-rs-20.json @@ -9,7 +9,7 @@ "name": "NodOn SIN-4-RS-20", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4747, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/osram-switch-4x-lightify.json b/tests/data/devices/osram-switch-4x-lightify.json index 0946492be..baf790ac1 100644 --- a/tests/data/devices/osram-switch-4x-lightify.json +++ b/tests/data/devices/osram-switch-4x-lightify.json @@ -9,7 +9,7 @@ "name": "OSRAM Switch 4x-LIGHTIFY", "quirk_applied": true, "quirk_class": "zhaquirks.osram.lightifyx4.LightifyX4", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4364, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/ou-rui-bo-cf31218e11c547179c9c9ade6a492799.json b/tests/data/devices/ou-rui-bo-cf31218e11c547179c9c9ade6a492799.json index cccba29f4..460f8c0cd 100644 --- a/tests/data/devices/ou-rui-bo-cf31218e11c547179c9c9ade6a492799.json +++ b/tests/data/devices/ou-rui-bo-cf31218e11c547179c9c9ade6a492799.json @@ -9,7 +9,7 @@ "name": "\u6b27\u745e\u535a cf31218e11c547179c9c9ade6a492799", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/philips-7602031u7.json b/tests/data/devices/philips-7602031u7.json index 1cb6751c9..eb4927eb2 100644 --- a/tests/data/devices/philips-7602031u7.json +++ b/tests/data/devices/philips-7602031u7.json @@ -9,7 +9,7 @@ "name": "Philips Hue Go", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/philips-lct014.json b/tests/data/devices/philips-lct014.json index dd84cd9f0..033816c3b 100644 --- a/tests/data/devices/philips-lct014.json +++ b/tests/data/devices/philips-lct014.json @@ -9,7 +9,7 @@ "name": "Philips LCT014", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/philips-llc020.json b/tests/data/devices/philips-llc020.json index dfd40f297..487e82dfa 100644 --- a/tests/data/devices/philips-llc020.json +++ b/tests/data/devices/philips-llc020.json @@ -9,7 +9,7 @@ "name": "Philips LLC020", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/philips-lst002.json b/tests/data/devices/philips-lst002.json index aaab793bf..02eb19e8d 100644 --- a/tests/data/devices/philips-lst002.json +++ b/tests/data/devices/philips-lst002.json @@ -9,7 +9,7 @@ "name": "Philips LST002", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/philips-rom001.json b/tests/data/devices/philips-rom001.json index 0539ba686..a8f1ffd31 100644 --- a/tests/data/devices/philips-rom001.json +++ b/tests/data/devices/philips-rom001.json @@ -9,7 +9,7 @@ "name": "Philips ROM001", "quirk_applied": true, "quirk_class": "zhaquirks.philips.rom001.PhilipsROM001", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/philips-rwl020.json b/tests/data/devices/philips-rwl020.json index f282c708b..a8f1bfc02 100644 --- a/tests/data/devices/philips-rwl020.json +++ b/tests/data/devices/philips-rwl020.json @@ -9,7 +9,7 @@ "name": "Philips RWL020", "quirk_applied": true, "quirk_class": "zhaquirks.philips.rwlfirstgen.PhilipsRWLFirstGen", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/philips-sml001.json b/tests/data/devices/philips-sml001.json index 9527321ed..e56871c74 100644 --- a/tests/data/devices/philips-sml001.json +++ b/tests/data/devices/philips-sml001.json @@ -9,7 +9,7 @@ "name": "Philips SML001", "quirk_applied": true, "quirk_class": "zhaquirks.philips.motion.PhilipsMotion", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/plaid-systems-ps-sprzms-slp3.json b/tests/data/devices/plaid-systems-ps-sprzms-slp3.json index 403ec93aa..0a44f1d7b 100644 --- a/tests/data/devices/plaid-systems-ps-sprzms-slp3.json +++ b/tests/data/devices/plaid-systems-ps-sprzms-slp3.json @@ -9,7 +9,7 @@ "name": "PLAID SYSTEMS PS-SPRZMS-SLP3", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/samjin-button.json b/tests/data/devices/samjin-button.json index 3501b589f..69cf65cc1 100644 --- a/tests/data/devices/samjin-button.json +++ b/tests/data/devices/samjin-button.json @@ -9,7 +9,7 @@ "name": "Samjin button", "quirk_applied": true, "quirk_class": "zhaquirks.samjin.button.SamjinButton", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4673, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/samjin-multi.json b/tests/data/devices/samjin-multi.json index e639bb1db..cf6904dc4 100644 --- a/tests/data/devices/samjin-multi.json +++ b/tests/data/devices/samjin-multi.json @@ -9,7 +9,7 @@ "name": "Samjin multi", "quirk_applied": true, "quirk_class": "zhaquirks.smartthings.multi.SmartthingsMultiPurposeSensor", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4673, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/schneider-electric-evsckt-outlet-1.json b/tests/data/devices/schneider-electric-evsckt-outlet-1.json index c13921aee..520820295 100644 --- a/tests/data/devices/schneider-electric-evsckt-outlet-1.json +++ b/tests/data/devices/schneider-electric-evsckt-outlet-1.json @@ -9,7 +9,7 @@ "name": "Schneider Electric EVSCKT/OUTLET/1", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4190, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/schneider-electric-puck-shutter-1.json b/tests/data/devices/schneider-electric-puck-shutter-1.json index 7a0c5086f..44d1aa2ab 100644 --- a/tests/data/devices/schneider-electric-puck-shutter-1.json +++ b/tests/data/devices/schneider-electric-puck-shutter-1.json @@ -9,7 +9,7 @@ "name": "Schneider Electric PUCK/SHUTTER/1", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4190, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/schneider-electric-s520619.json b/tests/data/devices/schneider-electric-s520619.json index db78b6c6a..3e4c7788a 100644 --- a/tests/data/devices/schneider-electric-s520619.json +++ b/tests/data/devices/schneider-electric-s520619.json @@ -9,7 +9,7 @@ "name": "Schneider Electric S520619", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4190, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/securifi-ltd-unk-model.json b/tests/data/devices/securifi-ltd-unk-model.json index 926bffe56..a0377c55f 100644 --- a/tests/data/devices/securifi-ltd-unk-model.json +++ b/tests/data/devices/securifi-ltd-unk-model.json @@ -9,7 +9,7 @@ "name": "Securifi Ltd. unk_model", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/sengled-e11-g13.json b/tests/data/devices/sengled-e11-g13.json index 0b301b25c..5d122a002 100644 --- a/tests/data/devices/sengled-e11-g13.json +++ b/tests/data/devices/sengled-e11-g13.json @@ -9,7 +9,7 @@ "name": "sengled E11-G13", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4448, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/sengled-e12-n14.json b/tests/data/devices/sengled-e12-n14.json index 23bc39e61..d0fa25362 100644 --- a/tests/data/devices/sengled-e12-n14.json +++ b/tests/data/devices/sengled-e12-n14.json @@ -9,7 +9,7 @@ "name": "sengled E12-N14", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4448, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/sengled-e12-n1e.json b/tests/data/devices/sengled-e12-n1e.json index 09a7d512a..bef693964 100644 --- a/tests/data/devices/sengled-e12-n1e.json +++ b/tests/data/devices/sengled-e12-n1e.json @@ -9,7 +9,7 @@ "name": "sengled E12-N1E", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4448, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/sengled-e1c-nb6.json b/tests/data/devices/sengled-e1c-nb6.json index 01963ddc6..667cac2c6 100644 --- a/tests/data/devices/sengled-e1c-nb6.json +++ b/tests/data/devices/sengled-e1c-nb6.json @@ -9,7 +9,7 @@ "name": "sengled E1C-NB6", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4448, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/sengled-e1c-nb7.json b/tests/data/devices/sengled-e1c-nb7.json index d9db2bd19..8cc465ee3 100644 --- a/tests/data/devices/sengled-e1c-nb7.json +++ b/tests/data/devices/sengled-e1c-nb7.json @@ -9,7 +9,7 @@ "name": "sengled E1C-NB7", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4448, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/sengled-e1f-n9g.json b/tests/data/devices/sengled-e1f-n9g.json index 67a51a0fe..5ae8c5e55 100644 --- a/tests/data/devices/sengled-e1f-n9g.json +++ b/tests/data/devices/sengled-e1f-n9g.json @@ -9,7 +9,7 @@ "name": "sengled E1F-N9G", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4448, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/sengled-e1g-g8e.json b/tests/data/devices/sengled-e1g-g8e.json index c6e41c1ab..25aa3fb00 100755 --- a/tests/data/devices/sengled-e1g-g8e.json +++ b/tests/data/devices/sengled-e1g-g8e.json @@ -9,7 +9,7 @@ "name": "sengled E1G-G8E", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4448, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/sengled-e21-n1ea.json b/tests/data/devices/sengled-e21-n1ea.json index da3fed973..fa1c9175a 100644 --- a/tests/data/devices/sengled-e21-n1ea.json +++ b/tests/data/devices/sengled-e21-n1ea.json @@ -9,7 +9,7 @@ "name": "sengled E21-N1EA", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4448, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/sengled-z01-a19nae26.json b/tests/data/devices/sengled-z01-a19nae26.json index 71b1fe033..c0a2e0720 100644 --- a/tests/data/devices/sengled-z01-a19nae26.json +++ b/tests/data/devices/sengled-z01-a19nae26.json @@ -9,7 +9,7 @@ "name": "sengled Z01-A19NAE26", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4448, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/shelly-mini1pm.json b/tests/data/devices/shelly-mini1pm.json index 2786915fd..6f272af32 100644 --- a/tests/data/devices/shelly-mini1pm.json +++ b/tests/data/devices/shelly-mini1pm.json @@ -9,7 +9,7 @@ "name": "Shelly Mini1PM", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 5264, "power_source": "Mains", "lqi": 153, diff --git a/tests/data/devices/signify-netherlands-b-v-lca001.json b/tests/data/devices/signify-netherlands-b-v-lca001.json index d33c3af82..9135953fc 100644 --- a/tests/data/devices/signify-netherlands-b-v-lca001.json +++ b/tests/data/devices/signify-netherlands-b-v-lca001.json @@ -9,7 +9,7 @@ "name": "Signify Netherlands B.V. LCA001", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/signify-netherlands-b-v-lca005.json b/tests/data/devices/signify-netherlands-b-v-lca005.json index 920525c8d..4862bbffb 100644 --- a/tests/data/devices/signify-netherlands-b-v-lca005.json +++ b/tests/data/devices/signify-netherlands-b-v-lca005.json @@ -9,7 +9,7 @@ "name": "Signify Netherlands B.V. LCA005", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/signify-netherlands-b-v-lca007.json b/tests/data/devices/signify-netherlands-b-v-lca007.json index 27aaf324e..6a475d36b 100644 --- a/tests/data/devices/signify-netherlands-b-v-lca007.json +++ b/tests/data/devices/signify-netherlands-b-v-lca007.json @@ -9,7 +9,7 @@ "name": "Signify Netherlands B.V. LCA007", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/signify-netherlands-b-v-lcb001.json b/tests/data/devices/signify-netherlands-b-v-lcb001.json index 6da425822..1b8deadf9 100644 --- a/tests/data/devices/signify-netherlands-b-v-lcb001.json +++ b/tests/data/devices/signify-netherlands-b-v-lcb001.json @@ -9,7 +9,7 @@ "name": "Signify Netherlands B.V. LCB001", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/signify-netherlands-b-v-lcb002.json b/tests/data/devices/signify-netherlands-b-v-lcb002.json index 45543f9df..2532a29a7 100755 --- a/tests/data/devices/signify-netherlands-b-v-lcb002.json +++ b/tests/data/devices/signify-netherlands-b-v-lcb002.json @@ -9,7 +9,7 @@ "name": "Signify Netherlands B.V. LCB002", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/signify-netherlands-b-v-lce001.json b/tests/data/devices/signify-netherlands-b-v-lce001.json index dd6c096c6..8aa6bc57b 100644 --- a/tests/data/devices/signify-netherlands-b-v-lce001.json +++ b/tests/data/devices/signify-netherlands-b-v-lce001.json @@ -9,7 +9,7 @@ "name": "Signify Netherlands B.V. LCE001", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/signify-netherlands-b-v-lcx004.json b/tests/data/devices/signify-netherlands-b-v-lcx004.json index 9175b7a33..a5210e0d9 100644 --- a/tests/data/devices/signify-netherlands-b-v-lcx004.json +++ b/tests/data/devices/signify-netherlands-b-v-lcx004.json @@ -9,7 +9,7 @@ "name": "Signify Netherlands B.V. LCX004", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/signify-netherlands-b-v-lta010.json b/tests/data/devices/signify-netherlands-b-v-lta010.json index e1d4eaf0c..fa88f31f3 100644 --- a/tests/data/devices/signify-netherlands-b-v-lta010.json +++ b/tests/data/devices/signify-netherlands-b-v-lta010.json @@ -9,7 +9,7 @@ "name": "Signify Netherlands B.V. LTA010", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/signify-netherlands-b-v-ltb003.json b/tests/data/devices/signify-netherlands-b-v-ltb003.json index 1803dbc58..8a7d506fe 100755 --- a/tests/data/devices/signify-netherlands-b-v-ltb003.json +++ b/tests/data/devices/signify-netherlands-b-v-ltb003.json @@ -9,7 +9,7 @@ "name": "Philips Hue White Ambiance BR30 E26", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/signify-netherlands-b-v-lwa003.json b/tests/data/devices/signify-netherlands-b-v-lwa003.json index 59aee6ef3..40c12cde3 100755 --- a/tests/data/devices/signify-netherlands-b-v-lwa003.json +++ b/tests/data/devices/signify-netherlands-b-v-lwa003.json @@ -9,7 +9,7 @@ "name": "Signify Netherlands B.V. LWA003", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/signify-netherlands-b-v-rdm001.json b/tests/data/devices/signify-netherlands-b-v-rdm001.json index f1e4ffdfa..04ba86e42 100644 --- a/tests/data/devices/signify-netherlands-b-v-rdm001.json +++ b/tests/data/devices/signify-netherlands-b-v-rdm001.json @@ -9,7 +9,7 @@ "name": "Signify Netherlands B.V. RDM001", "quirk_applied": true, "quirk_class": "zhaquirks.philips.wall_switch.PhilipsWallSwitch", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/signify-netherlands-b-v-rdm002.json b/tests/data/devices/signify-netherlands-b-v-rdm002.json index b528f0e2e..57b4e0d36 100644 --- a/tests/data/devices/signify-netherlands-b-v-rdm002.json +++ b/tests/data/devices/signify-netherlands-b-v-rdm002.json @@ -9,7 +9,7 @@ "name": "Signify Netherlands B.V. RDM002", "quirk_applied": true, "quirk_class": "zhaquirks.philips.rdm002.PhilipsRDM002", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/signify-netherlands-b-v-rwl022.json b/tests/data/devices/signify-netherlands-b-v-rwl022.json index 0cb122950..9a7cf3923 100644 --- a/tests/data/devices/signify-netherlands-b-v-rwl022.json +++ b/tests/data/devices/signify-netherlands-b-v-rwl022.json @@ -9,7 +9,7 @@ "name": "Signify Netherlands B.V. RWL022", "quirk_applied": true, "quirk_class": "zhaquirks.philips.rwl022.PhilipsRWL022", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/signify-netherlands-b-v-sml003.json b/tests/data/devices/signify-netherlands-b-v-sml003.json index 0596e1965..7ebee30f5 100644 --- a/tests/data/devices/signify-netherlands-b-v-sml003.json +++ b/tests/data/devices/signify-netherlands-b-v-sml003.json @@ -9,7 +9,7 @@ "name": "Signify Netherlands B.V. SML003", "quirk_applied": true, "quirk_class": "zhaquirks.philips.motion.SignifyMotion", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Battery or Unknown", "lqi": 61, diff --git a/tests/data/devices/signify-netherlands-b-v-sml004.json b/tests/data/devices/signify-netherlands-b-v-sml004.json index 38ad1c73c..c75cd4334 100644 --- a/tests/data/devices/signify-netherlands-b-v-sml004.json +++ b/tests/data/devices/signify-netherlands-b-v-sml004.json @@ -9,7 +9,7 @@ "name": "Signify Netherlands B.V. SML004", "quirk_applied": true, "quirk_class": "zhaquirks.philips.motion.SignifyMotion", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/sinope-technologies-va4220zb.json b/tests/data/devices/sinope-technologies-va4220zb.json index 7ff1b7cf0..291647c23 100644 --- a/tests/data/devices/sinope-technologies-va4220zb.json +++ b/tests/data/devices/sinope-technologies-va4220zb.json @@ -9,7 +9,7 @@ "name": "Sinope Technologies VA4220ZB", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4508, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/smartthings-tagv4.json b/tests/data/devices/smartthings-tagv4.json index a90e16170..eab31decc 100644 --- a/tests/data/devices/smartthings-tagv4.json +++ b/tests/data/devices/smartthings-tagv4.json @@ -9,7 +9,7 @@ "name": "SmartThings tagv4", "quirk_applied": true, "quirk_class": "zhaquirks.smartthings.tag_v4.SmartThingsTagV4", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4362, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/smartwings-wm25-l-z.json b/tests/data/devices/smartwings-wm25-l-z.json index ec9c0ab32..5d055372d 100644 --- a/tests/data/devices/smartwings-wm25-l-z.json +++ b/tests/data/devices/smartwings-wm25-l-z.json @@ -9,7 +9,7 @@ "name": "Smartwings WM25/L-Z", "quirk_applied": true, "quirk_class": "zhaquirks.smartwings.wm25lz.WM25LBlinds", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/somfy-situo-4-zigbee.json b/tests/data/devices/somfy-situo-4-zigbee.json index e8bc73f41..7aa9f9b93 100644 --- a/tests/data/devices/somfy-situo-4-zigbee.json +++ b/tests/data/devices/somfy-situo-4-zigbee.json @@ -9,7 +9,7 @@ "name": "SOMFY Situo 4 Zigbee", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4640, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/somfy-sonesse-28-wf-li-ion-roller.json b/tests/data/devices/somfy-sonesse-28-wf-li-ion-roller.json index 3b4135711..4b131ab14 100644 --- a/tests/data/devices/somfy-sonesse-28-wf-li-ion-roller.json +++ b/tests/data/devices/somfy-sonesse-28-wf-li-ion-roller.json @@ -9,7 +9,7 @@ "name": "SOMFY Sonesse 28 WF Li-Ion Roller", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4640, "power_source": "Battery or Unknown", "lqi": 176, diff --git a/tests/data/devices/somfy-ysia-5-hp-zigbee.json b/tests/data/devices/somfy-ysia-5-hp-zigbee.json index 51846b0a5..52022c60e 100644 --- a/tests/data/devices/somfy-ysia-5-hp-zigbee.json +++ b/tests/data/devices/somfy-ysia-5-hp-zigbee.json @@ -9,7 +9,7 @@ "name": "SOMFY Ysia 5 HP Zigbee", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4640, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/sonoff-01minizb.json b/tests/data/devices/sonoff-01minizb.json index 2bf6e3de6..4aea51e20 100644 --- a/tests/data/devices/sonoff-01minizb.json +++ b/tests/data/devices/sonoff-01minizb.json @@ -9,7 +9,7 @@ "name": "SONOFF 01MINIZB", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/sonoff-basiczbr3.json b/tests/data/devices/sonoff-basiczbr3.json index 2bbdac24f..d28d80d98 100644 --- a/tests/data/devices/sonoff-basiczbr3.json +++ b/tests/data/devices/sonoff-basiczbr3.json @@ -9,7 +9,7 @@ "name": "SONOFF BASICZBR3", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Mains", "lqi": 172, diff --git a/tests/data/devices/sonoff-dongle-e-r.json b/tests/data/devices/sonoff-dongle-e-r.json index 14e297bc5..508f90874 100644 --- a/tests/data/devices/sonoff-dongle-e-r.json +++ b/tests/data/devices/sonoff-dongle-e-r.json @@ -9,7 +9,7 @@ "name": "SONOFF DONGLE-E_R", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Mains", "lqi": 212, diff --git a/tests/data/devices/sonoff-mini-zbrbs.json b/tests/data/devices/sonoff-mini-zbrbs.json index b8555c2df..7c1df2f35 100644 --- a/tests/data/devices/sonoff-mini-zbrbs.json +++ b/tests/data/devices/sonoff-mini-zbrbs.json @@ -9,7 +9,7 @@ "name": "SONOFF MINI-ZBRBS", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Mains", "lqi": 184, diff --git a/tests/data/devices/sonoff-s26r2zb.json b/tests/data/devices/sonoff-s26r2zb.json index b811f0fbf..f8d1fe194 100644 --- a/tests/data/devices/sonoff-s26r2zb.json +++ b/tests/data/devices/sonoff-s26r2zb.json @@ -9,7 +9,7 @@ "name": "SONOFF S26R2ZB", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Mains", "lqi": 128, diff --git a/tests/data/devices/sonoff-s31-lite-zb.json b/tests/data/devices/sonoff-s31-lite-zb.json index a26244e1d..0d691099c 100644 --- a/tests/data/devices/sonoff-s31-lite-zb.json +++ b/tests/data/devices/sonoff-s31-lite-zb.json @@ -9,7 +9,7 @@ "name": "SONOFF S31 Lite zb", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/sonoff-s60zbtpg.json b/tests/data/devices/sonoff-s60zbtpg.json index a6f6af3e3..1f9aa02fd 100644 --- a/tests/data/devices/sonoff-s60zbtpg.json +++ b/tests/data/devices/sonoff-s60zbtpg.json @@ -9,7 +9,7 @@ "name": "SONOFF S60ZBTPG", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Mains", "lqi": 54, diff --git a/tests/data/devices/sonoff-snzb-02d.json b/tests/data/devices/sonoff-snzb-02d.json index 05276cc65..879abd244 100644 --- a/tests/data/devices/sonoff-snzb-02d.json +++ b/tests/data/devices/sonoff-snzb-02d.json @@ -9,7 +9,7 @@ "name": "SONOFF SNZB-02D", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Battery or Unknown", "lqi": 204, diff --git a/tests/data/devices/sonoff-snzb-05p.json b/tests/data/devices/sonoff-snzb-05p.json index 8dc0729da..03338f077 100644 --- a/tests/data/devices/sonoff-snzb-05p.json +++ b/tests/data/devices/sonoff-snzb-05p.json @@ -9,7 +9,7 @@ "name": "SONOFF SNZB-05P", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Battery or Unknown", "lqi": 212, diff --git a/tests/data/devices/sonoff-snzb-06p.json b/tests/data/devices/sonoff-snzb-06p.json index ee251b897..9c799f9f2 100644 --- a/tests/data/devices/sonoff-snzb-06p.json +++ b/tests/data/devices/sonoff-snzb-06p.json @@ -9,7 +9,7 @@ "name": "SONOFF SNZB-06P", "quirk_applied": true, "quirk_class": "zhaquirks.sonoff.snzb06p.SonoffPresenceSenorSNZB06P", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Mains", "lqi": 240, diff --git a/tests/data/devices/sonoff-swv.json b/tests/data/devices/sonoff-swv.json index d3ec5d27a..dca0a8bdd 100644 --- a/tests/data/devices/sonoff-swv.json +++ b/tests/data/devices/sonoff-swv.json @@ -9,7 +9,7 @@ "name": "SONOFF SWV", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/sonoff-trvzb.json b/tests/data/devices/sonoff-trvzb.json index e4e4aab5d..c9ba88afc 100644 --- a/tests/data/devices/sonoff-trvzb.json +++ b/tests/data/devices/sonoff-trvzb.json @@ -9,7 +9,7 @@ "name": "SONOFF TRVZB", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/sonoff-zbmicro.json b/tests/data/devices/sonoff-zbmicro.json index 556728735..dc16f8329 100644 --- a/tests/data/devices/sonoff-zbmicro.json +++ b/tests/data/devices/sonoff-zbmicro.json @@ -9,7 +9,7 @@ "name": "SONOFF ZBMicro", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/sonoff-zbminil2.json b/tests/data/devices/sonoff-zbminil2.json index 3fe62f7f1..2e81fcaac 100644 --- a/tests/data/devices/sonoff-zbminil2.json +++ b/tests/data/devices/sonoff-zbminil2.json @@ -9,7 +9,7 @@ "name": "SONOFF ZBMINIL2", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Battery or Unknown", "lqi": 168, diff --git a/tests/data/devices/sonoff-zbminir2.json b/tests/data/devices/sonoff-zbminir2.json index 36b5a39a4..c4c3316d8 100644 --- a/tests/data/devices/sonoff-zbminir2.json +++ b/tests/data/devices/sonoff-zbminir2.json @@ -9,7 +9,7 @@ "name": "SONOFF ZBMINIR2", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Mains", "lqi": 43, diff --git a/tests/data/devices/sunricher-hk-ln-dim-a.json b/tests/data/devices/sunricher-hk-ln-dim-a.json index bd8df550a..831aa81e6 100644 --- a/tests/data/devices/sunricher-hk-ln-dim-a.json +++ b/tests/data/devices/sunricher-hk-ln-dim-a.json @@ -9,7 +9,7 @@ "name": "Sunricher HK-LN-DIM-A", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4644, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/sunricher-on-off-2ch.json b/tests/data/devices/sunricher-on-off-2ch.json index d853c986b..013cd62b0 100644 --- a/tests/data/devices/sunricher-on-off-2ch.json +++ b/tests/data/devices/sunricher-on-off-2ch.json @@ -9,7 +9,7 @@ "name": "Sunricher ON/OFF(2CH)", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Mains", "lqi": 164, diff --git a/tests/data/devices/texas-instruments-cc2652.json b/tests/data/devices/texas-instruments-cc2652.json index d13922f66..9488fc643 100644 --- a/tests/data/devices/texas-instruments-cc2652.json +++ b/tests/data/devices/texas-instruments-cc2652.json @@ -9,7 +9,7 @@ "name": "Texas Instruments CC2652", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/texasinstruments-ti-router.json b/tests/data/devices/texasinstruments-ti-router.json index 9d7aba1c2..b60dd4a55 100644 --- a/tests/data/devices/texasinstruments-ti-router.json +++ b/tests/data/devices/texasinstruments-ti-router.json @@ -9,7 +9,7 @@ "name": "TexasInstruments ti.router", "quirk_applied": true, "quirk_class": "zhaquirks.texasinstruments.router.TiRouter", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/the-home-depot-ecosmart-zbt-a19-cct-bulb.json b/tests/data/devices/the-home-depot-ecosmart-zbt-a19-cct-bulb.json index fa8d73406..da8668b2f 100644 --- a/tests/data/devices/the-home-depot-ecosmart-zbt-a19-cct-bulb.json +++ b/tests/data/devices/the-home-depot-ecosmart-zbt-a19-cct-bulb.json @@ -9,7 +9,7 @@ "name": "The Home Depot Ecosmart-ZBT-A19-CCT-Bulb", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4688, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/third-reality-inc-3rds17bz.json b/tests/data/devices/third-reality-inc-3rds17bz.json index b92df9698..a4d59b9f7 100644 --- a/tests/data/devices/third-reality-inc-3rds17bz.json +++ b/tests/data/devices/third-reality-inc-3rds17bz.json @@ -9,7 +9,7 @@ "name": "Third Reality, Inc 3RDS17BZ", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4659, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/third-reality-inc-3rms16bz.json b/tests/data/devices/third-reality-inc-3rms16bz.json index 547689d56..1d53ac0ed 100644 --- a/tests/data/devices/third-reality-inc-3rms16bz.json +++ b/tests/data/devices/third-reality-inc-3rms16bz.json @@ -9,7 +9,7 @@ "name": "Third Reality, Inc 3RMS16BZ", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4659, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/third-reality-inc-3rsb015bz.json b/tests/data/devices/third-reality-inc-3rsb015bz.json index 063a66e3f..865e3f060 100644 --- a/tests/data/devices/third-reality-inc-3rsb015bz.json +++ b/tests/data/devices/third-reality-inc-3rsb015bz.json @@ -9,7 +9,7 @@ "name": "Third Reality, Inc 3RSB015BZ", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4659, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/third-reality-inc-3rsb22bz.json b/tests/data/devices/third-reality-inc-3rsb22bz.json index 368562319..72800c0ac 100644 --- a/tests/data/devices/third-reality-inc-3rsb22bz.json +++ b/tests/data/devices/third-reality-inc-3rsb22bz.json @@ -9,7 +9,7 @@ "name": "Third Reality, Inc 3RSB22BZ", "quirk_applied": true, "quirk_class": "zhaquirks.thirdreality.button.Button", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4659, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/third-reality-inc-3rsm0147z.json b/tests/data/devices/third-reality-inc-3rsm0147z.json index 73468457a..3692898da 100644 --- a/tests/data/devices/third-reality-inc-3rsm0147z.json +++ b/tests/data/devices/third-reality-inc-3rsm0147z.json @@ -9,7 +9,7 @@ "name": "Third Reality, Inc 3RSM0147Z", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 5127, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/third-reality-inc-3rsnl02043z.json b/tests/data/devices/third-reality-inc-3rsnl02043z.json index 4f0eb9de4..c197f5782 100644 --- a/tests/data/devices/third-reality-inc-3rsnl02043z.json +++ b/tests/data/devices/third-reality-inc-3rsnl02043z.json @@ -9,7 +9,7 @@ "name": "Third Reality, Inc 3RSNL02043Z", "quirk_applied": true, "quirk_class": "zhaquirks.thirdreality.night_light.Nightlight", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4877, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/third-reality-inc-3rsp019bz.json b/tests/data/devices/third-reality-inc-3rsp019bz.json index 853f48ae2..64551588b 100644 --- a/tests/data/devices/third-reality-inc-3rsp019bz.json +++ b/tests/data/devices/third-reality-inc-3rsp019bz.json @@ -9,7 +9,7 @@ "name": "Third Reality, Inc 3RSP019BZ", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4659, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/third-reality-inc-3rsp02028bz.json b/tests/data/devices/third-reality-inc-3rsp02028bz.json index 4c9585c0d..db68aa672 100644 --- a/tests/data/devices/third-reality-inc-3rsp02028bz.json +++ b/tests/data/devices/third-reality-inc-3rsp02028bz.json @@ -9,7 +9,7 @@ "name": "Third Reality, Inc 3RSP02028BZ", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4659, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/third-reality-inc-3rss007z.json b/tests/data/devices/third-reality-inc-3rss007z.json index 14fb7df66..c4b6c062f 100644 --- a/tests/data/devices/third-reality-inc-3rss007z.json +++ b/tests/data/devices/third-reality-inc-3rss007z.json @@ -9,7 +9,7 @@ "name": "Third Reality, Inc 3RSS007Z", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4659, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/third-reality-inc-3rss009z.json b/tests/data/devices/third-reality-inc-3rss009z.json index e27fd6119..f0885a380 100644 --- a/tests/data/devices/third-reality-inc-3rss009z.json +++ b/tests/data/devices/third-reality-inc-3rss009z.json @@ -9,7 +9,7 @@ "name": "Third Reality, Inc 3RSS009Z", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4659, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/third-reality-inc-3rths24bz.json b/tests/data/devices/third-reality-inc-3rths24bz.json index 0d7175f1a..cc3cf5bc1 100644 --- a/tests/data/devices/third-reality-inc-3rths24bz.json +++ b/tests/data/devices/third-reality-inc-3rths24bz.json @@ -9,7 +9,7 @@ "name": "Third Reality, Inc 3RTHS24BZ", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4659, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/third-reality-inc-3rvs01031z.json b/tests/data/devices/third-reality-inc-3rvs01031z.json index 954d00bc2..5348e3722 100644 --- a/tests/data/devices/third-reality-inc-3rvs01031z.json +++ b/tests/data/devices/third-reality-inc-3rvs01031z.json @@ -9,7 +9,7 @@ "name": "Third Reality, Inc 3RVS01031Z", "quirk_applied": true, "quirk_class": "zhaquirks.thirdreality.vibrate.Vibrate", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4659, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/third-reality-inc-3rws18bz.json b/tests/data/devices/third-reality-inc-3rws18bz.json index 9667e3e33..02642795a 100644 --- a/tests/data/devices/third-reality-inc-3rws18bz.json +++ b/tests/data/devices/third-reality-inc-3rws18bz.json @@ -9,7 +9,7 @@ "name": "Third Reality, Inc 3RWS18BZ", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4659, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tubeszb-tubeszb-router.json b/tests/data/devices/tubeszb-tubeszb-router.json index d99d0cfa7..d59d80243 100644 --- a/tests/data/devices/tubeszb-tubeszb-router.json +++ b/tests/data/devices/tubeszb-tubeszb-router.json @@ -9,7 +9,7 @@ "name": "TubesZB tubeszb.router", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tuyatec-gqhxixyk-rh3052.json b/tests/data/devices/tuyatec-gqhxixyk-rh3052.json index 7f49f4182..36e314461 100644 --- a/tests/data/devices/tuyatec-gqhxixyk-rh3052.json +++ b/tests/data/devices/tuyatec-gqhxixyk-rh3052.json @@ -9,7 +9,7 @@ "name": "TUYATEC-gqhxixyk RH3052", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tuyatec-r9hgssol-rh3001.json b/tests/data/devices/tuyatec-r9hgssol-rh3001.json index 945038725..f6bdf92f3 100644 --- a/tests/data/devices/tuyatec-r9hgssol-rh3001.json +++ b/tests/data/devices/tuyatec-r9hgssol-rh3001.json @@ -9,7 +9,7 @@ "name": "TUYATEC-r9hgssol RH3001", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tuyatec-rkqiqvcs-rh3001.json b/tests/data/devices/tuyatec-rkqiqvcs-rh3001.json index 31618654a..b6a4a1e00 100644 --- a/tests/data/devices/tuyatec-rkqiqvcs-rh3001.json +++ b/tests/data/devices/tuyatec-rkqiqvcs-rh3001.json @@ -9,7 +9,7 @@ "name": "TUYATEC-rkqiqvcs RH3001", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tuyatec-yg5dcbfu-rh3052.json b/tests/data/devices/tuyatec-yg5dcbfu-rh3052.json index f616385f1..eaed74bd0 100644 --- a/tests/data/devices/tuyatec-yg5dcbfu-rh3052.json +++ b/tests/data/devices/tuyatec-yg5dcbfu-rh3052.json @@ -9,7 +9,7 @@ "name": "TUYATEC-yg5dcbfu RH3052", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tyst11-i5j6ifxj-5j6ifxj.json b/tests/data/devices/tyst11-i5j6ifxj-5j6ifxj.json index 3116c2cd8..40dc960cb 100644 --- a/tests/data/devices/tyst11-i5j6ifxj-5j6ifxj.json +++ b/tests/data/devices/tyst11-i5j6ifxj-5j6ifxj.json @@ -9,7 +9,7 @@ "name": "_TYST11_i5j6ifxj 5j6ifxj", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tyzb01-1xktopx6-ts0041a.json b/tests/data/devices/tyzb01-1xktopx6-ts0041a.json index ca79bddfb..37605cbe7 100644 --- a/tests/data/devices/tyzb01-1xktopx6-ts0041a.json +++ b/tests/data/devices/tyzb01-1xktopx6-ts0041a.json @@ -9,7 +9,7 @@ "name": "_TYZB01_1xktopx6 TS0041A", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.ts0041.TuyaSmartRemote0041_var04", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": 204, diff --git a/tests/data/devices/tyzb01-o63ssaah-ts0207.json b/tests/data/devices/tyzb01-o63ssaah-ts0207.json index 714862976..4af3d6235 100644 --- a/tests/data/devices/tyzb01-o63ssaah-ts0207.json +++ b/tests/data/devices/tyzb01-o63ssaah-ts0207.json @@ -9,7 +9,7 @@ "name": "_TYZB01_o63ssaah TS0207", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tyzb01-qm6djpta-ts0215.json b/tests/data/devices/tyzb01-qm6djpta-ts0215.json index 2ffef65fb..bc5162ebc 100644 --- a/tests/data/devices/tyzb01-qm6djpta-ts0215.json +++ b/tests/data/devices/tyzb01-qm6djpta-ts0215.json @@ -9,7 +9,7 @@ "name": "_TYZB01_qm6djpta TS0215", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4619, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tyzb01-rifa0wlb-ts0011.json b/tests/data/devices/tyzb01-rifa0wlb-ts0011.json index 34bf52c85..aed3815ef 100755 --- a/tests/data/devices/tyzb01-rifa0wlb-ts0011.json +++ b/tests/data/devices/tyzb01-rifa0wlb-ts0011.json @@ -9,7 +9,7 @@ "name": "_TYZB01_rifa0wlb TS0011", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tyzb01-vkwryfdr-ts0115.json b/tests/data/devices/tyzb01-vkwryfdr-ts0115.json index bc7c946f6..5809f2bdf 100644 --- a/tests/data/devices/tyzb01-vkwryfdr-ts0115.json +++ b/tests/data/devices/tyzb01-vkwryfdr-ts0115.json @@ -9,7 +9,7 @@ "name": "_TYZB01_vkwryfdr TS0115", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tyzb01-zanh6v1o-ts0121.json b/tests/data/devices/tyzb01-zanh6v1o-ts0121.json index 52203c8d3..a92f1d825 100644 --- a/tests/data/devices/tyzb01-zanh6v1o-ts0121.json +++ b/tests/data/devices/tyzb01-zanh6v1o-ts0121.json @@ -9,7 +9,7 @@ "name": "_TYZB01_zanh6v1o TS0121", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3000-09gto2zn-ts0013.json b/tests/data/devices/tz3000-09gto2zn-ts0013.json index a08fb1a76..ffd41839b 100644 --- a/tests/data/devices/tz3000-09gto2zn-ts0013.json +++ b/tests/data/devices/tz3000-09gto2zn-ts0013.json @@ -9,7 +9,7 @@ "name": "_TZ3000_09gto2zn TS0013", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tz3000-1dd0d5yi-ts130f.json b/tests/data/devices/tz3000-1dd0d5yi-ts130f.json index 595db9242..853eb39c4 100644 --- a/tests/data/devices/tz3000-1dd0d5yi-ts130f.json +++ b/tests/data/devices/tz3000-1dd0d5yi-ts130f.json @@ -9,7 +9,7 @@ "name": "_TZ3000_1dd0d5yi TS130F", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.ts130f.TuyaTS130FTI2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": 255, diff --git a/tests/data/devices/tz3000-1o6x1bl0-ts0201.json b/tests/data/devices/tz3000-1o6x1bl0-ts0201.json index b552e3360..9d900e73a 100644 --- a/tests/data/devices/tz3000-1o6x1bl0-ts0201.json +++ b/tests/data/devices/tz3000-1o6x1bl0-ts0201.json @@ -9,7 +9,7 @@ "name": "_TZ3000_1o6x1bl0 TS0201", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": 185, diff --git a/tests/data/devices/tz3000-2xlvlnez-ts011f.json b/tests/data/devices/tz3000-2xlvlnez-ts011f.json index c0edcf90b..2e772b8e5 100644 --- a/tests/data/devices/tz3000-2xlvlnez-ts011f.json +++ b/tests/data/devices/tz3000-2xlvlnez-ts011f.json @@ -9,7 +9,7 @@ "name": "_TZ3000_2xlvlnez TS011F", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4660, "power_source": "Mains", "lqi": 184, diff --git a/tests/data/devices/tz3000-3ias4w4o-ts011f.json b/tests/data/devices/tz3000-3ias4w4o-ts011f.json index aa609d17a..578223644 100644 --- a/tests/data/devices/tz3000-3ias4w4o-ts011f.json +++ b/tests/data/devices/tz3000-3ias4w4o-ts011f.json @@ -9,7 +9,7 @@ "name": "_TZ3000_3ias4w4o TS011F", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3000-5ity3zyu-ts0121.json b/tests/data/devices/tz3000-5ity3zyu-ts0121.json index 378913a7c..a551d546d 100644 --- a/tests/data/devices/tz3000-5ity3zyu-ts0121.json +++ b/tests/data/devices/tz3000-5ity3zyu-ts0121.json @@ -9,7 +9,7 @@ "name": "_TZ3000_5ity3zyu TS0121", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3000-8nkb7mof-ts0121.json b/tests/data/devices/tz3000-8nkb7mof-ts0121.json index dcd0f08ff..77cfa8b05 100644 --- a/tests/data/devices/tz3000-8nkb7mof-ts0121.json +++ b/tests/data/devices/tz3000-8nkb7mof-ts0121.json @@ -9,7 +9,9 @@ "name": "_TZ3000_8nkb7mof TS0121", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.ts0121_plug.TS0121B", - "quirk_id": "tuya.plug_on_off_attributes", + "exposes_features": [ + "tuya.plug_on_off_attributes" + ], "manufacturer_code": 4098, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3000-8yhypbo7-ts0203.json b/tests/data/devices/tz3000-8yhypbo7-ts0203.json index c57a40024..333328806 100644 --- a/tests/data/devices/tz3000-8yhypbo7-ts0203.json +++ b/tests/data/devices/tz3000-8yhypbo7-ts0203.json @@ -9,7 +9,7 @@ "name": "_TZ3000_8yhypbo7 TS0203", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tz3000-bguser20-ts0201.json b/tests/data/devices/tz3000-bguser20-ts0201.json index d8bf1ed01..3dcd25aff 100644 --- a/tests/data/devices/tz3000-bguser20-ts0201.json +++ b/tests/data/devices/tz3000-bguser20-ts0201.json @@ -9,7 +9,7 @@ "name": "_TZ3000_bguser20 TS0201", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tz3000-cehuw1lw-ts011f.json b/tests/data/devices/tz3000-cehuw1lw-ts011f.json index 4aee417ac..33c378e72 100644 --- a/tests/data/devices/tz3000-cehuw1lw-ts011f.json +++ b/tests/data/devices/tz3000-cehuw1lw-ts011f.json @@ -9,7 +9,7 @@ "name": "_TZ3000_cehuw1lw TS011F", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3000-f2bw0b6k-ts0201.json b/tests/data/devices/tz3000-f2bw0b6k-ts0201.json index 144817241..9af1f4768 100644 --- a/tests/data/devices/tz3000-f2bw0b6k-ts0201.json +++ b/tests/data/devices/tz3000-f2bw0b6k-ts0201.json @@ -9,7 +9,7 @@ "name": "_TZ3000_f2bw0b6k TS0201", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tz3000-gbm10jnj-ts0043.json b/tests/data/devices/tz3000-gbm10jnj-ts0043.json index dd9260c7a..d4a2bfb37 100644 --- a/tests/data/devices/tz3000-gbm10jnj-ts0043.json +++ b/tests/data/devices/tz3000-gbm10jnj-ts0043.json @@ -9,7 +9,7 @@ "name": "_TZ3000_gbm10jnj TS0043", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tz3000-gjpgagal-ts0049.json b/tests/data/devices/tz3000-gjpgagal-ts0049.json index 614a3cef5..380bab5c9 100644 --- a/tests/data/devices/tz3000-gjpgagal-ts0049.json +++ b/tests/data/devices/tz3000-gjpgagal-ts0049.json @@ -9,7 +9,7 @@ "name": "_TZ3000_gjpgagal TS0049", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tz3000-gwkzibhs-ts004f.json b/tests/data/devices/tz3000-gwkzibhs-ts004f.json index 68b7152c2..a775d28d0 100644 --- a/tests/data/devices/tz3000-gwkzibhs-ts004f.json +++ b/tests/data/devices/tz3000-gwkzibhs-ts004f.json @@ -9,7 +9,7 @@ "name": "_TZ3000_gwkzibhs TS004F", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.ts004f.TuyaSmartRemote004FROK", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Battery or Unknown", "lqi": 182, diff --git a/tests/data/devices/tz3000-hafsqare-ts0011.json b/tests/data/devices/tz3000-hafsqare-ts0011.json index e8bd45486..a21b03f96 100644 --- a/tests/data/devices/tz3000-hafsqare-ts0011.json +++ b/tests/data/devices/tz3000-hafsqare-ts0011.json @@ -9,7 +9,7 @@ "name": "_TZ3000_hafsqare TS0011", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tz3000-idhkkbqj-ts0012.json b/tests/data/devices/tz3000-idhkkbqj-ts0012.json index 45e82fd6f..4387844fc 100644 --- a/tests/data/devices/tz3000-idhkkbqj-ts0012.json +++ b/tests/data/devices/tz3000-idhkkbqj-ts0012.json @@ -9,7 +9,7 @@ "name": "_TZ3000_idhkkbqj TS0012", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.ts001x.TuyaDoubleNoNeutralSwitch", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": 109, diff --git a/tests/data/devices/tz3000-itnrsufe-ts0201.json b/tests/data/devices/tz3000-itnrsufe-ts0201.json index 56d4deb93..865a770f8 100644 --- a/tests/data/devices/tz3000-itnrsufe-ts0201.json +++ b/tests/data/devices/tz3000-itnrsufe-ts0201.json @@ -9,7 +9,7 @@ "name": "_TZ3000_itnrsufe TS0201", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.ts0201.MoesTemperatureHumidtySensorWithScreen", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tz3000-kjfzuycl-ts004f.json b/tests/data/devices/tz3000-kjfzuycl-ts004f.json index eef165381..6a82f0d53 100644 --- a/tests/data/devices/tz3000-kjfzuycl-ts004f.json +++ b/tests/data/devices/tz3000-kjfzuycl-ts004f.json @@ -9,7 +9,7 @@ "name": "_TZ3000_kjfzuycl TS004F", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.ts004f.TuyaSmartRemote004FSK", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tz3000-mugyhz0q-ts0207.json b/tests/data/devices/tz3000-mugyhz0q-ts0207.json index 9b4e88c19..0dd22fa65 100644 --- a/tests/data/devices/tz3000-mugyhz0q-ts0207.json +++ b/tests/data/devices/tz3000-mugyhz0q-ts0207.json @@ -9,7 +9,7 @@ "name": "_TZ3000_mugyhz0q TS0207", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tz3000-o1jzcxou-ts011f.json b/tests/data/devices/tz3000-o1jzcxou-ts011f.json index 4e3be4e61..2feb3ba86 100644 --- a/tests/data/devices/tz3000-o1jzcxou-ts011f.json +++ b/tests/data/devices/tz3000-o1jzcxou-ts011f.json @@ -9,7 +9,9 @@ "name": "_TZ3000_o1jzcxou TS011F", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.ts011f_plug.Plug_v7", - "quirk_id": "tuya.plug_on_off_attributes", + "exposes_features": [ + "tuya.plug_on_off_attributes" + ], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 204, diff --git a/tests/data/devices/tz3000-o4mkahkc-ts0202.json b/tests/data/devices/tz3000-o4mkahkc-ts0202.json index 97011354a..e8b798f0a 100644 --- a/tests/data/devices/tz3000-o4mkahkc-ts0202.json +++ b/tests/data/devices/tz3000-o4mkahkc-ts0202.json @@ -9,7 +9,7 @@ "name": "_TZ3000_o4mkahkc TS0202", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tz3000-rbl8c85w-ts0012.json b/tests/data/devices/tz3000-rbl8c85w-ts0012.json index 6ab78dd25..eb1984ed0 100644 --- a/tests/data/devices/tz3000-rbl8c85w-ts0012.json +++ b/tests/data/devices/tz3000-rbl8c85w-ts0012.json @@ -9,7 +9,7 @@ "name": "_TZ3000_rbl8c85w TS0012", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.ts001x.Tuya_Double_Var06", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": 47, diff --git a/tests/data/devices/tz3000-sgb0xhwn-ts011f.json b/tests/data/devices/tz3000-sgb0xhwn-ts011f.json index ad36a0bb9..976b3cb48 100644 --- a/tests/data/devices/tz3000-sgb0xhwn-ts011f.json +++ b/tests/data/devices/tz3000-sgb0xhwn-ts011f.json @@ -9,7 +9,9 @@ "name": "_TZ3000_sgb0xhwn TS011F", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.ts011f_plug.Plug_2AC_var05", - "quirk_id": "tuya.plug_on_off_attributes", + "exposes_features": [ + "tuya.plug_on_off_attributes" + ], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 208, diff --git a/tests/data/devices/tz3000-tgddllx4-ts0001.json b/tests/data/devices/tz3000-tgddllx4-ts0001.json index d2c99fd1b..093fc796f 100644 --- a/tests/data/devices/tz3000-tgddllx4-ts0001.json +++ b/tests/data/devices/tz3000-tgddllx4-ts0001.json @@ -9,7 +9,7 @@ "name": "_TZ3000_tgddllx4 TS0001", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4660, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3000-typdpbpg-ts011f.json b/tests/data/devices/tz3000-typdpbpg-ts011f.json index e1dee91d9..65831a9f2 100644 --- a/tests/data/devices/tz3000-typdpbpg-ts011f.json +++ b/tests/data/devices/tz3000-typdpbpg-ts011f.json @@ -9,7 +9,9 @@ "name": "_TZ3000_typdpbpg TS011F", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.ts011f_plug.Plug_v3", - "quirk_id": "tuya.plug_on_off_attributes", + "exposes_features": [ + "tuya.plug_on_off_attributes" + ], "manufacturer_code": 4107, "power_source": "Mains", "lqi": 132, diff --git a/tests/data/devices/tz3000-u4kojtqz-ts0002.json b/tests/data/devices/tz3000-u4kojtqz-ts0002.json index 3be4f9908..f8add74a1 100644 --- a/tests/data/devices/tz3000-u4kojtqz-ts0002.json +++ b/tests/data/devices/tz3000-u4kojtqz-ts0002.json @@ -9,7 +9,7 @@ "name": "_TZ3000_u4kojtqz TS0002", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3000-uwkja6z1-ts011f.json b/tests/data/devices/tz3000-uwkja6z1-ts011f.json index 90b2201a8..10b03e4b1 100644 --- a/tests/data/devices/tz3000-uwkja6z1-ts011f.json +++ b/tests/data/devices/tz3000-uwkja6z1-ts011f.json @@ -9,7 +9,7 @@ "name": "_TZ3000_uwkja6z1 TS011F", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3000-w0qqde0g-ts011f.json b/tests/data/devices/tz3000-w0qqde0g-ts011f.json index 25070d7fc..0bf41c3db 100644 --- a/tests/data/devices/tz3000-w0qqde0g-ts011f.json +++ b/tests/data/devices/tz3000-w0qqde0g-ts011f.json @@ -9,7 +9,9 @@ "name": "_TZ3000_w0qqde0g TS011F", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.ts011f_plug.Plug_v2", - "quirk_id": "tuya.plug_on_off_attributes", + "exposes_features": [ + "tuya.plug_on_off_attributes" + ], "manufacturer_code": 4660, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3000-xa9g7rxs-ts1002.json b/tests/data/devices/tz3000-xa9g7rxs-ts1002.json index 508122cbf..61d6615cb 100644 --- a/tests/data/devices/tz3000-xa9g7rxs-ts1002.json +++ b/tests/data/devices/tz3000-xa9g7rxs-ts1002.json @@ -9,7 +9,7 @@ "name": "_TZ3000_xa9g7rxs TS1002", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tz3000-zl1kmjqx.json b/tests/data/devices/tz3000-zl1kmjqx.json index fee37c37e..2fa2365eb 100644 --- a/tests/data/devices/tz3000-zl1kmjqx.json +++ b/tests/data/devices/tz3000-zl1kmjqx.json @@ -9,7 +9,7 @@ "name": "_TZ3000_zl1kmjqx ", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.builder.EnchantedDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tz3000-zw7yf6yk-ts0001.json b/tests/data/devices/tz3000-zw7yf6yk-ts0001.json index 2f09f18c9..7c455fc50 100644 --- a/tests/data/devices/tz3000-zw7yf6yk-ts0001.json +++ b/tests/data/devices/tz3000-zw7yf6yk-ts0001.json @@ -9,7 +9,7 @@ "name": "_TZ3000_zw7yf6yk TS0001", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3002-vaq2bfcu-ts0726.json b/tests/data/devices/tz3002-vaq2bfcu-ts0726.json index cf43ebbe0..bd2edb85e 100644 --- a/tests/data/devices/tz3002-vaq2bfcu-ts0726.json +++ b/tests/data/devices/tz3002-vaq2bfcu-ts0726.json @@ -9,7 +9,7 @@ "name": "_TZ3002_vaq2bfcu TS0726", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3040-bb6xaihh-ts0202.json b/tests/data/devices/tz3040-bb6xaihh-ts0202.json index 17b2b80fa..8bb3e690a 100644 --- a/tests/data/devices/tz3040-bb6xaihh-ts0202.json +++ b/tests/data/devices/tz3040-bb6xaihh-ts0202.json @@ -9,7 +9,7 @@ "name": "_TZ3040_bb6xaihh TS0202", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": 136, diff --git a/tests/data/devices/tz3210-09hzmirw-ts0502b.json b/tests/data/devices/tz3210-09hzmirw-ts0502b.json index dd89d01a6..9cf0e23cf 100644 --- a/tests/data/devices/tz3210-09hzmirw-ts0502b.json +++ b/tests/data/devices/tz3210-09hzmirw-ts0502b.json @@ -9,7 +9,7 @@ "name": "_TZ3210_09hzmirw TS0502B", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3210-0jxeoadc-ts0049.json b/tests/data/devices/tz3210-0jxeoadc-ts0049.json index 0c1193d53..13ab524f0 100644 --- a/tests/data/devices/tz3210-0jxeoadc-ts0049.json +++ b/tests/data/devices/tz3210-0jxeoadc-ts0049.json @@ -9,7 +9,7 @@ "name": "_TZ3210_0jxeoadc TS0049", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.builder.EnchantedDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tz3210-3mpwqzuu-ts110e.json b/tests/data/devices/tz3210-3mpwqzuu-ts110e.json index 416ae6e6d..ed355216e 100644 --- a/tests/data/devices/tz3210-3mpwqzuu-ts110e.json +++ b/tests/data/devices/tz3210-3mpwqzuu-ts110e.json @@ -9,7 +9,7 @@ "name": "_TZ3210_3mpwqzuu TS110E", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 176, diff --git a/tests/data/devices/tz3210-bfwvfyx1-ts0505b.json b/tests/data/devices/tz3210-bfwvfyx1-ts0505b.json index ec2922f99..6f164002d 100644 --- a/tests/data/devices/tz3210-bfwvfyx1-ts0505b.json +++ b/tests/data/devices/tz3210-bfwvfyx1-ts0505b.json @@ -9,7 +9,7 @@ "name": "_TZ3210_bfwvfyx1 TS0505B", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 160, diff --git a/tests/data/devices/tz3210-comkuwws-ts0502b.json b/tests/data/devices/tz3210-comkuwws-ts0502b.json index bdf9a052b..73477f2c7 100644 --- a/tests/data/devices/tz3210-comkuwws-ts0502b.json +++ b/tests/data/devices/tz3210-comkuwws-ts0502b.json @@ -9,7 +9,7 @@ "name": "_TZ3210_comkuwws TS0502B", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3210-ehcanwyc-ts0502b.json b/tests/data/devices/tz3210-ehcanwyc-ts0502b.json index 231468d6c..7710fcd11 100644 --- a/tests/data/devices/tz3210-ehcanwyc-ts0502b.json +++ b/tests/data/devices/tz3210-ehcanwyc-ts0502b.json @@ -9,7 +9,7 @@ "name": "_TZ3210_ehcanwyc TS0502B", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 160, diff --git a/tests/data/devices/tz3210-ekjc2rzh-ts0225.json b/tests/data/devices/tz3210-ekjc2rzh-ts0225.json index 6b1abeb6c..17ee325de 100644 --- a/tests/data/devices/tz3210-ekjc2rzh-ts0225.json +++ b/tests/data/devices/tz3210-ekjc2rzh-ts0225.json @@ -9,7 +9,7 @@ "name": "_TZ3210_ekjc2rzh TS0225", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3210-j4pdtz9v-ts0001.json b/tests/data/devices/tz3210-j4pdtz9v-ts0001.json index 57635e79f..88c4cc5a5 100644 --- a/tests/data/devices/tz3210-j4pdtz9v-ts0001.json +++ b/tests/data/devices/tz3210-j4pdtz9v-ts0001.json @@ -9,7 +9,7 @@ "name": "_TZ3210_j4pdtz9v TS0001", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.builder.EnchantedDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tz3210-jaap6jeb-ts0505b.json b/tests/data/devices/tz3210-jaap6jeb-ts0505b.json index c9ca9178d..12cb2f23a 100644 --- a/tests/data/devices/tz3210-jaap6jeb-ts0505b.json +++ b/tests/data/devices/tz3210-jaap6jeb-ts0505b.json @@ -9,7 +9,7 @@ "name": "_TZ3210_jaap6jeb TS0505B", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3210-k1msuvg6-ts110e.json b/tests/data/devices/tz3210-k1msuvg6-ts110e.json index ea8edca6b..0f1a6ba3b 100644 --- a/tests/data/devices/tz3210-k1msuvg6-ts110e.json +++ b/tests/data/devices/tz3210-k1msuvg6-ts110e.json @@ -9,7 +9,7 @@ "name": "_TZ3210_k1msuvg6 TS110E", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 176, diff --git a/tests/data/devices/tz3210-kjafhwd2-ts0210.json b/tests/data/devices/tz3210-kjafhwd2-ts0210.json index acf5648ff..71254e34b 100644 --- a/tests/data/devices/tz3210-kjafhwd2-ts0210.json +++ b/tests/data/devices/tz3210-kjafhwd2-ts0210.json @@ -9,7 +9,7 @@ "name": "_TZ3210_kjafhwd2 TS0210", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": 224, diff --git a/tests/data/devices/tz3210-r5afgmkl-ts0505b.json b/tests/data/devices/tz3210-r5afgmkl-ts0505b.json index 34c775335..15934b6d1 100644 --- a/tests/data/devices/tz3210-r5afgmkl-ts0505b.json +++ b/tests/data/devices/tz3210-r5afgmkl-ts0505b.json @@ -9,7 +9,7 @@ "name": "_TZ3210_r5afgmkl TS0505B", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3210-ru41azca-ts0049.json b/tests/data/devices/tz3210-ru41azca-ts0049.json index 0db9fab82..8b14ae1d7 100644 --- a/tests/data/devices/tz3210-ru41azca-ts0049.json +++ b/tests/data/devices/tz3210-ru41azca-ts0049.json @@ -9,7 +9,7 @@ "name": "_TZ3210_ru41azca TS0049", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tz3210-sb8x2xci-ts0001.json b/tests/data/devices/tz3210-sb8x2xci-ts0001.json index 936ae2ee3..3e5eec848 100644 --- a/tests/data/devices/tz3210-sb8x2xci-ts0001.json +++ b/tests/data/devices/tz3210-sb8x2xci-ts0001.json @@ -9,7 +9,7 @@ "name": "_TZ3210_sb8x2xci TS0001", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3210-tgvtvdoc-ts0207.json b/tests/data/devices/tz3210-tgvtvdoc-ts0207.json index 0134129c2..7ace3f249 100644 --- a/tests/data/devices/tz3210-tgvtvdoc-ts0207.json +++ b/tests/data/devices/tz3210-tgvtvdoc-ts0207.json @@ -9,7 +9,7 @@ "name": "_TZ3210_tgvtvdoc TS0207", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tz3210-u1dreag7-ts0502b.json b/tests/data/devices/tz3210-u1dreag7-ts0502b.json index 06372967f..8338aca49 100644 --- a/tests/data/devices/tz3210-u1dreag7-ts0502b.json +++ b/tests/data/devices/tz3210-u1dreag7-ts0502b.json @@ -9,7 +9,7 @@ "name": "_TZ3210_u1dreag7 TS0502B", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 160, diff --git a/tests/data/devices/tz3218-7fiyo3kv-ts000f.json b/tests/data/devices/tz3218-7fiyo3kv-ts000f.json index 7432b3608..6afb5bbfe 100644 --- a/tests/data/devices/tz3218-7fiyo3kv-ts000f.json +++ b/tests/data/devices/tz3218-7fiyo3kv-ts000f.json @@ -9,7 +9,7 @@ "name": "_TZ3218_7fiyo3kv TS000F", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3218-t9ynfz4x-ts0225.json b/tests/data/devices/tz3218-t9ynfz4x-ts0225.json index 74da75163..525b1701c 100644 --- a/tests/data/devices/tz3218-t9ynfz4x-ts0225.json +++ b/tests/data/devices/tz3218-t9ynfz4x-ts0225.json @@ -9,7 +9,7 @@ "name": "_TZ3218_t9ynfz4x TS0225", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3218-ya5d6wth-ts000f.json b/tests/data/devices/tz3218-ya5d6wth-ts000f.json index 69fda26c8..d7be3a9d6 100644 --- a/tests/data/devices/tz3218-ya5d6wth-ts000f.json +++ b/tests/data/devices/tz3218-ya5d6wth-ts000f.json @@ -9,7 +9,7 @@ "name": "_TZ3218_ya5d6wth TS000F", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3290-7v1k4vufotpowp9z-ts1201.json b/tests/data/devices/tz3290-7v1k4vufotpowp9z-ts1201.json index 5b8e7c396..cebee4bdb 100644 --- a/tests/data/devices/tz3290-7v1k4vufotpowp9z-ts1201.json +++ b/tests/data/devices/tz3290-7v1k4vufotpowp9z-ts1201.json @@ -9,7 +9,7 @@ "name": "_TZ3290_7v1k4vufotpowp9z TS1201", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.ts1201.ZosungIRBlaster_ZS06", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tz3290-ot6ewjvmejq5ekhl-ts1201.json b/tests/data/devices/tz3290-ot6ewjvmejq5ekhl-ts1201.json index 727d71248..2f2cf1fc2 100644 --- a/tests/data/devices/tz3290-ot6ewjvmejq5ekhl-ts1201.json +++ b/tests/data/devices/tz3290-ot6ewjvmejq5ekhl-ts1201.json @@ -9,7 +9,7 @@ "name": "_TZ3290_ot6ewjvmejq5ekhl TS1201", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.ts1201.ZosungIRBlaster", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": 120, diff --git a/tests/data/devices/tz6210-duv6fhwt-ts0601.json b/tests/data/devices/tz6210-duv6fhwt-ts0601.json index deac7565e..0f6cf8bce 100644 --- a/tests/data/devices/tz6210-duv6fhwt-ts0601.json +++ b/tests/data/devices/tz6210-duv6fhwt-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZ6210_duv6fhwt TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4619, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze200-2aaelwxk-ts0225.json b/tests/data/devices/tze200-2aaelwxk-ts0225.json index 71728a8f7..4c6863c3e 100644 --- a/tests/data/devices/tze200-2aaelwxk-ts0225.json +++ b/tests/data/devices/tze200-2aaelwxk-ts0225.json @@ -9,7 +9,7 @@ "name": "_TZE200_2aaelwxk TS0225", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze200-3towulqd-ts0601.json b/tests/data/devices/tze200-3towulqd-ts0601.json index 3955d5b2c..89590bf8b 100644 --- a/tests/data/devices/tze200-3towulqd-ts0601.json +++ b/tests/data/devices/tze200-3towulqd-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_3towulqd TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-3ylew7b4-ts0601.json b/tests/data/devices/tze200-3ylew7b4-ts0601.json index cdbdc01c9..83bb243b7 100644 --- a/tests/data/devices/tze200-3ylew7b4-ts0601.json +++ b/tests/data/devices/tze200-3ylew7b4-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_3ylew7b4 TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": 128, diff --git a/tests/data/devices/tze200-8whfphjv-ts0601.json b/tests/data/devices/tze200-8whfphjv-ts0601.json index 89ece61b1..9759d286e 100644 --- a/tests/data/devices/tze200-8whfphjv-ts0601.json +++ b/tests/data/devices/tze200-8whfphjv-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_8whfphjv TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-9caxna4s-ts0301.json b/tests/data/devices/tze200-9caxna4s-ts0301.json index cfad314d9..b88deac6a 100644 --- a/tests/data/devices/tze200-9caxna4s-ts0301.json +++ b/tests/data/devices/tze200-9caxna4s-ts0301.json @@ -9,7 +9,7 @@ "name": "_TZE200_9caxna4s TS0301", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-9xfjixap-ts0601.json b/tests/data/devices/tze200-9xfjixap-ts0601.json index 36bb60cbd..963336db2 100644 --- a/tests/data/devices/tze200-9xfjixap-ts0601.json +++ b/tests/data/devices/tze200-9xfjixap-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_9xfjixap TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-akjefhj5-ts0601.json b/tests/data/devices/tze200-akjefhj5-ts0601.json index f316a5f6e..e35001103 100644 --- a/tests/data/devices/tze200-akjefhj5-ts0601.json +++ b/tests/data/devices/tze200-akjefhj5-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_akjefhj5 TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-b6wax7g0-ts0601.json b/tests/data/devices/tze200-b6wax7g0-ts0601.json index a2922a9e6..40d4d5599 100644 --- a/tests/data/devices/tze200-b6wax7g0-ts0601.json +++ b/tests/data/devices/tze200-b6wax7g0-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_b6wax7g0 TS0601", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.ts0601_trv.MoesHY368_Type1new", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": 0, diff --git a/tests/data/devices/tze200-bkkmqmyo-ts0601.json b/tests/data/devices/tze200-bkkmqmyo-ts0601.json index 5a979a22e..29c02feb9 100644 --- a/tests/data/devices/tze200-bkkmqmyo-ts0601.json +++ b/tests/data/devices/tze200-bkkmqmyo-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_bkkmqmyo TS0601", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.ts0601_din_power.HikingPowerMeter", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": 160, diff --git a/tests/data/devices/tze200-c88teujp-ts0601.json b/tests/data/devices/tze200-c88teujp-ts0601.json index 16b44ae3e..f784eb9b9 100644 --- a/tests/data/devices/tze200-c88teujp-ts0601.json +++ b/tests/data/devices/tze200-c88teujp-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_c88teujp TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-crq3r3la-ck-bl702-mws-01-7016.json b/tests/data/devices/tze200-crq3r3la-ck-bl702-mws-01-7016.json index 6b5799a18..63417e645 100644 --- a/tests/data/devices/tze200-crq3r3la-ck-bl702-mws-01-7016.json +++ b/tests/data/devices/tze200-crq3r3la-ck-bl702-mws-01-7016.json @@ -9,7 +9,7 @@ "name": "_TZE200_crq3r3la CK-BL702-MWS-01(7016)", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 255, diff --git a/tests/data/devices/tze200-e5hpkc6d-ts0601.json b/tests/data/devices/tze200-e5hpkc6d-ts0601.json index 9991be1c9..efaeae244 100644 --- a/tests/data/devices/tze200-e5hpkc6d-ts0601.json +++ b/tests/data/devices/tze200-e5hpkc6d-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_e5hpkc6d TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze200-gjldowol-ts0601.json b/tests/data/devices/tze200-gjldowol-ts0601.json index bd66f5998..9b3a5cf36 100644 --- a/tests/data/devices/tze200-gjldowol-ts0601.json +++ b/tests/data/devices/tze200-gjldowol-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_gjldowol TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-gkfbdvyx-ts0601.json b/tests/data/devices/tze200-gkfbdvyx-ts0601.json index 8d6e7612e..848c0e149 100644 --- a/tests/data/devices/tze200-gkfbdvyx-ts0601.json +++ b/tests/data/devices/tze200-gkfbdvyx-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_gkfbdvyx TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4660, "power_source": "Mains", "lqi": 172, diff --git a/tests/data/devices/tze200-guvc7pdy-ts0601.json b/tests/data/devices/tze200-guvc7pdy-ts0601.json index 4e4e9cfd5..92fbd48f0 100644 --- a/tests/data/devices/tze200-guvc7pdy-ts0601.json +++ b/tests/data/devices/tze200-guvc7pdy-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_guvc7pdy TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 104, diff --git a/tests/data/devices/tze200-h4cgnbzg-ts0601.json b/tests/data/devices/tze200-h4cgnbzg-ts0601.json index be46db056..79f46391c 100644 --- a/tests/data/devices/tze200-h4cgnbzg-ts0601.json +++ b/tests/data/devices/tze200-h4cgnbzg-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_h4cgnbzg TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-hhrtiq0x-ts0601.json b/tests/data/devices/tze200-hhrtiq0x-ts0601.json index 2b6f21ca5..3f1fefdfb 100644 --- a/tests/data/devices/tze200-hhrtiq0x-ts0601.json +++ b/tests/data/devices/tze200-hhrtiq0x-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_hhrtiq0x TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-hr0tdd47-ts0601.json b/tests/data/devices/tze200-hr0tdd47-ts0601.json index 669e6f7b0..6f6b2e0b4 100644 --- a/tests/data/devices/tze200-hr0tdd47-ts0601.json +++ b/tests/data/devices/tze200-hr0tdd47-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_hr0tdd47 TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-iba1ckek-ts0601.json b/tests/data/devices/tze200-iba1ckek-ts0601.json index d02d6b0ec..7c9cd1cac 100644 --- a/tests/data/devices/tze200-iba1ckek-ts0601.json +++ b/tests/data/devices/tze200-iba1ckek-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_iba1ckek TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-ijey4q29-ts0601.json b/tests/data/devices/tze200-ijey4q29-ts0601.json index a105cccf4..ad5bf27fd 100644 --- a/tests/data/devices/tze200-ijey4q29-ts0601.json +++ b/tests/data/devices/tze200-ijey4q29-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_ijey4q29 TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-kb5noeto-ts0601.json b/tests/data/devices/tze200-kb5noeto-ts0601.json index 1387a1f9e..c1b244309 100644 --- a/tests/data/devices/tze200-kb5noeto-ts0601.json +++ b/tests/data/devices/tze200-kb5noeto-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_kb5noeto TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-laqjm8qd-ts0601.json b/tests/data/devices/tze200-laqjm8qd-ts0601.json index 94003d7ba..733ecded6 100644 --- a/tests/data/devices/tze200-laqjm8qd-ts0601.json +++ b/tests/data/devices/tze200-laqjm8qd-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_laqjm8qd TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze200-locansqn-ts0601.json b/tests/data/devices/tze200-locansqn-ts0601.json index 81841ae00..77619fba4 100644 --- a/tests/data/devices/tze200-locansqn-ts0601.json +++ b/tests/data/devices/tze200-locansqn-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_locansqn TS0601", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.builder.EnchantedDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-moycceze-ts0601.json b/tests/data/devices/tze200-moycceze-ts0601.json index fafa31c9f..cb37d4198 100644 --- a/tests/data/devices/tze200-moycceze-ts0601.json +++ b/tests/data/devices/tze200-moycceze-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_moycceze TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-myd45weu-ts0601.json b/tests/data/devices/tze200-myd45weu-ts0601.json index 05e41e90d..7aed42db7 100644 --- a/tests/data/devices/tze200-myd45weu-ts0601.json +++ b/tests/data/devices/tze200-myd45weu-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_myd45weu TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-mzik0ov2-ts0601.json b/tests/data/devices/tze200-mzik0ov2-ts0601.json index b5a66e85f..f0fcda6c2 100644 --- a/tests/data/devices/tze200-mzik0ov2-ts0601.json +++ b/tests/data/devices/tze200-mzik0ov2-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_mzik0ov2 TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-npj9bug3-ts0601.json b/tests/data/devices/tze200-npj9bug3-ts0601.json index 08ea24283..82269490d 100644 --- a/tests/data/devices/tze200-npj9bug3-ts0601.json +++ b/tests/data/devices/tze200-npj9bug3-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_npj9bug3 TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Battery or Unknown", "lqi": 180, diff --git a/tests/data/devices/tze200-ntcy3xu1-ts0601.json b/tests/data/devices/tze200-ntcy3xu1-ts0601.json index 0894848bd..4a180ff30 100644 --- a/tests/data/devices/tze200-ntcy3xu1-ts0601.json +++ b/tests/data/devices/tze200-ntcy3xu1-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_ntcy3xu1 TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-ny94onlb-ts0601.json b/tests/data/devices/tze200-ny94onlb-ts0601.json index 4a8d2569c..9421c834e 100644 --- a/tests/data/devices/tze200-ny94onlb-ts0601.json +++ b/tests/data/devices/tze200-ny94onlb-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_ny94onlb TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze200-pay2byax-ts0601.json b/tests/data/devices/tze200-pay2byax-ts0601.json index c48aaa846..5242d7820 100644 --- a/tests/data/devices/tze200-pay2byax-ts0601.json +++ b/tests/data/devices/tze200-pay2byax-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_pay2byax TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-qrztc3ev-ts0601.json b/tests/data/devices/tze200-qrztc3ev-ts0601.json index 9b4577276..4f3e6ecfd 100644 --- a/tests/data/devices/tze200-qrztc3ev-ts0601.json +++ b/tests/data/devices/tze200-qrztc3ev-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_qrztc3ev TS0601", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.builder.EnchantedDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-qyflbnbj-ts0601.json b/tests/data/devices/tze200-qyflbnbj-ts0601.json index 7a3f29abe..d2746c2c7 100644 --- a/tests/data/devices/tze200-qyflbnbj-ts0601.json +++ b/tests/data/devices/tze200-qyflbnbj-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_qyflbnbj TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-udank5zs-ts0601.json b/tests/data/devices/tze200-udank5zs-ts0601.json index c74ffa019..a903c38c0 100644 --- a/tests/data/devices/tze200-udank5zs-ts0601.json +++ b/tests/data/devices/tze200-udank5zs-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_udank5zs TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze200-uf1qujxj-ts0601.json b/tests/data/devices/tze200-uf1qujxj-ts0601.json index 8275b3c63..ba0e334ec 100644 --- a/tests/data/devices/tze200-uf1qujxj-ts0601.json +++ b/tests/data/devices/tze200-uf1qujxj-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_uf1qujxj TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-vvmbj46n-ts0601.json b/tests/data/devices/tze200-vvmbj46n-ts0601.json index 6bcb888ce..22677e08b 100644 --- a/tests/data/devices/tze200-vvmbj46n-ts0601.json +++ b/tests/data/devices/tze200-vvmbj46n-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_vvmbj46n TS0601", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.builder.EnchantedDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-wdfurkoa-ts0601.json b/tests/data/devices/tze200-wdfurkoa-ts0601.json index 2eba959db..9ad86982e 100644 --- a/tests/data/devices/tze200-wdfurkoa-ts0601.json +++ b/tests/data/devices/tze200-wdfurkoa-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_wdfurkoa TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": 40, diff --git a/tests/data/devices/tze200-wfxuhoea-ts0601.json b/tests/data/devices/tze200-wfxuhoea-ts0601.json index a95157d71..e960b0e44 100644 --- a/tests/data/devices/tze200-wfxuhoea-ts0601.json +++ b/tests/data/devices/tze200-wfxuhoea-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_wfxuhoea TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze200-wqashyqo-ts0601.json b/tests/data/devices/tze200-wqashyqo-ts0601.json index 8b1be6fbb..8d0bc841c 100644 --- a/tests/data/devices/tze200-wqashyqo-ts0601.json +++ b/tests/data/devices/tze200-wqashyqo-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_wqashyqo TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4742, "power_source": "Battery or Unknown", "lqi": 96, diff --git a/tests/data/devices/tze200-ya4ft0w4-ts0601.json b/tests/data/devices/tze200-ya4ft0w4-ts0601.json index 792572b1f..6c7383a5a 100644 --- a/tests/data/devices/tze200-ya4ft0w4-ts0601.json +++ b/tests/data/devices/tze200-ya4ft0w4-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_ya4ft0w4 TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4660, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze200-yjjdcqsq-ts0601.json b/tests/data/devices/tze200-yjjdcqsq-ts0601.json index ebd8a5c6b..f9911105d 100644 --- a/tests/data/devices/tze200-yjjdcqsq-ts0601.json +++ b/tests/data/devices/tze200-yjjdcqsq-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_yjjdcqsq TS0601", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.builder.EnchantedDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze200-yw7cahqs-ts0601.json b/tests/data/devices/tze200-yw7cahqs-ts0601.json index d2ea7b12a..c4df8be60 100644 --- a/tests/data/devices/tze200-yw7cahqs-ts0601.json +++ b/tests/data/devices/tze200-yw7cahqs-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE200_yw7cahqs TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze204-1v1dxkck-ts0601.json b/tests/data/devices/tze204-1v1dxkck-ts0601.json index 4ae0df5b9..82c4974a5 100644 --- a/tests/data/devices/tze204-1v1dxkck-ts0601.json +++ b/tests/data/devices/tze204-1v1dxkck-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_1v1dxkck TS0601", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.ts0601_dimmer.TuyaTripleSwitchDimmerGP", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-1youk3hj-ts0601.json b/tests/data/devices/tze204-1youk3hj-ts0601.json index 18c99a209..43972f1dc 100644 --- a/tests/data/devices/tze204-1youk3hj-ts0601.json +++ b/tests/data/devices/tze204-1youk3hj-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_1youk3hj TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-58of2pfn-ts0601.json b/tests/data/devices/tze204-58of2pfn-ts0601.json index 45087bf6b..dd198f4d7 100644 --- a/tests/data/devices/tze204-58of2pfn-ts0601.json +++ b/tests/data/devices/tze204-58of2pfn-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_58of2pfn TS0601", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.ts0601_switch.TuyaQuadrupleSwitchGP", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 164, diff --git a/tests/data/devices/tze204-5slehgeo-ts0601.json b/tests/data/devices/tze204-5slehgeo-ts0601.json index d375510ed..845d657cf 100644 --- a/tests/data/devices/tze204-5slehgeo-ts0601.json +++ b/tests/data/devices/tze204-5slehgeo-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_5slehgeo TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 136, diff --git a/tests/data/devices/tze204-81yrt3lo-ts0601.json b/tests/data/devices/tze204-81yrt3lo-ts0601.json index 5dfa7c3e5..487f85cd7 100644 --- a/tests/data/devices/tze204-81yrt3lo-ts0601.json +++ b/tests/data/devices/tze204-81yrt3lo-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_81yrt3lo TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-a2jcoyuk-ts0601.json b/tests/data/devices/tze204-a2jcoyuk-ts0601.json index 9be762173..3377e9c33 100644 --- a/tests/data/devices/tze204-a2jcoyuk-ts0601.json +++ b/tests/data/devices/tze204-a2jcoyuk-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_a2jcoyuk TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-ai4rqhky-ts0601.json b/tests/data/devices/tze204-ai4rqhky-ts0601.json index 9191b7c4a..bda3c534c 100644 --- a/tests/data/devices/tze204-ai4rqhky-ts0601.json +++ b/tests/data/devices/tze204-ai4rqhky-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_ai4rqhky TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze204-aoclfnxz-ts0601.json b/tests/data/devices/tze204-aoclfnxz-ts0601.json index 2b6609b86..5b6d39465 100644 --- a/tests/data/devices/tze204-aoclfnxz-ts0601.json +++ b/tests/data/devices/tze204-aoclfnxz-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_aoclfnxz TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-c2fmom5z-ts0601.json b/tests/data/devices/tze204-c2fmom5z-ts0601.json index 5fae24a4e..3e4665a9d 100644 --- a/tests/data/devices/tze204-c2fmom5z-ts0601.json +++ b/tests/data/devices/tze204-c2fmom5z-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_c2fmom5z TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-dwcarsat-ts0601.json b/tests/data/devices/tze204-dwcarsat-ts0601.json index 79f282fd3..9a3dcedee 100644 --- a/tests/data/devices/tze204-dwcarsat-ts0601.json +++ b/tests/data/devices/tze204-dwcarsat-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_dwcarsat TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-ex3rcdha-ts0601.json b/tests/data/devices/tze204-ex3rcdha-ts0601.json index 62a24cf50..240059664 100644 --- a/tests/data/devices/tze204-ex3rcdha-ts0601.json +++ b/tests/data/devices/tze204-ex3rcdha-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_ex3rcdha TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-fhvdgeuh-ts0601.json b/tests/data/devices/tze204-fhvdgeuh-ts0601.json index d51f27790..92a7fbb4c 100644 --- a/tests/data/devices/tze204-fhvdgeuh-ts0601.json +++ b/tests/data/devices/tze204-fhvdgeuh-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_fhvdgeuh TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-goecjd1t-ts0601.json b/tests/data/devices/tze204-goecjd1t-ts0601.json index 11b6922cc..b44a1d707 100644 --- a/tests/data/devices/tze204-goecjd1t-ts0601.json +++ b/tests/data/devices/tze204-goecjd1t-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_goecjd1t TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-gops3slb-ts0601.json b/tests/data/devices/tze204-gops3slb-ts0601.json index a8f1299c3..848b4b2ae 100644 --- a/tests/data/devices/tze204-gops3slb-ts0601.json +++ b/tests/data/devices/tze204-gops3slb-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_gops3slb TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 224, diff --git a/tests/data/devices/tze204-iaeejhvf-ts0601.json b/tests/data/devices/tze204-iaeejhvf-ts0601.json index ecbb86a48..bd8cdcca9 100644 --- a/tests/data/devices/tze204-iaeejhvf-ts0601.json +++ b/tests/data/devices/tze204-iaeejhvf-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_iaeejhvf TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-jrcfsaa3-ts0601.json b/tests/data/devices/tze204-jrcfsaa3-ts0601.json index 19673a658..9885370c6 100644 --- a/tests/data/devices/tze204-jrcfsaa3-ts0601.json +++ b/tests/data/devices/tze204-jrcfsaa3-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_jrcfsaa3 TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-l8xiyymq-ts0601.json b/tests/data/devices/tze204-l8xiyymq-ts0601.json index 654565c72..b502324ce 100644 --- a/tests/data/devices/tze204-l8xiyymq-ts0601.json +++ b/tests/data/devices/tze204-l8xiyymq-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_l8xiyymq TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-lb0fsvba-ts0601.json b/tests/data/devices/tze204-lb0fsvba-ts0601.json index f5fdf45a4..d9f5f2a6b 100644 --- a/tests/data/devices/tze204-lb0fsvba-ts0601.json +++ b/tests/data/devices/tze204-lb0fsvba-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_lb0fsvba TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 188, diff --git a/tests/data/devices/tze204-lbbg34rj-ts0601.json b/tests/data/devices/tze204-lbbg34rj-ts0601.json index 3f97482b0..632f9c1a8 100644 --- a/tests/data/devices/tze204-lbbg34rj-ts0601.json +++ b/tests/data/devices/tze204-lbbg34rj-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_lbbg34rj TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-lpedvtvr-ts0601.json b/tests/data/devices/tze204-lpedvtvr-ts0601.json index 76cbbc2d0..d8374ac7c 100644 --- a/tests/data/devices/tze204-lpedvtvr-ts0601.json +++ b/tests/data/devices/tze204-lpedvtvr-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_lpedvtvr TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-ltwbm23f-ts0601.json b/tests/data/devices/tze204-ltwbm23f-ts0601.json index a700e96d0..9bb3678e3 100644 --- a/tests/data/devices/tze204-ltwbm23f-ts0601.json +++ b/tests/data/devices/tze204-ltwbm23f-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_ltwbm23f TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze204-m64smti7-ts0601.json b/tests/data/devices/tze204-m64smti7-ts0601.json index 2ef1e8d4f..eeabdc559 100644 --- a/tests/data/devices/tze204-m64smti7-ts0601.json +++ b/tests/data/devices/tze204-m64smti7-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_m64smti7 TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-m9dzckna-ts0601.json b/tests/data/devices/tze204-m9dzckna-ts0601.json index 1ae559adf..9efa96840 100644 --- a/tests/data/devices/tze204-m9dzckna-ts0601.json +++ b/tests/data/devices/tze204-m9dzckna-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_m9dzckna TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 216, diff --git a/tests/data/devices/tze204-mtoaryre-ts0601.json b/tests/data/devices/tze204-mtoaryre-ts0601.json index f366f344c..83ec50760 100644 --- a/tests/data/devices/tze204-mtoaryre-ts0601.json +++ b/tests/data/devices/tze204-mtoaryre-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_mtoaryre TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-mwomyz5n-ts0601.json b/tests/data/devices/tze204-mwomyz5n-ts0601.json index 8473ef170..5b626a7ee 100644 --- a/tests/data/devices/tze204-mwomyz5n-ts0601.json +++ b/tests/data/devices/tze204-mwomyz5n-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_mwomyz5n TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-nbkshs6k-ts0601.json b/tests/data/devices/tze204-nbkshs6k-ts0601.json index 0f651a4ce..ae5cf2dfe 100644 --- a/tests/data/devices/tze204-nbkshs6k-ts0601.json +++ b/tests/data/devices/tze204-nbkshs6k-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_nbkshs6k TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-nklqjk62-ts0601.json b/tests/data/devices/tze204-nklqjk62-ts0601.json index bae1fb402..b6a69d3ad 100644 --- a/tests/data/devices/tze204-nklqjk62-ts0601.json +++ b/tests/data/devices/tze204-nklqjk62-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_nklqjk62 TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-nlrfgpny-ts0601.json b/tests/data/devices/tze204-nlrfgpny-ts0601.json index d545293fc..f6909246b 100644 --- a/tests/data/devices/tze204-nlrfgpny-ts0601.json +++ b/tests/data/devices/tze204-nlrfgpny-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_nlrfgpny TS0601", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.builder.EnchantedDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze204-nqqylykc-ts0601.json b/tests/data/devices/tze204-nqqylykc-ts0601.json index 9a684bc12..ef4bdf2c1 100644 --- a/tests/data/devices/tze204-nqqylykc-ts0601.json +++ b/tests/data/devices/tze204-nqqylykc-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_nqqylykc TS0601", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.ts0601_dimmer.TuyaSingleSwitchDimmerGP", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-nvxorhcj-ts0601.json b/tests/data/devices/tze204-nvxorhcj-ts0601.json index 2e9b64737..8f8e92e47 100644 --- a/tests/data/devices/tze204-nvxorhcj-ts0601.json +++ b/tests/data/devices/tze204-nvxorhcj-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_nvxorhcj TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 58, diff --git a/tests/data/devices/tze204-ogx8u5z6-ts0601.json b/tests/data/devices/tze204-ogx8u5z6-ts0601.json index 654575630..123665456 100644 --- a/tests/data/devices/tze204-ogx8u5z6-ts0601.json +++ b/tests/data/devices/tze204-ogx8u5z6-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_ogx8u5z6 TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze204-pcdmj88b-ts0601.json b/tests/data/devices/tze204-pcdmj88b-ts0601.json index 01b87b254..5bb3faa00 100644 --- a/tests/data/devices/tze204-pcdmj88b-ts0601.json +++ b/tests/data/devices/tze204-pcdmj88b-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_pcdmj88b TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze204-pxbjch8m-ts0601.json b/tests/data/devices/tze204-pxbjch8m-ts0601.json index 1b286fc2b..e8627f6e9 100644 --- a/tests/data/devices/tze204-pxbjch8m-ts0601.json +++ b/tests/data/devices/tze204-pxbjch8m-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_pxbjch8m TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-qasjif9e-ts0601.json b/tests/data/devices/tze204-qasjif9e-ts0601.json index fa548a44e..b19a47b24 100644 --- a/tests/data/devices/tze204-qasjif9e-ts0601.json +++ b/tests/data/devices/tze204-qasjif9e-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_qasjif9e TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-qtnjuoae-ts0601.json b/tests/data/devices/tze204-qtnjuoae-ts0601.json index 6a7629298..cbe4a113a 100644 --- a/tests/data/devices/tze204-qtnjuoae-ts0601.json +++ b/tests/data/devices/tze204-qtnjuoae-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_qtnjuoae TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze204-qvxrkeif-ts0601.json b/tests/data/devices/tze204-qvxrkeif-ts0601.json index 9664922d3..a4956beec 100644 --- a/tests/data/devices/tze204-qvxrkeif-ts0601.json +++ b/tests/data/devices/tze204-qvxrkeif-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_qvxrkeif TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 255, diff --git a/tests/data/devices/tze204-qyr2m29i-ts0601.json b/tests/data/devices/tze204-qyr2m29i-ts0601.json index cdc7690dd..886574dd6 100644 --- a/tests/data/devices/tze204-qyr2m29i-ts0601.json +++ b/tests/data/devices/tze204-qyr2m29i-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_qyr2m29i TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze204-r32ctezx-ts0601.json b/tests/data/devices/tze204-r32ctezx-ts0601.json index 87d34e429..2fc9a3efa 100644 --- a/tests/data/devices/tze204-r32ctezx-ts0601.json +++ b/tests/data/devices/tze204-r32ctezx-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_r32ctezx TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-rtrmfadk-ts0601.json b/tests/data/devices/tze204-rtrmfadk-ts0601.json index 6e57cca70..df3b435e9 100644 --- a/tests/data/devices/tze204-rtrmfadk-ts0601.json +++ b/tests/data/devices/tze204-rtrmfadk-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_rtrmfadk TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze204-tdhnhhiy-ts0601.json b/tests/data/devices/tze204-tdhnhhiy-ts0601.json index d6e3d468a..958749776 100644 --- a/tests/data/devices/tze204-tdhnhhiy-ts0601.json +++ b/tests/data/devices/tze204-tdhnhhiy-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_tdhnhhiy TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 25, diff --git a/tests/data/devices/tze204-upagmta9-ts0601.json b/tests/data/devices/tze204-upagmta9-ts0601.json index 0c6fde9a8..09d275a0a 100644 --- a/tests/data/devices/tze204-upagmta9-ts0601.json +++ b/tests/data/devices/tze204-upagmta9-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_upagmta9 TS0601", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.builder.EnchantedDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze204-uxllnywp-ts0601.json b/tests/data/devices/tze204-uxllnywp-ts0601.json index b3877c7e3..b3bda7e54 100644 --- a/tests/data/devices/tze204-uxllnywp-ts0601.json +++ b/tests/data/devices/tze204-uxllnywp-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_uxllnywp TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-w1wwxoja-ts0601.json b/tests/data/devices/tze204-w1wwxoja-ts0601.json index 5debc408e..86bf39272 100644 --- a/tests/data/devices/tze204-w1wwxoja-ts0601.json +++ b/tests/data/devices/tze204-w1wwxoja-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_w1wwxoja TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-wbhaespm-ts0601.json b/tests/data/devices/tze204-wbhaespm-ts0601.json index 3615cb8a9..b94e374aa 100644 --- a/tests/data/devices/tze204-wbhaespm-ts0601.json +++ b/tests/data/devices/tze204-wbhaespm-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_wbhaespm TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-xalsoe3m-ts0601.json b/tests/data/devices/tze204-xalsoe3m-ts0601.json index 029752d02..8bbd391bb 100644 --- a/tests/data/devices/tze204-xalsoe3m-ts0601.json +++ b/tests/data/devices/tze204-xalsoe3m-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_xalsoe3m TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-xlppj4f5-ts0601.json b/tests/data/devices/tze204-xlppj4f5-ts0601.json index 9f164caa1..ad3935959 100644 --- a/tests/data/devices/tze204-xlppj4f5-ts0601.json +++ b/tests/data/devices/tze204-xlppj4f5-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_xlppj4f5 TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze204-xnbkhhdr-ts0601.json b/tests/data/devices/tze204-xnbkhhdr-ts0601.json index a5487270f..39c33edbd 100644 --- a/tests/data/devices/tze204-xnbkhhdr-ts0601.json +++ b/tests/data/devices/tze204-xnbkhhdr-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_xnbkhhdr TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze204-ya4ft0w4-ts0601.json b/tests/data/devices/tze204-ya4ft0w4-ts0601.json index 1dca68602..6b51dde20 100644 --- a/tests/data/devices/tze204-ya4ft0w4-ts0601.json +++ b/tests/data/devices/tze204-ya4ft0w4-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_ya4ft0w4 TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-yvx5lh6k-ts0601.json b/tests/data/devices/tze204-yvx5lh6k-ts0601.json index f1bd27cc3..bc39939d9 100644 --- a/tests/data/devices/tze204-yvx5lh6k-ts0601.json +++ b/tests/data/devices/tze204-yvx5lh6k-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_yvx5lh6k TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze204-zxkwaztm-ts0601.json b/tests/data/devices/tze204-zxkwaztm-ts0601.json index 6509101af..01b61787a 100644 --- a/tests/data/devices/tze204-zxkwaztm-ts0601.json +++ b/tests/data/devices/tze204-zxkwaztm-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE204_zxkwaztm TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": 180, diff --git a/tests/data/devices/tze20c-zka46xbw-ts0601.json b/tests/data/devices/tze20c-zka46xbw-ts0601.json index fe166b08a..6e3acf3b0 100644 --- a/tests/data/devices/tze20c-zka46xbw-ts0601.json +++ b/tests/data/devices/tze20c-zka46xbw-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE20C_zka46xbw TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze284-2gi1hy8s-ts0601.json b/tests/data/devices/tze284-2gi1hy8s-ts0601.json index 2b39078e1..0d30ab479 100644 --- a/tests/data/devices/tze284-2gi1hy8s-ts0601.json +++ b/tests/data/devices/tze284-2gi1hy8s-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_2gi1hy8s TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze284-7zazvlyn-ts0601.json b/tests/data/devices/tze284-7zazvlyn-ts0601.json index ad2dedc59..f2c700b95 100644 --- a/tests/data/devices/tze284-7zazvlyn-ts0601.json +++ b/tests/data/devices/tze284-7zazvlyn-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_7zazvlyn TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze284-81yrt3lo-ts0601.json b/tests/data/devices/tze284-81yrt3lo-ts0601.json index 03933d8b9..2048cc5c6 100644 --- a/tests/data/devices/tze284-81yrt3lo-ts0601.json +++ b/tests/data/devices/tze284-81yrt3lo-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_81yrt3lo TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze284-a2xewxoo-ts0601.json b/tests/data/devices/tze284-a2xewxoo-ts0601.json index 3cd2fee9f..f1177c694 100644 --- a/tests/data/devices/tze284-a2xewxoo-ts0601.json +++ b/tests/data/devices/tze284-a2xewxoo-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_a2xewxoo TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 255, diff --git a/tests/data/devices/tze284-aao3yzhs-ts0601.json b/tests/data/devices/tze284-aao3yzhs-ts0601.json index 4ec3e5b4a..ab2858718 100644 --- a/tests/data/devices/tze284-aao3yzhs-ts0601.json +++ b/tests/data/devices/tze284-aao3yzhs-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_aao3yzhs TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze284-c6wv4xyo-ts0601.json b/tests/data/devices/tze284-c6wv4xyo-ts0601.json index efa150a8c..c35112d09 100644 --- a/tests/data/devices/tze284-c6wv4xyo-ts0601.json +++ b/tests/data/devices/tze284-c6wv4xyo-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_c6wv4xyo TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze284-cjbofhxw-ts0601.json b/tests/data/devices/tze284-cjbofhxw-ts0601.json index c6a454547..75781b250 100644 --- a/tests/data/devices/tze284-cjbofhxw-ts0601.json +++ b/tests/data/devices/tze284-cjbofhxw-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_cjbofhxw TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze284-dmckrsxg-ts0601.json b/tests/data/devices/tze284-dmckrsxg-ts0601.json index b5693708b..0f0d59803 100644 --- a/tests/data/devices/tze284-dmckrsxg-ts0601.json +++ b/tests/data/devices/tze284-dmckrsxg-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_dmckrsxg TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 132, diff --git a/tests/data/devices/tze284-f5efvtbv-ts0601.json b/tests/data/devices/tze284-f5efvtbv-ts0601.json index 3ac709878..9bbf01304 100644 --- a/tests/data/devices/tze284-f5efvtbv-ts0601.json +++ b/tests/data/devices/tze284-f5efvtbv-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_f5efvtbv TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 200, diff --git a/tests/data/devices/tze284-fhvpaltk-ts0601.json b/tests/data/devices/tze284-fhvpaltk-ts0601.json index 5da7244ed..93eeecf7b 100644 --- a/tests/data/devices/tze284-fhvpaltk-ts0601.json +++ b/tests/data/devices/tze284-fhvpaltk-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_fhvpaltk TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Battery or Unknown", "lqi": 196, diff --git a/tests/data/devices/tze284-iadro9bf-ts0601.json b/tests/data/devices/tze284-iadro9bf-ts0601.json index 46f317c5e..5a171cc38 100644 --- a/tests/data/devices/tze284-iadro9bf-ts0601.json +++ b/tests/data/devices/tze284-iadro9bf-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_iadro9bf TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/tze284-kyyu8rbj-ts0601.json b/tests/data/devices/tze284-kyyu8rbj-ts0601.json index 74b95449d..b03bb972e 100644 --- a/tests/data/devices/tze284-kyyu8rbj-ts0601.json +++ b/tests/data/devices/tze284-kyyu8rbj-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_kyyu8rbj TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze284-l8xiyymq-ts0601.json b/tests/data/devices/tze284-l8xiyymq-ts0601.json index e5e970e2b..8291e8b42 100644 --- a/tests/data/devices/tze284-l8xiyymq-ts0601.json +++ b/tests/data/devices/tze284-l8xiyymq-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_l8xiyymq TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": 58, diff --git a/tests/data/devices/tze284-ltwbm23f-ts0601.json b/tests/data/devices/tze284-ltwbm23f-ts0601.json index f71e5f6ae..38cebf6f4 100644 --- a/tests/data/devices/tze284-ltwbm23f-ts0601.json +++ b/tests/data/devices/tze284-ltwbm23f-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_ltwbm23f TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze284-myd45weu-ts0601.json b/tests/data/devices/tze284-myd45weu-ts0601.json index 8a37d93bc..893fd9a8a 100644 --- a/tests/data/devices/tze284-myd45weu-ts0601.json +++ b/tests/data/devices/tze284-myd45weu-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_myd45weu TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze284-ne4pikwm-ts0601.json b/tests/data/devices/tze284-ne4pikwm-ts0601.json index bf4fe1508..e1c350a75 100644 --- a/tests/data/devices/tze284-ne4pikwm-ts0601.json +++ b/tests/data/devices/tze284-ne4pikwm-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_ne4pikwm TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze284-nklqjk62-ts0601.json b/tests/data/devices/tze284-nklqjk62-ts0601.json index 6cce631f4..8a1ae3b08 100644 --- a/tests/data/devices/tze284-nklqjk62-ts0601.json +++ b/tests/data/devices/tze284-nklqjk62-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_nklqjk62 TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Mains", "lqi": 148, diff --git a/tests/data/devices/tze284-nnhwcvbk-ts0601.json b/tests/data/devices/tze284-nnhwcvbk-ts0601.json index cebd93844..a8f58ad92 100644 --- a/tests/data/devices/tze284-nnhwcvbk-ts0601.json +++ b/tests/data/devices/tze284-nnhwcvbk-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_nnhwcvbk TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": 88, diff --git a/tests/data/devices/tze284-o3x45p96-ts0601.json b/tests/data/devices/tze284-o3x45p96-ts0601.json index 0357bb14f..2a41ed4d5 100644 --- a/tests/data/devices/tze284-o3x45p96-ts0601.json +++ b/tests/data/devices/tze284-o3x45p96-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_o3x45p96 TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze284-ogx8u5z6-ts0601.json b/tests/data/devices/tze284-ogx8u5z6-ts0601.json index aed17ebf6..7db8de6d7 100644 --- a/tests/data/devices/tze284-ogx8u5z6-ts0601.json +++ b/tests/data/devices/tze284-ogx8u5z6-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_ogx8u5z6 TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze284-oitavov2-ts0601.json b/tests/data/devices/tze284-oitavov2-ts0601.json index 44d42e318..fdd1b5c65 100644 --- a/tests/data/devices/tze284-oitavov2-ts0601.json +++ b/tests/data/devices/tze284-oitavov2-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_oitavov2 TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": 184, diff --git a/tests/data/devices/tze284-qyflbnbj-ts0601.json b/tests/data/devices/tze284-qyflbnbj-ts0601.json index fb9bdf28e..9cb101024 100644 --- a/tests/data/devices/tze284-qyflbnbj-ts0601.json +++ b/tests/data/devices/tze284-qyflbnbj-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_qyflbnbj TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze284-rjxqso4a-ts0601.json b/tests/data/devices/tze284-rjxqso4a-ts0601.json index f80fddbb0..1fa5865c4 100644 --- a/tests/data/devices/tze284-rjxqso4a-ts0601.json +++ b/tests/data/devices/tze284-rjxqso4a-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_rjxqso4a TS0601", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze284-rqcuwlsa-ts0601.json b/tests/data/devices/tze284-rqcuwlsa-ts0601.json index f4395b0c7..0baa11217 100644 --- a/tests/data/devices/tze284-rqcuwlsa-ts0601.json +++ b/tests/data/devices/tze284-rqcuwlsa-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_rqcuwlsa TS0601", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.builder.EnchantedDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze284-upagmta9-ts0601.json b/tests/data/devices/tze284-upagmta9-ts0601.json index b806de9cf..fe1a7d48a 100644 --- a/tests/data/devices/tze284-upagmta9-ts0601.json +++ b/tests/data/devices/tze284-upagmta9-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_upagmta9 TS0601", "quirk_applied": true, "quirk_class": "zhaquirks.tuya.builder.EnchantedDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": 255, diff --git a/tests/data/devices/tze284-vawy74yh-ts0601.json b/tests/data/devices/tze284-vawy74yh-ts0601.json index 71789a315..47b82b0a0 100644 --- a/tests/data/devices/tze284-vawy74yh-ts0601.json +++ b/tests/data/devices/tze284-vawy74yh-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_vawy74yh TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": 255, diff --git a/tests/data/devices/tze284-vuwtqx0t-ts0601.json b/tests/data/devices/tze284-vuwtqx0t-ts0601.json index c99f14bbf..5d4476f51 100644 --- a/tests/data/devices/tze284-vuwtqx0t-ts0601.json +++ b/tests/data/devices/tze284-vuwtqx0t-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_vuwtqx0t TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": 255, diff --git a/tests/data/devices/tze284-wtikaxzs-ts0601.json b/tests/data/devices/tze284-wtikaxzs-ts0601.json index 7ef2daa0a..e3f9b086b 100644 --- a/tests/data/devices/tze284-wtikaxzs-ts0601.json +++ b/tests/data/devices/tze284-wtikaxzs-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_wtikaxzs TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze284-zjhoqbrd-ts0601.json b/tests/data/devices/tze284-zjhoqbrd-ts0601.json index 35d87cc0d..fd951fb91 100644 --- a/tests/data/devices/tze284-zjhoqbrd-ts0601.json +++ b/tests/data/devices/tze284-zjhoqbrd-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_zjhoqbrd TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": 255, diff --git a/tests/data/devices/tze284-zm8zpwas-ts0601.json b/tests/data/devices/tze284-zm8zpwas-ts0601.json index 855fbff76..2dfac5bb8 100644 --- a/tests/data/devices/tze284-zm8zpwas-ts0601.json +++ b/tests/data/devices/tze284-zm8zpwas-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_zm8zpwas TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/tze284-znvwzxkq-ts0601.json b/tests/data/devices/tze284-znvwzxkq-ts0601.json index 0fc11139b..a8b540da0 100644 --- a/tests/data/devices/tze284-znvwzxkq-ts0601.json +++ b/tests/data/devices/tze284-znvwzxkq-ts0601.json @@ -9,7 +9,7 @@ "name": "_TZE284_znvwzxkq TS0601", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4098, "power_source": "Mains", "lqi": null, diff --git a/tests/data/devices/xiaomi-lywsd03mmc.json b/tests/data/devices/xiaomi-lywsd03mmc.json index 4050f0a72..aa8c95195 100644 --- a/tests/data/devices/xiaomi-lywsd03mmc.json +++ b/tests/data/devices/xiaomi-lywsd03mmc.json @@ -9,7 +9,7 @@ "name": "Xiaomi LYWSD03MMC", "quirk_applied": true, "quirk_class": "zigpy.quirks.v2.CustomDeviceV2", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4417, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/xiaoyan-terncy-sd01.json b/tests/data/devices/xiaoyan-terncy-sd01.json index 735130c5f..95a39d0fc 100644 --- a/tests/data/devices/xiaoyan-terncy-sd01.json +++ b/tests/data/devices/xiaoyan-terncy-sd01.json @@ -9,7 +9,7 @@ "name": "Xiaoyan TERNCY-SD01", "quirk_applied": true, "quirk_class": "zhaquirks.terncy.sd01.TerncyKnobSmartDimmer", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4648, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/xyzroe-diy-zintercom.json b/tests/data/devices/xyzroe-diy-zintercom.json index 2116a10f4..dfd3b9a39 100644 --- a/tests/data/devices/xyzroe-diy-zintercom.json +++ b/tests/data/devices/xyzroe-diy-zintercom.json @@ -9,7 +9,7 @@ "name": "xyzroe DIY_Zintercom", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 0, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/yale-yrd256-tsdb.json b/tests/data/devices/yale-yrd256-tsdb.json index 0920e559c..6bf33e3b6 100644 --- a/tests/data/devices/yale-yrd256-tsdb.json +++ b/tests/data/devices/yale-yrd256-tsdb.json @@ -9,7 +9,7 @@ "name": "Yale YRD256 TSDB", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4125, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/yooksmart-d10110.json b/tests/data/devices/yooksmart-d10110.json index 317b6c355..7c79a04e6 100644 --- a/tests/data/devices/yooksmart-d10110.json +++ b/tests/data/devices/yooksmart-d10110.json @@ -9,7 +9,7 @@ "name": "yooksmart D10110", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4169, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/yunding-ford.json b/tests/data/devices/yunding-ford.json index a80c478a7..598b1d038 100644 --- a/tests/data/devices/yunding-ford.json +++ b/tests/data/devices/yunding-ford.json @@ -9,7 +9,7 @@ "name": "Yunding Ford", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4698, "power_source": "Battery or Unknown", "lqi": null, diff --git a/tests/data/devices/zbeacon-ts0001.json b/tests/data/devices/zbeacon-ts0001.json index 9e7def39f..6929b8559 100644 --- a/tests/data/devices/zbeacon-ts0001.json +++ b/tests/data/devices/zbeacon-ts0001.json @@ -9,7 +9,7 @@ "name": "Zbeacon TS0001", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4107, "power_source": "Mains", "lqi": 140, diff --git a/tests/data/devices/zbeacon-ts0505.json b/tests/data/devices/zbeacon-ts0505.json index 2100c3aba..c1ad4af29 100644 --- a/tests/data/devices/zbeacon-ts0505.json +++ b/tests/data/devices/zbeacon-ts0505.json @@ -9,7 +9,7 @@ "name": "zbeacon TS0505", "quirk_applied": false, "quirk_class": "zigpy.device.Device", - "quirk_id": null, + "exposes_features": [], "manufacturer_code": 4660, "power_source": "Mains", "lqi": null, diff --git a/tests/test_cluster_handlers.py b/tests/test_cluster_handlers.py index f5ee48224..cfc400160 100644 --- a/tests/test_cluster_handlers.py +++ b/tests/test_cluster_handlers.py @@ -525,10 +525,10 @@ async def test_out_cluster_handler_config( def test_cluster_handler_registry() -> None: """Test ZIGBEE cluster handler Registry.""" - # get all quirk ID from zigpy quirks registry - cluster_quirk_id_map: dict[int, set[str | None]] = {} + # get all exposed features from zigpy quirks registry + cluster_exposed_feature_map: dict[int, set[str | None]] = {} for cluster_id in CLUSTERS_BY_ID: - cluster_quirk_id_map[cluster_id] = {None} + cluster_exposed_feature_map[cluster_id] = {None} # loop over custom clusters in v2 quirks registry for quirks in _DEVICE_REGISTRY.registry_v2.values(): @@ -538,13 +538,15 @@ def test_cluster_handler_registry() -> None: rm.add for rm in quirk_reg_entry.replaces_metadata } for metadata in all_metadata: - cluster_quirk_id_map[metadata.cluster.cluster_id] = {None} + cluster_exposed_feature_map[metadata.cluster.cluster_id] = {None} # loop over custom clusters in v1 quirks registry for manufacturer in _DEVICE_REGISTRY.registry_v1.values(): for model_quirk_list in manufacturer.values(): for quirk in model_quirk_list: - quirk_id = getattr(quirk, ATTR_QUIRK_ID, None) + qid: set[str] | str = getattr(quirk, ATTR_QUIRK_ID, set()) + exposed_features: set[str] = {qid} if isinstance(qid, str) else set(qid) + device_description: dict[str, dict[str, Any]] = getattr( quirk, "replacement", None ) or getattr(quirk, "signature", None) @@ -558,22 +560,30 @@ def test_cluster_handler_registry() -> None: for cluster_id in cluster_ids: if not isinstance(cluster_id, int): cluster_id = cluster_id.cluster_id - if cluster_id not in cluster_quirk_id_map: - cluster_quirk_id_map[cluster_id] = {None} - cluster_quirk_id_map[cluster_id].add(quirk_id) + if cluster_id not in cluster_exposed_feature_map: + cluster_exposed_feature_map[cluster_id] = {None} + cluster_exposed_feature_map[cluster_id].update(exposed_features) for ( cluster_id, cluster_handler_classes, ) in CLUSTER_HANDLER_REGISTRY.items(): + # test cluster_id is valid assert isinstance(cluster_id, int) assert 0 <= cluster_id <= 0xFFFF - assert cluster_id in cluster_quirk_id_map + + # test all registered clusters are used in zigpy or quirks + assert cluster_id in cluster_exposed_feature_map + assert isinstance(cluster_handler_classes, dict) - for quirk_id, cluster_handler in cluster_handler_classes.items(): - assert quirk_id is None or isinstance(quirk_id, str) + for ch_exposed_feature, cluster_handler in cluster_handler_classes.items(): + # test cluster handler is not quirk specific + # or only has a single exposed feature + assert ch_exposed_feature is None or isinstance(ch_exposed_feature, str) assert issubclass(cluster_handler, ClusterHandler) - assert quirk_id in cluster_quirk_id_map[cluster_id] + + # test cluster handler exposed feature is used in quirk with that cluster + assert ch_exposed_feature in cluster_exposed_feature_map[cluster_id] def test_epch_unclaimed_cluster_handlers(cluster_handler) -> None: @@ -811,7 +821,7 @@ async def test_ep_cluster_handlers_configure(cluster_handler) -> None: ) zha_dev = mock.MagicMock(spec=Device) zha_dev.unique_id = "00:11:22:33:44:55:66:77" - type(zha_dev).quirk_id = mock.PropertyMock(return_value=None) + type(zha_dev).exposes_features = mock.PropertyMock(return_value=set()) endpoint = Endpoint.new(endpoint_mock, zha_dev) claimed = {ch_1.id: ch_1, ch_2.id: ch_2, ch_3.id: ch_3} @@ -1014,7 +1024,7 @@ class TestZigbeeClusterHandler(ClusterHandler): ) mock_zha_device = mock.AsyncMock(spec=Device) - mock_zha_device.quirk_id = None + mock_zha_device.exposes_features = set() mock_zha_device.unique_id = "aa:bb:cc:dd:11:22:33:44" zha_endpoint = Endpoint(zigpy_ep, mock_zha_device) @@ -1059,14 +1069,14 @@ class TestZigbeeClusterHandler(ColorClusterHandler): ) mock_zha_device = mock.AsyncMock(spec=Device) - mock_zha_device.quirk_id = None + mock_zha_device.exposes_features = set() mock_zha_device.unique_id = "aa:bb:cc:dd:11:22:33:44" zha_endpoint = Endpoint(zigpy_ep, mock_zha_device) with patch.dict( CLUSTER_HANDLER_REGISTRY[cluster.cluster_id], - {"__test_quirk_id": TestZigbeeClusterHandler}, + {"__exposed_feature_id": TestZigbeeClusterHandler}, ): zha_endpoint.add_all_cluster_handlers() @@ -1076,10 +1086,10 @@ class TestZigbeeClusterHandler(ColorClusterHandler): ) -async def test_quirk_id_cluster_handler( +async def test_exposed_feature_cluster_handler( zha_gateway: Gateway, ) -> None: # pylint: disable=unused-argument - """Test setting up a cluster handler that matches a standard cluster.""" + """Test setting up a cluster handler with an exposed feature.""" class TestZigbeeClusterHandler(ColorClusterHandler): """Test cluster handler that matches a standard cluster.""" @@ -1100,12 +1110,12 @@ class TestZigbeeClusterHandler(ColorClusterHandler): mock_zha_device = mock.AsyncMock(spec=Device) mock_zha_device.unique_id = "aa:bb:cc:dd:11:22:33:44" - mock_zha_device.quirk_id = "__test_quirk_id" + mock_zha_device.exposes_features = {"__exposed_feature_id"} zha_endpoint = Endpoint(zigpy_ep, mock_zha_device) with patch.dict( CLUSTER_HANDLER_REGISTRY[cluster.cluster_id], - {"__test_quirk_id": TestZigbeeClusterHandler}, + {"__exposed_feature_id": TestZigbeeClusterHandler}, ): zha_endpoint.add_all_cluster_handlers() diff --git a/tests/test_registries.py b/tests/test_registries.py index efd72a04a..bd2c507c7 100644 --- a/tests/test_registries.py +++ b/tests/test_registries.py @@ -25,7 +25,7 @@ MANUFACTURER = "mock manufacturer" MODEL = "mock model" QUIRK_CLASS = "mock.test.quirk.class" -QUIRK_ID = "quirk_id" +EXPOSED_FEATURE = "EXPOSED_FEATURE_ID" @pytest.fixture @@ -97,14 +97,20 @@ def cluster_handlers(cluster_handler): MatchRule(models="no match", aux_cluster_handlers="aux_cluster_handler"), False, ), - (MatchRule(quirk_ids=QUIRK_ID), True), - (MatchRule(quirk_ids="no match"), False), + (MatchRule(exposed_features=EXPOSED_FEATURE), True), + (MatchRule(exposed_features="no match"), False), + (MatchRule(exposed_features={"no match for this yet", EXPOSED_FEATURE}), True), ( - MatchRule(quirk_ids=QUIRK_ID, aux_cluster_handlers="aux_cluster_handler"), + MatchRule( + exposed_features=EXPOSED_FEATURE, + aux_cluster_handlers="aux_cluster_handler", + ), True, ), ( - MatchRule(quirk_ids="no match", aux_cluster_handlers="aux_cluster_handler"), + MatchRule( + exposed_features="no match", aux_cluster_handlers="aux_cluster_handler" + ), False, ), # match everything @@ -114,7 +120,7 @@ def cluster_handlers(cluster_handler): cluster_handler_names={"on_off", "level"}, manufacturers=MANUFACTURER, models=MODEL, - quirk_ids=QUIRK_ID, + exposed_features=EXPOSED_FEATURE, ), True, ), @@ -167,31 +173,33 @@ def cluster_handlers(cluster_handler): ( MatchRule( cluster_handler_names="on_off", - quirk_ids={"random quirk", QUIRK_ID}, + exposed_features={"random quirk", EXPOSED_FEATURE}, ), True, ), ( MatchRule( cluster_handler_names="on_off", - quirk_ids={"random quirk", "another quirk"}, + exposed_features={"random quirk", "another quirk"}, ), False, ), ( MatchRule( - cluster_handler_names="on_off", quirk_ids=lambda x: x == QUIRK_ID + cluster_handler_names="on_off", + exposed_features=lambda x: x == EXPOSED_FEATURE, ), True, ), ( MatchRule( - cluster_handler_names="on_off", quirk_ids=lambda x: x != QUIRK_ID + cluster_handler_names="on_off", + exposed_features=lambda x: x != EXPOSED_FEATURE, ), False, ), ( - MatchRule(cluster_handler_names="on_off", quirk_ids=QUIRK_ID), + MatchRule(cluster_handler_names="on_off", exposed_features=EXPOSED_FEATURE), True, ), ], @@ -199,7 +207,8 @@ def cluster_handlers(cluster_handler): def test_registry_matching(rule, matched, cluster_handlers) -> None: """Test strict rule matching.""" assert ( - rule.strict_matched(MANUFACTURER, MODEL, cluster_handlers, QUIRK_ID) is matched + rule.strict_matched(MANUFACTURER, MODEL, cluster_handlers, {EXPOSED_FEATURE}) + is matched ) @@ -287,8 +296,8 @@ def test_registry_matching(rule, matched, cluster_handlers) -> None: (MatchRule(manufacturers=MANUFACTURER), True), (MatchRule(models=MODEL), True), (MatchRule(models="no match"), False), - (MatchRule(quirk_ids=QUIRK_ID), True), - (MatchRule(quirk_ids="no match"), False), + (MatchRule(exposed_features=EXPOSED_FEATURE), True), + (MatchRule(exposed_features="no match"), False), # match everything ( MatchRule( @@ -296,7 +305,7 @@ def test_registry_matching(rule, matched, cluster_handlers) -> None: cluster_handler_names={"on_off", "level"}, manufacturers=MANUFACTURER, models=MODEL, - quirk_ids=QUIRK_ID, + exposed_features=EXPOSED_FEATURE, ), True, ), @@ -305,7 +314,8 @@ def test_registry_matching(rule, matched, cluster_handlers) -> None: def test_registry_loose_matching(rule, matched, cluster_handlers) -> None: """Test loose rule matching.""" assert ( - rule.loose_matched(MANUFACTURER, MODEL, cluster_handlers, QUIRK_ID) is matched + rule.loose_matched(MANUFACTURER, MODEL, cluster_handlers, {EXPOSED_FEATURE}) + is matched ) @@ -369,12 +379,12 @@ def entity_registry(): @pytest.mark.parametrize( - ("manufacturer", "model", "quirk_id", "match_name"), + ("manufacturer", "model", "exposes_features", "match_name"), [ ("random manufacturer", "random model", "random.class", "OnOff"), ("random manufacturer", MODEL, "random.class", "OnOffModel"), (MANUFACTURER, "random model", "random.class", "OnOffManufacturer"), - ("random manufacturer", "random model", QUIRK_ID, "OnOffQuirk"), + ("random manufacturer", "random model", EXPOSED_FEATURE, "OnOffQuirk"), (MANUFACTURER, MODEL, "random.class", "OnOffModelManufacturer"), (MANUFACTURER, "some model", "random.class", "OnOffMultimodel"), ], @@ -384,7 +394,7 @@ def test_weighted_match( entity_registry: PlatformEntityRegistry, manufacturer, model, - quirk_id, + exposes_features, match_name, ) -> None: """Test weightedd match.""" @@ -425,7 +435,7 @@ class OnOffModelManufacturer: # pylint: disable=unused-variable """OnOff model and manufacturer cluster handler.""" @entity_registry.strict_match( - s.component, cluster_handler_names="on_off", quirk_ids=QUIRK_ID + s.component, cluster_handler_names="on_off", exposed_features=EXPOSED_FEATURE ) class OnOffQuirk: # pylint: disable=unused-variable """OnOff quirk cluster handler.""" @@ -434,7 +444,7 @@ class OnOffQuirk: # pylint: disable=unused-variable ch_level = cluster_handler("level", 8) match, claimed = entity_registry.get_entity( - s.component, manufacturer, model, [ch_on_off, ch_level], quirk_id + s.component, manufacturer, model, [ch_on_off, ch_level], {exposes_features} ) assert match.__name__ == match_name @@ -462,7 +472,7 @@ class SmartEnergySensor2: "manufacturer", "model", cluster_handlers=[ch_se, ch_illuminati], - quirk_id="quirk_id", + exposes_features={"exposed_feature_id"}, ) assert s.binary_sensor in match @@ -492,7 +502,7 @@ class SmartEnergySensor3: "manufacturer", "model", cluster_handlers={ch_se, ch_illuminati}, - quirk_id="quirk_id", + exposes_features={"exposed_feature_id"}, ) assert s.binary_sensor in match @@ -540,21 +550,23 @@ def quirk_class_validator(value): quirk_class_validator(v) return - if value not in all_quirk_ids: - raise ValueError(f"Quirk ID '{value}' does not exist.") + if value not in all_exposed_features: + raise ValueError(f"Exposed feature '{value}' does not exist.") # get all quirk ID from zigpy quirks registry - all_quirk_ids = [] + all_exposed_features: set[str] = set() for manufacturer in zigpy_quirks._DEVICE_REGISTRY.registry_v1.values(): for model_quirk_list in manufacturer.values(): for quirk in model_quirk_list: - quirk_id = getattr(quirk, ATTR_QUIRK_ID, None) - if quirk_id is not None and quirk_id not in all_quirk_ids: - all_quirk_ids.append(quirk_id) + qid: set[str] | str = getattr(quirk, ATTR_QUIRK_ID, set()) + device_exposed_features: set[str] = ( + {qid} if isinstance(qid, str) else set(qid) + ) + all_exposed_features.update(device_exposed_features) # validate all quirk IDs used in component match rules for rule, _ in iter_all_rules(): - quirk_class_validator(rule.quirk_ids) + quirk_class_validator(rule.exposed_features) def test_entity_names() -> None: diff --git a/zha/application/discovery.py b/zha/application/discovery.py index c37e787bd..bacae08d2 100644 --- a/zha/application/discovery.py +++ b/zha/application/discovery.py @@ -408,7 +408,7 @@ def discover_by_device_type( endpoint.device.manufacturer, endpoint.device.model, cluster_handlers, - endpoint.device.quirk_id, + endpoint.device.exposes_features, ) if entity_class is None: return @@ -437,7 +437,7 @@ def probe_single_cluster( endpoint.device.manufacturer, endpoint.device.model, [cluster_handler], - endpoint.device.quirk_id, + endpoint.device.exposes_features, ) if entity_class is None: return @@ -500,14 +500,16 @@ def handle_on_off_output_cluster_exception( cluster_id, {None: ClusterHandler} ) - quirk_id = ( - endpoint.device.quirk_id - if endpoint.device.quirk_id in cluster_handler_classes - else None - ) + # get first exposed feature from device + # that matches a registered cluster handler + cluster_exposed_feature: str | None = None + for exposed_features in endpoint.device.exposes_features: + if exposed_features in cluster_handler_classes: + cluster_exposed_feature = exposed_features + break cluster_handler_class = cluster_handler_classes.get( - quirk_id, ClusterHandler + cluster_exposed_feature, ClusterHandler ) cluster_handler = cluster_handler_class(cluster, endpoint) @@ -539,14 +541,14 @@ def discover_multi_entities( device.manufacturer, device.model, cluster_handlers, - device.quirk_id, + device.exposes_features, ) else: matches, claimed = PLATFORM_ENTITIES.get_multi_entity( device.manufacturer, device.model, endpoint.unclaimed_cluster_handlers(), - device.quirk_id, + device.exposes_features, ) endpoint.claim_cluster_handlers(claimed) diff --git a/zha/application/platforms/binary_sensor/__init__.py b/zha/application/platforms/binary_sensor/__init__.py index 676cbd917..1574bd2f9 100644 --- a/zha/application/platforms/binary_sensor/__init__.py +++ b/zha/application/platforms/binary_sensor/__init__.py @@ -398,7 +398,7 @@ class AqaraE1CurtainMotorOpenedByHandBinarySensor(BinarySensor): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossMountingModeActive(BinarySensor): """Danfoss TRV proprietary attribute exposing whether in mounting mode.""" @@ -412,7 +412,7 @@ class DanfossMountingModeActive(BinarySensor): @MULTI_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossHeatRequired(BinarySensor): """Danfoss TRV proprietary attribute exposing whether heat is required.""" @@ -424,7 +424,7 @@ class DanfossHeatRequired(BinarySensor): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossPreheatStatus(BinarySensor): """Danfoss TRV proprietary attribute exposing whether in pre-heating mode.""" diff --git a/zha/application/platforms/number/__init__.py b/zha/application/platforms/number/__init__.py index 24be963e4..fed5c8d95 100644 --- a/zha/application/platforms/number/__init__.py +++ b/zha/application/platforms/number/__init__.py @@ -920,7 +920,7 @@ def recompute_capabilities(self) -> None: @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossExerciseTriggerTime(NumberConfigurationEntity): """Danfoss proprietary attribute to set the time to exercise the valve.""" @@ -936,7 +936,7 @@ class DanfossExerciseTriggerTime(NumberConfigurationEntity): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossExternalMeasuredRoomSensor(ZCLTemperatureEntity): """Danfoss proprietary attribute to communicate the value of the external temperature sensor.""" @@ -950,7 +950,7 @@ class DanfossExternalMeasuredRoomSensor(ZCLTemperatureEntity): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossLoadRoomMean(NumberConfigurationEntity): """Danfoss proprietary attribute to set a value for the load.""" @@ -965,7 +965,7 @@ class DanfossLoadRoomMean(NumberConfigurationEntity): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossRegulationSetpointOffset(NumberConfigurationEntity): """Danfoss proprietary attribute to set the regulation setpoint offset.""" diff --git a/zha/application/platforms/select.py b/zha/application/platforms/select.py index f0dd063f5..a943d5f82 100644 --- a/zha/application/platforms/select.py +++ b/zha/application/platforms/select.py @@ -283,10 +283,10 @@ class TuyaPowerOnState(types.enum8): @CONFIG_DIAGNOSTIC_MATCH( - cluster_handler_names=CLUSTER_HANDLER_ON_OFF, quirk_ids=TUYA_PLUG_ONOFF + cluster_handler_names=CLUSTER_HANDLER_ON_OFF, exposed_features=TUYA_PLUG_ONOFF ) @CONFIG_DIAGNOSTIC_MATCH( - cluster_handler_names="tuya_manufacturer", quirk_ids=TUYA_PLUG_MANUFACTURER + cluster_handler_names="tuya_manufacturer", exposed_features=TUYA_PLUG_MANUFACTURER ) class TuyaPowerOnStateSelectEntity(ZCLEnumSelectEntity): """Representation of a ZHA power on state select entity.""" @@ -306,7 +306,7 @@ class TuyaBacklightMode(types.enum8): @CONFIG_DIAGNOSTIC_MATCH( - cluster_handler_names=CLUSTER_HANDLER_ON_OFF, quirk_ids=TUYA_PLUG_ONOFF + cluster_handler_names=CLUSTER_HANDLER_ON_OFF, exposed_features=TUYA_PLUG_ONOFF ) class TuyaBacklightModeSelectEntity(ZCLEnumSelectEntity): """Representation of a ZHA backlight mode select entity.""" @@ -327,7 +327,7 @@ class MoesBacklightMode(types.enum8): @CONFIG_DIAGNOSTIC_MATCH( - cluster_handler_names="tuya_manufacturer", quirk_ids=TUYA_PLUG_MANUFACTURER + cluster_handler_names="tuya_manufacturer", exposed_features=TUYA_PLUG_MANUFACTURER ) class MoesBacklightModeSelectEntity(ZCLEnumSelectEntity): """Moes devices have a different backlight mode select options.""" @@ -733,7 +733,7 @@ class KeypadLockout(ZCLEnumSelectEntity): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossExerciseDayOfTheWeek(ZCLEnumSelectEntity): """Danfoss proprietary attribute for setting the day of the week for exercising.""" @@ -753,7 +753,7 @@ class DanfossOrientationEnum(types.enum8): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossOrientation(ZCLEnumSelectEntity): """Danfoss proprietary attribute for setting the orientation of the valve. @@ -770,7 +770,7 @@ class DanfossOrientation(ZCLEnumSelectEntity): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossAdaptationRunControl(ZCLEnumSelectEntity): """Danfoss proprietary attribute for controlling the current adaptation run.""" @@ -808,7 +808,7 @@ class DanfossControlAlgorithmScaleFactorEnum(types.enum8): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossControlAlgorithmScaleFactor(ZCLEnumSelectEntity): """Danfoss proprietary attribute for setting the scale factor of the setpoint filter time constant.""" @@ -821,7 +821,7 @@ class DanfossControlAlgorithmScaleFactor(ZCLEnumSelectEntity): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names="thermostat_ui", - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossViewingDirection(ZCLEnumSelectEntity): """Danfoss proprietary attribute for setting the viewing direction of the screen.""" diff --git a/zha/application/platforms/sensor/__init__.py b/zha/application/platforms/sensor/__init__.py index fcfa8558e..6f8abb48f 100644 --- a/zha/application/platforms/sensor/__init__.py +++ b/zha/application/platforms/sensor/__init__.py @@ -1972,7 +1972,7 @@ def formatter(self, _value: int) -> str: @MULTI_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossOpenWindowDetection(EnumSensor): """Danfoss proprietary attribute. @@ -1988,7 +1988,7 @@ class DanfossOpenWindowDetection(EnumSensor): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossLoadEstimate(Sensor): """Danfoss proprietary attribute for communicating its estimate of the radiator load.""" @@ -2001,7 +2001,7 @@ class DanfossLoadEstimate(Sensor): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossAdaptationRunStatus(BitMapSensor): """Danfoss proprietary attribute for showing the status of the adaptation run.""" @@ -2015,7 +2015,7 @@ class DanfossAdaptationRunStatus(BitMapSensor): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossPreheatTime(Sensor): """Danfoss proprietary attribute for communicating the time when it starts pre-heating.""" @@ -2029,7 +2029,7 @@ class DanfossPreheatTime(Sensor): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_DIAGNOSTIC, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossSoftwareErrorCode(BitMapSensor): """Danfoss proprietary attribute for communicating the error code.""" @@ -2043,7 +2043,7 @@ class DanfossSoftwareErrorCode(BitMapSensor): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_DIAGNOSTIC, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossMotorStepCounter(Sensor): """Danfoss proprietary attribute for communicating the motor step counter.""" diff --git a/zha/application/platforms/switch.py b/zha/application/platforms/switch.py index 8de02ce78..e1d98e8f7 100644 --- a/zha/application/platforms/switch.py +++ b/zha/application/platforms/switch.py @@ -628,7 +628,7 @@ class AqaraPetFeederChildLock(ConfigurableAttributeSwitch): @CONFIG_DIAGNOSTIC_MATCH( - cluster_handler_names=CLUSTER_HANDLER_ON_OFF, quirk_ids=TUYA_PLUG_ONOFF + cluster_handler_names=CLUSTER_HANDLER_ON_OFF, exposed_features=TUYA_PLUG_ONOFF ) class TuyaChildLockSwitch(ConfigurableAttributeSwitch): """Representation of a child lock configuration entity.""" @@ -812,7 +812,7 @@ class AqaraE1CurtainMotorHooksLockedSwitch(ConfigurableAttributeSwitch): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossExternalOpenWindowDetected(ConfigurableAttributeSwitch): """Danfoss proprietary attribute for communicating an open window.""" @@ -824,7 +824,7 @@ class DanfossExternalOpenWindowDetected(ConfigurableAttributeSwitch): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossWindowOpenFeature(ConfigurableAttributeSwitch): """Danfoss proprietary attribute enabling open window detection.""" @@ -836,7 +836,7 @@ class DanfossWindowOpenFeature(ConfigurableAttributeSwitch): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossMountingModeControl(ConfigurableAttributeSwitch): """Danfoss proprietary attribute for switching to mounting mode.""" @@ -848,7 +848,7 @@ class DanfossMountingModeControl(ConfigurableAttributeSwitch): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossRadiatorCovered(ConfigurableAttributeSwitch): """Danfoss proprietary attribute for communicating full usage of the external temperature sensor.""" @@ -860,7 +860,7 @@ class DanfossRadiatorCovered(ConfigurableAttributeSwitch): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossHeatAvailable(ConfigurableAttributeSwitch): """Danfoss proprietary attribute for communicating available heat.""" @@ -872,7 +872,7 @@ class DanfossHeatAvailable(ConfigurableAttributeSwitch): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossLoadBalancingEnable(ConfigurableAttributeSwitch): """Danfoss proprietary attribute for enabling load balancing.""" @@ -884,7 +884,7 @@ class DanfossLoadBalancingEnable(ConfigurableAttributeSwitch): @CONFIG_DIAGNOSTIC_MATCH( cluster_handler_names=CLUSTER_HANDLER_THERMOSTAT, - quirk_ids={DANFOSS_ALLY_THERMOSTAT}, + exposed_features={DANFOSS_ALLY_THERMOSTAT}, ) class DanfossAdaptationRunSettings(ConfigurableAttributeSwitch): """Danfoss proprietary attribute for enabling daily adaptation run. diff --git a/zha/application/registries.py b/zha/application/registries.py index 2481c8bc4..404afa97f 100644 --- a/zha/application/registries.py +++ b/zha/application/registries.py @@ -119,7 +119,7 @@ class MatchRule: manufacturers: frozenset[str] | Callable[[str], bool] = frozenset() models: frozenset[str] | Callable[[str], bool] = frozenset() aux_cluster_handlers: frozenset[str] | Callable[[str], bool] = frozenset() - quirk_ids: frozenset[str] | Callable[[str], bool] = frozenset() + exposed_features: frozenset[str] | Callable[[str], bool] = frozenset() def __post_init__(self) -> None: """Convert passed arguments to a set or a callable.""" @@ -132,7 +132,9 @@ def __post_init__(self) -> None: object.__setattr__( self, "aux_cluster_handlers", set_or_callable(self.aux_cluster_handlers) ) - object.__setattr__(self, "quirk_ids", set_or_callable(self.quirk_ids)) + object.__setattr__( + self, "exposed_features", set_or_callable(self.exposed_features) + ) @property def weight(self) -> int: @@ -148,8 +150,10 @@ def weight(self) -> int: multiple cluster handlers a better priority over rules matching a single cluster handler. """ weight = 0 - if self.quirk_ids: - weight += 501 - (1 if callable(self.quirk_ids) else len(self.quirk_ids)) + if self.exposed_features: + weight += 501 - ( + 1 if callable(self.exposed_features) else len(self.exposed_features) + ) if self.models: weight += 401 - (1 if callable(self.models) else len(self.models)) @@ -189,27 +193,31 @@ def strict_matched( manufacturer: str, model: str, cluster_handlers: list, - quirk_id: str | None, + exposes_features: set[str], ) -> bool: """Return True if this device matches the criteria.""" - return all(self._matched(manufacturer, model, cluster_handlers, quirk_id)) + return all( + self._matched(manufacturer, model, cluster_handlers, exposes_features) + ) def loose_matched( self, manufacturer: str, model: str, cluster_handlers: list, - quirk_id: str | None, + exposes_features: set[str], ) -> bool: """Return True if this device matches the criteria.""" - return any(self._matched(manufacturer, model, cluster_handlers, quirk_id)) + return any( + self._matched(manufacturer, model, cluster_handlers, exposes_features) + ) def _matched( self, manufacturer: str, model: str, cluster_handlers: list, - quirk_id: str | None, + exposes_features: set[str], ) -> list: """Return a list of field matches.""" if not any( @@ -219,7 +227,7 @@ def _matched( self.manufacturers, self.models, self.aux_cluster_handlers, - self.quirk_ids, + self.exposed_features, ] ): return [False] @@ -245,11 +253,15 @@ def _matched( else: matches.append(model in self.models) - if self.quirk_ids: - if callable(self.quirk_ids): - matches.append(self.quirk_ids(quirk_id)) + if self.exposed_features: + if callable(self.exposed_features): + matches.append( + any(self.exposed_features(qid) for qid in exposes_features) + ) else: - matches.append(quirk_id in self.quirk_ids) + matches.append( + any(qid in self.exposed_features for qid in exposes_features) + ) return matches @@ -290,13 +302,15 @@ def get_entity( manufacturer: str, model: str, cluster_handlers: list[ClusterHandler], - quirk_id: str | None, + exposes_features: set[str], default: type[PlatformEntity] | None = None, ) -> tuple[type[PlatformEntity] | None, list[ClusterHandler]]: """Match a ZHA ClusterHandler to a ZHA Entity class.""" matches = self._strict_registry[platform] for match in sorted(matches, key=WEIGHT_ATTR, reverse=True): - if match.strict_matched(manufacturer, model, cluster_handlers, quirk_id): + if match.strict_matched( + manufacturer, model, cluster_handlers, exposes_features + ): claimed = match.claim_cluster_handlers(cluster_handlers) return self._strict_registry[platform][match], claimed @@ -307,7 +321,7 @@ def get_multi_entity( manufacturer: str, model: str, cluster_handlers: list[ClusterHandler], - quirk_id: str | None, + exposes_features: set[str], ) -> tuple[ dict[Platform, list[EntityClassAndClusterHandlers]], list[ClusterHandler] ]: @@ -321,7 +335,7 @@ def get_multi_entity( sorted_matches = sorted(matches, key=WEIGHT_ATTR, reverse=True) for match in sorted_matches: if match.strict_matched( - manufacturer, model, cluster_handlers, quirk_id + manufacturer, model, cluster_handlers, exposes_features ): claimed = match.claim_cluster_handlers(cluster_handlers) for ent_class in matches[match]: @@ -340,7 +354,7 @@ def get_config_diagnostic_entity( manufacturer: str, model: str, cluster_handlers: list[ClusterHandler], - quirk_id: str | None, + exposes_features: set[str], ) -> tuple[ dict[Platform, list[EntityClassAndClusterHandlers]], list[ClusterHandler] ]: @@ -357,7 +371,7 @@ def get_config_diagnostic_entity( sorted_matches = sorted(matches, key=WEIGHT_ATTR, reverse=True) for match in sorted_matches: if match.strict_matched( - manufacturer, model, cluster_handlers, quirk_id + manufacturer, model, cluster_handlers, exposes_features ): claimed = match.claim_cluster_handlers(cluster_handlers) for ent_class in matches[match]: @@ -383,7 +397,7 @@ def strict_match( manufacturers: Callable | set[str] | str | None = None, models: Callable | set[str] | str | None = None, aux_cluster_handlers: Callable | set[str] | str | None = None, - quirk_ids: set[str] | str | None = None, + exposed_features: set[str] | str | None = None, ) -> Callable[[type[PlatformEntity]], type[PlatformEntity]]: """Decorate a strict match rule.""" @@ -393,7 +407,7 @@ def strict_match( manufacturers, models, aux_cluster_handlers, - quirk_ids, + exposed_features, ) def decorator(zha_ent: type[PlatformEntity]) -> type[PlatformEntity]: @@ -415,7 +429,7 @@ def multipass_match( models: Callable | set[str] | str | None = None, aux_cluster_handlers: Callable | set[str] | str | None = None, stop_on_match_group: int | str | None = None, - quirk_ids: set[str] | str | None = None, + exposed_features: set[str] | str | None = None, ) -> Callable[[type[PlatformEntity]], type[PlatformEntity]]: """Decorate a loose match rule.""" @@ -425,7 +439,7 @@ def multipass_match( manufacturers, models, aux_cluster_handlers, - quirk_ids, + exposed_features, ) def decorator(zha_entity: type[PlatformEntity]) -> type[PlatformEntity]: @@ -450,7 +464,7 @@ def config_diagnostic_match( models: Callable | set[str] | str | None = None, aux_cluster_handlers: Callable | set[str] | str | None = None, stop_on_match_group: int | str | None = None, - quirk_ids: set[str] | str | None = None, + exposed_features: set[str] | str | None = None, ) -> Callable[[type[PlatformEntity]], type[PlatformEntity]]: """Decorate a loose match rule.""" @@ -460,7 +474,7 @@ def config_diagnostic_match( manufacturers, models, aux_cluster_handlers, - quirk_ids, + exposed_features, ) def decorator(zha_entity: type[PlatformEntity]) -> type[PlatformEntity]: diff --git a/zha/zigbee/cluster_handlers/general.py b/zha/zigbee/cluster_handlers/general.py index 0c79aa8ca..e47517495 100644 --- a/zha/zigbee/cluster_handlers/general.py +++ b/zha/zigbee/cluster_handlers/general.py @@ -545,7 +545,7 @@ def __init__(self, cluster: zigpy.zcl.Cluster, endpoint: Endpoint) -> None: super().__init__(cluster, endpoint) self._off_listener: asyncio.TimerHandle | None = None - if endpoint.device.quirk_id == TUYA_PLUG_ONOFF: + if TUYA_PLUG_ONOFF in endpoint.device.exposes_features: self.ZCL_INIT_ATTRS = self.ZCL_INIT_ATTRS.copy() self.ZCL_INIT_ATTRS["backlight_mode"] = True self.ZCL_INIT_ATTRS["power_on_state"] = True diff --git a/zha/zigbee/cluster_handlers/manufacturerspecific.py b/zha/zigbee/cluster_handlers/manufacturerspecific.py index 243e4048a..89ef94e8d 100644 --- a/zha/zigbee/cluster_handlers/manufacturerspecific.py +++ b/zha/zigbee/cluster_handlers/manufacturerspecific.py @@ -111,7 +111,7 @@ class TuyaClusterHandler(ClusterHandler): def __init__(self, cluster: zigpy.zcl.Cluster, endpoint: Endpoint) -> None: """Initialize TuyaClusterHandler.""" super().__init__(cluster, endpoint) - if endpoint.device.quirk_id == TUYA_PLUG_MANUFACTURER: + if TUYA_PLUG_MANUFACTURER in endpoint.device.exposes_features: self.ZCL_INIT_ATTRS = { "backlight_mode": True, "power_on_state": True, diff --git a/zha/zigbee/device.py b/zha/zigbee/device.py index 86641fd26..642421526 100644 --- a/zha/zigbee/device.py +++ b/zha/zigbee/device.py @@ -187,7 +187,7 @@ class DeviceInfo: name: str quirk_applied: bool quirk_class: str - quirk_id: str | None + exposes_features: set[str] manufacturer_code: int | None power_source: str lqi: int @@ -267,7 +267,11 @@ def __init__( f"{self._zigpy_device.__class__.__module__}." f"{self._zigpy_device.__class__.__name__}" ) - self.quirk_id: str | None = getattr(self._zigpy_device, ATTR_QUIRK_ID, None) + + # add v1 quirk exposed features (legacy quirk id) + qid: set[str] | str = getattr(self._zigpy_device, ATTR_QUIRK_ID, set()) + self.exposes_features: set[str] = {qid} if isinstance(qid, str) else set(qid) + self._power_config_ch: ClusterHandler | None = None self._identify_ch: ClusterHandler | None = None self._basic_ch: ClusterHandler | None = None @@ -312,7 +316,7 @@ def __repr__(self) -> str: f"{repr(self._zigpy_device)} - " f"quirk_applied: {self.quirk_applied} - " f"quirk_or_device_class: {self.quirk_class} - " - f"quirk_id: {self.quirk_id}" + f"exposes_features: {self.exposes_features}" ) @property @@ -740,7 +744,7 @@ def device_info(self) -> DeviceInfo: name=self.name, quirk_applied=self.quirk_applied, quirk_class=self.quirk_class, - quirk_id=self.quirk_id, + exposes_features=self.exposes_features, manufacturer_code=self.manufacturer_code, power_source=self.power_source, lqi=self.lqi, @@ -1431,7 +1435,7 @@ def get_diagnostics_json(self): info["name"] = self.name info["quirk_applied"] = self.quirk_applied info["quirk_class"] = self.quirk_class - info["quirk_id"] = self.quirk_id + info["exposes_features"] = self.exposes_features info["manufacturer_code"] = self.manufacturer_code info["power_source"] = self.power_source info["lqi"] = self.lqi diff --git a/zha/zigbee/endpoint.py b/zha/zigbee/endpoint.py index 3d1fbdc70..7a59a7bf5 100644 --- a/zha/zigbee/endpoint.py +++ b/zha/zigbee/endpoint.py @@ -149,13 +149,17 @@ def add_all_cluster_handlers(self) -> None: cluster_handler_classes = CLUSTER_HANDLER_REGISTRY.get( cluster_id, {None: ClusterHandler} ) - quirk_id = ( - self.device.quirk_id - if self.device.quirk_id in cluster_handler_classes - else None - ) + + # get first exposed feature from device + # that matches a registered cluster handler + cluster_exposed_features: str | None = None + for exposed_features in self.device.exposes_features: + if exposed_features in cluster_handler_classes: + cluster_exposed_features = exposed_features + break + cluster_handler_class = cluster_handler_classes.get( - quirk_id, ClusterHandler + cluster_exposed_features, ClusterHandler ) # Allow cluster handler to filter out bad matches