Process abbreviated availability options in mqtt discovery payload (#79712)

Expand availability in mqtt discovery payload
pull/79949/head
Bert Melis 2022-10-08 15:36:49 +02:00 committed by Paulus Schoutsen
parent 779d805b5a
commit 11b351f015
2 changed files with 14 additions and 6 deletions

View File

@ -139,6 +139,14 @@ async def async_start( # noqa: C901
key = DEVICE_ABBREVIATIONS.get(key, key)
device[key] = device.pop(abbreviated_key)
if CONF_AVAILABILITY in payload:
for availability_conf in cv.ensure_list(payload[CONF_AVAILABILITY]):
if isinstance(availability_conf, dict):
for key in list(availability_conf):
abbreviated_key = key
key = ABBREVIATIONS.get(key, key)
availability_conf[key] = availability_conf.pop(abbreviated_key)
if TOPIC_BASE in payload:
base = payload.pop(TOPIC_BASE)
for key, value in payload.items():

View File

@ -945,9 +945,9 @@ async def test_discovery_expansion(hass, mqtt_mock_entry_no_yaml_config, caplog)
' "payload_not_available": "not_available"'
" },"
" {"
' "topic":"avail_item2/~",'
' "payload_available": "available",'
' "payload_not_available": "not_available"'
' "t":"avail_item2/~",'
' "pl_avail": "available",'
' "pl_not_avail": "not_available"'
" }"
" ],"
' "dev":{'
@ -999,9 +999,9 @@ async def test_discovery_expansion_2(hass, mqtt_mock_entry_no_yaml_config, caplo
' "stat_t": "test_topic/~",'
' "cmd_t": "~/test_topic",'
' "availability": {'
' "topic":"~/avail_item1",'
' "payload_available": "available",'
' "payload_not_available": "not_available"'
' "t":"~/avail_item1",'
' "pl_avail": "available",'
' "pl_not_avail": "not_available"'
" },"
' "dev":{'
' "ids":["5706DF"],'