From 3a4341dbeb3d37ee1c181ff4bc9d8bb38d2f510f Mon Sep 17 00:00:00 2001 From: Jan Bouwhuis Date: Thu, 19 Oct 2023 18:18:04 +0200 Subject: [PATCH] Do not fail MQTT setup if device trackers configured via yaml can't be validated (#102308) Add device_tracker --- .../components/mqtt/config_integration.py | 6 +--- .../components/mqtt/device_tracker.py | 29 +++++++------------ 2 files changed, 12 insertions(+), 23 deletions(-) diff --git a/homeassistant/components/mqtt/config_integration.py b/homeassistant/components/mqtt/config_integration.py index a57b9499d9e..713152616ef 100644 --- a/homeassistant/components/mqtt/config_integration.py +++ b/homeassistant/components/mqtt/config_integration.py @@ -18,7 +18,6 @@ from . import ( button as button_platform, climate as climate_platform, cover as cover_platform, - device_tracker as device_tracker_platform, event as event_platform, fan as fan_platform, humidifier as humidifier_platform, @@ -67,10 +66,7 @@ CONFIG_SCHEMA_BASE = vol.Schema( cv.ensure_list, [cover_platform.PLATFORM_SCHEMA_MODERN], # type: ignore[has-type] ), - Platform.DEVICE_TRACKER.value: vol.All( - cv.ensure_list, - [device_tracker_platform.PLATFORM_SCHEMA_MODERN], # type: ignore[has-type] - ), + Platform.DEVICE_TRACKER.value: vol.All(cv.ensure_list, [dict]), Platform.EVENT.value: vol.All( cv.ensure_list, [event_platform.PLATFORM_SCHEMA_MODERN], # type: ignore[has-type] diff --git a/homeassistant/components/mqtt/device_tracker.py b/homeassistant/components/mqtt/device_tracker.py index 1293121e0a8..1216a68fe7b 100644 --- a/homeassistant/components/mqtt/device_tracker.py +++ b/homeassistant/components/mqtt/device_tracker.py @@ -2,7 +2,6 @@ from __future__ import annotations from collections.abc import Callable -import functools from typing import TYPE_CHECKING import voluptuous as vol @@ -26,7 +25,7 @@ from homeassistant.const import ( from homeassistant.core import HomeAssistant, callback import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity_platform import AddEntitiesCallback -from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType +from homeassistant.helpers.typing import ConfigType from . import subscription from .config import MQTT_BASE_SCHEMA @@ -36,7 +35,7 @@ from .mixins import ( CONF_JSON_ATTRS_TOPIC, MQTT_ENTITY_COMMON_SCHEMA, MqttEntity, - async_setup_entry_helper, + async_mqtt_entry_helper, write_state_on_attr_change, ) from .models import MqttValueTemplate, ReceiveMessage, ReceivePayloadType @@ -85,22 +84,16 @@ async def async_setup_entry( config_entry: ConfigEntry, async_add_entities: AddEntitiesCallback, ) -> None: - """Set up MQTT device_tracker through YAML and through MQTT discovery.""" - setup = functools.partial( - _async_setup_entity, hass, async_add_entities, config_entry=config_entry + """Set up MQTT event through YAML and through MQTT discovery.""" + await async_mqtt_entry_helper( + hass, + config_entry, + MqttDeviceTracker, + device_tracker.DOMAIN, + async_add_entities, + DISCOVERY_SCHEMA, + PLATFORM_SCHEMA_MODERN, ) - await async_setup_entry_helper(hass, device_tracker.DOMAIN, setup, DISCOVERY_SCHEMA) - - -async def _async_setup_entity( - hass: HomeAssistant, - async_add_entities: AddEntitiesCallback, - config: ConfigType, - config_entry: ConfigEntry, - discovery_data: DiscoveryInfoType | None = None, -) -> None: - """Set up the MQTT Device Tracker entity.""" - async_add_entities([MqttDeviceTracker(hass, config, config_entry, discovery_data)]) class MqttDeviceTracker(MqttEntity, TrackerEntity):