1
mirror of https://github.com/home-assistant/core synced 2024-08-02 23:40:32 +02:00

Add hw_version to MQTT device info (#77210)

* Add hw_version

* Add abbreviation for hw_version

* Update tests

* Update discovery tests
This commit is contained in:
Maciej Bieniek 2022-08-25 11:55:33 +02:00 committed by GitHub
parent dfed3ba75e
commit ad6beac535
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 24 additions and 0 deletions

View File

@ -263,6 +263,7 @@ DEVICE_ABBREVIATIONS = {
"name": "name",
"mf": "manufacturer",
"mdl": "model",
"hw": "hw_version",
"sw": "sw_version",
"sa": "suggested_area",
}

View File

@ -13,6 +13,7 @@ import voluptuous as vol
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
ATTR_CONFIGURATION_URL,
ATTR_HW_VERSION,
ATTR_MANUFACTURER,
ATTR_MODEL,
ATTR_NAME,
@ -107,6 +108,7 @@ CONF_JSON_ATTRS_TEMPLATE = "json_attributes_template"
CONF_IDENTIFIERS = "identifiers"
CONF_CONNECTIONS = "connections"
CONF_MANUFACTURER = "manufacturer"
CONF_HW_VERSION = "hw_version"
CONF_SW_VERSION = "sw_version"
CONF_VIA_DEVICE = "via_device"
CONF_DEPRECATED_VIA_HUB = "via_hub"
@ -199,6 +201,7 @@ MQTT_ENTITY_DEVICE_INFO_SCHEMA = vol.All(
vol.Optional(CONF_MANUFACTURER): cv.string,
vol.Optional(CONF_MODEL): cv.string,
vol.Optional(CONF_NAME): cv.string,
vol.Optional(CONF_HW_VERSION): cv.string,
vol.Optional(CONF_SW_VERSION): cv.string,
vol.Optional(CONF_VIA_DEVICE): cv.string,
vol.Optional(CONF_SUGGESTED_AREA): cv.string,
@ -880,6 +883,9 @@ def device_info_from_config(config) -> DeviceInfo | None:
if CONF_NAME in config:
info[ATTR_NAME] = config[CONF_NAME]
if CONF_HW_VERSION in config:
info[ATTR_HW_VERSION] = config[CONF_HW_VERSION]
if CONF_SW_VERSION in config:
info[ATTR_SW_VERSION] = config[CONF_SW_VERSION]

View File

@ -29,6 +29,7 @@ DEFAULT_CONFIG_DEVICE_INFO_ID = {
"manufacturer": "Whatever",
"name": "Beer",
"model": "Glass",
"hw_version": "rev1",
"sw_version": "0.1-beta",
"suggested_area": "default_area",
"configuration_url": "http://example.com",
@ -39,6 +40,7 @@ DEFAULT_CONFIG_DEVICE_INFO_MAC = {
"manufacturer": "Whatever",
"name": "Beer",
"model": "Glass",
"hw_version": "rev1",
"sw_version": "0.1-beta",
"suggested_area": "default_area",
"configuration_url": "http://example.com",
@ -958,6 +960,7 @@ async def help_test_entity_device_info_with_identifier(
assert device.manufacturer == "Whatever"
assert device.name == "Beer"
assert device.model == "Glass"
assert device.hw_version == "rev1"
assert device.sw_version == "0.1-beta"
assert device.suggested_area == "default_area"
assert device.configuration_url == "http://example.com"
@ -990,6 +993,7 @@ async def help_test_entity_device_info_with_connection(
assert device.manufacturer == "Whatever"
assert device.name == "Beer"
assert device.model == "Glass"
assert device.hw_version == "rev1"
assert device.sw_version == "0.1-beta"
assert device.suggested_area == "default_area"
assert device.configuration_url == "http://example.com"

View File

@ -947,6 +947,7 @@ async def test_entity_device_info_with_connection(hass, mqtt_mock_entry_no_yaml_
"manufacturer": "Whatever",
"name": "Beer",
"model": "Glass",
"hw_version": "rev1",
"sw_version": "0.1-beta",
},
}
@ -962,6 +963,7 @@ async def test_entity_device_info_with_connection(hass, mqtt_mock_entry_no_yaml_
assert device.manufacturer == "Whatever"
assert device.name == "Beer"
assert device.model == "Glass"
assert device.hw_version == "rev1"
assert device.sw_version == "0.1-beta"
@ -981,6 +983,7 @@ async def test_entity_device_info_with_identifier(hass, mqtt_mock_entry_no_yaml_
"manufacturer": "Whatever",
"name": "Beer",
"model": "Glass",
"hw_version": "rev1",
"sw_version": "0.1-beta",
},
}
@ -994,6 +997,7 @@ async def test_entity_device_info_with_identifier(hass, mqtt_mock_entry_no_yaml_
assert device.manufacturer == "Whatever"
assert device.name == "Beer"
assert device.model == "Glass"
assert device.hw_version == "rev1"
assert device.sw_version == "0.1-beta"

View File

@ -947,6 +947,7 @@ async def test_discovery_expansion(hass, mqtt_mock_entry_no_yaml_config, caplog)
' "ids":["5706DF"],'
' "name":"DiscoveryExpansionTest1 Device",'
' "mdl":"Generic",'
' "hw":"rev1",'
' "sw":"1.2.3.4",'
' "mf":"None",'
' "sa":"default_area"'
@ -999,6 +1000,7 @@ async def test_discovery_expansion_2(hass, mqtt_mock_entry_no_yaml_config, caplo
' "ids":["5706DF"],'
' "name":"DiscoveryExpansionTest1 Device",'
' "mdl":"Generic",'
' "hw":"rev1",'
' "sw":"1.2.3.4",'
' "mf":"None",'
' "sa":"default_area"'
@ -1037,6 +1039,7 @@ async def test_discovery_expansion_3(hass, mqtt_mock_entry_no_yaml_config, caplo
' "ids":["5706DF"],'
' "name":"DiscoveryExpansionTest1 Device",'
' "mdl":"Generic",'
' "hw":"rev1",'
' "sw":"1.2.3.4",'
' "mf":"None",'
' "sa":"default_area"'
@ -1076,6 +1079,7 @@ async def test_discovery_expansion_without_encoding_and_value_template_1(
' "ids":["5706DF"],'
' "name":"DiscoveryExpansionTest1 Device",'
' "mdl":"Generic",'
' "hw":"rev1",'
' "sw":"1.2.3.4",'
' "mf":"None",'
' "sa":"default_area"'
@ -1124,6 +1128,7 @@ async def test_discovery_expansion_without_encoding_and_value_template_2(
' "ids":["5706DF"],'
' "name":"DiscoveryExpansionTest1 Device",'
' "mdl":"Generic",'
' "hw":"rev1",'
' "sw":"1.2.3.4",'
' "mf":"None",'
' "sa":"default_area"'

View File

@ -437,6 +437,7 @@ async def test_entity_device_info_with_connection(hass, mqtt_mock_entry_no_yaml_
"manufacturer": "Whatever",
"name": "Beer",
"model": "Glass",
"hw_version": "rev1",
"sw_version": "0.1-beta",
},
}
@ -452,6 +453,7 @@ async def test_entity_device_info_with_connection(hass, mqtt_mock_entry_no_yaml_
assert device.manufacturer == "Whatever"
assert device.name == "Beer"
assert device.model == "Glass"
assert device.hw_version == "rev1"
assert device.sw_version == "0.1-beta"
@ -468,6 +470,7 @@ async def test_entity_device_info_with_identifier(hass, mqtt_mock_entry_no_yaml_
"manufacturer": "Whatever",
"name": "Beer",
"model": "Glass",
"hw_version": "rev1",
"sw_version": "0.1-beta",
},
}
@ -481,6 +484,7 @@ async def test_entity_device_info_with_identifier(hass, mqtt_mock_entry_no_yaml_
assert device.manufacturer == "Whatever"
assert device.name == "Beer"
assert device.model == "Glass"
assert device.hw_version == "rev1"
assert device.sw_version == "0.1-beta"