mirror of
https://github.com/home-assistant/core.git
synced 2025-07-20 19:57:07 +00:00
Add GPSLogger device_info and unique_id (#24231)
This commit is contained in:
parent
70fe4f22db
commit
3edc58a04e
@ -45,6 +45,7 @@ class GPSLoggerEntity(DeviceTrackerEntity):
|
|||||||
self._battery = battery
|
self._battery = battery
|
||||||
self._location = location
|
self._location = location
|
||||||
self._unsub_dispatcher = None
|
self._unsub_dispatcher = None
|
||||||
|
self._unique_id = device
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def battery_level(self):
|
def battery_level(self):
|
||||||
@ -81,6 +82,19 @@ class GPSLoggerEntity(DeviceTrackerEntity):
|
|||||||
"""No polling needed."""
|
"""No polling needed."""
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@property
|
||||||
|
def unique_id(self):
|
||||||
|
"""Return the unique ID."""
|
||||||
|
return self._unique_id
|
||||||
|
|
||||||
|
@property
|
||||||
|
def device_info(self):
|
||||||
|
"""Return the device info."""
|
||||||
|
return {
|
||||||
|
'name': self._name,
|
||||||
|
'identifiers': {(GPL_DOMAIN, self._unique_id)},
|
||||||
|
}
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def source_type(self):
|
def source_type(self):
|
||||||
"""Return the source type, eg gps or router, of the device."""
|
"""Return the source type, eg gps or router, of the device."""
|
||||||
|
@ -140,6 +140,12 @@ async def test_enter_and_exit(hass, gpslogger_client, webhook_id):
|
|||||||
data['device'])).state
|
data['device'])).state
|
||||||
assert STATE_NOT_HOME == state_name
|
assert STATE_NOT_HOME == state_name
|
||||||
|
|
||||||
|
dev_reg = await hass.helpers.device_registry.async_get_registry()
|
||||||
|
assert len(dev_reg.devices) == 1
|
||||||
|
|
||||||
|
ent_reg = await hass.helpers.entity_registry.async_get_registry()
|
||||||
|
assert len(ent_reg.entities) == 1
|
||||||
|
|
||||||
|
|
||||||
async def test_enter_with_attrs(hass, gpslogger_client, webhook_id):
|
async def test_enter_with_attrs(hass, gpslogger_client, webhook_id):
|
||||||
"""Test when additional attributes are present."""
|
"""Test when additional attributes are present."""
|
||||||
@ -172,6 +178,33 @@ async def test_enter_with_attrs(hass, gpslogger_client, webhook_id):
|
|||||||
assert state.attributes['provider'] == 'gps'
|
assert state.attributes['provider'] == 'gps'
|
||||||
assert state.attributes['activity'] == 'running'
|
assert state.attributes['activity'] == 'running'
|
||||||
|
|
||||||
|
data = {
|
||||||
|
'latitude': HOME_LATITUDE,
|
||||||
|
'longitude': HOME_LONGITUDE,
|
||||||
|
'device': '123',
|
||||||
|
'accuracy': 123,
|
||||||
|
'battery': 23,
|
||||||
|
'speed': 23,
|
||||||
|
'direction': 123,
|
||||||
|
'altitude': 123,
|
||||||
|
'provider': 'gps',
|
||||||
|
'activity': 'idle'
|
||||||
|
}
|
||||||
|
|
||||||
|
req = await gpslogger_client.post(url, data=data)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
assert req.status == HTTP_OK
|
||||||
|
state = hass.states.get('{}.{}'.format(DEVICE_TRACKER_DOMAIN,
|
||||||
|
data['device']))
|
||||||
|
assert state.state == STATE_HOME
|
||||||
|
assert state.attributes['gps_accuracy'] == 123
|
||||||
|
assert state.attributes['battery_level'] == 23
|
||||||
|
assert state.attributes['speed'] == 23
|
||||||
|
assert state.attributes['direction'] == 123
|
||||||
|
assert state.attributes['altitude'] == 123
|
||||||
|
assert state.attributes['provider'] == 'gps'
|
||||||
|
assert state.attributes['activity'] == 'idle'
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail(
|
@pytest.mark.xfail(
|
||||||
reason='The device_tracker component does not support unloading yet.'
|
reason='The device_tracker component does not support unloading yet.'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user