diff --git a/src/pysmartthings/models.py b/src/pysmartthings/models.py index 09383c6..d285f60 100644 --- a/src/pysmartthings/models.py +++ b/src/pysmartthings/models.py @@ -45,6 +45,30 @@ class Room(DataClassORJSONMixin): name: str +class MatterProvisioningState(StrEnum): + """Matter provisioning state.""" + + PROVISIONED = "PROVISIONED" + TYPED = "TYPED" + DRIVER_SWITCH = "DRIVER_SWITCH" + NONFUNCTIONAL = "NONFUNCTIONAL" + + +class MatterListeningType(StrEnum): + """Matter listening type.""" + + ALWAYS = "ALWAYS" + SLEEPY = "SLEEPY" + + +class MatterSupportedNetworkInterfaces(StrEnum): + """Matter supported network interfaces.""" + + THREAD = "THREAD" + WIFI = "WIFI" + ETHERNET = "ETHERNET" + + class DeviceType(StrEnum): """Device type.""" @@ -272,6 +296,50 @@ def __post_deserialize__(cls, obj: OCF) -> OCF: return obj +@dataclass +class Matter(DataClassORJSONMixin): + """Matter model.""" + + driver_id: str = field(metadata=field_options(alias="driverId")) + hub_id: str = field(metadata=field_options(alias="hubId")) + provisioning_state: MatterProvisioningState = field( + metadata=field_options(alias="provisioningState") + ) + network_id: str = field(metadata=field_options(alias="networkId")) + executing_locally: bool = field(metadata=field_options(alias="executingLocally")) + supported_network_interfaces: list[MatterSupportedNetworkInterfaces] = field( + metadata=field_options(alias="supportedNetworkInterfaces"), default_factory=list + ) + unique_id: str | None = field( + metadata=field_options(alias="uniqueId"), default=None + ) + vendor_id: int | None = field( + metadata=field_options(alias="vendorId"), default=None + ) + product_id: int | None = field( + metadata=field_options(alias="productId"), default=None + ) + serial_number: str | None = field( + metadata=field_options(alias="serialNumber"), default=None + ) + listening_type: MatterListeningType | None = field( + metadata=field_options(alias="listeningType"), default=None + ) + hardware_version: str | None = field( + metadata=field_options(alias="hardwareVersion"), default=None + ) + software_version: str | None = field( + metadata=field_options(alias="softwareVersion"), default=None + ) + + @classmethod + def __pre_deserialize__(cls, d: dict[str, Any]) -> dict[str, Any]: + """Pre deserialize hook.""" + d["hardwareVersion"] = d.get("version", {}).get("hardwareLabel") + d["softwareVersion"] = d.get("version", {}).get("softwareLabel") + return d + + @dataclass class Viper(DataClassORJSONMixin): """Viper model.""" @@ -333,6 +401,7 @@ class Device(DataClassORJSONMixin): ocf: OCF | None = None viper: Viper | None = None hub: Hub | None = None + matter: Matter | None = None @classmethod def __pre_deserialize__(cls, d: dict[str, Any]) -> dict[str, Any]: diff --git a/tests/__snapshots__/test_device.ambr b/tests/__snapshots__/test_device.ambr index 54ba38d..8ea472a 100644 --- a/tests/__snapshots__/test_device.ambr +++ b/tests/__snapshots__/test_device.ambr @@ -34,6 +34,7 @@ 'hub': None, 'label': 'Samsung Soundbar S801B', 'location_id': '6911ddf5-f0cb-4516-a06a-3a2a6ec22bca', + 'matter': None, 'name': 'Samsung Soundbar S801B', 'ocf': dict({ 'additional_auth_code_required': False, @@ -83,6 +84,7 @@ 'hub': None, 'label': 'Main Bedroom Window Sensor', 'location_id': '6911ddf5-f0cb-4516-a06a-3a2a6ec22bca', + 'matter': None, 'name': 'multi-sensor', 'ocf': None, 'parent_device_id': '6a2d07a4-dd77-48bc-9acf-017029aaf099', @@ -113,6 +115,7 @@ 'hub': None, 'label': 'Garage Motion Sensor', 'location_id': '6911ddf5-f0cb-4516-a06a-3a2a6ec22bca', + 'matter': None, 'name': 'motion-battery', 'ocf': None, 'parent_device_id': '6a2d07a4-dd77-48bc-9acf-017029aaf099', @@ -146,6 +149,7 @@ 'hub': None, 'label': "Charlie's Bedroom Window Sensor", 'location_id': '6911ddf5-f0cb-4516-a06a-3a2a6ec22bca', + 'matter': None, 'name': 'multi-sensor', 'ocf': None, 'parent_device_id': '6a2d07a4-dd77-48bc-9acf-017029aaf099', @@ -177,6 +181,7 @@ }), 'label': 'SmartThings v3 Hub', 'location_id': '6911ddf5-f0cb-4516-a06a-3a2a6ec22bca', + 'matter': None, 'name': 'SmartThings v3 Hub', 'ocf': None, 'parent_device_id': None, @@ -210,6 +215,7 @@ 'hub': None, 'label': 'Kitchen Door Sensor', 'location_id': '6911ddf5-f0cb-4516-a06a-3a2a6ec22bca', + 'matter': None, 'name': 'Multipurpose Sensor', 'ocf': None, 'parent_device_id': '6a2d07a4-dd77-48bc-9acf-017029aaf099', @@ -243,6 +249,7 @@ 'hub': None, 'label': 'Back Door Sensor', 'location_id': '6911ddf5-f0cb-4516-a06a-3a2a6ec22bca', + 'matter': None, 'name': 'Multipurpose Sensor', 'ocf': None, 'parent_device_id': '6a2d07a4-dd77-48bc-9acf-017029aaf099', @@ -276,6 +283,7 @@ 'hub': None, 'label': 'Garage Back Door Sensor', 'location_id': '6911ddf5-f0cb-4516-a06a-3a2a6ec22bca', + 'matter': None, 'name': 'Multipurpose Sensor', 'ocf': None, 'parent_device_id': '6a2d07a4-dd77-48bc-9acf-017029aaf099', @@ -309,6 +317,7 @@ 'hub': None, 'label': 'Front Door Sensor', 'location_id': '6911ddf5-f0cb-4516-a06a-3a2a6ec22bca', + 'matter': None, 'name': 'Multipurpose Sensor', 'ocf': None, 'parent_device_id': '6a2d07a4-dd77-48bc-9acf-017029aaf099', @@ -342,6 +351,7 @@ 'hub': None, 'label': 'Front Left Window Sensor', 'location_id': '6911ddf5-f0cb-4516-a06a-3a2a6ec22bca', + 'matter': None, 'name': 'Multipurpose Sensor', 'ocf': None, 'parent_device_id': '6a2d07a4-dd77-48bc-9acf-017029aaf099', @@ -375,6 +385,7 @@ 'hub': None, 'label': 'Landing Window Sensor', 'location_id': '6911ddf5-f0cb-4516-a06a-3a2a6ec22bca', + 'matter': None, 'name': 'multi-sensor', 'ocf': None, 'parent_device_id': '6a2d07a4-dd77-48bc-9acf-017029aaf099', @@ -406,6 +417,7 @@ 'hub': None, 'label': 'Rabbit House Sensor', 'location_id': '6911ddf5-f0cb-4516-a06a-3a2a6ec22bca', + 'matter': None, 'name': 'motion-temp-battery', 'ocf': None, 'parent_device_id': '6a2d07a4-dd77-48bc-9acf-017029aaf099', @@ -439,6 +451,7 @@ 'hub': None, 'label': 'Kitchen Window Sensor', 'location_id': '6911ddf5-f0cb-4516-a06a-3a2a6ec22bca', + 'matter': None, 'name': 'multi-sensor', 'ocf': None, 'parent_device_id': '6a2d07a4-dd77-48bc-9acf-017029aaf099', @@ -472,6 +485,7 @@ 'hub': None, 'label': "Girl's Bedroom Window Sensor", 'location_id': '6911ddf5-f0cb-4516-a06a-3a2a6ec22bca', + 'matter': None, 'name': 'multi-sensor', 'ocf': None, 'parent_device_id': '6a2d07a4-dd77-48bc-9acf-017029aaf099', @@ -531,6 +545,7 @@ 'hub': None, 'label': 'Samsung QN95CA 55', 'location_id': '6911ddf5-f0cb-4516-a06a-3a2a6ec22bca', + 'matter': None, 'name': 'Samsung QN95CA 55', 'ocf': dict({ 'additional_auth_code_required': False, @@ -603,6 +618,7 @@ 'hub': None, 'label': 'Samsung The Frame 55', 'location_id': '6911ddf5-f0cb-4516-a06a-3a2a6ec22bca', + 'matter': None, 'name': 'Samsung The Frame 55', 'ocf': dict({ 'additional_auth_code_required': False, @@ -650,6 +666,7 @@ 'hub': None, 'label': 'Aeotec Energy Monitor', 'location_id': '6911ddf5-f0cb-4516-a06a-3a2a6ec22bca', + 'matter': None, 'name': 'aeotec-home-energy-meter-gen5', 'ocf': None, 'parent_device_id': '6a2d07a4-dd77-48bc-9acf-017029aaf099', @@ -685,6 +702,7 @@ 'hub': None, 'label': 'Office', 'location_id': 'fe14085e-bacb-4997-bc0c-df08204eaea2', + 'matter': None, 'name': 'sensibo-airconditioner-1', 'ocf': None, 'parent_device_id': None, @@ -776,6 +794,7 @@ 'hub': None, 'label': 'Washer', 'location_id': 'fe14085e-bacb-4997-bc0c-df08204eaea2', + 'matter': None, 'name': '[washer] Samsung', 'ocf': dict({ 'additional_auth_code_required': False, @@ -823,6 +842,7 @@ }), 'label': 'Garage Hub', 'location_id': 'fe14085e-bacb-4997-bc0c-df08204eaea2', + 'matter': None, 'name': 'SmartThings v3 Hub', 'ocf': None, 'parent_device_id': None, @@ -854,6 +874,7 @@ }), 'label': 'Upstairs Hub', 'location_id': 'fe14085e-bacb-4997-bc0c-df08204eaea2', + 'matter': None, 'name': 'SmartThings v3 Hub', 'ocf': None, 'parent_device_id': None, @@ -884,6 +905,7 @@ 'hub': None, 'label': 'Geyser', 'location_id': 'fe14085e-bacb-4997-bc0c-df08204eaea2', + 'matter': None, 'name': 'Aeotec Switch', 'ocf': None, 'parent_device_id': '148606b0-9c62-417c-8c0a-c6e4ef7ce269', @@ -915,6 +937,7 @@ 'hub': None, 'label': 'Main Bedroom', 'location_id': 'fe14085e-bacb-4997-bc0c-df08204eaea2', + 'matter': None, 'name': 'sensibo-airconditioner-1', 'ocf': None, 'parent_device_id': None, @@ -950,6 +973,7 @@ 'hub': None, 'label': 'Geyser', 'location_id': 'fe14085e-bacb-4997-bc0c-df08204eaea2', + 'matter': None, 'name': 'Aeotec Switch', 'ocf': None, 'parent_device_id': '71526aa9-6457-417a-9bae-b83c87761e6a', @@ -981,6 +1005,7 @@ 'hub': None, 'label': "Harry's room", 'location_id': 'fe14085e-bacb-4997-bc0c-df08204eaea2', + 'matter': None, 'name': 'sensibo-airconditioner-1', 'ocf': None, 'parent_device_id': None, @@ -1076,6 +1101,7 @@ 'hub': None, 'label': 'Washing machine', 'location_id': '6a446433-a83d-4ede-9c47-f22a0f80b574', + 'matter': None, 'name': '[washer] Samsung', 'ocf': dict({ 'additional_auth_code_required': False, @@ -1147,6 +1173,7 @@ 'hub': None, 'label': '49" Odyssey OLED G9', 'location_id': '6a446433-a83d-4ede-9c47-f22a0f80b574', + 'matter': None, 'name': '49" Odyssey OLED G9', 'ocf': dict({ 'additional_auth_code_required': False, @@ -1198,6 +1225,7 @@ }), 'label': 'Home', 'location_id': 'c4904031-30e5-4920-9ea7-0a768e355b2a', + 'matter': None, 'name': 'SmartThings v2 Hub', 'ocf': None, 'parent_device_id': None, @@ -1228,6 +1256,7 @@ 'hub': None, 'label': 'Front Door Lock', 'location_id': 'c4904031-30e5-4920-9ea7-0a768e355b2a', + 'matter': None, 'name': 'base-lock', 'ocf': None, 'parent_device_id': 'd7c54320-6d75-4543-ab1f-9bd105336aae', @@ -1314,6 +1343,7 @@ 'hub': None, 'label': 'Washing machine', 'location_id': 'c4904031-30e5-4920-9ea7-0a768e355b2a', + 'matter': None, 'name': '[washer] Samsung', 'ocf': dict({ 'additional_auth_code_required': False, @@ -1416,6 +1446,7 @@ 'hub': None, 'label': 'Tvättmaskin', 'location_id': 'eed0e167-e793-459b-80cb-a0b02e2b86c2', + 'matter': None, 'name': '[washer] Samsung', 'ocf': dict({ 'additional_auth_code_required': False, @@ -1487,6 +1518,7 @@ 'hub': None, 'label': 'Samsung QN95AA 75 TV', 'location_id': 'eed0e167-e793-459b-80cb-a0b02e2b86c2', + 'matter': None, 'name': 'Samsung QN95AA 75 TV', 'ocf': dict({ 'additional_auth_code_required': False, @@ -1542,6 +1574,7 @@ 'hub': None, 'label': 'Samsung Soundbar Q950T', 'location_id': 'eed0e167-e793-459b-80cb-a0b02e2b86c2', + 'matter': None, 'name': 'Samsung Soundbar Q950T', 'ocf': dict({ 'additional_auth_code_required': False, @@ -1614,6 +1647,7 @@ 'hub': None, 'label': 'Samsung The Frame 55', 'location_id': 'eed0e167-e793-459b-80cb-a0b02e2b86c2', + 'matter': None, 'name': 'Samsung The Frame 55', 'ocf': dict({ 'additional_auth_code_required': False, @@ -1661,6 +1695,7 @@ }), 'label': 'Hubb', 'location_id': 'eed0e167-e793-459b-80cb-a0b02e2b86c2', + 'matter': None, 'name': 'SmartThings v3 Hub', 'ocf': None, 'parent_device_id': None, @@ -1714,6 +1749,7 @@ 'hub': None, 'label': 'Samsung Q70 Series', 'location_id': 'eed0e167-e793-459b-80cb-a0b02e2b86c2', + 'matter': None, 'name': '[TV] Samsung Q70 Series (65)', 'ocf': dict({ 'additional_auth_code_required': False, @@ -1796,6 +1832,7 @@ 'hub': None, 'label': 'Ugn', 'location_id': 'eed0e167-e793-459b-80cb-a0b02e2b86c2', + 'matter': None, 'name': '[oven] Samsung', 'ocf': dict({ 'additional_auth_code_required': False, @@ -1847,6 +1884,7 @@ 'hub': None, 'label': 'Elliots Rum', 'location_id': 'eed0e167-e793-459b-80cb-a0b02e2b86c2', + 'matter': None, 'name': 'sonos-player', 'ocf': None, 'parent_device_id': '2f7f7d2b-e683-48ae-86f7-e57df6a0bce2', @@ -2044,6 +2082,7 @@ 'hub': None, 'label': 'Kylskåp', 'location_id': 'eed0e167-e793-459b-80cb-a0b02e2b86c2', + 'matter': None, 'name': 'Samsung-Refrigerator', 'ocf': dict({ 'additional_auth_code_required': False, @@ -2128,6 +2167,7 @@ 'hub': None, 'label': 'Torktumlare', 'location_id': 'eed0e167-e793-459b-80cb-a0b02e2b86c2', + 'matter': None, 'name': '[dryer] Samsung', 'ocf': dict({ 'additional_auth_code_required': False, @@ -2345,6 +2385,7 @@ 'hub': None, 'label': 'Refrigerator', 'location_id': 'df59873c-4e2c-43ba-bcd4-ade4efb0504a', + 'matter': None, 'name': 'Samsung-Refrigerator', 'ocf': dict({ 'additional_auth_code_required': False, @@ -2443,6 +2484,7 @@ 'hub': None, 'label': 'Washer', 'location_id': 'df59873c-4e2c-43ba-bcd4-ade4efb0504a', + 'matter': None, 'name': '[washer] Samsung', 'ocf': dict({ 'additional_auth_code_required': False, @@ -2487,6 +2529,7 @@ 'hub': None, 'label': 'Sleeping State', 'location_id': 'df59873c-4e2c-43ba-bcd4-ade4efb0504a', + 'matter': None, 'name': 'Sleeping State', 'ocf': None, 'parent_device_id': None, @@ -2542,6 +2585,7 @@ 'hub': None, 'label': 'AirDresser', 'location_id': 'df59873c-4e2c-43ba-bcd4-ade4efb0504a', + 'matter': None, 'name': '[airdresser] Samsung', 'ocf': dict({ 'additional_auth_code_required': False, @@ -2591,6 +2635,7 @@ 'hub': None, 'label': 'Sound Sensor - 55" The Frame', 'location_id': 'df59873c-4e2c-43ba-bcd4-ade4efb0504a', + 'matter': None, 'name': 'VD-Sensor.Sound-2023', 'ocf': dict({ 'additional_auth_code_required': False, @@ -2666,6 +2711,7 @@ 'hub': None, 'label': '55 The Frame', 'location_id': 'df59873c-4e2c-43ba-bcd4-ade4efb0504a', + 'matter': None, 'name': '55" The Frame', 'ocf': dict({ 'additional_auth_code_required': False, @@ -2714,6 +2760,7 @@ 'hub': None, 'label': 'Light Sensor - 55" The Frame', 'location_id': 'df59873c-4e2c-43ba-bcd4-ade4efb0504a', + 'matter': None, 'name': 'VD-Sensor.Light-2023', 'ocf': dict({ 'additional_auth_code_required': False, @@ -2770,6 +2817,7 @@ 'hub': None, 'label': 'Ultra Slim Soundbar', 'location_id': 'df59873c-4e2c-43ba-bcd4-ade4efb0504a', + 'matter': None, 'name': 'Ultra Slim Soundbar', 'ocf': dict({ 'additional_auth_code_required': False, @@ -2831,6 +2879,7 @@ 'hub': None, 'label': 'Corridor A/C', 'location_id': '5df0730b-38ed-43e4-b291-ec14feb3224c', + 'matter': None, 'name': 'Room A/C', 'ocf': dict({ 'additional_auth_code_required': False, @@ -2881,6 +2930,7 @@ 'hub': None, 'label': 'Washer', 'location_id': '5df0730b-38ed-43e4-b291-ec14feb3224c', + 'matter': None, 'name': 'Washer', 'ocf': dict({ 'additional_auth_code_required': False, @@ -2932,6 +2982,7 @@ }), 'label': 'Hub - 27" Smart Monitor M5', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'SmartThings Hub', 'ocf': None, 'parent_device_id': None, @@ -2980,6 +3031,7 @@ 'hub': None, 'label': 'Rumsluftkonditionering', 'location_id': 'f84d1ae8-bce8-48c5-9b49-3ac9dbe72d19', + 'matter': None, 'name': '[room a/c] Samsung', 'ocf': dict({ 'additional_auth_code_required': False, @@ -3193,6 +3245,7 @@ 'hub': None, 'label': 'Kylskåp', 'location_id': 'f84d1ae8-bce8-48c5-9b49-3ac9dbe72d19', + 'matter': None, 'name': 'Samsung-Refrigerator', 'ocf': dict({ 'additional_auth_code_required': False, @@ -3406,6 +3459,7 @@ 'hub': None, 'label': 'Freezer', 'location_id': 'f84d1ae8-bce8-48c5-9b49-3ac9dbe72d19', + 'matter': None, 'name': 'Samsung-Refrigerator', 'ocf': dict({ 'additional_auth_code_required': False, @@ -3637,6 +3691,7 @@ 'hub': None, 'label': 'Fridge', 'location_id': '5274d210-9bd8-4a14-ae55-52a9ffeedfb7', + 'matter': None, 'name': 'Samsung-Refrigerator', 'ocf': dict({ 'additional_auth_code_required': False, @@ -3660,6 +3715,55 @@ 'type': , 'viper': None, }), + dict({ + 'components': dict({ + 'main': dict({ + 'capabilities': list([ + , + , + , + , + , + , + ]), + 'id': 'main', + 'label': 'main', + 'manufacturer_category': , + 'user_category': None, + }), + }), + 'device_id': '286ba274-4093-4bcb-849c-a1a3efe7b1e5', + 'device_manufacturer_code': 'BOSCH', + 'device_network_type': None, + 'device_type_id': None, + 'device_type_name': None, + 'hub': None, + 'label': 'Radiator Thermostat II [+M] Wohnzimmer', + 'location_id': '0b6618a6-c3ab-4b6e-968d-59cc8c2761bc', + 'matter': dict({ + 'driver_id': '5f3c42eb-5704-4c95-9705-c51c1a6764bf', + 'executing_locally': True, + 'hardware_version': '1.2.0', + 'hub_id': '61bd280e-71c4-44fb-9b6e-53fdf14718a2', + 'listening_type': , + 'network_id': '8EF2CF7A212285B2-46C6B9F266A4521A', + 'product_id': 12306, + 'provisioning_state': , + 'serial_number': 'D44867FFFEB37584', + 'software_version': '2.00.09', + 'supported_network_interfaces': list([ + , + ]), + 'unique_id': '8475B3FEFF6748D4', + 'vendor_id': 4617, + }), + 'name': 'thermostat', + 'ocf': None, + 'parent_device_id': '61bd280e-71c4-44fb-9b6e-53fdf14718a2', + 'room_id': '11374ab5-9b4e-416b-91d1-745bbf9b6db4', + 'type': , + 'viper': None, + }), ]) # --- # name: test_fetching_devices[devices_2] @@ -3690,6 +3794,7 @@ 'hub': None, 'label': 'Bathroom spot', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'hue-color-temperature-bulb', 'ocf': None, 'parent_device_id': None, @@ -3730,6 +3835,7 @@ 'hub': None, 'label': 'Standing light', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'hue-rgbw-color-bulb', 'ocf': None, 'parent_device_id': None, @@ -3768,6 +3874,7 @@ 'hub': None, 'label': 'Hue ambiance spot 3', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'hue-color-temperature-bulb', 'ocf': None, 'parent_device_id': None, @@ -3803,6 +3910,7 @@ 'hub': None, 'label': 'Curtain 1A', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'c2c-shade', 'ocf': None, 'parent_device_id': None, @@ -3838,6 +3946,7 @@ 'hub': None, 'label': 'Curtain 1E', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'c2c-shade', 'ocf': None, 'parent_device_id': None, @@ -3876,6 +3985,7 @@ 'hub': None, 'label': 'Sink', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'hue-color-temperature-bulb', 'ocf': None, 'parent_device_id': None, @@ -3911,6 +4021,7 @@ 'hub': None, 'label': 'Hue motion sensor 1', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'c2c-motion-2', 'ocf': None, 'parent_device_id': None, @@ -3949,6 +4060,7 @@ 'hub': None, 'label': 'Hue ambiance spot 2', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'hue-color-temperature-bulb', 'ocf': None, 'parent_device_id': None, @@ -3987,6 +4099,7 @@ 'hub': None, 'label': 'Hue ambiance spot 4', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'hue-color-temperature-bulb', 'ocf': None, 'parent_device_id': None, @@ -4027,6 +4140,7 @@ 'hub': None, 'label': 'Night light', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'hue-rgbw-color-bulb', 'ocf': None, 'parent_device_id': None, @@ -4061,6 +4175,7 @@ 'hub': None, 'label': 'Netatmo NAPlug', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'c2c-thermostat-bridge-1', 'ocf': None, 'parent_device_id': None, @@ -4101,6 +4216,7 @@ 'hub': None, 'label': 'Kitchen', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'hue-rgbw-color-bulb', 'ocf': None, 'parent_device_id': None, @@ -4137,6 +4253,7 @@ 'hub': None, 'label': 'Hub 2 08', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'c2c-humidity', 'ocf': None, 'parent_device_id': None, @@ -4177,6 +4294,7 @@ 'hub': None, 'label': 'Tv', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'hue-rgbw-color-bulb', 'ocf': None, 'parent_device_id': None, @@ -4211,6 +4329,7 @@ 'hub': None, 'label': 'TV', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'c2c-switch', 'ocf': None, 'parent_device_id': None, @@ -4251,6 +4370,7 @@ 'hub': None, 'label': 'Bureau', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'hue-rgbw-color-bulb', 'ocf': None, 'parent_device_id': None, @@ -4289,6 +4409,7 @@ 'hub': None, 'label': 'Hue ambiance spot 5', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'hue-color-temperature-bulb', 'ocf': None, 'parent_device_id': None, @@ -4329,6 +4450,7 @@ 'hub': None, 'label': 'Bed', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'hue-rgbw-color-bulb', 'ocf': None, 'parent_device_id': None, @@ -4367,6 +4489,7 @@ 'hub': None, 'label': 'Hue ambiance spot 1', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'hue-color-temperature-bulb', 'ocf': None, 'parent_device_id': None, @@ -4407,6 +4530,7 @@ 'hub': None, 'label': 'Bed', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'hue-rgbw-color-bulb', 'ocf': None, 'parent_device_id': None, @@ -4482,6 +4606,7 @@ 'hub': None, 'label': 'Vulcan', 'location_id': '597a4912-13c9-47ab-5916-3cbe28b61abd', + 'matter': None, 'name': 'Samsung Range', 'ocf': dict({ 'additional_auth_code_required': False, @@ -4570,6 +4695,7 @@ 'hub': None, 'label': 'Dryer', 'location_id': '781d5f1e-c87e-455e-87f7-8e954879e91d', + 'matter': None, 'name': '[dryer] Samsung', 'ocf': dict({ 'additional_auth_code_required': False, @@ -4640,6 +4766,7 @@ 'hub': None, 'label': 'Dishwasher', 'location_id': '586e4602-34ab-4a22-993e-5f616b04604f', + 'matter': None, 'name': '[dishwasher] Samsung', 'ocf': dict({ 'additional_auth_code_required': False, @@ -4717,6 +4844,7 @@ 'hub': None, 'label': 'Microwave', 'location_id': '586e4602-34ab-4a22-993e-5f616b04604f', + 'matter': None, 'name': 'Samsung Microwave', 'ocf': dict({ 'additional_auth_code_required': False, @@ -4903,6 +5031,7 @@ 'hub': None, 'label': 'Refrigerator', 'location_id': '2487472a-06c4-4bce-8f4c-700c5f8644f8', + 'matter': None, 'name': 'Family Hub', 'ocf': dict({ 'additional_auth_code_required': False, @@ -4950,6 +5079,7 @@ }), 'label': 'SmartThings Hub - FamilyHub', 'location_id': '2487472a-06c4-4bce-8f4c-700c5f8644f8', + 'matter': None, 'name': 'SmartThings Hub', 'ocf': None, 'parent_device_id': None, @@ -4992,6 +5122,7 @@ 'hub': None, 'label': 'Robot vacuum', 'location_id': '586e4602-34ab-4a22-993e-5f616b04604f', + 'matter': None, 'name': '[robot vacuum] Samsung', 'ocf': dict({ 'additional_auth_code_required': False, @@ -5090,6 +5221,7 @@ 'hub': None, 'label': 'Washer', 'location_id': '781d5f1e-c87e-455e-87f7-8e954879e91d', + 'matter': None, 'name': '[washer] Samsung', 'ocf': dict({ 'additional_auth_code_required': False, @@ -5149,6 +5281,7 @@ 'hub': None, 'label': 'SmartTag+ black', 'location_id': 'redacted_locid', + 'matter': None, 'name': 'Tag(UWB)', 'ocf': None, 'parent_device_id': None, @@ -5231,6 +5364,7 @@ 'hub': None, 'label': 'Wasmachine', 'location_id': 'redacted_locid', + 'matter': None, 'name': '[washer] Samsung', 'ocf': dict({ 'additional_auth_code_required': False, @@ -5286,6 +5420,7 @@ 'hub': None, 'label': 'tas', 'location_id': 'redacted_locid', + 'matter': None, 'name': 'Tag2(UWB)', 'ocf': None, 'parent_device_id': None, @@ -5325,6 +5460,7 @@ 'hub': None, 'label': 'koffer', 'location_id': 'redacted_locid', + 'matter': None, 'name': 'Tag2(UWB)', 'ocf': None, 'parent_device_id': None, @@ -5364,6 +5500,7 @@ 'hub': None, 'label': 'SmartTag+ black 2', 'location_id': 'redacted_locid', + 'matter': None, 'name': 'Tag(UWB)', 'ocf': None, 'parent_device_id': None, @@ -5403,6 +5540,7 @@ 'hub': None, 'label': 'SmartTag+ blue 2', 'location_id': 'redacted_locid', + 'matter': None, 'name': 'Tag(UWB)', 'ocf': None, 'parent_device_id': None, @@ -5442,6 +5580,7 @@ 'hub': None, 'label': 'SmartTag+ blue', 'location_id': 'redacted_locid', + 'matter': None, 'name': 'Tag(UWB)', 'ocf': None, 'parent_device_id': None, @@ -5524,6 +5663,7 @@ 'hub': None, 'label': 'Aire Dormitorio Principal', 'location_id': 'c4189ac1-208f-461a-8ab6-ea67937b3743', + 'matter': None, 'name': 'Samsung-Room-Air-Conditioner', 'ocf': dict({ 'additional_auth_code_required': False, @@ -5579,6 +5719,7 @@ 'hub': None, 'label': 'Soundbar Living', 'location_id': 'c4189ac1-208f-461a-8ab6-ea67937b3743', + 'matter': None, 'name': 'Soundbar', 'ocf': dict({ 'additional_auth_code_required': False, @@ -5630,6 +5771,7 @@ 'hub': None, 'label': 'Kit AC Wifi', 'location_id': 'c4189ac1-208f-461a-8ab6-ea67937b3743', + 'matter': None, 'name': '[system a/c] Samsung', 'ocf': dict({ 'additional_auth_code_required': False, @@ -5703,6 +5845,7 @@ 'hub': None, 'label': 'Aire Oficina', 'location_id': 'c4189ac1-208f-461a-8ab6-ea67937b3743', + 'matter': None, 'name': 'Air Conditioner', 'ocf': dict({ 'additional_auth_code_required': False, @@ -5797,6 +5940,7 @@ 'hub': None, 'label': 'Aire Estar Segundo Piso', 'location_id': 'c4189ac1-208f-461a-8ab6-ea67937b3743', + 'matter': None, 'name': 'Samsung-Room-Air-Conditioner', 'ocf': dict({ 'additional_auth_code_required': False, @@ -5912,6 +6056,7 @@ 'hub': None, 'label': 'AC Office Granit', 'location_id': '58d3fd7c-c512-4da3-b500-ef269382756c', + 'matter': None, 'name': '[room a/c] Samsung', 'ocf': dict({ 'additional_auth_code_required': False, @@ -5967,6 +6112,7 @@ 'hub': None, 'label': 'Basement Door', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'c2c-arlo-pro-3-switch', 'ocf': None, 'parent_device_id': None, @@ -6013,6 +6159,7 @@ 'hub': None, 'label': 'Den Lamp', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'switch-level', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6043,6 +6190,7 @@ 'hub': None, 'label': 'Entryway Lamp', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Outlet', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6074,6 +6222,7 @@ 'hub': None, 'label': 'Table Den Lamp', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Sengled Light', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6107,6 +6256,7 @@ 'hub': None, 'label': 'Floor Lamp', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'ZigBee White Color Temperature Bulb', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6136,6 +6286,7 @@ 'hub': None, 'label': 'Masterbed room lights', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'GE In-Wall Smart Dimmer', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6196,6 +6347,7 @@ 'hub': None, 'label': 'Fireplace', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'zooz-zen16-multirelay', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6225,6 +6377,7 @@ 'hub': None, 'label': 'Basement Hall', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'GE In-Wall Smart Dimmer', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6259,6 +6412,7 @@ 'hub': None, 'label': 'Garage Cam', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'c2c-arlo-go-switch', 'ocf': None, 'parent_device_id': None, @@ -6297,6 +6451,7 @@ 'hub': None, 'label': 'Deck Door', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Multipurpose Sensor', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6328,6 +6483,7 @@ 'hub': None, 'label': 'Basement Door Lock', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Yale Push Button Deadbolt Lock', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6382,6 +6538,7 @@ 'hub': None, 'label': '27" Smart Monitor M5', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': '27" Smart Monitor M5', 'ocf': dict({ 'additional_auth_code_required': False, @@ -6427,6 +6584,7 @@ 'hub': None, 'label': 'Basement Lights', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Virtual Dimmer Switch', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6456,6 +6614,7 @@ 'hub': None, 'label': 'Kitchen Lights', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'ge-dimmer-assoc', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6486,6 +6645,7 @@ 'hub': None, 'label': 'Entryway Tree', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Outlet', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6517,6 +6677,7 @@ 'hub': None, 'label': '.Front Door Open/Closed Sensor', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'contact-profile', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6548,6 +6709,7 @@ }), 'label': 'Hub - 27" Smart Monitor M5', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'SmartThings Hub', 'ocf': None, 'parent_device_id': None, @@ -6702,6 +6864,7 @@ 'hub': None, 'label': 'Refrigerator', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': '[refrigerator] Samsung', 'ocf': dict({ 'additional_auth_code_required': False, @@ -6749,6 +6912,7 @@ 'hub': None, 'label': 'Car Garage Door', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Visonic Door/Window Sensor', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6777,6 +6941,7 @@ 'hub': None, 'label': 'Mail Announce', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Virtual Contact1', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6807,6 +6972,7 @@ 'hub': None, 'label': 'Radon Fan', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Outlet', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6837,6 +7003,7 @@ 'hub': None, 'label': 'Heater Outlet', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Outlet', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6870,6 +7037,7 @@ 'hub': None, 'label': 'Saimas Lamp', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'TRÅDFRI bulb E26 WS opal 980lm', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6899,6 +7067,7 @@ 'hub': None, 'label': 'Fireplace Lights', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Virtual Switch', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6927,6 +7096,7 @@ 'hub': None, 'label': 'Garage Tubelight', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'switch-binary-indicator', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6956,6 +7126,7 @@ 'hub': None, 'label': 'Fireplace Lights', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'basic-switch', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -6985,6 +7156,7 @@ 'hub': None, 'label': 'Aeon Energy Monitor', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'base-electric-meter', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7020,6 +7192,7 @@ 'hub': None, 'label': 'Freezer Room', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'c2c-arlo-pro-3-switch', 'ocf': None, 'parent_device_id': None, @@ -7054,6 +7227,7 @@ 'hub': None, 'label': 'Masterbed Room Fan', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'ge-switch-assoc', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7089,6 +7263,7 @@ 'hub': None, 'label': 'Backyard Floodlight', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'c2c-arlo-pro-3-switch', 'ocf': None, 'parent_device_id': None, @@ -7124,6 +7299,7 @@ 'hub': None, 'label': 'Guest Fan', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'switch-level-indicator', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7155,6 +7331,7 @@ 'hub': None, 'label': 'Garage Door - Side', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Visonic Door/Window Sensor', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7190,6 +7367,7 @@ 'hub': None, 'label': 'Sump Pump Room', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'c2c-arlo-pro-3-switch', 'ocf': None, 'parent_device_id': None, @@ -7222,6 +7400,7 @@ 'hub': None, 'label': 'iPhone', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'iPhone', 'ocf': None, 'parent_device_id': 'b8e11599-5297-4574-8e62-885995fcaa20', @@ -7271,6 +7450,7 @@ 'hub': None, 'label': '[TV] Samsung 8 Series (49)', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': '[TV] Samsung 8 Series (49)', 'ocf': dict({ 'additional_auth_code_required': False, @@ -7338,6 +7518,7 @@ 'hub': None, 'label': 'Virtual Calendar Device (1685810860)', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'virtual-calendar', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7367,6 +7548,7 @@ 'hub': None, 'label': 'Breakfast Table Lamps', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'GE Dimmer Switch', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7398,6 +7580,7 @@ 'hub': None, 'label': 'Dimmer Debian', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'plug-level-power', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7429,6 +7612,7 @@ 'hub': None, 'label': 'Van Garage Door', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Visonic Door/Window Sensor', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7457,6 +7641,7 @@ 'hub': None, 'label': 'Water is heating', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Water Heater Announce', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7486,6 +7671,7 @@ 'hub': None, 'label': 'Arlo Production', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'c2c-switch', 'ocf': None, 'parent_device_id': None, @@ -7520,6 +7706,7 @@ 'hub': None, 'label': 'Formal Dining Table Lamp', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'GE Dimmer Switch', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7549,6 +7736,7 @@ 'hub': None, 'label': 'Arlo Beta Basestation', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'SYLVANIA SMART+ Smart Plug', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7578,6 +7766,7 @@ 'hub': None, 'label': 'Base Station', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'c2c-arlo-siren', 'ocf': None, 'parent_device_id': None, @@ -7613,6 +7802,7 @@ 'hub': None, 'label': 'Driveway Light', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'GE Dimmer Switch', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7642,6 +7832,7 @@ 'hub': None, 'label': 'Girls Lights', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'GE Dimmer Switch', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7675,6 +7866,7 @@ 'hub': None, 'label': 'Temp Sensor', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'st-multipurpose', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7705,6 +7897,7 @@ 'hub': None, 'label': 'Door Lock', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'base-lock', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7738,6 +7931,7 @@ 'hub': None, 'label': 'Sump Pump Room', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Multipurpose Sensor', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7769,6 +7963,7 @@ 'hub': None, 'label': 'Study Lights', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'c2c-dimmer', 'ocf': None, 'parent_device_id': None, @@ -7805,6 +8000,7 @@ 'hub': None, 'label': 'Study Room Lamp', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'switch-level', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7835,6 +8031,7 @@ 'hub': None, 'label': 'Floor Lamp', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Outlet', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7876,6 +8073,7 @@ 'hub': None, 'label': 'Dresser Lamp', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'switch-level', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7906,6 +8104,7 @@ 'hub': None, 'label': 'String Lights', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Outlet', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7937,6 +8136,7 @@ 'hub': None, 'label': 'Door Lamp', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Light', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7966,6 +8166,7 @@ 'hub': None, 'label': 'Guest Light', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'ge-dimmer-assoc', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -7997,6 +8198,7 @@ 'hub': None, 'label': 'Kitchen Basin Light', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Light', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -8032,6 +8234,7 @@ 'hub': None, 'label': 'Front Doorbell', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'c2c-arlo-wired-video-doorbell-battery-no-switch', 'ocf': None, 'parent_device_id': None, @@ -8066,6 +8269,7 @@ 'hub': None, 'label': 'Formal Living Room', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'GE Dimmer Switch', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -8096,6 +8300,7 @@ 'hub': None, 'label': 'Water Boiler', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Outlet', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -8125,6 +8330,7 @@ 'hub': None, 'label': 'TV Room', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'GE In-Wall Smart Dimmer', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -8158,6 +8364,7 @@ 'hub': None, 'label': 'Guest Lamp', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'TRÅDFRI bulb E26 WS opal 980lm', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -8185,6 +8392,7 @@ 'hub': None, 'label': 'iPhone', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'iPhone', 'ocf': None, 'parent_device_id': '6b61e197-d25a-49e5-b812-4b2501f031d9', @@ -8216,6 +8424,7 @@ }), 'label': 'Home Hub', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'SmartThings v2 Hub', 'ocf': None, 'parent_device_id': None, @@ -8249,6 +8458,7 @@ 'hub': None, 'label': 'Mail Box', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Multipurpose Sensor', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -8284,6 +8494,7 @@ 'hub': None, 'label': 'Driveway Floodlight', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'c2c-arlo-pro-3-switch', 'ocf': None, 'parent_device_id': None, @@ -8318,6 +8529,7 @@ 'hub': None, 'label': 'Sump Pump', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'c2c-switch', 'ocf': None, 'parent_device_id': None, @@ -8356,6 +8568,7 @@ 'hub': None, 'label': 'Basement Exit Door', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Multipurpose Sensor', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -8404,6 +8617,7 @@ 'hub': None, 'label': 'IKEA Remote Control', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'two-buttons-battery', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -8432,6 +8646,7 @@ 'hub': None, 'label': 'MAIN Virtual Devices', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'main-virtual-device', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -8463,6 +8678,7 @@ 'hub': None, 'label': 'Sump Pump Room Lamp', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'on-off-level', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -8492,6 +8708,7 @@ 'hub': None, 'label': 'Boys Lights', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'GE Dimmer Switch', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -8521,6 +8738,7 @@ 'hub': None, 'label': 'Basement Exit Light', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'GE Dimmer Switch', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -8555,6 +8773,7 @@ 'hub': None, 'label': 'Basement Exit Cam', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'c2c-arlo-go-switch', 'ocf': None, 'parent_device_id': None, @@ -8594,6 +8813,7 @@ 'hub': None, 'label': 'Driveway Cam', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'c2c-arlo-go-switch', 'ocf': None, 'parent_device_id': None, @@ -8640,6 +8860,7 @@ 'hub': None, 'label': 'Salim’s Lamp', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'switch-level', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -8673,6 +8894,7 @@ 'hub': None, 'label': 'Basement Door', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'multi-sensor', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -8708,6 +8930,7 @@ 'hub': None, 'label': '2nd Floor Hallway', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'c2c-arlo-pro-3-switch', 'ocf': None, 'parent_device_id': None, @@ -8743,6 +8966,7 @@ 'hub': None, 'label': 'Front Door Lights', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'GE Dimmer Switch', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -8773,6 +8997,7 @@ 'hub': None, 'label': 'Toy Room', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'GE In-Wall Smart Dimmer', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -8805,6 +9030,7 @@ 'hub': None, 'label': 'Motion Sensor', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'Motion Sensor', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -8834,6 +9060,7 @@ 'hub': None, 'label': 'Girls Fan', 'location_id': 'c4d3b2a1-09f8-765e-4d3c-2b1a09f8e7d6 ', + 'matter': None, 'name': 'switch-level-indicator', 'ocf': None, 'parent_device_id': '074fa784-8be8-4c70-8e22-6f5ed6f81b7e', @@ -8904,6 +9131,7 @@ 'hub': None, 'label': 'Climatiseur Quentin', 'location_id': 'd507e237-896e-4352-8f0f-0664c91234bd', + 'matter': None, 'name': 'Samsung-Room-Air-Conditioner', 'ocf': dict({ 'additional_auth_code_required': False, @@ -8986,6 +9214,7 @@ 'hub': None, 'label': 'Climatiseur Parents', 'location_id': 'd507e237-896e-4352-8f0f-0664c91234bd', + 'matter': None, 'name': 'Samsung-Room-Air-Conditioner', 'ocf': dict({ 'additional_auth_code_required': False, @@ -9061,6 +9290,7 @@ 'hub': None, 'label': 'TV', 'location_id': 'd507e237-896e-4352-8f0f-0664c91234bd', + 'matter': None, 'name': 'TV', 'ocf': dict({ 'additional_auth_code_required': False, @@ -9143,6 +9373,7 @@ 'hub': None, 'label': 'Climatiseur Salon', 'location_id': 'd507e237-896e-4352-8f0f-0664c91234bd', + 'matter': None, 'name': 'Samsung-Room-Air-Conditioner', 'ocf': dict({ 'additional_auth_code_required': False, @@ -9225,6 +9456,7 @@ 'hub': None, 'label': 'Climatiseur Lisa', 'location_id': 'd507e237-896e-4352-8f0f-0664c91234bd', + 'matter': None, 'name': 'Samsung-Room-Air-Conditioner', 'ocf': dict({ 'additional_auth_code_required': False, @@ -9307,6 +9539,7 @@ 'hub': None, 'label': 'Climatiseur Bureau', 'location_id': 'd507e237-896e-4352-8f0f-0664c91234bd', + 'matter': None, 'name': 'Samsung-Room-Air-Conditioner', 'ocf': dict({ 'additional_auth_code_required': False, @@ -9354,6 +9587,7 @@ 'hub': None, 'label': 'Refrigerator', 'location_id': '2487472a-06c4-4bce-8f4c-700c5f8644f8', + 'matter': None, 'name': 'Family Hub', 'ocf': dict({ 'additional_auth_code_required': False, @@ -12311,6 +12545,106 @@ 'roomId': 'b19fa610-62f8-4109-b9cc-47f85fcefd29', 'type': 'OCF', }), + dict({ + 'allowed': None, + 'components': list([ + dict({ + 'capabilities': list([ + dict({ + 'id': 'temperatureMeasurement', + 'version': 1, + }), + dict({ + 'id': 'thermostatMode', + 'version': 1, + }), + dict({ + 'id': 'thermostatHeatingSetpoint', + 'version': 1, + }), + dict({ + 'id': 'battery', + 'version': 1, + }), + dict({ + 'id': 'firmwareUpdate', + 'version': 1, + }), + dict({ + 'id': 'refresh', + 'version': 1, + }), + ]), + 'categories': list([ + dict({ + 'categoryType': 'manufacturer', + 'name': 'Thermostat', + }), + ]), + 'id': 'main', + 'label': 'main', + }), + ]), + 'createTime': '2024-11-29T19:55:00.910Z', + 'deviceId': '286ba274-4093-4bcb-849c-a1a3efe7b1e5', + 'deviceManufacturerCode': 'BOSCH', + 'executionContext': 'LOCAL', + 'label': 'Radiator Thermostat II [+M] Wohnzimmer', + 'locationId': '0b6618a6-c3ab-4b6e-968d-59cc8c2761bc', + 'manufacturerName': 'SmartThingsCommunity', + 'matter': dict({ + 'driverId': '5f3c42eb-5704-4c95-9705-c51c1a6764bf', + 'endpoints': list([ + dict({ + 'deviceTypes': list([ + dict({ + 'deviceTypeId': 22, + }), + ]), + 'endpointId': 0, + }), + dict({ + 'deviceTypes': list([ + dict({ + 'deviceTypeId': 769, + }), + ]), + 'endpointId': 1, + }), + ]), + 'executingLocally': True, + 'hubId': '61bd280e-71c4-44fb-9b6e-53fdf14718a2', + 'listeningType': 'SLEEPY', + 'networkId': '8EF2CF7A212285B2-46C6B9F266A4521A', + 'productId': 12306, + 'provisioningState': 'PROVISIONED', + 'serialNumber': 'D44867FFFEB37584', + 'supportedNetworkInterfaces': list([ + 'THREAD', + ]), + 'syncDrivers': True, + 'uniqueId': '8475B3FEFF6748D4', + 'vendorId': 4617, + 'version': dict({ + 'hardware': 18, + 'hardwareLabel': '1.2.0', + 'software': 20009, + 'softwareLabel': '2.00.09', + }), + }), + 'name': 'thermostat', + 'ownerId': '8a20b799-9d87-ecdc-39de-c93c6e4d3ea1', + 'parentDeviceId': '61bd280e-71c4-44fb-9b6e-53fdf14718a2', + 'presentationId': '2a1c9915-f61b-3f3a-a02b-703b8cccf3d6', + 'profile': dict({ + 'id': '4da5d086-111e-3084-a039-616974326833', + }), + 'relationships': list([ + ]), + 'restrictionTier': 0, + 'roomId': '11374ab5-9b4e-416b-91d1-745bbf9b6db4', + 'type': 'MATTER', + }), ]), }), ]) @@ -12342,6 +12676,7 @@ 'hub': None, 'label': 'Bathroom spot', 'location_id': '88a3a314-f0c8-40b4-bb44-44ba06c9c42f', + 'matter': None, 'name': 'hue-color-temperature-bulb', 'ocf': None, 'parent_device_id': None, diff --git a/tests/fixtures/devices_18.json b/tests/fixtures/devices_18.json index 5d0e8a0..e3e91ab 100644 --- a/tests/fixtures/devices_18.json +++ b/tests/fixtures/devices_18.json @@ -1740,6 +1740,103 @@ "allowed": null, "executionContext": "CLOUD", "relationships": [] + }, + { + "deviceId": "286ba274-4093-4bcb-849c-a1a3efe7b1e5", + "name": "thermostat", + "label": "Radiator Thermostat II [+M] Wohnzimmer", + "manufacturerName": "SmartThingsCommunity", + "presentationId": "2a1c9915-f61b-3f3a-a02b-703b8cccf3d6", + "deviceManufacturerCode": "BOSCH", + "locationId": "0b6618a6-c3ab-4b6e-968d-59cc8c2761bc", + "ownerId": "8a20b799-9d87-ecdc-39de-c93c6e4d3ea1", + "roomId": "11374ab5-9b4e-416b-91d1-745bbf9b6db4", + "components": [ + { + "id": "main", + "label": "main", + "capabilities": [ + { + "id": "temperatureMeasurement", + "version": 1 + }, + { + "id": "thermostatMode", + "version": 1 + }, + { + "id": "thermostatHeatingSetpoint", + "version": 1 + }, + { + "id": "battery", + "version": 1 + }, + { + "id": "firmwareUpdate", + "version": 1 + }, + { + "id": "refresh", + "version": 1 + } + ], + "categories": [ + { + "name": "Thermostat", + "categoryType": "manufacturer" + } + ] + } + ], + "createTime": "2024-11-29T19:55:00.910Z", + "parentDeviceId": "61bd280e-71c4-44fb-9b6e-53fdf14718a2", + "profile": { + "id": "4da5d086-111e-3084-a039-616974326833" + }, + "matter": { + "driverId": "5f3c42eb-5704-4c95-9705-c51c1a6764bf", + "hubId": "61bd280e-71c4-44fb-9b6e-53fdf14718a2", + "provisioningState": "PROVISIONED", + "networkId": "8EF2CF7A212285B2-46C6B9F266A4521A", + "executingLocally": true, + "uniqueId": "8475B3FEFF6748D4", + "vendorId": 4617, + "productId": 12306, + "serialNumber": "D44867FFFEB37584", + "listeningType": "SLEEPY", + "supportedNetworkInterfaces": ["THREAD"], + "version": { + "hardware": 18, + "hardwareLabel": "1.2.0", + "software": 20009, + "softwareLabel": "2.00.09" + }, + "endpoints": [ + { + "endpointId": 0, + "deviceTypes": [ + { + "deviceTypeId": 22 + } + ] + }, + { + "endpointId": 1, + "deviceTypes": [ + { + "deviceTypeId": 769 + } + ] + } + ], + "syncDrivers": true + }, + "type": "MATTER", + "restrictionTier": 0, + "allowed": null, + "executionContext": "LOCAL", + "relationships": [] } ], "_links": {} diff --git a/tests/test_device.py b/tests/test_device.py index 426e55e..a614618 100644 --- a/tests/test_device.py +++ b/tests/test_device.py @@ -376,7 +376,7 @@ async def test_fetching_multiple_pages( status=200, body=load_fixture("devices_18.json"), ) - assert len(await client.get_devices()) == 7 + assert len(await client.get_devices()) == 8 responses.assert_called_with( f"{MOCK_URL}/v1/devices", METH_GET,