From fb984b5218cfb98a82457f54fd576cd3f938d376 Mon Sep 17 00:00:00 2001 From: Jan Bouwhuis Date: Thu, 19 Oct 2023 18:17:06 +0200 Subject: [PATCH] Do not fail MQTT setup if camera's configured via yaml can't be validated (#102302) Add camera --- homeassistant/components/mqtt/camera.py | 25 +++++++------------ .../components/mqtt/config_integration.py | 6 +---- 2 files changed, 10 insertions(+), 21 deletions(-) diff --git a/homeassistant/components/mqtt/camera.py b/homeassistant/components/mqtt/camera.py index c8402e501b0..1a2d4744948 100644 --- a/homeassistant/components/mqtt/camera.py +++ b/homeassistant/components/mqtt/camera.py @@ -2,7 +2,6 @@ from __future__ import annotations from base64 import b64decode -import functools import logging from typing import TYPE_CHECKING @@ -21,7 +20,7 @@ from . import subscription from .config import MQTT_BASE_SCHEMA from .const import CONF_QOS, CONF_TOPIC from .debug_info import log_messages -from .mixins import MQTT_ENTITY_COMMON_SCHEMA, MqttEntity, async_setup_entry_helper +from .mixins import MQTT_ENTITY_COMMON_SCHEMA, MqttEntity, async_mqtt_entry_helper from .models import ReceiveMessage from .util import valid_subscribe_topic @@ -61,21 +60,15 @@ async def async_setup_entry( async_add_entities: AddEntitiesCallback, ) -> None: """Set up MQTT camera through YAML and through MQTT discovery.""" - setup = functools.partial( - _async_setup_entity, hass, async_add_entities, config_entry=config_entry + await async_mqtt_entry_helper( + hass, + config_entry, + MqttCamera, + camera.DOMAIN, + async_add_entities, + DISCOVERY_SCHEMA, + PLATFORM_SCHEMA_MODERN, ) - await async_setup_entry_helper(hass, camera.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 Camera.""" - async_add_entities([MqttCamera(hass, config, config_entry, discovery_data)]) class MqttCamera(MqttEntity, Camera): diff --git a/homeassistant/components/mqtt/config_integration.py b/homeassistant/components/mqtt/config_integration.py index 6c1692fdb1b..a57b9499d9e 100644 --- a/homeassistant/components/mqtt/config_integration.py +++ b/homeassistant/components/mqtt/config_integration.py @@ -16,7 +16,6 @@ from homeassistant.helpers import config_validation as cv from . import ( button as button_platform, - camera as camera_platform, climate as climate_platform, cover as cover_platform, device_tracker as device_tracker_platform, @@ -59,10 +58,7 @@ CONFIG_SCHEMA_BASE = vol.Schema( cv.ensure_list, [button_platform.PLATFORM_SCHEMA_MODERN], # type: ignore[has-type] ), - Platform.CAMERA.value: vol.All( - cv.ensure_list, - [camera_platform.PLATFORM_SCHEMA_MODERN], # type: ignore[has-type] - ), + Platform.CAMERA.value: vol.All(cv.ensure_list, [dict]), Platform.CLIMATE.value: vol.All( cv.ensure_list, [climate_platform.PLATFORM_SCHEMA_MODERN], # type: ignore[has-type]