Add service configuration URL to MQTT (#57731)
This commit is contained in:
parent
e34fb4cfb9
commit
eed9f67402
4 changed files with 24 additions and 0 deletions
|
@ -22,6 +22,7 @@ ABBREVIATIONS = {
|
||||||
"clr_temp_cmd_tpl": "color_temp_command_template",
|
"clr_temp_cmd_tpl": "color_temp_command_template",
|
||||||
"bat_lev_t": "battery_level_topic",
|
"bat_lev_t": "battery_level_topic",
|
||||||
"bat_lev_tpl": "battery_level_template",
|
"bat_lev_tpl": "battery_level_template",
|
||||||
|
"cu": "configuration_url",
|
||||||
"chrg_t": "charging_topic",
|
"chrg_t": "charging_topic",
|
||||||
"chrg_tpl": "charging_template",
|
"chrg_tpl": "charging_template",
|
||||||
"clrm": "color_mode",
|
"clrm": "color_mode",
|
||||||
|
|
|
@ -68,6 +68,7 @@ CONF_SW_VERSION = "sw_version"
|
||||||
CONF_VIA_DEVICE = "via_device"
|
CONF_VIA_DEVICE = "via_device"
|
||||||
CONF_DEPRECATED_VIA_HUB = "via_hub"
|
CONF_DEPRECATED_VIA_HUB = "via_hub"
|
||||||
CONF_SUGGESTED_AREA = "suggested_area"
|
CONF_SUGGESTED_AREA = "suggested_area"
|
||||||
|
CONF_CONFIGURATION_URL = "configuration_url"
|
||||||
|
|
||||||
MQTT_ATTRIBUTES_BLOCKED = {
|
MQTT_ATTRIBUTES_BLOCKED = {
|
||||||
"assumed_state",
|
"assumed_state",
|
||||||
|
@ -154,6 +155,7 @@ MQTT_ENTITY_DEVICE_INFO_SCHEMA = vol.All(
|
||||||
vol.Optional(CONF_SW_VERSION): cv.string,
|
vol.Optional(CONF_SW_VERSION): cv.string,
|
||||||
vol.Optional(CONF_VIA_DEVICE): cv.string,
|
vol.Optional(CONF_VIA_DEVICE): cv.string,
|
||||||
vol.Optional(CONF_SUGGESTED_AREA): cv.string,
|
vol.Optional(CONF_SUGGESTED_AREA): cv.string,
|
||||||
|
vol.Optional(CONF_CONFIGURATION_URL): cv.url,
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
validate_device_has_at_least_one_identifier,
|
validate_device_has_at_least_one_identifier,
|
||||||
|
@ -531,6 +533,9 @@ def device_info_from_config(config):
|
||||||
if CONF_SUGGESTED_AREA in config:
|
if CONF_SUGGESTED_AREA in config:
|
||||||
info["suggested_area"] = config[CONF_SUGGESTED_AREA]
|
info["suggested_area"] = config[CONF_SUGGESTED_AREA]
|
||||||
|
|
||||||
|
if CONF_CONFIGURATION_URL in config:
|
||||||
|
info["configuration_url"] = config[CONF_CONFIGURATION_URL]
|
||||||
|
|
||||||
return info
|
return info
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@ DEFAULT_CONFIG_DEVICE_INFO_ID = {
|
||||||
"model": "Glass",
|
"model": "Glass",
|
||||||
"sw_version": "0.1-beta",
|
"sw_version": "0.1-beta",
|
||||||
"suggested_area": "default_area",
|
"suggested_area": "default_area",
|
||||||
|
"configuration_url": "http://example.com",
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFAULT_CONFIG_DEVICE_INFO_MAC = {
|
DEFAULT_CONFIG_DEVICE_INFO_MAC = {
|
||||||
|
@ -31,6 +32,7 @@ DEFAULT_CONFIG_DEVICE_INFO_MAC = {
|
||||||
"model": "Glass",
|
"model": "Glass",
|
||||||
"sw_version": "0.1-beta",
|
"sw_version": "0.1-beta",
|
||||||
"suggested_area": "default_area",
|
"suggested_area": "default_area",
|
||||||
|
"configuration_url": "http://example.com",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -771,6 +773,7 @@ async def help_test_entity_device_info_with_identifier(hass, mqtt_mock, domain,
|
||||||
assert device.model == "Glass"
|
assert device.model == "Glass"
|
||||||
assert device.sw_version == "0.1-beta"
|
assert device.sw_version == "0.1-beta"
|
||||||
assert device.suggested_area == "default_area"
|
assert device.suggested_area == "default_area"
|
||||||
|
assert device.configuration_url == "http://example.com"
|
||||||
|
|
||||||
|
|
||||||
async def help_test_entity_device_info_with_connection(hass, mqtt_mock, domain, config):
|
async def help_test_entity_device_info_with_connection(hass, mqtt_mock, domain, config):
|
||||||
|
@ -799,6 +802,7 @@ async def help_test_entity_device_info_with_connection(hass, mqtt_mock, domain,
|
||||||
assert device.model == "Glass"
|
assert device.model == "Glass"
|
||||||
assert device.sw_version == "0.1-beta"
|
assert device.sw_version == "0.1-beta"
|
||||||
assert device.suggested_area == "default_area"
|
assert device.suggested_area == "default_area"
|
||||||
|
assert device.configuration_url == "http://example.com"
|
||||||
|
|
||||||
|
|
||||||
async def help_test_entity_device_info_remove(hass, mqtt_mock, domain, config):
|
async def help_test_entity_device_info_remove(hass, mqtt_mock, domain, config):
|
||||||
|
|
|
@ -301,6 +301,7 @@ def test_entity_device_info_schema():
|
||||||
"name": "Beer",
|
"name": "Beer",
|
||||||
"model": "Glass",
|
"model": "Glass",
|
||||||
"sw_version": "0.1-beta",
|
"sw_version": "0.1-beta",
|
||||||
|
"configuration_url": "http://example.com",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
# full device info with via_device
|
# full device info with via_device
|
||||||
|
@ -316,6 +317,7 @@ def test_entity_device_info_schema():
|
||||||
"model": "Glass",
|
"model": "Glass",
|
||||||
"sw_version": "0.1-beta",
|
"sw_version": "0.1-beta",
|
||||||
"via_device": "test-hub",
|
"via_device": "test-hub",
|
||||||
|
"configuration_url": "http://example.com",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
# no identifiers
|
# no identifiers
|
||||||
|
@ -334,6 +336,18 @@ def test_entity_device_info_schema():
|
||||||
{"identifiers": [], "connections": [], "name": "Beer"}
|
{"identifiers": [], "connections": [], "name": "Beer"}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# not an valid URL
|
||||||
|
with pytest.raises(vol.Invalid):
|
||||||
|
MQTT_ENTITY_DEVICE_INFO_SCHEMA(
|
||||||
|
{
|
||||||
|
"manufacturer": "Whatever",
|
||||||
|
"name": "Beer",
|
||||||
|
"model": "Glass",
|
||||||
|
"sw_version": "0.1-beta",
|
||||||
|
"configuration_url": "fake://link",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
async def test_receiving_non_utf8_message_gets_logged(
|
async def test_receiving_non_utf8_message_gets_logged(
|
||||||
hass, mqtt_mock, calls, record_calls, caplog
|
hass, mqtt_mock, calls, record_calls, caplog
|
||||||
|
|
Loading…
Add table
Reference in a new issue