mirror of
https://github.com/home-assistant/core.git
synced 2025-07-13 16:27:08 +00:00
Fix reload of MQTT yaml config (#72901)
This commit is contained in:
parent
8e4321af59
commit
b97d346df7
@ -1,7 +1,6 @@
|
|||||||
"""This platform enables the possibility to control a MQTT alarm."""
|
"""This platform enables the possibility to control a MQTT alarm."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import functools
|
import functools
|
||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
@ -45,8 +44,8 @@ from .debug_info import log_messages
|
|||||||
from .mixins import (
|
from .mixins import (
|
||||||
MQTT_ENTITY_COMMON_SCHEMA,
|
MQTT_ENTITY_COMMON_SCHEMA,
|
||||||
MqttEntity,
|
MqttEntity,
|
||||||
async_get_platform_config_from_yaml,
|
|
||||||
async_setup_entry_helper,
|
async_setup_entry_helper,
|
||||||
|
async_setup_platform_discovery,
|
||||||
async_setup_platform_helper,
|
async_setup_platform_helper,
|
||||||
warn_for_legacy_schema,
|
warn_for_legacy_schema,
|
||||||
)
|
)
|
||||||
@ -133,7 +132,11 @@ async def async_setup_platform(
|
|||||||
"""Set up MQTT alarm control panel configured under the alarm_control_panel key (deprecated)."""
|
"""Set up MQTT alarm control panel configured under the alarm_control_panel key (deprecated)."""
|
||||||
# Deprecated in HA Core 2022.6
|
# Deprecated in HA Core 2022.6
|
||||||
await async_setup_platform_helper(
|
await async_setup_platform_helper(
|
||||||
hass, alarm.DOMAIN, config, async_add_entities, _async_setup_entity
|
hass,
|
||||||
|
alarm.DOMAIN,
|
||||||
|
discovery_info or config,
|
||||||
|
async_add_entities,
|
||||||
|
_async_setup_entity,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -144,13 +147,8 @@ async def async_setup_entry(
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Set up MQTT alarm control panel through configuration.yaml and dynamically through MQTT discovery."""
|
"""Set up MQTT alarm control panel through configuration.yaml and dynamically through MQTT discovery."""
|
||||||
# load and initialize platform config from configuration.yaml
|
# load and initialize platform config from configuration.yaml
|
||||||
await asyncio.gather(
|
config_entry.async_on_unload(
|
||||||
*(
|
await async_setup_platform_discovery(hass, alarm.DOMAIN, PLATFORM_SCHEMA_MODERN)
|
||||||
_async_setup_entity(hass, async_add_entities, config, config_entry)
|
|
||||||
for config in await async_get_platform_config_from_yaml(
|
|
||||||
hass, alarm.DOMAIN, PLATFORM_SCHEMA_MODERN
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
# setup for discovery
|
# setup for discovery
|
||||||
setup = functools.partial(
|
setup = functools.partial(
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
"""Support for MQTT binary sensors."""
|
"""Support for MQTT binary sensors."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
import functools
|
import functools
|
||||||
import logging
|
import logging
|
||||||
@ -42,8 +41,8 @@ from .mixins import (
|
|||||||
MQTT_ENTITY_COMMON_SCHEMA,
|
MQTT_ENTITY_COMMON_SCHEMA,
|
||||||
MqttAvailability,
|
MqttAvailability,
|
||||||
MqttEntity,
|
MqttEntity,
|
||||||
async_get_platform_config_from_yaml,
|
|
||||||
async_setup_entry_helper,
|
async_setup_entry_helper,
|
||||||
|
async_setup_platform_discovery,
|
||||||
async_setup_platform_helper,
|
async_setup_platform_helper,
|
||||||
warn_for_legacy_schema,
|
warn_for_legacy_schema,
|
||||||
)
|
)
|
||||||
@ -88,7 +87,11 @@ async def async_setup_platform(
|
|||||||
"""Set up MQTT binary sensor configured under the fan platform key (deprecated)."""
|
"""Set up MQTT binary sensor configured under the fan platform key (deprecated)."""
|
||||||
# Deprecated in HA Core 2022.6
|
# Deprecated in HA Core 2022.6
|
||||||
await async_setup_platform_helper(
|
await async_setup_platform_helper(
|
||||||
hass, binary_sensor.DOMAIN, config, async_add_entities, _async_setup_entity
|
hass,
|
||||||
|
binary_sensor.DOMAIN,
|
||||||
|
discovery_info or config,
|
||||||
|
async_add_entities,
|
||||||
|
_async_setup_entity,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -99,12 +102,9 @@ async def async_setup_entry(
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Set up MQTT binary sensor through configuration.yaml and dynamically through MQTT discovery."""
|
"""Set up MQTT binary sensor through configuration.yaml and dynamically through MQTT discovery."""
|
||||||
# load and initialize platform config from configuration.yaml
|
# load and initialize platform config from configuration.yaml
|
||||||
await asyncio.gather(
|
config_entry.async_on_unload(
|
||||||
*(
|
await async_setup_platform_discovery(
|
||||||
_async_setup_entity(hass, async_add_entities, config, config_entry)
|
hass, binary_sensor.DOMAIN, PLATFORM_SCHEMA_MODERN
|
||||||
for config in await async_get_platform_config_from_yaml(
|
|
||||||
hass, binary_sensor.DOMAIN, PLATFORM_SCHEMA_MODERN
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
# setup for discovery
|
# setup for discovery
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
"""Support for MQTT buttons."""
|
"""Support for MQTT buttons."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import functools
|
import functools
|
||||||
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
@ -26,8 +25,8 @@ from .const import (
|
|||||||
from .mixins import (
|
from .mixins import (
|
||||||
MQTT_ENTITY_COMMON_SCHEMA,
|
MQTT_ENTITY_COMMON_SCHEMA,
|
||||||
MqttEntity,
|
MqttEntity,
|
||||||
async_get_platform_config_from_yaml,
|
|
||||||
async_setup_entry_helper,
|
async_setup_entry_helper,
|
||||||
|
async_setup_platform_discovery,
|
||||||
async_setup_platform_helper,
|
async_setup_platform_helper,
|
||||||
warn_for_legacy_schema,
|
warn_for_legacy_schema,
|
||||||
)
|
)
|
||||||
@ -68,7 +67,11 @@ async def async_setup_platform(
|
|||||||
"""Set up MQTT button configured under the fan platform key (deprecated)."""
|
"""Set up MQTT button configured under the fan platform key (deprecated)."""
|
||||||
# Deprecated in HA Core 2022.6
|
# Deprecated in HA Core 2022.6
|
||||||
await async_setup_platform_helper(
|
await async_setup_platform_helper(
|
||||||
hass, button.DOMAIN, config, async_add_entities, _async_setup_entity
|
hass,
|
||||||
|
button.DOMAIN,
|
||||||
|
discovery_info or config,
|
||||||
|
async_add_entities,
|
||||||
|
_async_setup_entity,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -79,12 +82,9 @@ async def async_setup_entry(
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Set up MQTT button through configuration.yaml and dynamically through MQTT discovery."""
|
"""Set up MQTT button through configuration.yaml and dynamically through MQTT discovery."""
|
||||||
# load and initialize platform config from configuration.yaml
|
# load and initialize platform config from configuration.yaml
|
||||||
await asyncio.gather(
|
config_entry.async_on_unload(
|
||||||
*(
|
await async_setup_platform_discovery(
|
||||||
_async_setup_entity(hass, async_add_entities, config, config_entry)
|
hass, button.DOMAIN, PLATFORM_SCHEMA_MODERN
|
||||||
for config in await async_get_platform_config_from_yaml(
|
|
||||||
hass, button.DOMAIN, PLATFORM_SCHEMA_MODERN
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
# setup for discovery
|
# setup for discovery
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
"""Camera that loads a picture from an MQTT topic."""
|
"""Camera that loads a picture from an MQTT topic."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
|
||||||
from base64 import b64decode
|
from base64 import b64decode
|
||||||
import functools
|
import functools
|
||||||
|
|
||||||
@ -23,8 +22,8 @@ from .debug_info import log_messages
|
|||||||
from .mixins import (
|
from .mixins import (
|
||||||
MQTT_ENTITY_COMMON_SCHEMA,
|
MQTT_ENTITY_COMMON_SCHEMA,
|
||||||
MqttEntity,
|
MqttEntity,
|
||||||
async_get_platform_config_from_yaml,
|
|
||||||
async_setup_entry_helper,
|
async_setup_entry_helper,
|
||||||
|
async_setup_platform_discovery,
|
||||||
async_setup_platform_helper,
|
async_setup_platform_helper,
|
||||||
warn_for_legacy_schema,
|
warn_for_legacy_schema,
|
||||||
)
|
)
|
||||||
@ -66,7 +65,11 @@ async def async_setup_platform(
|
|||||||
"""Set up MQTT camera configured under the camera platform key (deprecated)."""
|
"""Set up MQTT camera configured under the camera platform key (deprecated)."""
|
||||||
# Deprecated in HA Core 2022.6
|
# Deprecated in HA Core 2022.6
|
||||||
await async_setup_platform_helper(
|
await async_setup_platform_helper(
|
||||||
hass, camera.DOMAIN, config, async_add_entities, _async_setup_entity
|
hass,
|
||||||
|
camera.DOMAIN,
|
||||||
|
discovery_info or config,
|
||||||
|
async_add_entities,
|
||||||
|
_async_setup_entity,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -77,12 +80,9 @@ async def async_setup_entry(
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Set up MQTT camera through configuration.yaml and dynamically through MQTT discovery."""
|
"""Set up MQTT camera through configuration.yaml and dynamically through MQTT discovery."""
|
||||||
# load and initialize platform config from configuration.yaml
|
# load and initialize platform config from configuration.yaml
|
||||||
await asyncio.gather(
|
config_entry.async_on_unload(
|
||||||
*(
|
await async_setup_platform_discovery(
|
||||||
_async_setup_entity(hass, async_add_entities, config, config_entry)
|
hass, camera.DOMAIN, PLATFORM_SCHEMA_MODERN
|
||||||
for config in await async_get_platform_config_from_yaml(
|
|
||||||
hass, camera.DOMAIN, PLATFORM_SCHEMA_MODERN
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
# setup for discovery
|
# setup for discovery
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
"""Support for MQTT climate devices."""
|
"""Support for MQTT climate devices."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import functools
|
import functools
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@ -51,8 +50,8 @@ from .debug_info import log_messages
|
|||||||
from .mixins import (
|
from .mixins import (
|
||||||
MQTT_ENTITY_COMMON_SCHEMA,
|
MQTT_ENTITY_COMMON_SCHEMA,
|
||||||
MqttEntity,
|
MqttEntity,
|
||||||
async_get_platform_config_from_yaml,
|
|
||||||
async_setup_entry_helper,
|
async_setup_entry_helper,
|
||||||
|
async_setup_platform_discovery,
|
||||||
async_setup_platform_helper,
|
async_setup_platform_helper,
|
||||||
warn_for_legacy_schema,
|
warn_for_legacy_schema,
|
||||||
)
|
)
|
||||||
@ -377,7 +376,11 @@ async def async_setup_platform(
|
|||||||
"""Set up MQTT climate configured under the fan platform key (deprecated)."""
|
"""Set up MQTT climate configured under the fan platform key (deprecated)."""
|
||||||
# The use of PLATFORM_SCHEMA is deprecated in HA Core 2022.6
|
# The use of PLATFORM_SCHEMA is deprecated in HA Core 2022.6
|
||||||
await async_setup_platform_helper(
|
await async_setup_platform_helper(
|
||||||
hass, climate.DOMAIN, config, async_add_entities, _async_setup_entity
|
hass,
|
||||||
|
climate.DOMAIN,
|
||||||
|
discovery_info or config,
|
||||||
|
async_add_entities,
|
||||||
|
_async_setup_entity,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -388,12 +391,9 @@ async def async_setup_entry(
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Set up MQTT climate device through configuration.yaml and dynamically through MQTT discovery."""
|
"""Set up MQTT climate device through configuration.yaml and dynamically through MQTT discovery."""
|
||||||
# load and initialize platform config from configuration.yaml
|
# load and initialize platform config from configuration.yaml
|
||||||
await asyncio.gather(
|
config_entry.async_on_unload(
|
||||||
*(
|
await async_setup_platform_discovery(
|
||||||
_async_setup_entity(hass, async_add_entities, config, config_entry)
|
hass, climate.DOMAIN, PLATFORM_SCHEMA_MODERN
|
||||||
for config in await async_get_platform_config_from_yaml(
|
|
||||||
hass, climate.DOMAIN, PLATFORM_SCHEMA_MODERN
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
# setup for discovery
|
# setup for discovery
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
"""Support for MQTT cover devices."""
|
"""Support for MQTT cover devices."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import functools
|
import functools
|
||||||
from json import JSONDecodeError, loads as json_loads
|
from json import JSONDecodeError, loads as json_loads
|
||||||
import logging
|
import logging
|
||||||
@ -46,8 +45,8 @@ from .debug_info import log_messages
|
|||||||
from .mixins import (
|
from .mixins import (
|
||||||
MQTT_ENTITY_COMMON_SCHEMA,
|
MQTT_ENTITY_COMMON_SCHEMA,
|
||||||
MqttEntity,
|
MqttEntity,
|
||||||
async_get_platform_config_from_yaml,
|
|
||||||
async_setup_entry_helper,
|
async_setup_entry_helper,
|
||||||
|
async_setup_platform_discovery,
|
||||||
async_setup_platform_helper,
|
async_setup_platform_helper,
|
||||||
warn_for_legacy_schema,
|
warn_for_legacy_schema,
|
||||||
)
|
)
|
||||||
@ -227,7 +226,11 @@ async def async_setup_platform(
|
|||||||
"""Set up MQTT covers configured under the fan platform key (deprecated)."""
|
"""Set up MQTT covers configured under the fan platform key (deprecated)."""
|
||||||
# Deprecated in HA Core 2022.6
|
# Deprecated in HA Core 2022.6
|
||||||
await async_setup_platform_helper(
|
await async_setup_platform_helper(
|
||||||
hass, cover.DOMAIN, config, async_add_entities, _async_setup_entity
|
hass,
|
||||||
|
cover.DOMAIN,
|
||||||
|
discovery_info or config,
|
||||||
|
async_add_entities,
|
||||||
|
_async_setup_entity,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -238,13 +241,8 @@ async def async_setup_entry(
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Set up MQTT cover through configuration.yaml and dynamically through MQTT discovery."""
|
"""Set up MQTT cover through configuration.yaml and dynamically through MQTT discovery."""
|
||||||
# load and initialize platform config from configuration.yaml
|
# load and initialize platform config from configuration.yaml
|
||||||
await asyncio.gather(
|
config_entry.async_on_unload(
|
||||||
*(
|
await async_setup_platform_discovery(hass, cover.DOMAIN, PLATFORM_SCHEMA_MODERN)
|
||||||
_async_setup_entity(hass, async_add_entities, config, config_entry)
|
|
||||||
for config in await async_get_platform_config_from_yaml(
|
|
||||||
hass, cover.DOMAIN, PLATFORM_SCHEMA_MODERN
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
# setup for discovery
|
# setup for discovery
|
||||||
setup = functools.partial(
|
setup = functools.partial(
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
"""Support for MQTT fans."""
|
"""Support for MQTT fans."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import functools
|
import functools
|
||||||
import logging
|
import logging
|
||||||
import math
|
import math
|
||||||
@ -50,8 +49,8 @@ from .debug_info import log_messages
|
|||||||
from .mixins import (
|
from .mixins import (
|
||||||
MQTT_ENTITY_COMMON_SCHEMA,
|
MQTT_ENTITY_COMMON_SCHEMA,
|
||||||
MqttEntity,
|
MqttEntity,
|
||||||
async_get_platform_config_from_yaml,
|
|
||||||
async_setup_entry_helper,
|
async_setup_entry_helper,
|
||||||
|
async_setup_platform_discovery,
|
||||||
async_setup_platform_helper,
|
async_setup_platform_helper,
|
||||||
warn_for_legacy_schema,
|
warn_for_legacy_schema,
|
||||||
)
|
)
|
||||||
@ -217,7 +216,11 @@ async def async_setup_platform(
|
|||||||
"""Set up MQTT fans configured under the fan platform key (deprecated)."""
|
"""Set up MQTT fans configured under the fan platform key (deprecated)."""
|
||||||
# Deprecated in HA Core 2022.6
|
# Deprecated in HA Core 2022.6
|
||||||
await async_setup_platform_helper(
|
await async_setup_platform_helper(
|
||||||
hass, fan.DOMAIN, config, async_add_entities, _async_setup_entity
|
hass,
|
||||||
|
fan.DOMAIN,
|
||||||
|
discovery_info or config,
|
||||||
|
async_add_entities,
|
||||||
|
_async_setup_entity,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -228,13 +231,8 @@ async def async_setup_entry(
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Set up MQTT fan through configuration.yaml and dynamically through MQTT discovery."""
|
"""Set up MQTT fan through configuration.yaml and dynamically through MQTT discovery."""
|
||||||
# load and initialize platform config from configuration.yaml
|
# load and initialize platform config from configuration.yaml
|
||||||
await asyncio.gather(
|
config_entry.async_on_unload(
|
||||||
*(
|
await async_setup_platform_discovery(hass, fan.DOMAIN, PLATFORM_SCHEMA_MODERN)
|
||||||
_async_setup_entity(hass, async_add_entities, config, config_entry)
|
|
||||||
for config in await async_get_platform_config_from_yaml(
|
|
||||||
hass, fan.DOMAIN, PLATFORM_SCHEMA_MODERN
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
# setup for discovery
|
# setup for discovery
|
||||||
setup = functools.partial(
|
setup = functools.partial(
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
"""Support for MQTT humidifiers."""
|
"""Support for MQTT humidifiers."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import functools
|
import functools
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@ -46,8 +45,8 @@ from .debug_info import log_messages
|
|||||||
from .mixins import (
|
from .mixins import (
|
||||||
MQTT_ENTITY_COMMON_SCHEMA,
|
MQTT_ENTITY_COMMON_SCHEMA,
|
||||||
MqttEntity,
|
MqttEntity,
|
||||||
async_get_platform_config_from_yaml,
|
|
||||||
async_setup_entry_helper,
|
async_setup_entry_helper,
|
||||||
|
async_setup_platform_discovery,
|
||||||
async_setup_platform_helper,
|
async_setup_platform_helper,
|
||||||
warn_for_legacy_schema,
|
warn_for_legacy_schema,
|
||||||
)
|
)
|
||||||
@ -173,7 +172,11 @@ async def async_setup_platform(
|
|||||||
"""Set up MQTT humidifier configured under the fan platform key (deprecated)."""
|
"""Set up MQTT humidifier configured under the fan platform key (deprecated)."""
|
||||||
# Deprecated in HA Core 2022.6
|
# Deprecated in HA Core 2022.6
|
||||||
await async_setup_platform_helper(
|
await async_setup_platform_helper(
|
||||||
hass, humidifier.DOMAIN, config, async_add_entities, _async_setup_entity
|
hass,
|
||||||
|
humidifier.DOMAIN,
|
||||||
|
discovery_info or config,
|
||||||
|
async_add_entities,
|
||||||
|
_async_setup_entity,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -184,14 +187,12 @@ async def async_setup_entry(
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Set up MQTT humidifier through configuration.yaml and dynamically through MQTT discovery."""
|
"""Set up MQTT humidifier through configuration.yaml and dynamically through MQTT discovery."""
|
||||||
# load and initialize platform config from configuration.yaml
|
# load and initialize platform config from configuration.yaml
|
||||||
await asyncio.gather(
|
config_entry.async_on_unload(
|
||||||
*(
|
await async_setup_platform_discovery(
|
||||||
_async_setup_entity(hass, async_add_entities, config, config_entry)
|
hass, humidifier.DOMAIN, PLATFORM_SCHEMA_MODERN
|
||||||
for config in await async_get_platform_config_from_yaml(
|
|
||||||
hass, humidifier.DOMAIN, PLATFORM_SCHEMA_MODERN
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
) # setup for discovery
|
)
|
||||||
|
# setup for discovery
|
||||||
setup = functools.partial(
|
setup = functools.partial(
|
||||||
_async_setup_entity, hass, async_add_entities, config_entry=config_entry
|
_async_setup_entity, hass, async_add_entities, config_entry=config_entry
|
||||||
)
|
)
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
"""Support for MQTT lights."""
|
"""Support for MQTT lights."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import functools
|
import functools
|
||||||
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
@ -14,8 +13,8 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
|||||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||||
|
|
||||||
from ..mixins import (
|
from ..mixins import (
|
||||||
async_get_platform_config_from_yaml,
|
|
||||||
async_setup_entry_helper,
|
async_setup_entry_helper,
|
||||||
|
async_setup_platform_discovery,
|
||||||
async_setup_platform_helper,
|
async_setup_platform_helper,
|
||||||
warn_for_legacy_schema,
|
warn_for_legacy_schema,
|
||||||
)
|
)
|
||||||
@ -97,7 +96,11 @@ async def async_setup_platform(
|
|||||||
"""Set up MQTT light through configuration.yaml (deprecated)."""
|
"""Set up MQTT light through configuration.yaml (deprecated)."""
|
||||||
# Deprecated in HA Core 2022.6
|
# Deprecated in HA Core 2022.6
|
||||||
await async_setup_platform_helper(
|
await async_setup_platform_helper(
|
||||||
hass, light.DOMAIN, config, async_add_entities, _async_setup_entity
|
hass,
|
||||||
|
light.DOMAIN,
|
||||||
|
discovery_info or config,
|
||||||
|
async_add_entities,
|
||||||
|
_async_setup_entity,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -108,13 +111,8 @@ async def async_setup_entry(
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Set up MQTT lights configured under the light platform key (deprecated)."""
|
"""Set up MQTT lights configured under the light platform key (deprecated)."""
|
||||||
# load and initialize platform config from configuration.yaml
|
# load and initialize platform config from configuration.yaml
|
||||||
await asyncio.gather(
|
config_entry.async_on_unload(
|
||||||
*(
|
await async_setup_platform_discovery(hass, light.DOMAIN, PLATFORM_SCHEMA_MODERN)
|
||||||
_async_setup_entity(hass, async_add_entities, config, config_entry)
|
|
||||||
for config in await async_get_platform_config_from_yaml(
|
|
||||||
hass, light.DOMAIN, PLATFORM_SCHEMA_MODERN
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
# setup for discovery
|
# setup for discovery
|
||||||
setup = functools.partial(
|
setup = functools.partial(
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
"""Support for MQTT locks."""
|
"""Support for MQTT locks."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import functools
|
import functools
|
||||||
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
@ -28,8 +27,8 @@ from .debug_info import log_messages
|
|||||||
from .mixins import (
|
from .mixins import (
|
||||||
MQTT_ENTITY_COMMON_SCHEMA,
|
MQTT_ENTITY_COMMON_SCHEMA,
|
||||||
MqttEntity,
|
MqttEntity,
|
||||||
async_get_platform_config_from_yaml,
|
|
||||||
async_setup_entry_helper,
|
async_setup_entry_helper,
|
||||||
|
async_setup_platform_discovery,
|
||||||
async_setup_platform_helper,
|
async_setup_platform_helper,
|
||||||
warn_for_legacy_schema,
|
warn_for_legacy_schema,
|
||||||
)
|
)
|
||||||
@ -88,7 +87,11 @@ async def async_setup_platform(
|
|||||||
"""Set up MQTT locks configured under the lock platform key (deprecated)."""
|
"""Set up MQTT locks configured under the lock platform key (deprecated)."""
|
||||||
# Deprecated in HA Core 2022.6
|
# Deprecated in HA Core 2022.6
|
||||||
await async_setup_platform_helper(
|
await async_setup_platform_helper(
|
||||||
hass, lock.DOMAIN, config, async_add_entities, _async_setup_entity
|
hass,
|
||||||
|
lock.DOMAIN,
|
||||||
|
discovery_info or config,
|
||||||
|
async_add_entities,
|
||||||
|
_async_setup_entity,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -99,13 +102,8 @@ async def async_setup_entry(
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Set up MQTT lock through configuration.yaml and dynamically through MQTT discovery."""
|
"""Set up MQTT lock through configuration.yaml and dynamically through MQTT discovery."""
|
||||||
# load and initialize platform config from configuration.yaml
|
# load and initialize platform config from configuration.yaml
|
||||||
await asyncio.gather(
|
config_entry.async_on_unload(
|
||||||
*(
|
await async_setup_platform_discovery(hass, lock.DOMAIN, PLATFORM_SCHEMA_MODERN)
|
||||||
_async_setup_entity(hass, async_add_entities, config, config_entry)
|
|
||||||
for config in await async_get_platform_config_from_yaml(
|
|
||||||
hass, lock.DOMAIN, PLATFORM_SCHEMA_MODERN
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
# setup for discovery
|
# setup for discovery
|
||||||
setup = functools.partial(
|
setup = functools.partial(
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from abc import abstractmethod
|
from abc import abstractmethod
|
||||||
|
import asyncio
|
||||||
from collections.abc import Callable
|
from collections.abc import Callable
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
@ -27,10 +28,11 @@ from homeassistant.const import (
|
|||||||
CONF_UNIQUE_ID,
|
CONF_UNIQUE_ID,
|
||||||
CONF_VALUE_TEMPLATE,
|
CONF_VALUE_TEMPLATE,
|
||||||
)
|
)
|
||||||
from homeassistant.core import Event, HomeAssistant, callback
|
from homeassistant.core import CALLBACK_TYPE, Event, HomeAssistant, callback
|
||||||
from homeassistant.helpers import (
|
from homeassistant.helpers import (
|
||||||
config_validation as cv,
|
config_validation as cv,
|
||||||
device_registry as dr,
|
device_registry as dr,
|
||||||
|
discovery,
|
||||||
entity_registry as er,
|
entity_registry as er,
|
||||||
)
|
)
|
||||||
from homeassistant.helpers.device_registry import EVENT_DEVICE_REGISTRY_UPDATED
|
from homeassistant.helpers.device_registry import EVENT_DEVICE_REGISTRY_UPDATED
|
||||||
@ -46,7 +48,10 @@ from homeassistant.helpers.entity import (
|
|||||||
async_generate_entity_id,
|
async_generate_entity_id,
|
||||||
)
|
)
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
from homeassistant.helpers.reload import async_setup_reload_service
|
from homeassistant.helpers.reload import (
|
||||||
|
async_integration_yaml_config,
|
||||||
|
async_setup_reload_service,
|
||||||
|
)
|
||||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||||
|
|
||||||
from . import debug_info, subscription
|
from . import debug_info, subscription
|
||||||
@ -260,8 +265,44 @@ class SetupEntity(Protocol):
|
|||||||
"""Define setup_entities type."""
|
"""Define setup_entities type."""
|
||||||
|
|
||||||
|
|
||||||
|
async def async_setup_platform_discovery(
|
||||||
|
hass: HomeAssistant, platform_domain: str, schema: vol.Schema
|
||||||
|
) -> CALLBACK_TYPE:
|
||||||
|
"""Set up platform discovery for manual config."""
|
||||||
|
|
||||||
|
async def _async_discover_entities(event: Event | None) -> None:
|
||||||
|
"""Discover entities for a platform."""
|
||||||
|
if event:
|
||||||
|
# The platform has been reloaded
|
||||||
|
config_yaml = await async_integration_yaml_config(hass, DOMAIN)
|
||||||
|
if not config_yaml:
|
||||||
|
return
|
||||||
|
config_yaml = config_yaml.get(DOMAIN, {})
|
||||||
|
else:
|
||||||
|
config_yaml = hass.data.get(DATA_MQTT_CONFIG, {})
|
||||||
|
if not config_yaml:
|
||||||
|
return
|
||||||
|
if platform_domain not in config_yaml:
|
||||||
|
return
|
||||||
|
await asyncio.gather(
|
||||||
|
*(
|
||||||
|
discovery.async_load_platform(hass, platform_domain, DOMAIN, config, {})
|
||||||
|
for config in await async_get_platform_config_from_yaml(
|
||||||
|
hass, platform_domain, schema, config_yaml
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
unsub = hass.bus.async_listen("event_mqtt_reloaded", _async_discover_entities)
|
||||||
|
await _async_discover_entities(None)
|
||||||
|
return unsub
|
||||||
|
|
||||||
|
|
||||||
async def async_get_platform_config_from_yaml(
|
async def async_get_platform_config_from_yaml(
|
||||||
hass: HomeAssistant, domain: str, schema: vol.Schema
|
hass: HomeAssistant,
|
||||||
|
platform_domain: str,
|
||||||
|
schema: vol.Schema,
|
||||||
|
config_yaml: ConfigType = None,
|
||||||
) -> list[ConfigType]:
|
) -> list[ConfigType]:
|
||||||
"""Return a list of validated configurations for the domain."""
|
"""Return a list of validated configurations for the domain."""
|
||||||
|
|
||||||
@ -275,12 +316,15 @@ async def async_get_platform_config_from_yaml(
|
|||||||
try:
|
try:
|
||||||
validated_config.append(schema(config_item))
|
validated_config.append(schema(config_item))
|
||||||
except vol.MultipleInvalid as err:
|
except vol.MultipleInvalid as err:
|
||||||
async_log_exception(err, domain, config_item, hass)
|
async_log_exception(err, platform_domain, config_item, hass)
|
||||||
|
|
||||||
return validated_config
|
return validated_config
|
||||||
|
|
||||||
config_yaml: ConfigType = hass.data.get(DATA_MQTT_CONFIG, {})
|
if config_yaml is None:
|
||||||
if not (platform_configs := config_yaml.get(domain)):
|
config_yaml = hass.data.get(DATA_MQTT_CONFIG)
|
||||||
|
if not config_yaml:
|
||||||
|
return []
|
||||||
|
if not (platform_configs := config_yaml.get(platform_domain)):
|
||||||
return []
|
return []
|
||||||
return async_validate_config(hass, platform_configs)
|
return async_validate_config(hass, platform_configs)
|
||||||
|
|
||||||
@ -310,7 +354,7 @@ async def async_setup_entry_helper(hass, domain, async_setup, schema):
|
|||||||
async def async_setup_platform_helper(
|
async def async_setup_platform_helper(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
platform_domain: str,
|
platform_domain: str,
|
||||||
config: ConfigType,
|
config: ConfigType | DiscoveryInfoType,
|
||||||
async_add_entities: AddEntitiesCallback,
|
async_add_entities: AddEntitiesCallback,
|
||||||
async_setup_entities: SetupEntity,
|
async_setup_entities: SetupEntity,
|
||||||
) -> None:
|
) -> None:
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
"""Configure number in a device through MQTT topic."""
|
"""Configure number in a device through MQTT topic."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import functools
|
import functools
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@ -41,8 +40,8 @@ from .debug_info import log_messages
|
|||||||
from .mixins import (
|
from .mixins import (
|
||||||
MQTT_ENTITY_COMMON_SCHEMA,
|
MQTT_ENTITY_COMMON_SCHEMA,
|
||||||
MqttEntity,
|
MqttEntity,
|
||||||
async_get_platform_config_from_yaml,
|
|
||||||
async_setup_entry_helper,
|
async_setup_entry_helper,
|
||||||
|
async_setup_platform_discovery,
|
||||||
async_setup_platform_helper,
|
async_setup_platform_helper,
|
||||||
warn_for_legacy_schema,
|
warn_for_legacy_schema,
|
||||||
)
|
)
|
||||||
@ -119,7 +118,11 @@ async def async_setup_platform(
|
|||||||
"""Set up MQTT number configured under the number platform key (deprecated)."""
|
"""Set up MQTT number configured under the number platform key (deprecated)."""
|
||||||
# Deprecated in HA Core 2022.6
|
# Deprecated in HA Core 2022.6
|
||||||
await async_setup_platform_helper(
|
await async_setup_platform_helper(
|
||||||
hass, number.DOMAIN, config, async_add_entities, _async_setup_entity
|
hass,
|
||||||
|
number.DOMAIN,
|
||||||
|
discovery_info or config,
|
||||||
|
async_add_entities,
|
||||||
|
_async_setup_entity,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -130,12 +133,9 @@ async def async_setup_entry(
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Set up MQTT number through configuration.yaml and dynamically through MQTT discovery."""
|
"""Set up MQTT number through configuration.yaml and dynamically through MQTT discovery."""
|
||||||
# load and initialize platform config from configuration.yaml
|
# load and initialize platform config from configuration.yaml
|
||||||
await asyncio.gather(
|
config_entry.async_on_unload(
|
||||||
*(
|
await async_setup_platform_discovery(
|
||||||
_async_setup_entity(hass, async_add_entities, config, config_entry)
|
hass, number.DOMAIN, PLATFORM_SCHEMA_MODERN
|
||||||
for config in await async_get_platform_config_from_yaml(
|
|
||||||
hass, number.DOMAIN, PLATFORM_SCHEMA_MODERN
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
# setup for discovery
|
# setup for discovery
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
"""Support for MQTT scenes."""
|
"""Support for MQTT scenes."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import functools
|
import functools
|
||||||
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
@ -23,8 +22,8 @@ from .mixins import (
|
|||||||
CONF_OBJECT_ID,
|
CONF_OBJECT_ID,
|
||||||
MQTT_AVAILABILITY_SCHEMA,
|
MQTT_AVAILABILITY_SCHEMA,
|
||||||
MqttEntity,
|
MqttEntity,
|
||||||
async_get_platform_config_from_yaml,
|
|
||||||
async_setup_entry_helper,
|
async_setup_entry_helper,
|
||||||
|
async_setup_platform_discovery,
|
||||||
async_setup_platform_helper,
|
async_setup_platform_helper,
|
||||||
warn_for_legacy_schema,
|
warn_for_legacy_schema,
|
||||||
)
|
)
|
||||||
@ -65,7 +64,11 @@ async def async_setup_platform(
|
|||||||
"""Set up MQTT scene configured under the scene platform key (deprecated)."""
|
"""Set up MQTT scene configured under the scene platform key (deprecated)."""
|
||||||
# Deprecated in HA Core 2022.6
|
# Deprecated in HA Core 2022.6
|
||||||
await async_setup_platform_helper(
|
await async_setup_platform_helper(
|
||||||
hass, scene.DOMAIN, config, async_add_entities, _async_setup_entity
|
hass,
|
||||||
|
scene.DOMAIN,
|
||||||
|
discovery_info or config,
|
||||||
|
async_add_entities,
|
||||||
|
_async_setup_entity,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -76,13 +79,8 @@ async def async_setup_entry(
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Set up MQTT scene through configuration.yaml and dynamically through MQTT discovery."""
|
"""Set up MQTT scene through configuration.yaml and dynamically through MQTT discovery."""
|
||||||
# load and initialize platform config from configuration.yaml
|
# load and initialize platform config from configuration.yaml
|
||||||
await asyncio.gather(
|
config_entry.async_on_unload(
|
||||||
*(
|
await async_setup_platform_discovery(hass, scene.DOMAIN, PLATFORM_SCHEMA_MODERN)
|
||||||
_async_setup_entity(hass, async_add_entities, config, config_entry)
|
|
||||||
for config in await async_get_platform_config_from_yaml(
|
|
||||||
hass, scene.DOMAIN, PLATFORM_SCHEMA_MODERN
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
# setup for discovery
|
# setup for discovery
|
||||||
setup = functools.partial(
|
setup = functools.partial(
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
"""Configure select in a device through MQTT topic."""
|
"""Configure select in a device through MQTT topic."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import functools
|
import functools
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@ -31,8 +30,8 @@ from .debug_info import log_messages
|
|||||||
from .mixins import (
|
from .mixins import (
|
||||||
MQTT_ENTITY_COMMON_SCHEMA,
|
MQTT_ENTITY_COMMON_SCHEMA,
|
||||||
MqttEntity,
|
MqttEntity,
|
||||||
async_get_platform_config_from_yaml,
|
|
||||||
async_setup_entry_helper,
|
async_setup_entry_helper,
|
||||||
|
async_setup_platform_discovery,
|
||||||
async_setup_platform_helper,
|
async_setup_platform_helper,
|
||||||
warn_for_legacy_schema,
|
warn_for_legacy_schema,
|
||||||
)
|
)
|
||||||
@ -80,7 +79,11 @@ async def async_setup_platform(
|
|||||||
"""Set up MQTT select configured under the select platform key (deprecated)."""
|
"""Set up MQTT select configured under the select platform key (deprecated)."""
|
||||||
# Deprecated in HA Core 2022.6
|
# Deprecated in HA Core 2022.6
|
||||||
await async_setup_platform_helper(
|
await async_setup_platform_helper(
|
||||||
hass, select.DOMAIN, config, async_add_entities, _async_setup_entity
|
hass,
|
||||||
|
select.DOMAIN,
|
||||||
|
discovery_info or config,
|
||||||
|
async_add_entities,
|
||||||
|
_async_setup_entity,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -91,12 +94,9 @@ async def async_setup_entry(
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Set up MQTT select through configuration.yaml and dynamically through MQTT discovery."""
|
"""Set up MQTT select through configuration.yaml and dynamically through MQTT discovery."""
|
||||||
# load and initialize platform config from configuration.yaml
|
# load and initialize platform config from configuration.yaml
|
||||||
await asyncio.gather(
|
config_entry.async_on_unload(
|
||||||
*(
|
await async_setup_platform_discovery(
|
||||||
_async_setup_entity(hass, async_add_entities, config, config_entry)
|
hass, select.DOMAIN, PLATFORM_SCHEMA_MODERN
|
||||||
for config in await async_get_platform_config_from_yaml(
|
|
||||||
hass, select.DOMAIN, PLATFORM_SCHEMA_MODERN
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
# setup for discovery
|
# setup for discovery
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
"""Support for MQTT sensors."""
|
"""Support for MQTT sensors."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
import functools
|
import functools
|
||||||
import logging
|
import logging
|
||||||
@ -42,8 +41,8 @@ from .mixins import (
|
|||||||
MQTT_ENTITY_COMMON_SCHEMA,
|
MQTT_ENTITY_COMMON_SCHEMA,
|
||||||
MqttAvailability,
|
MqttAvailability,
|
||||||
MqttEntity,
|
MqttEntity,
|
||||||
async_get_platform_config_from_yaml,
|
|
||||||
async_setup_entry_helper,
|
async_setup_entry_helper,
|
||||||
|
async_setup_platform_discovery,
|
||||||
async_setup_platform_helper,
|
async_setup_platform_helper,
|
||||||
warn_for_legacy_schema,
|
warn_for_legacy_schema,
|
||||||
)
|
)
|
||||||
@ -133,7 +132,11 @@ async def async_setup_platform(
|
|||||||
"""Set up MQTT sensors configured under the fan platform key (deprecated)."""
|
"""Set up MQTT sensors configured under the fan platform key (deprecated)."""
|
||||||
# Deprecated in HA Core 2022.6
|
# Deprecated in HA Core 2022.6
|
||||||
await async_setup_platform_helper(
|
await async_setup_platform_helper(
|
||||||
hass, sensor.DOMAIN, config, async_add_entities, _async_setup_entity
|
hass,
|
||||||
|
sensor.DOMAIN,
|
||||||
|
discovery_info or config,
|
||||||
|
async_add_entities,
|
||||||
|
_async_setup_entity,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -144,12 +147,9 @@ async def async_setup_entry(
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Set up MQTT sensor through configuration.yaml and dynamically through MQTT discovery."""
|
"""Set up MQTT sensor through configuration.yaml and dynamically through MQTT discovery."""
|
||||||
# load and initialize platform config from configuration.yaml
|
# load and initialize platform config from configuration.yaml
|
||||||
await asyncio.gather(
|
config_entry.async_on_unload(
|
||||||
*(
|
await async_setup_platform_discovery(
|
||||||
_async_setup_entity(hass, async_add_entities, config, config_entry)
|
hass, sensor.DOMAIN, PLATFORM_SCHEMA_MODERN
|
||||||
for config in await async_get_platform_config_from_yaml(
|
|
||||||
hass, sensor.DOMAIN, PLATFORM_SCHEMA_MODERN
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
# setup for discovery
|
# setup for discovery
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
"""Support for MQTT sirens."""
|
"""Support for MQTT sirens."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import copy
|
import copy
|
||||||
import functools
|
import functools
|
||||||
import json
|
import json
|
||||||
@ -52,8 +51,8 @@ from .debug_info import log_messages
|
|||||||
from .mixins import (
|
from .mixins import (
|
||||||
MQTT_ENTITY_COMMON_SCHEMA,
|
MQTT_ENTITY_COMMON_SCHEMA,
|
||||||
MqttEntity,
|
MqttEntity,
|
||||||
async_get_platform_config_from_yaml,
|
|
||||||
async_setup_entry_helper,
|
async_setup_entry_helper,
|
||||||
|
async_setup_platform_discovery,
|
||||||
async_setup_platform_helper,
|
async_setup_platform_helper,
|
||||||
warn_for_legacy_schema,
|
warn_for_legacy_schema,
|
||||||
)
|
)
|
||||||
@ -129,7 +128,11 @@ async def async_setup_platform(
|
|||||||
"""Set up MQTT sirens configured under the fan platform key (deprecated)."""
|
"""Set up MQTT sirens configured under the fan platform key (deprecated)."""
|
||||||
# Deprecated in HA Core 2022.6
|
# Deprecated in HA Core 2022.6
|
||||||
await async_setup_platform_helper(
|
await async_setup_platform_helper(
|
||||||
hass, siren.DOMAIN, config, async_add_entities, _async_setup_entity
|
hass,
|
||||||
|
siren.DOMAIN,
|
||||||
|
discovery_info or config,
|
||||||
|
async_add_entities,
|
||||||
|
_async_setup_entity,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -140,13 +143,8 @@ async def async_setup_entry(
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Set up MQTT siren through configuration.yaml and dynamically through MQTT discovery."""
|
"""Set up MQTT siren through configuration.yaml and dynamically through MQTT discovery."""
|
||||||
# load and initialize platform config from configuration.yaml
|
# load and initialize platform config from configuration.yaml
|
||||||
await asyncio.gather(
|
config_entry.async_on_unload(
|
||||||
*(
|
await async_setup_platform_discovery(hass, siren.DOMAIN, PLATFORM_SCHEMA_MODERN)
|
||||||
_async_setup_entity(hass, async_add_entities, config, config_entry)
|
|
||||||
for config in await async_get_platform_config_from_yaml(
|
|
||||||
hass, siren.DOMAIN, PLATFORM_SCHEMA_MODERN
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
# setup for discovery
|
# setup for discovery
|
||||||
setup = functools.partial(
|
setup = functools.partial(
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
"""Support for MQTT switches."""
|
"""Support for MQTT switches."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import functools
|
import functools
|
||||||
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
@ -38,8 +37,8 @@ from .debug_info import log_messages
|
|||||||
from .mixins import (
|
from .mixins import (
|
||||||
MQTT_ENTITY_COMMON_SCHEMA,
|
MQTT_ENTITY_COMMON_SCHEMA,
|
||||||
MqttEntity,
|
MqttEntity,
|
||||||
async_get_platform_config_from_yaml,
|
|
||||||
async_setup_entry_helper,
|
async_setup_entry_helper,
|
||||||
|
async_setup_platform_discovery,
|
||||||
async_setup_platform_helper,
|
async_setup_platform_helper,
|
||||||
warn_for_legacy_schema,
|
warn_for_legacy_schema,
|
||||||
)
|
)
|
||||||
@ -83,7 +82,11 @@ async def async_setup_platform(
|
|||||||
"""Set up MQTT switch configured under the fan platform key (deprecated)."""
|
"""Set up MQTT switch configured under the fan platform key (deprecated)."""
|
||||||
# Deprecated in HA Core 2022.6
|
# Deprecated in HA Core 2022.6
|
||||||
await async_setup_platform_helper(
|
await async_setup_platform_helper(
|
||||||
hass, switch.DOMAIN, config, async_add_entities, _async_setup_entity
|
hass,
|
||||||
|
switch.DOMAIN,
|
||||||
|
discovery_info or config,
|
||||||
|
async_add_entities,
|
||||||
|
_async_setup_entity,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -94,12 +97,9 @@ async def async_setup_entry(
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Set up MQTT switch through configuration.yaml and dynamically through MQTT discovery."""
|
"""Set up MQTT switch through configuration.yaml and dynamically through MQTT discovery."""
|
||||||
# load and initialize platform config from configuration.yaml
|
# load and initialize platform config from configuration.yaml
|
||||||
await asyncio.gather(
|
config_entry.async_on_unload(
|
||||||
*(
|
await async_setup_platform_discovery(
|
||||||
_async_setup_entity(hass, async_add_entities, config, config_entry)
|
hass, switch.DOMAIN, PLATFORM_SCHEMA_MODERN
|
||||||
for config in await async_get_platform_config_from_yaml(
|
|
||||||
hass, switch.DOMAIN, PLATFORM_SCHEMA_MODERN
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
# setup for discovery
|
# setup for discovery
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
"""Support for MQTT vacuums."""
|
"""Support for MQTT vacuums."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import functools
|
import functools
|
||||||
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
@ -13,8 +12,8 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
|||||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||||
|
|
||||||
from ..mixins import (
|
from ..mixins import (
|
||||||
async_get_platform_config_from_yaml,
|
|
||||||
async_setup_entry_helper,
|
async_setup_entry_helper,
|
||||||
|
async_setup_platform_discovery,
|
||||||
async_setup_platform_helper,
|
async_setup_platform_helper,
|
||||||
)
|
)
|
||||||
from .schema import CONF_SCHEMA, LEGACY, MQTT_VACUUM_SCHEMA, STATE
|
from .schema import CONF_SCHEMA, LEGACY, MQTT_VACUUM_SCHEMA, STATE
|
||||||
@ -77,7 +76,11 @@ async def async_setup_platform(
|
|||||||
"""Set up MQTT vacuum through configuration.yaml."""
|
"""Set up MQTT vacuum through configuration.yaml."""
|
||||||
# Deprecated in HA Core 2022.6
|
# Deprecated in HA Core 2022.6
|
||||||
await async_setup_platform_helper(
|
await async_setup_platform_helper(
|
||||||
hass, vacuum.DOMAIN, config, async_add_entities, _async_setup_entity
|
hass,
|
||||||
|
vacuum.DOMAIN,
|
||||||
|
discovery_info or config,
|
||||||
|
async_add_entities,
|
||||||
|
_async_setup_entity,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -88,12 +91,9 @@ async def async_setup_entry(
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Set up MQTT vacuum through configuration.yaml and dynamically through MQTT discovery."""
|
"""Set up MQTT vacuum through configuration.yaml and dynamically through MQTT discovery."""
|
||||||
# load and initialize platform config from configuration.yaml
|
# load and initialize platform config from configuration.yaml
|
||||||
await asyncio.gather(
|
config_entry.async_on_unload(
|
||||||
*(
|
await async_setup_platform_discovery(
|
||||||
_async_setup_entity(hass, async_add_entities, config, config_entry)
|
hass, vacuum.DOMAIN, PLATFORM_SCHEMA_MODERN
|
||||||
for config in await async_get_platform_config_from_yaml(
|
|
||||||
hass, vacuum.DOMAIN, PLATFORM_SCHEMA_MODERN
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
# setup for discovery
|
# setup for discovery
|
||||||
|
@ -1011,7 +1011,7 @@ async def test_cleanup_triggers_and_restoring_state(
|
|||||||
freezer.move_to("2022-02-02 12:01:10+01:00")
|
freezer.move_to("2022-02-02 12:01:10+01:00")
|
||||||
|
|
||||||
await help_test_reload_with_config(
|
await help_test_reload_with_config(
|
||||||
hass, caplog, tmp_path, domain, [config1, config2]
|
hass, caplog, tmp_path, {domain: [config1, config2]}
|
||||||
)
|
)
|
||||||
assert "Clean up expire after trigger for binary_sensor.test1" in caplog.text
|
assert "Clean up expire after trigger for binary_sensor.test1" in caplog.text
|
||||||
assert "Clean up expire after trigger for binary_sensor.test2" not in caplog.text
|
assert "Clean up expire after trigger for binary_sensor.test2" not in caplog.text
|
||||||
|
@ -1651,10 +1651,10 @@ async def help_test_publishing_with_custom_encoding(
|
|||||||
mqtt_mock.async_publish.reset_mock()
|
mqtt_mock.async_publish.reset_mock()
|
||||||
|
|
||||||
|
|
||||||
async def help_test_reload_with_config(hass, caplog, tmp_path, domain, config):
|
async def help_test_reload_with_config(hass, caplog, tmp_path, config):
|
||||||
"""Test reloading with supplied config."""
|
"""Test reloading with supplied config."""
|
||||||
new_yaml_config_file = tmp_path / "configuration.yaml"
|
new_yaml_config_file = tmp_path / "configuration.yaml"
|
||||||
new_yaml_config = yaml.dump({domain: config})
|
new_yaml_config = yaml.dump(config)
|
||||||
new_yaml_config_file.write_text(new_yaml_config)
|
new_yaml_config_file.write_text(new_yaml_config)
|
||||||
assert new_yaml_config_file.read_text() == new_yaml_config
|
assert new_yaml_config_file.read_text() == new_yaml_config
|
||||||
|
|
||||||
@ -1679,16 +1679,27 @@ async def help_test_reloadable(
|
|||||||
old_config_1["name"] = "test_old_1"
|
old_config_1["name"] = "test_old_1"
|
||||||
old_config_2 = copy.deepcopy(config)
|
old_config_2 = copy.deepcopy(config)
|
||||||
old_config_2["name"] = "test_old_2"
|
old_config_2["name"] = "test_old_2"
|
||||||
|
old_config_3 = copy.deepcopy(config)
|
||||||
|
old_config_3["name"] = "test_old_3"
|
||||||
|
old_config_3.pop("platform")
|
||||||
|
old_config_4 = copy.deepcopy(config)
|
||||||
|
old_config_4["name"] = "test_old_4"
|
||||||
|
old_config_4.pop("platform")
|
||||||
|
|
||||||
assert await async_setup_component(
|
old_config = {
|
||||||
hass, domain, {domain: [old_config_1, old_config_2]}
|
domain: [old_config_1, old_config_2],
|
||||||
)
|
"mqtt": {domain: [old_config_3, old_config_4]},
|
||||||
|
}
|
||||||
|
|
||||||
|
assert await async_setup_component(hass, domain, old_config)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
await mqtt_mock_entry_with_yaml_config()
|
await mqtt_mock_entry_with_yaml_config()
|
||||||
|
|
||||||
assert hass.states.get(f"{domain}.test_old_1")
|
assert hass.states.get(f"{domain}.test_old_1")
|
||||||
assert hass.states.get(f"{domain}.test_old_2")
|
assert hass.states.get(f"{domain}.test_old_2")
|
||||||
assert len(hass.states.async_all(domain)) == 2
|
assert hass.states.get(f"{domain}.test_old_3")
|
||||||
|
assert hass.states.get(f"{domain}.test_old_4")
|
||||||
|
assert len(hass.states.async_all(domain)) == 4
|
||||||
|
|
||||||
# Create temporary fixture for configuration.yaml based on the supplied config and
|
# Create temporary fixture for configuration.yaml based on the supplied config and
|
||||||
# test a reload with this new config
|
# test a reload with this new config
|
||||||
@ -1698,16 +1709,31 @@ async def help_test_reloadable(
|
|||||||
new_config_2["name"] = "test_new_2"
|
new_config_2["name"] = "test_new_2"
|
||||||
new_config_3 = copy.deepcopy(config)
|
new_config_3 = copy.deepcopy(config)
|
||||||
new_config_3["name"] = "test_new_3"
|
new_config_3["name"] = "test_new_3"
|
||||||
|
new_config_3.pop("platform")
|
||||||
|
new_config_4 = copy.deepcopy(config)
|
||||||
|
new_config_4["name"] = "test_new_4"
|
||||||
|
new_config_4.pop("platform")
|
||||||
|
new_config_5 = copy.deepcopy(config)
|
||||||
|
new_config_5["name"] = "test_new_5"
|
||||||
|
new_config_6 = copy.deepcopy(config)
|
||||||
|
new_config_6["name"] = "test_new_6"
|
||||||
|
new_config_6.pop("platform")
|
||||||
|
|
||||||
await help_test_reload_with_config(
|
new_config = {
|
||||||
hass, caplog, tmp_path, domain, [new_config_1, new_config_2, new_config_3]
|
domain: [new_config_1, new_config_2, new_config_5],
|
||||||
)
|
"mqtt": {domain: [new_config_3, new_config_4, new_config_6]},
|
||||||
|
}
|
||||||
|
|
||||||
assert len(hass.states.async_all(domain)) == 3
|
await help_test_reload_with_config(hass, caplog, tmp_path, new_config)
|
||||||
|
|
||||||
|
assert len(hass.states.async_all(domain)) == 6
|
||||||
|
|
||||||
assert hass.states.get(f"{domain}.test_new_1")
|
assert hass.states.get(f"{domain}.test_new_1")
|
||||||
assert hass.states.get(f"{domain}.test_new_2")
|
assert hass.states.get(f"{domain}.test_new_2")
|
||||||
assert hass.states.get(f"{domain}.test_new_3")
|
assert hass.states.get(f"{domain}.test_new_3")
|
||||||
|
assert hass.states.get(f"{domain}.test_new_4")
|
||||||
|
assert hass.states.get(f"{domain}.test_new_5")
|
||||||
|
assert hass.states.get(f"{domain}.test_new_6")
|
||||||
|
|
||||||
|
|
||||||
async def help_test_reloadable_late(hass, caplog, tmp_path, domain, config):
|
async def help_test_reloadable_late(hass, caplog, tmp_path, domain, config):
|
||||||
@ -1752,9 +1778,10 @@ async def help_test_reloadable_late(hass, caplog, tmp_path, domain, config):
|
|||||||
new_config_3 = copy.deepcopy(config)
|
new_config_3 = copy.deepcopy(config)
|
||||||
new_config_3["name"] = "test_new_3"
|
new_config_3["name"] = "test_new_3"
|
||||||
|
|
||||||
await help_test_reload_with_config(
|
new_config = {
|
||||||
hass, caplog, tmp_path, domain, [new_config_1, new_config_2, new_config_3]
|
domain: [new_config_1, new_config_2, new_config_3],
|
||||||
)
|
}
|
||||||
|
await help_test_reload_with_config(hass, caplog, tmp_path, new_config)
|
||||||
|
|
||||||
assert len(hass.states.async_all(domain)) == 3
|
assert len(hass.states.async_all(domain)) == 3
|
||||||
|
|
||||||
|
@ -1106,7 +1106,7 @@ async def test_cleanup_triggers_and_restoring_state(
|
|||||||
freezer.move_to("2022-02-02 12:01:10+01:00")
|
freezer.move_to("2022-02-02 12:01:10+01:00")
|
||||||
|
|
||||||
await help_test_reload_with_config(
|
await help_test_reload_with_config(
|
||||||
hass, caplog, tmp_path, domain, [config1, config2]
|
hass, caplog, tmp_path, {domain: [config1, config2]}
|
||||||
)
|
)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user