From 0403ea715e2f40b8579bf1be60359acb7c1e3d86 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" <nick@koston.org> Date: Sat, 21 Aug 2021 14:56:49 -0500 Subject: [PATCH] Add known devices to USB Vendor / Product IDs (#54986) Co-authored-by: kpine <keith.pine@gmail.com> --- homeassistant/components/zha/manifest.json | 8 ++++---- homeassistant/components/zwave_js/manifest.json | 6 +++--- homeassistant/loader.py | 7 ++++++- script/hassfest/manifest.py | 1 + script/hassfest/usb.py | 7 ++++++- tests/test_loader.py | 16 ++++++++++++---- 6 files changed, 32 insertions(+), 13 deletions(-) diff --git a/homeassistant/components/zha/manifest.json b/homeassistant/components/zha/manifest.json index 5df8cddc167..93d9816d339 100644 --- a/homeassistant/components/zha/manifest.json +++ b/homeassistant/components/zha/manifest.json @@ -16,10 +16,10 @@ "zigpy-znp==0.5.3" ], "usb": [ - {"vid":"10C4","pid":"EA60"}, - {"vid":"1CF1","pid":"0030"}, - {"vid":"1A86","pid":"7523"}, - {"vid":"10C4","pid":"8A2A"} + {"vid":"10C4","pid":"EA60","known_devices":["slae.sh cc2652rb stick"]}, + {"vid":"1CF1","pid":"0030","known_devices":["Conbee II"]}, + {"vid":"1A86","pid":"7523","known_devices":["Electrolama zig-a-zig-ah"]}, + {"vid":"10C4","pid":"8A2A","known_devices":["Nortek HUSBZB-1"]} ], "codeowners": ["@dmulcahey", "@adminiuga"], "zeroconf": [ diff --git a/homeassistant/components/zwave_js/manifest.json b/homeassistant/components/zwave_js/manifest.json index 5c2d1f0db81..23a1546a421 100644 --- a/homeassistant/components/zwave_js/manifest.json +++ b/homeassistant/components/zwave_js/manifest.json @@ -8,8 +8,8 @@ "dependencies": ["usb", "http", "websocket_api"], "iot_class": "local_push", "usb": [ - {"vid":"0658","pid":"0200"}, - {"vid":"10C4","pid":"8A2A"}, - {"vid":"10C4","pid":"EA60"} + {"vid":"0658","pid":"0200","known_devices":["Aeotec Z-Stick Gen5+", "Z-WaveMe UZB"]}, + {"vid":"10C4","pid":"8A2A","known_devices":["Nortek HUSBZB-1"]}, + {"vid":"10C4","pid":"EA60","known_devices":["Aeotec Z-Stick 7", "Silicon Labs UZB-7", "Zooz ZST10 700"]} ] } diff --git a/homeassistant/loader.py b/homeassistant/loader.py index 57244d9ec7b..e186c5d24ba 100644 --- a/homeassistant/loader.py +++ b/homeassistant/loader.py @@ -230,7 +230,12 @@ async def async_get_usb(hass: HomeAssistant) -> list[dict[str, str]]: if not integration.usb: continue for entry in integration.usb: - usb.append({"domain": integration.domain, **entry}) + usb.append( + { + "domain": integration.domain, + **{k: v for k, v in entry.items() if k != "known_devices"}, + } + ) return usb diff --git a/script/hassfest/manifest.py b/script/hassfest/manifest.py index acb2a999fe3..8c9776ed7c9 100644 --- a/script/hassfest/manifest.py +++ b/script/hassfest/manifest.py @@ -210,6 +210,7 @@ MANIFEST_SCHEMA = vol.Schema( { vol.Optional("vid"): vol.All(str, verify_uppercase), vol.Optional("pid"): vol.All(str, verify_uppercase), + vol.Optional("known_devices"): [str], } ) ], diff --git a/script/hassfest/usb.py b/script/hassfest/usb.py index 49da04ee03f..6377fdcb8af 100644 --- a/script/hassfest/usb.py +++ b/script/hassfest/usb.py @@ -33,7 +33,12 @@ def generate_and_validate(integrations: list[dict[str, str]]) -> str: continue for entry in match_types: - match_list.append({"domain": domain, **entry}) + match_list.append( + { + "domain": domain, + **{k: v for k, v in entry.items() if k != "known_devices"}, + } + ) return BASE.format(json.dumps(match_list, indent=4)) diff --git a/tests/test_loader.py b/tests/test_loader.py index 2c5eb91d0fb..9786c9fdcfb 100644 --- a/tests/test_loader.py +++ b/tests/test_loader.py @@ -369,10 +369,18 @@ def _get_test_integration_with_usb_matcher(hass, name, config_flow): "dependencies": [], "requirements": [], "usb": [ - {"vid": "10C4", "pid": "EA60"}, - {"vid": "1CF1", "pid": "0030"}, - {"vid": "1A86", "pid": "7523"}, - {"vid": "10C4", "pid": "8A2A"}, + { + "vid": "10C4", + "pid": "EA60", + "known_devices": ["slae.sh cc2652rb stick"], + }, + {"vid": "1CF1", "pid": "0030", "known_devices": ["Conbee II"]}, + { + "vid": "1A86", + "pid": "7523", + "known_devices": ["Electrolama zig-a-zig-ah"], + }, + {"vid": "10C4", "pid": "8A2A", "known_devices": ["Nortek HUSBZB-1"]}, ], }, ) -- GitLab