From 11fde22d45f7f932034a97228a275bb370ed2829 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 16 Dec 2021 05:24:18 -0600 Subject: [PATCH] Add hardware version support to homekit controller (#61743) --- homeassistant/components/homekit_controller/__init__.py | 1 + homeassistant/components/homekit_controller/connection.py | 1 + .../homekit_controller/specific_devices/test_anker_eufycam.py | 1 + .../homekit_controller/specific_devices/test_lg_tv.py | 1 + .../specific_devices/test_rainmachine_pro_8.py | 1 + .../specific_devices/test_ryse_smart_bridge.py | 2 ++ .../specific_devices/test_vocolinc_flowerbud.py | 1 + 7 files changed, 8 insertions(+) diff --git a/homeassistant/components/homekit_controller/__init__.py b/homeassistant/components/homekit_controller/__init__.py index f91355906dc..7c07e921818 100644 --- a/homeassistant/components/homekit_controller/__init__.py +++ b/homeassistant/components/homekit_controller/__init__.py @@ -177,6 +177,7 @@ class HomeKitEntity(Entity): model=info.value(CharacteristicsTypes.MODEL, ""), name=info.value(CharacteristicsTypes.NAME), sw_version=info.value(CharacteristicsTypes.FIRMWARE_REVISION, ""), + hw_version=info.value(CharacteristicsTypes.HARDWARE_REVISION, ""), ) # Some devices only have a single accessory - we don't add a diff --git a/homeassistant/components/homekit_controller/connection.py b/homeassistant/components/homekit_controller/connection.py index 8523fec7b8f..112c05b17f5 100644 --- a/homeassistant/components/homekit_controller/connection.py +++ b/homeassistant/components/homekit_controller/connection.py @@ -244,6 +244,7 @@ class HKDevice: manufacturer=info.value(CharacteristicsTypes.MANUFACTURER, ""), model=info.value(CharacteristicsTypes.MODEL, ""), sw_version=info.value(CharacteristicsTypes.FIRMWARE_REVISION, ""), + hw_version=info.value(CharacteristicsTypes.HARDWARE_REVISION, ""), ) if accessory.aid != 1: diff --git a/tests/components/homekit_controller/specific_devices/test_anker_eufycam.py b/tests/components/homekit_controller/specific_devices/test_anker_eufycam.py index 15ac6d2d3ab..652ac5b0559 100644 --- a/tests/components/homekit_controller/specific_devices/test_anker_eufycam.py +++ b/tests/components/homekit_controller/specific_devices/test_anker_eufycam.py @@ -40,6 +40,7 @@ async def test_eufycam_setup(hass): assert device.name == "eufyCam2-0000" assert device.model == "T8113" assert device.sw_version == "1.6.7" + assert device.hw_version == "1.0.0" # These cameras are via a bridge, so via should be set assert device.via_device_id is not None diff --git a/tests/components/homekit_controller/specific_devices/test_lg_tv.py b/tests/components/homekit_controller/specific_devices/test_lg_tv.py index 7f7ada4ac1f..bce8ed7418c 100644 --- a/tests/components/homekit_controller/specific_devices/test_lg_tv.py +++ b/tests/components/homekit_controller/specific_devices/test_lg_tv.py @@ -63,6 +63,7 @@ async def test_lg_tv(hass): assert device.model == "OLED55B9PUA" assert device.sw_version == "04.71.04" assert device.via_device_id is None + assert device.hw_version == "1" # A TV has media player device triggers triggers = await async_get_device_automations(hass, "trigger", device.id) diff --git a/tests/components/homekit_controller/specific_devices/test_rainmachine_pro_8.py b/tests/components/homekit_controller/specific_devices/test_rainmachine_pro_8.py index 81e31918c91..ee008fbfa62 100644 --- a/tests/components/homekit_controller/specific_devices/test_rainmachine_pro_8.py +++ b/tests/components/homekit_controller/specific_devices/test_rainmachine_pro_8.py @@ -40,6 +40,7 @@ async def test_rainmachine_pro_8_setup(hass): assert device.model == "SPK5 Pro" assert device.sw_version == "1.0.4" assert device.via_device_id is None + assert device.hw_version == "1" # The device is made up of multiple valves - make sure we have enumerated them all entry = entity_registry.async_get("switch.rainmachine_00ce4a_2") diff --git a/tests/components/homekit_controller/specific_devices/test_ryse_smart_bridge.py b/tests/components/homekit_controller/specific_devices/test_ryse_smart_bridge.py index e10e0ccd62a..302ebe70ac2 100644 --- a/tests/components/homekit_controller/specific_devices/test_ryse_smart_bridge.py +++ b/tests/components/homekit_controller/specific_devices/test_ryse_smart_bridge.py @@ -40,12 +40,14 @@ async def test_ryse_smart_bridge_setup(hass): assert device.name == "Master Bath South" assert device.model == "RYSE Shade" assert device.sw_version == "3.0.8" + assert device.hw_version == "1.0.0" bridge = device_registry.async_get(device.via_device_id) assert bridge.manufacturer == "RYSE Inc." assert bridge.name == "RYSE SmartBridge" assert bridge.model == "RYSE SmartBridge" assert bridge.sw_version == "1.3.0" + assert bridge.hw_version == "0101.3521.0436" # Check that the cover.ryse_smartshade is correctly found and set up cover_id = "cover.ryse_smartshade" diff --git a/tests/components/homekit_controller/specific_devices/test_vocolinc_flowerbud.py b/tests/components/homekit_controller/specific_devices/test_vocolinc_flowerbud.py index 6968c62257f..391ac1c8f39 100644 --- a/tests/components/homekit_controller/specific_devices/test_vocolinc_flowerbud.py +++ b/tests/components/homekit_controller/specific_devices/test_vocolinc_flowerbud.py @@ -34,6 +34,7 @@ async def test_vocolinc_flowerbud_setup(hass): assert device.model == "Flowerbud" assert device.sw_version == "3.121.2" assert device.via_device_id is None + assert device.hw_version == "0.1" # Assert the humidifier is detected entry = entity_registry.async_get("humidifier.vocolinc_flowerbud_0d324b")