mirror of
https://github.com/home-assistant/core.git
synced 2025-08-15 10:31:39 +02:00
fix logic
This commit is contained in:
@@ -27,6 +27,7 @@ from homeassistant.helpers.event import async_track_time_interval
|
|||||||
from homeassistant.helpers.restore_state import async_get_last_state
|
from homeassistant.helpers.restore_state import async_get_last_state
|
||||||
from homeassistant.helpers.typing import GPSType, ConfigType, HomeAssistantType
|
from homeassistant.helpers.typing import GPSType, ConfigType, HomeAssistantType
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
from homeassistant.loader import get_component
|
||||||
import homeassistant.util as util
|
import homeassistant.util as util
|
||||||
from homeassistant.util.async import run_coroutine_threadsafe
|
from homeassistant.util.async import run_coroutine_threadsafe
|
||||||
import homeassistant.util.dt as dt_util
|
import homeassistant.util.dt as dt_util
|
||||||
@@ -41,7 +42,7 @@ from homeassistant.const import (
|
|||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
DOMAIN = 'device_tracker'
|
DOMAIN = 'device_tracker'
|
||||||
DEPENDENCIES = ['zone', 'group']
|
DEPENDENCIES = ['zone']
|
||||||
|
|
||||||
GROUP_NAME_ALL_DEVICES = 'all devices'
|
GROUP_NAME_ALL_DEVICES = 'all devices'
|
||||||
ENTITY_ID_ALL_DEVICES = group.ENTITY_ID_FORMAT.format('all_devices')
|
ENTITY_ID_ALL_DEVICES = group.ENTITY_ID_FORMAT.format('all_devices')
|
||||||
@@ -180,6 +181,8 @@ def async_setup(hass: HomeAssistantType, config: ConfigType):
|
|||||||
if setup_tasks:
|
if setup_tasks:
|
||||||
yield from asyncio.wait(setup_tasks, loop=hass.loop)
|
yield from asyncio.wait(setup_tasks, loop=hass.loop)
|
||||||
|
|
||||||
|
tracker.async_setup_group()
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def async_device_tracker_discovered(service, info):
|
def async_device_tracker_discovered(service, info):
|
||||||
"""Handle the discovery of device tracker platforms."""
|
"""Handle the discovery of device tracker platforms."""
|
||||||
@@ -231,6 +234,7 @@ class DeviceTracker(object):
|
|||||||
self.mac_to_dev = {dev.mac: dev for dev in devices if dev.mac}
|
self.mac_to_dev = {dev.mac: dev for dev in devices if dev.mac}
|
||||||
self.consider_home = consider_home
|
self.consider_home = consider_home
|
||||||
self.track_new = track_new
|
self.track_new = track_new
|
||||||
|
self.group = None
|
||||||
self._is_updating = asyncio.Lock(loop=hass.loop)
|
self._is_updating = asyncio.Lock(loop=hass.loop)
|
||||||
|
|
||||||
for dev in devices:
|
for dev in devices:
|
||||||
@@ -299,10 +303,11 @@ class DeviceTracker(object):
|
|||||||
ATTR_HOST_NAME: device.host_name,
|
ATTR_HOST_NAME: device.host_name,
|
||||||
})
|
})
|
||||||
|
|
||||||
# update group
|
# During init, we ignore the group
|
||||||
group.async_set_group(
|
if self.group and self.track_new:
|
||||||
self.hass, util.slugify(GROUP_NAME_ALL_DEVICES), visible=False,
|
self.group.async_set_group(
|
||||||
name=GROUP_NAME_ALL_DEVICES, delta=[device.entity_id])
|
self.hass, slugify(GROUP_NAME_ALL_DEVICES), visible=False,
|
||||||
|
name=GROUP_NAME_ALL_DEVICES, delta=[device.entity_id])
|
||||||
|
|
||||||
# lookup mac vendor string to be stored in config
|
# lookup mac vendor string to be stored in config
|
||||||
yield from device.set_vendor_for_mac()
|
yield from device.set_vendor_for_mac()
|
||||||
@@ -324,6 +329,20 @@ class DeviceTracker(object):
|
|||||||
update_config, self.hass.config.path(YAML_DEVICES),
|
update_config, self.hass.config.path(YAML_DEVICES),
|
||||||
dev_id, device)
|
dev_id, device)
|
||||||
|
|
||||||
|
@callback
|
||||||
|
def async_setup_group(self):
|
||||||
|
"""Initialize group for all tracked devices.
|
||||||
|
|
||||||
|
This method must be run in the event loop.
|
||||||
|
"""
|
||||||
|
entity_ids = (dev.entity_id for dev in self.devices.values()
|
||||||
|
if dev.track)
|
||||||
|
|
||||||
|
self.group = get_component('group')
|
||||||
|
self.group.async_set_group(
|
||||||
|
self.hass, slugify(GROUP_NAME_ALL_DEVICES), visible=False,
|
||||||
|
name=GROUP_NAME_ALL_DEVICES, entity_ids=entity_ids)
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def async_update_stale(self, now: dt_util.dt.datetime):
|
def async_update_stale(self, now: dt_util.dt.datetime):
|
||||||
"""Update stale devices.
|
"""Update stale devices.
|
||||||
|
Reference in New Issue
Block a user