mirror of
https://github.com/home-assistant/core.git
synced 2025-12-26 14:08:21 +00:00
Allow extra keys in MQTT discovery messages (#58390)
* Allow extra keys in MQTT discovery messages * Remove extra keys
This commit is contained in:
@@ -153,7 +153,6 @@ light:
|
||||
payload_off: "off"
|
||||
|
||||
"""
|
||||
import json
|
||||
from os import path
|
||||
from unittest.mock import call, patch
|
||||
|
||||
@@ -2798,65 +2797,61 @@ async def test_discovery_deprecated(hass, mqtt_mock, caplog):
|
||||
|
||||
async def test_discovery_update_light_topic_and_template(hass, mqtt_mock, caplog):
|
||||
"""Test update of discovered light."""
|
||||
data1 = json.dumps(
|
||||
{
|
||||
"name": "Beer",
|
||||
"state_topic": "test_light_rgb/state1",
|
||||
"command_topic": "test_light_rgb/set",
|
||||
"brightness_command_topic": "test_light_rgb/state1",
|
||||
"rgb_command_topic": "test_light_rgb/rgb/set",
|
||||
"color_temp_command_topic": "test_light_rgb/state1",
|
||||
"effect_command_topic": "test_light_rgb/effect/set",
|
||||
"hs_command_topic": "test_light_rgb/hs/set",
|
||||
"white_value_command_topic": "test_light_rgb/white_value/set",
|
||||
"xy_command_topic": "test_light_rgb/xy/set",
|
||||
"brightness_state_topic": "test_light_rgb/state1",
|
||||
"color_temp_state_topic": "test_light_rgb/state1",
|
||||
"effect_state_topic": "test_light_rgb/state1",
|
||||
"hs_state_topic": "test_light_rgb/state1",
|
||||
"rgb_state_topic": "test_light_rgb/state1",
|
||||
"white_value_state_topic": "test_light_rgb/state1",
|
||||
"xy_state_topic": "test_light_rgb/state1",
|
||||
"state_value_template": "{{ value_json.state1.state }}",
|
||||
"brightness_value_template": "{{ value_json.state1.brightness }}",
|
||||
"color_temp_value_template": "{{ value_json.state1.ct }}",
|
||||
"effect_value_template": "{{ value_json.state1.fx }}",
|
||||
"hs_value_template": "{{ value_json.state1.hs }}",
|
||||
"rgb_value_template": "{{ value_json.state1.rgb }}",
|
||||
"white_value_template": "{{ value_json.state1.white }}",
|
||||
"xy_value_template": "{{ value_json.state1.xy }}",
|
||||
}
|
||||
)
|
||||
config1 = {
|
||||
"name": "Beer",
|
||||
"state_topic": "test_light_rgb/state1",
|
||||
"command_topic": "test_light_rgb/set",
|
||||
"brightness_command_topic": "test_light_rgb/state1",
|
||||
"rgb_command_topic": "test_light_rgb/rgb/set",
|
||||
"color_temp_command_topic": "test_light_rgb/state1",
|
||||
"effect_command_topic": "test_light_rgb/effect/set",
|
||||
"hs_command_topic": "test_light_rgb/hs/set",
|
||||
"white_value_command_topic": "test_light_rgb/white_value/set",
|
||||
"xy_command_topic": "test_light_rgb/xy/set",
|
||||
"brightness_state_topic": "test_light_rgb/state1",
|
||||
"color_temp_state_topic": "test_light_rgb/state1",
|
||||
"effect_state_topic": "test_light_rgb/state1",
|
||||
"hs_state_topic": "test_light_rgb/state1",
|
||||
"rgb_state_topic": "test_light_rgb/state1",
|
||||
"white_value_state_topic": "test_light_rgb/state1",
|
||||
"xy_state_topic": "test_light_rgb/state1",
|
||||
"state_value_template": "{{ value_json.state1.state }}",
|
||||
"brightness_value_template": "{{ value_json.state1.brightness }}",
|
||||
"color_temp_value_template": "{{ value_json.state1.ct }}",
|
||||
"effect_value_template": "{{ value_json.state1.fx }}",
|
||||
"hs_value_template": "{{ value_json.state1.hs }}",
|
||||
"rgb_value_template": "{{ value_json.state1.rgb }}",
|
||||
"white_value_template": "{{ value_json.state1.white }}",
|
||||
"xy_value_template": "{{ value_json.state1.xy }}",
|
||||
}
|
||||
|
||||
data2 = json.dumps(
|
||||
{
|
||||
"name": "Milk",
|
||||
"state_topic": "test_light_rgb/state2",
|
||||
"command_topic": "test_light_rgb/set",
|
||||
"brightness_command_topic": "test_light_rgb/state2",
|
||||
"rgb_command_topic": "test_light_rgb/rgb/set",
|
||||
"color_temp_command_topic": "test_light_rgb/state2",
|
||||
"effect_command_topic": "test_light_rgb/effect/set",
|
||||
"hs_command_topic": "test_light_rgb/hs/set",
|
||||
"white_value_command_topic": "test_light_rgb/white_value/set",
|
||||
"xy_command_topic": "test_light_rgb/xy/set",
|
||||
"brightness_state_topic": "test_light_rgb/state2",
|
||||
"color_temp_state_topic": "test_light_rgb/state2",
|
||||
"effect_state_topic": "test_light_rgb/state2",
|
||||
"hs_state_topic": "test_light_rgb/state2",
|
||||
"rgb_state_topic": "test_light_rgb/state2",
|
||||
"white_value_state_topic": "test_light_rgb/state2",
|
||||
"xy_state_topic": "test_light_rgb/state2",
|
||||
"state_value_template": "{{ value_json.state2.state }}",
|
||||
"brightness_value_template": "{{ value_json.state2.brightness }}",
|
||||
"color_temp_value_template": "{{ value_json.state2.ct }}",
|
||||
"effect_value_template": "{{ value_json.state2.fx }}",
|
||||
"hs_value_template": "{{ value_json.state2.hs }}",
|
||||
"rgb_value_template": "{{ value_json.state2.rgb }}",
|
||||
"white_value_template": "{{ value_json.state2.white }}",
|
||||
"xy_value_template": "{{ value_json.state2.xy }}",
|
||||
}
|
||||
)
|
||||
config2 = {
|
||||
"name": "Milk",
|
||||
"state_topic": "test_light_rgb/state2",
|
||||
"command_topic": "test_light_rgb/set",
|
||||
"brightness_command_topic": "test_light_rgb/state2",
|
||||
"rgb_command_topic": "test_light_rgb/rgb/set",
|
||||
"color_temp_command_topic": "test_light_rgb/state2",
|
||||
"effect_command_topic": "test_light_rgb/effect/set",
|
||||
"hs_command_topic": "test_light_rgb/hs/set",
|
||||
"white_value_command_topic": "test_light_rgb/white_value/set",
|
||||
"xy_command_topic": "test_light_rgb/xy/set",
|
||||
"brightness_state_topic": "test_light_rgb/state2",
|
||||
"color_temp_state_topic": "test_light_rgb/state2",
|
||||
"effect_state_topic": "test_light_rgb/state2",
|
||||
"hs_state_topic": "test_light_rgb/state2",
|
||||
"rgb_state_topic": "test_light_rgb/state2",
|
||||
"white_value_state_topic": "test_light_rgb/state2",
|
||||
"xy_state_topic": "test_light_rgb/state2",
|
||||
"state_value_template": "{{ value_json.state2.state }}",
|
||||
"brightness_value_template": "{{ value_json.state2.brightness }}",
|
||||
"color_temp_value_template": "{{ value_json.state2.ct }}",
|
||||
"effect_value_template": "{{ value_json.state2.fx }}",
|
||||
"hs_value_template": "{{ value_json.state2.hs }}",
|
||||
"rgb_value_template": "{{ value_json.state2.rgb }}",
|
||||
"white_value_template": "{{ value_json.state2.white }}",
|
||||
"xy_value_template": "{{ value_json.state2.xy }}",
|
||||
}
|
||||
state_data1 = [
|
||||
(
|
||||
[
|
||||
@@ -3054,8 +3049,8 @@ async def test_discovery_update_light_topic_and_template(hass, mqtt_mock, caplog
|
||||
mqtt_mock,
|
||||
caplog,
|
||||
light.DOMAIN,
|
||||
data1,
|
||||
data2,
|
||||
config1,
|
||||
config2,
|
||||
state_data1=state_data1,
|
||||
state_data2=state_data2,
|
||||
)
|
||||
@@ -3063,65 +3058,61 @@ async def test_discovery_update_light_topic_and_template(hass, mqtt_mock, caplog
|
||||
|
||||
async def test_discovery_update_light_template(hass, mqtt_mock, caplog):
|
||||
"""Test update of discovered light."""
|
||||
data1 = json.dumps(
|
||||
{
|
||||
"name": "Beer",
|
||||
"state_topic": "test_light_rgb/state1",
|
||||
"command_topic": "test_light_rgb/set",
|
||||
"brightness_command_topic": "test_light_rgb/state1",
|
||||
"rgb_command_topic": "test_light_rgb/rgb/set",
|
||||
"color_temp_command_topic": "test_light_rgb/state1",
|
||||
"effect_command_topic": "test_light_rgb/effect/set",
|
||||
"hs_command_topic": "test_light_rgb/hs/set",
|
||||
"white_value_command_topic": "test_light_rgb/white_value/set",
|
||||
"xy_command_topic": "test_light_rgb/xy/set",
|
||||
"brightness_state_topic": "test_light_rgb/state1",
|
||||
"color_temp_state_topic": "test_light_rgb/state1",
|
||||
"effect_state_topic": "test_light_rgb/state1",
|
||||
"hs_state_topic": "test_light_rgb/state1",
|
||||
"rgb_state_topic": "test_light_rgb/state1",
|
||||
"white_value_state_topic": "test_light_rgb/state1",
|
||||
"xy_state_topic": "test_light_rgb/state1",
|
||||
"state_value_template": "{{ value_json.state1.state }}",
|
||||
"brightness_value_template": "{{ value_json.state1.brightness }}",
|
||||
"color_temp_value_template": "{{ value_json.state1.ct }}",
|
||||
"effect_value_template": "{{ value_json.state1.fx }}",
|
||||
"hs_value_template": "{{ value_json.state1.hs }}",
|
||||
"rgb_value_template": "{{ value_json.state1.rgb }}",
|
||||
"white_value_template": "{{ value_json.state1.white }}",
|
||||
"xy_value_template": "{{ value_json.state1.xy }}",
|
||||
}
|
||||
)
|
||||
config1 = {
|
||||
"name": "Beer",
|
||||
"state_topic": "test_light_rgb/state1",
|
||||
"command_topic": "test_light_rgb/set",
|
||||
"brightness_command_topic": "test_light_rgb/state1",
|
||||
"rgb_command_topic": "test_light_rgb/rgb/set",
|
||||
"color_temp_command_topic": "test_light_rgb/state1",
|
||||
"effect_command_topic": "test_light_rgb/effect/set",
|
||||
"hs_command_topic": "test_light_rgb/hs/set",
|
||||
"white_value_command_topic": "test_light_rgb/white_value/set",
|
||||
"xy_command_topic": "test_light_rgb/xy/set",
|
||||
"brightness_state_topic": "test_light_rgb/state1",
|
||||
"color_temp_state_topic": "test_light_rgb/state1",
|
||||
"effect_state_topic": "test_light_rgb/state1",
|
||||
"hs_state_topic": "test_light_rgb/state1",
|
||||
"rgb_state_topic": "test_light_rgb/state1",
|
||||
"white_value_state_topic": "test_light_rgb/state1",
|
||||
"xy_state_topic": "test_light_rgb/state1",
|
||||
"state_value_template": "{{ value_json.state1.state }}",
|
||||
"brightness_value_template": "{{ value_json.state1.brightness }}",
|
||||
"color_temp_value_template": "{{ value_json.state1.ct }}",
|
||||
"effect_value_template": "{{ value_json.state1.fx }}",
|
||||
"hs_value_template": "{{ value_json.state1.hs }}",
|
||||
"rgb_value_template": "{{ value_json.state1.rgb }}",
|
||||
"white_value_template": "{{ value_json.state1.white }}",
|
||||
"xy_value_template": "{{ value_json.state1.xy }}",
|
||||
}
|
||||
|
||||
data2 = json.dumps(
|
||||
{
|
||||
"name": "Milk",
|
||||
"state_topic": "test_light_rgb/state1",
|
||||
"command_topic": "test_light_rgb/set",
|
||||
"brightness_command_topic": "test_light_rgb/state1",
|
||||
"rgb_command_topic": "test_light_rgb/rgb/set",
|
||||
"color_temp_command_topic": "test_light_rgb/state1",
|
||||
"effect_command_topic": "test_light_rgb/effect/set",
|
||||
"hs_command_topic": "test_light_rgb/hs/set",
|
||||
"white_value_command_topic": "test_light_rgb/white_value/set",
|
||||
"xy_command_topic": "test_light_rgb/xy/set",
|
||||
"brightness_state_topic": "test_light_rgb/state1",
|
||||
"color_temp_state_topic": "test_light_rgb/state1",
|
||||
"effect_state_topic": "test_light_rgb/state1",
|
||||
"hs_state_topic": "test_light_rgb/state1",
|
||||
"rgb_state_topic": "test_light_rgb/state1",
|
||||
"white_value_state_topic": "test_light_rgb/state1",
|
||||
"xy_state_topic": "test_light_rgb/state1",
|
||||
"state_value_template": "{{ value_json.state2.state }}",
|
||||
"brightness_value_template": "{{ value_json.state2.brightness }}",
|
||||
"color_temp_value_template": "{{ value_json.state2.ct }}",
|
||||
"effect_value_template": "{{ value_json.state2.fx }}",
|
||||
"hs_value_template": "{{ value_json.state2.hs }}",
|
||||
"rgb_value_template": "{{ value_json.state2.rgb }}",
|
||||
"white_value_template": "{{ value_json.state2.white }}",
|
||||
"xy_value_template": "{{ value_json.state2.xy }}",
|
||||
}
|
||||
)
|
||||
config2 = {
|
||||
"name": "Milk",
|
||||
"state_topic": "test_light_rgb/state1",
|
||||
"command_topic": "test_light_rgb/set",
|
||||
"brightness_command_topic": "test_light_rgb/state1",
|
||||
"rgb_command_topic": "test_light_rgb/rgb/set",
|
||||
"color_temp_command_topic": "test_light_rgb/state1",
|
||||
"effect_command_topic": "test_light_rgb/effect/set",
|
||||
"hs_command_topic": "test_light_rgb/hs/set",
|
||||
"white_value_command_topic": "test_light_rgb/white_value/set",
|
||||
"xy_command_topic": "test_light_rgb/xy/set",
|
||||
"brightness_state_topic": "test_light_rgb/state1",
|
||||
"color_temp_state_topic": "test_light_rgb/state1",
|
||||
"effect_state_topic": "test_light_rgb/state1",
|
||||
"hs_state_topic": "test_light_rgb/state1",
|
||||
"rgb_state_topic": "test_light_rgb/state1",
|
||||
"white_value_state_topic": "test_light_rgb/state1",
|
||||
"xy_state_topic": "test_light_rgb/state1",
|
||||
"state_value_template": "{{ value_json.state2.state }}",
|
||||
"brightness_value_template": "{{ value_json.state2.brightness }}",
|
||||
"color_temp_value_template": "{{ value_json.state2.ct }}",
|
||||
"effect_value_template": "{{ value_json.state2.fx }}",
|
||||
"hs_value_template": "{{ value_json.state2.hs }}",
|
||||
"rgb_value_template": "{{ value_json.state2.rgb }}",
|
||||
"white_value_template": "{{ value_json.state2.white }}",
|
||||
"xy_value_template": "{{ value_json.state2.xy }}",
|
||||
}
|
||||
state_data1 = [
|
||||
(
|
||||
[
|
||||
@@ -3277,8 +3268,8 @@ async def test_discovery_update_light_template(hass, mqtt_mock, caplog):
|
||||
mqtt_mock,
|
||||
caplog,
|
||||
light.DOMAIN,
|
||||
data1,
|
||||
data2,
|
||||
config1,
|
||||
config2,
|
||||
state_data1=state_data1,
|
||||
state_data2=state_data2,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user