Skip to content

Commit

Permalink
Return time based attributes as datetime in Unifi module (#21146)
Browse files Browse the repository at this point in the history
* Return time based data as datetime in Unifi module

* Fix missing space and pylint complaints about import order.
  • Loading branch information
ndonegan authored and MartinHjelmare committed Mar 10, 2019
1 parent c888e65 commit 5debc88
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 9 deletions.
9 changes: 8 additions & 1 deletion homeassistant/components/device_tracker/unifi.py
Expand Up @@ -43,6 +43,8 @@
'uptime', 'user_id', 'usergroup_id', 'vlan'
]

TIMESTAMP_ATTRS = ['first_seen', 'last_seen', 'latest_assoc_time']

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Optional(CONF_HOST, default=DEFAULT_HOST): cv.string,
vol.Optional(CONF_SITE_ID, default='default'): cv.string,
Expand Down Expand Up @@ -149,7 +151,12 @@ def get_extra_attributes(self, device):
attributes = {}
for variable in self._monitored_conditions:
if variable in client:
attributes[variable] = client[variable]
if variable in TIMESTAMP_ATTRS:
attributes[variable] = dt_util.utc_from_timestamp(
float(client[variable])
)
else:
attributes[variable] = client[variable]

_LOGGER.debug("Device mac %s attributes %s", device, attributes)
return attributes
22 changes: 14 additions & 8 deletions tests/components/device_tracker/test_unifi.py
@@ -1,13 +1,13 @@
"""The tests for the Unifi WAP device tracker platform."""
from unittest import mock
from datetime import datetime, timedelta
from pyunifi.controller import APIError
import homeassistant.util.dt as dt_util
from datetime import timedelta


import pytest
import voluptuous as vol

import homeassistant.util.dt as dt_util
from homeassistant.components.device_tracker import DOMAIN, unifi as unifi
from homeassistant.const import (CONF_HOST, CONF_USERNAME, CONF_PASSWORD,
CONF_PLATFORM, CONF_VERIFY_SSL,
Expand Down Expand Up @@ -241,7 +241,8 @@ def test_monitored_conditions():
'hostname': 'foobar',
'essid': 'barnet',
'signal': -60,
'last_seen': dt_util.as_timestamp(dt_util.utcnow())},
'last_seen': dt_util.as_timestamp(dt_util.utcnow()),
'latest_assoc_time': 946684800.0},
{'mac': '234',
'name': 'Nice Name',
'essid': 'barnet',
Expand All @@ -254,9 +255,14 @@ def test_monitored_conditions():
]
ctrl.get_clients.return_value = fake_clients
scanner = unifi.UnifiScanner(ctrl, DEFAULT_DETECTION_TIME, None,
['essid', 'signal'])
assert scanner.get_extra_attributes('123') == {'essid': 'barnet',
'signal': -60}
assert scanner.get_extra_attributes('234') == {'essid': 'barnet',
'signal': -42}
['essid', 'signal', 'latest_assoc_time'])
assert scanner.get_extra_attributes('123') == {
'essid': 'barnet',
'signal': -60,
'latest_assoc_time': datetime(2000, 1, 1, 0, 0, tzinfo=dt_util.UTC)
}
assert scanner.get_extra_attributes('234') == {
'essid': 'barnet',
'signal': -42
}
assert scanner.get_extra_attributes('456') == {'essid': 'barnet'}

0 comments on commit 5debc88

Please sign in to comment.