mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 03:07:37 +00:00
Address some MQTT review comments (#75482)
This commit is contained in:
parent
dddd4e24e2
commit
f0eea62c1e
@ -10,7 +10,11 @@ from ..const import MQTT_DATA_DEVICE_TRACKER_LEGACY
|
||||
from ..mixins import warn_for_legacy_schema
|
||||
from .schema_discovery import PLATFORM_SCHEMA_MODERN # noqa: F401
|
||||
from .schema_discovery import async_setup_entry_from_discovery
|
||||
from .schema_yaml import PLATFORM_SCHEMA_YAML, async_setup_scanner_from_yaml
|
||||
from .schema_yaml import (
|
||||
PLATFORM_SCHEMA_YAML,
|
||||
MQTTLegacyDeviceTrackerData,
|
||||
async_setup_scanner_from_yaml,
|
||||
)
|
||||
|
||||
# Configuring MQTT Device Trackers under the device_tracker platform key is deprecated in HA Core 2022.6
|
||||
PLATFORM_SCHEMA = vol.All(
|
||||
@ -30,6 +34,11 @@ async def async_setup_entry(
|
||||
await async_setup_entry_from_discovery(hass, config_entry, async_add_entities)
|
||||
# (re)load legacy service
|
||||
if MQTT_DATA_DEVICE_TRACKER_LEGACY in hass.data:
|
||||
yaml_device_tracker_data: MQTTLegacyDeviceTrackerData = hass.data[
|
||||
MQTT_DATA_DEVICE_TRACKER_LEGACY
|
||||
]
|
||||
await async_setup_scanner_from_yaml(
|
||||
hass, **hass.data[MQTT_DATA_DEVICE_TRACKER_LEGACY]
|
||||
hass,
|
||||
config=yaml_device_tracker_data.config,
|
||||
async_see=yaml_device_tracker_data.async_see,
|
||||
)
|
||||
|
@ -1,6 +1,8 @@
|
||||
"""Support for tracking MQTT enabled devices defined in YAML."""
|
||||
from __future__ import annotations
|
||||
|
||||
from collections.abc import Callable
|
||||
from collections.abc import Awaitable, Callable
|
||||
import dataclasses
|
||||
import logging
|
||||
from typing import Any
|
||||
|
||||
@ -10,6 +12,7 @@ from homeassistant.components.device_tracker import PLATFORM_SCHEMA, SOURCE_TYPE
|
||||
from homeassistant.const import CONF_DEVICES, STATE_HOME, STATE_NOT_HOME
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers import config_validation as cv
|
||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||
|
||||
from ... import mqtt
|
||||
from ..client import async_subscribe
|
||||
@ -33,9 +36,20 @@ PLATFORM_SCHEMA_YAML = PLATFORM_SCHEMA.extend(SCHEMA_BASE).extend(
|
||||
)
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
class MQTTLegacyDeviceTrackerData:
|
||||
"""Class to hold device tracker data."""
|
||||
|
||||
async_see: Callable[..., Awaitable[None]]
|
||||
config: ConfigType
|
||||
|
||||
|
||||
async def async_setup_scanner_from_yaml(
|
||||
hass: HomeAssistant, config, async_see, discovery_info=None
|
||||
):
|
||||
hass: HomeAssistant,
|
||||
config: ConfigType,
|
||||
async_see: Callable[..., Awaitable[None]],
|
||||
discovery_info: DiscoveryInfoType | None = None,
|
||||
) -> bool:
|
||||
"""Set up the MQTT tracker."""
|
||||
devices = config[CONF_DEVICES]
|
||||
qos = config[CONF_QOS]
|
||||
@ -45,15 +59,14 @@ async def async_setup_scanner_from_yaml(
|
||||
config_entry = hass.config_entries.async_entries(mqtt.DOMAIN)[0]
|
||||
subscriptions: list[Callable] = []
|
||||
|
||||
hass.data[MQTT_DATA_DEVICE_TRACKER_LEGACY] = {
|
||||
"async_see": async_see,
|
||||
"config": config,
|
||||
}
|
||||
hass.data[MQTT_DATA_DEVICE_TRACKER_LEGACY] = MQTTLegacyDeviceTrackerData(
|
||||
async_see, config
|
||||
)
|
||||
if not mqtt_config_entry_enabled(hass):
|
||||
_LOGGER.info(
|
||||
"MQTT device trackers will be not available until the config entry is enabled",
|
||||
)
|
||||
return
|
||||
return False
|
||||
|
||||
@callback
|
||||
def _entry_unload(*_: Any) -> None:
|
||||
|
@ -674,7 +674,7 @@ class MqttDiscoveryDeviceUpdate:
|
||||
stop_discovery_updates(
|
||||
self.hass, self._discovery_data, self._remove_discovery_updated
|
||||
)
|
||||
self.hass.async_add_job(self.async_tear_down())
|
||||
self._config_entry.async_create_task(self.hass, self.async_tear_down())
|
||||
|
||||
async def async_discovery_update(
|
||||
self,
|
||||
|
Loading…
x
Reference in New Issue
Block a user