diff --git a/homeassistant/components/mqtt/entity.py b/homeassistant/components/mqtt/entity.py index ff4532381ce..3f7e4f030ab 100644 --- a/homeassistant/components/mqtt/entity.py +++ b/homeassistant/components/mqtt/entity.py @@ -1445,7 +1445,7 @@ class MqttEntity( }, translation_key="deprecated_object_id", ) - else: + elif CONF_DEFAULT_ENTITY_ID not in self._config: if CONF_ORIGIN in self._config: origin_name = self._config[CONF_ORIGIN][CONF_NAME] url = self._config[CONF_ORIGIN].get(CONF_URL) diff --git a/tests/components/mqtt/test_discovery.py b/tests/components/mqtt/test_discovery.py index 0643f7c11d1..841171046a0 100644 --- a/tests/components/mqtt/test_discovery.py +++ b/tests/components/mqtt/test_discovery.py @@ -1331,7 +1331,7 @@ async def test_discover_alarm_control_panel( @pytest.mark.parametrize( - ("topic", "config", "entity_id", "name", "domain"), + ("topic", "config", "entity_id", "name", "domain", "deprecation_warning"), [ ( "homeassistant/alarm_control_panel/object/bla/config", @@ -1339,6 +1339,7 @@ async def test_discover_alarm_control_panel( "alarm_control_panel.hello_id", "Hello World 1", "alarm_control_panel", + True, ), ( "homeassistant/binary_sensor/object/bla/config", @@ -1346,6 +1347,7 @@ async def test_discover_alarm_control_panel( "binary_sensor.hello_id", "Hello World 2", "binary_sensor", + True, ), ( "homeassistant/button/object/bla/config", @@ -1353,6 +1355,7 @@ async def test_discover_alarm_control_panel( "button.hello_id", "Hello World button", "button", + True, ), ( "homeassistant/camera/object/bla/config", @@ -1360,6 +1363,7 @@ async def test_discover_alarm_control_panel( "camera.hello_id", "Hello World 3", "camera", + True, ), ( "homeassistant/climate/object/bla/config", @@ -1367,6 +1371,7 @@ async def test_discover_alarm_control_panel( "climate.hello_id", "Hello World 4", "climate", + True, ), ( "homeassistant/cover/object/bla/config", @@ -1374,6 +1379,7 @@ async def test_discover_alarm_control_panel( "cover.hello_id", "Hello World 5", "cover", + True, ), ( "homeassistant/fan/object/bla/config", @@ -1381,6 +1387,7 @@ async def test_discover_alarm_control_panel( "fan.hello_id", "Hello World 6", "fan", + True, ), ( "homeassistant/humidifier/object/bla/config", @@ -1388,6 +1395,7 @@ async def test_discover_alarm_control_panel( "humidifier.hello_id", "Hello World 7", "humidifier", + True, ), ( "homeassistant/number/object/bla/config", @@ -1395,6 +1403,7 @@ async def test_discover_alarm_control_panel( "number.hello_id", "Hello World 8", "number", + True, ), ( "homeassistant/scene/object/bla/config", @@ -1402,6 +1411,7 @@ async def test_discover_alarm_control_panel( "scene.hello_id", "Hello World 9", "scene", + True, ), ( "homeassistant/select/object/bla/config", @@ -1409,6 +1419,7 @@ async def test_discover_alarm_control_panel( "select.hello_id", "Hello World 10", "select", + True, ), ( "homeassistant/sensor/object/bla/config", @@ -1416,6 +1427,7 @@ async def test_discover_alarm_control_panel( "sensor.hello_id", "Hello World 11", "sensor", + True, ), ( "homeassistant/switch/object/bla/config", @@ -1423,6 +1435,7 @@ async def test_discover_alarm_control_panel( "switch.hello_id", "Hello World 12", "switch", + True, ), ( "homeassistant/light/object/bla/config", @@ -1430,6 +1443,7 @@ async def test_discover_alarm_control_panel( "light.hello_id", "Hello World 13", "light", + True, ), ( "homeassistant/light/object/bla/config", @@ -1437,6 +1451,7 @@ async def test_discover_alarm_control_panel( "light.hello_id", "Hello World 14", "light", + True, ), ( "homeassistant/light/object/bla/config", @@ -1444,6 +1459,7 @@ async def test_discover_alarm_control_panel( "light.hello_id", "Hello World 15", "light", + True, ), ( "homeassistant/vacuum/object/bla/config", @@ -1451,6 +1467,7 @@ async def test_discover_alarm_control_panel( "vacuum.hello_id", "Hello World 16", "vacuum", + True, ), ( "homeassistant/valve/object/bla/config", @@ -1458,6 +1475,7 @@ async def test_discover_alarm_control_panel( "valve.hello_id", "Hello World 17", "valve", + True, ), ( "homeassistant/lock/object/bla/config", @@ -1465,6 +1483,7 @@ async def test_discover_alarm_control_panel( "lock.hello_id", "Hello World 18", "lock", + True, ), ( "homeassistant/device_tracker/object/bla/config", @@ -1472,6 +1491,7 @@ async def test_discover_alarm_control_panel( "device_tracker.hello_id", "Hello World 19", "device_tracker", + True, ), ( "homeassistant/binary_sensor/object/bla/config", @@ -1480,6 +1500,7 @@ async def test_discover_alarm_control_panel( "binary_sensor.hello_id", "Hello World 2", "binary_sensor", + True, ), ( "homeassistant/button/object/bla/config", @@ -1489,6 +1510,7 @@ async def test_discover_alarm_control_panel( "button.hello_id", "Hello World button", "button", + True, ), ( "homeassistant/alarm_control_panel/object/bla/config", @@ -1497,6 +1519,7 @@ async def test_discover_alarm_control_panel( "alarm_control_panel.hello_id", "Hello World 1", "alarm_control_panel", + False, ), ( "homeassistant/binary_sensor/object/bla/config", @@ -1505,6 +1528,7 @@ async def test_discover_alarm_control_panel( "binary_sensor.hello_id", "Hello World 2", "binary_sensor", + False, ), ( "homeassistant/button/object/bla/config", @@ -1514,17 +1538,31 @@ async def test_discover_alarm_control_panel( "button.hello_id", "Hello World button", "button", + False, + ), + ( + "homeassistant/button/object/bla/config", + '{ "name": "Hello World button", "def_ent_id": "button.hello_id", ' + '"obj_id": "hello_id_old", ' + '"o": {"name": "X2mqtt", "url": "https://example.com/x2mqtt"}, ' + '"command_topic": "test-topic" }', + "button.hello_id", + "Hello World button", + "button", + False, ), ], ) async def test_discovery_with_object_id( hass: HomeAssistant, mqtt_mock_entry: MqttMockHAClientGenerator, + caplog: pytest.LogCaptureFixture, topic: str, config: str, entity_id: str, name: str, domain: str, + deprecation_warning: bool, ) -> None: """Test discovering an MQTT entity with object_id.""" await mqtt_mock_entry() @@ -1537,6 +1575,11 @@ async def test_discovery_with_object_id( assert state.name == name assert (domain, "object bla") in hass.data["mqtt"].discovery_already_discovered + assert ( + f"The configuration for entity {domain}.hello_id uses the deprecated option `object_id`" + in caplog.text + ) is deprecation_warning + async def test_discovery_with_default_entity_id_for_previous_deleted_entity( hass: HomeAssistant,