mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 19:27:45 +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 ..mixins import warn_for_legacy_schema
|
||||||
from .schema_discovery import PLATFORM_SCHEMA_MODERN # noqa: F401
|
from .schema_discovery import PLATFORM_SCHEMA_MODERN # noqa: F401
|
||||||
from .schema_discovery import async_setup_entry_from_discovery
|
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
|
# Configuring MQTT Device Trackers under the device_tracker platform key is deprecated in HA Core 2022.6
|
||||||
PLATFORM_SCHEMA = vol.All(
|
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)
|
await async_setup_entry_from_discovery(hass, config_entry, async_add_entities)
|
||||||
# (re)load legacy service
|
# (re)load legacy service
|
||||||
if MQTT_DATA_DEVICE_TRACKER_LEGACY in hass.data:
|
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(
|
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."""
|
"""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
|
import logging
|
||||||
from typing import Any
|
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.const import CONF_DEVICES, STATE_HOME, STATE_NOT_HOME
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
from homeassistant.helpers import config_validation as cv
|
from homeassistant.helpers import config_validation as cv
|
||||||
|
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||||
|
|
||||||
from ... import mqtt
|
from ... import mqtt
|
||||||
from ..client import async_subscribe
|
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(
|
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."""
|
"""Set up the MQTT tracker."""
|
||||||
devices = config[CONF_DEVICES]
|
devices = config[CONF_DEVICES]
|
||||||
qos = config[CONF_QOS]
|
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]
|
config_entry = hass.config_entries.async_entries(mqtt.DOMAIN)[0]
|
||||||
subscriptions: list[Callable] = []
|
subscriptions: list[Callable] = []
|
||||||
|
|
||||||
hass.data[MQTT_DATA_DEVICE_TRACKER_LEGACY] = {
|
hass.data[MQTT_DATA_DEVICE_TRACKER_LEGACY] = MQTTLegacyDeviceTrackerData(
|
||||||
"async_see": async_see,
|
async_see, config
|
||||||
"config": config,
|
)
|
||||||
}
|
|
||||||
if not mqtt_config_entry_enabled(hass):
|
if not mqtt_config_entry_enabled(hass):
|
||||||
_LOGGER.info(
|
_LOGGER.info(
|
||||||
"MQTT device trackers will be not available until the config entry is enabled",
|
"MQTT device trackers will be not available until the config entry is enabled",
|
||||||
)
|
)
|
||||||
return
|
return False
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def _entry_unload(*_: Any) -> None:
|
def _entry_unload(*_: Any) -> None:
|
||||||
|
@ -674,7 +674,7 @@ class MqttDiscoveryDeviceUpdate:
|
|||||||
stop_discovery_updates(
|
stop_discovery_updates(
|
||||||
self.hass, self._discovery_data, self._remove_discovery_updated
|
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(
|
async def async_discovery_update(
|
||||||
self,
|
self,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user