Add suggested_area to MQTT discovery (#47903)

* Add suggested_area to MQTT Discovery

This adds suggested_area to MQTT discovery, so that the discovered devices could be automatically added to the proper area.

* Add abbreviation for MQTT suggested_area

* Remove extra whitespace

* Remove extra whitespace #2

* Added tests for MQTT Dicovery of suggested_area

* Fix test for MQTT suggested_area

* Better tests of MQTT suggested_area

Changes made as per feedback from @emontnemery
This commit is contained in:
RadekHvizdos 2021-03-15 20:02:02 +01:00 committed by GitHub
parent 07c197687f
commit 9f4c2f6260
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 12 additions and 1 deletions

View file

@ -203,4 +203,5 @@ DEVICE_ABBREVIATIONS = {
"mf": "manufacturer",
"mdl": "model",
"sw": "sw_version",
"sa": "suggested_area",
}

View file

@ -63,6 +63,7 @@ CONF_MODEL = "model"
CONF_SW_VERSION = "sw_version"
CONF_VIA_DEVICE = "via_device"
CONF_DEPRECATED_VIA_HUB = "via_hub"
CONF_SUGGESTED_AREA = "suggested_area"
MQTT_AVAILABILITY_SINGLE_SCHEMA = vol.Schema(
{
@ -129,6 +130,7 @@ MQTT_ENTITY_DEVICE_INFO_SCHEMA = vol.All(
vol.Optional(CONF_NAME): cv.string,
vol.Optional(CONF_SW_VERSION): cv.string,
vol.Optional(CONF_VIA_DEVICE): cv.string,
vol.Optional(CONF_SUGGESTED_AREA): cv.string,
}
),
validate_device_has_at_least_one_identifier,
@ -491,6 +493,9 @@ def device_info_from_config(config):
if CONF_VIA_DEVICE in config:
info["via_device"] = (DOMAIN, config[CONF_VIA_DEVICE])
if CONF_SUGGESTED_AREA in config:
info["suggested_area"] = config[CONF_SUGGESTED_AREA]
return info

View file

@ -20,6 +20,7 @@ DEFAULT_CONFIG_DEVICE_INFO_ID = {
"name": "Beer",
"model": "Glass",
"sw_version": "0.1-beta",
"suggested_area": "default_area",
}
DEFAULT_CONFIG_DEVICE_INFO_MAC = {
@ -28,6 +29,7 @@ DEFAULT_CONFIG_DEVICE_INFO_MAC = {
"name": "Beer",
"model": "Glass",
"sw_version": "0.1-beta",
"suggested_area": "default_area",
}
@ -739,6 +741,7 @@ async def help_test_entity_device_info_with_identifier(hass, mqtt_mock, domain,
assert device.name == "Beer"
assert device.model == "Glass"
assert device.sw_version == "0.1-beta"
assert device.suggested_area == "default_area"
async def help_test_entity_device_info_with_connection(hass, mqtt_mock, domain, config):
@ -764,6 +767,7 @@ async def help_test_entity_device_info_with_connection(hass, mqtt_mock, domain,
assert device.name == "Beer"
assert device.model == "Glass"
assert device.sw_version == "0.1-beta"
assert device.suggested_area == "default_area"
async def help_test_entity_device_info_remove(hass, mqtt_mock, domain, config):

View file

@ -442,7 +442,8 @@ async def test_discovery_expansion(hass, mqtt_mock, caplog):
' "name":"DiscoveryExpansionTest1 Device",'
' "mdl":"Generic",'
' "sw":"1.2.3.4",'
' "mf":"None"'
' "mf":"None",'
' "sa":"default_area"'
" }"
"}"
)