Device tracker sets up group again
This commit is contained in:
parent
4ccedca3e5
commit
bb42e264cb
2 changed files with 32 additions and 6 deletions
|
@ -35,8 +35,7 @@ import homeassistant.util.dt as dt_util
|
||||||
|
|
||||||
from homeassistant.helpers.event import track_utc_time_change
|
from homeassistant.helpers.event import track_utc_time_change
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
ATTR_ENTITY_PICTURE, DEVICE_DEFAULT_NAME, STATE_HOME, STATE_NOT_HOME,
|
ATTR_ENTITY_PICTURE, DEVICE_DEFAULT_NAME, STATE_HOME, STATE_NOT_HOME)
|
||||||
STATE_UNKNOWN)
|
|
||||||
|
|
||||||
DOMAIN = "device_tracker"
|
DOMAIN = "device_tracker"
|
||||||
DEPENDENCIES = []
|
DEPENDENCIES = []
|
||||||
|
@ -91,7 +90,7 @@ def setup(hass, config):
|
||||||
track_new = util.convert(conf.get(CONF_TRACK_NEW), bool,
|
track_new = util.convert(conf.get(CONF_TRACK_NEW), bool,
|
||||||
DEFAULT_CONF_TRACK_NEW)
|
DEFAULT_CONF_TRACK_NEW)
|
||||||
|
|
||||||
devices = load_config(yaml_path, hass, consider_home)
|
devices = load_config(yaml_path, hass, timedelta(seconds=consider_home))
|
||||||
tracker = DeviceTracker(hass, consider_home, track_new, devices)
|
tracker = DeviceTracker(hass, consider_home, track_new, devices)
|
||||||
|
|
||||||
def setup_platform(p_type, p_config, disc_info=None):
|
def setup_platform(p_type, p_config, disc_info=None):
|
||||||
|
@ -145,10 +144,15 @@ class DeviceTracker(object):
|
||||||
self.track_new = track_new
|
self.track_new = track_new
|
||||||
self.lock = threading.Lock()
|
self.lock = threading.Lock()
|
||||||
|
|
||||||
|
entity_ids = []
|
||||||
for device in devices:
|
for device in devices:
|
||||||
if device.track:
|
if device.track:
|
||||||
|
entity_ids.append(device.entity_id)
|
||||||
device.update_ha_state()
|
device.update_ha_state()
|
||||||
|
|
||||||
|
self.group = group.setup_group(hass, GROUP_NAME_ALL_DEVICES,
|
||||||
|
entity_ids, False)
|
||||||
|
|
||||||
# pylint: disable=too-many-arguments
|
# pylint: disable=too-many-arguments
|
||||||
def see(self, mac=None, dev_id=None, host_name=None, location_name=None,
|
def see(self, mac=None, dev_id=None, host_name=None, location_name=None,
|
||||||
gps=None):
|
gps=None):
|
||||||
|
@ -183,6 +187,8 @@ class DeviceTracker(object):
|
||||||
if device.track:
|
if device.track:
|
||||||
device.update_ha_state()
|
device.update_ha_state()
|
||||||
|
|
||||||
|
self.group.update_tracked_entity_ids(
|
||||||
|
list(self.group.tracking) + [device.entity_id])
|
||||||
update_config(self.hass.config.path(YAML_DEVICES), dev_id, device)
|
update_config(self.hass.config.path(YAML_DEVICES), dev_id, device)
|
||||||
|
|
||||||
def update_stale(self, now):
|
def update_stale(self, now):
|
||||||
|
@ -204,7 +210,7 @@ class Device(Entity):
|
||||||
|
|
||||||
# Track if the last update of this device was HOME
|
# Track if the last update of this device was HOME
|
||||||
last_update_home = False
|
last_update_home = False
|
||||||
_state = STATE_UNKNOWN
|
_state = STATE_NOT_HOME
|
||||||
|
|
||||||
def __init__(self, hass, consider_home, track, dev_id, mac, name=None,
|
def __init__(self, hass, consider_home, track, dev_id, mac, name=None,
|
||||||
picture=None, away_hide=False):
|
picture=None, away_hide=False):
|
||||||
|
|
|
@ -14,8 +14,8 @@ from homeassistant.config import load_yaml_config_file
|
||||||
from homeassistant.loader import get_component
|
from homeassistant.loader import get_component
|
||||||
import homeassistant.util.dt as dt_util
|
import homeassistant.util.dt as dt_util
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
ATTR_ENTITY_PICTURE, ATTR_HIDDEN, STATE_HOME, STATE_NOT_HOME,
|
ATTR_ENTITY_ID, ATTR_ENTITY_PICTURE, ATTR_FRIENDLY_NAME, ATTR_HIDDEN,
|
||||||
CONF_PLATFORM, ATTR_FRIENDLY_NAME)
|
STATE_HOME, STATE_NOT_HOME, CONF_PLATFORM, )
|
||||||
import homeassistant.components.device_tracker as device_tracker
|
import homeassistant.components.device_tracker as device_tracker
|
||||||
|
|
||||||
from tests.common import (
|
from tests.common import (
|
||||||
|
@ -193,3 +193,23 @@ class TestComponentsDeviceTracker(unittest.TestCase):
|
||||||
|
|
||||||
self.assertTrue(self.hass.states.get(entity_id)
|
self.assertTrue(self.hass.states.get(entity_id)
|
||||||
.attributes.get(ATTR_HIDDEN))
|
.attributes.get(ATTR_HIDDEN))
|
||||||
|
|
||||||
|
def test_group_all_devices(self):
|
||||||
|
dev_id = 'test_entity'
|
||||||
|
entity_id = device_tracker.ENTITY_ID_FORMAT.format(dev_id)
|
||||||
|
device = device_tracker.Device(
|
||||||
|
self.hass, timedelta(seconds=180), True, dev_id, None,
|
||||||
|
away_hide=True)
|
||||||
|
device_tracker.update_config(self.yaml_devices, dev_id, device)
|
||||||
|
|
||||||
|
scanner = get_component('device_tracker.test').SCANNER
|
||||||
|
scanner.reset()
|
||||||
|
|
||||||
|
self.assertTrue(device_tracker.setup(self.hass, {
|
||||||
|
device_tracker.DOMAIN: {CONF_PLATFORM: 'test'}}))
|
||||||
|
|
||||||
|
state = self.hass.states.get(device_tracker.ENTITY_ID_ALL_DEVICES)
|
||||||
|
self.assertIsNotNone(state)
|
||||||
|
self.assertEqual(STATE_NOT_HOME, state.state)
|
||||||
|
self.assertSequenceEqual((entity_id,),
|
||||||
|
state.attributes.get(ATTR_ENTITY_ID))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue