Mark clients away if they have never been seen. (#32222)
parent
a77fd4892e
commit
a5d334bbf7
|
@ -200,6 +200,11 @@ class UniFiClientTracker(UniFiClient, ScannerEntity):
|
||||||
|
|
||||||
else:
|
else:
|
||||||
self.wired_bug = None
|
self.wired_bug = None
|
||||||
|
|
||||||
|
# A client that has never been seen cannot be connected.
|
||||||
|
if self.client.last_seen is None:
|
||||||
|
return False
|
||||||
|
|
||||||
since_last_seen = dt_util.utcnow() - dt_util.utc_from_timestamp(
|
since_last_seen = dt_util.utcnow() - dt_util.utc_from_timestamp(
|
||||||
float(self.client.last_seen)
|
float(self.client.last_seen)
|
||||||
)
|
)
|
||||||
|
|
|
@ -54,6 +54,14 @@ CLIENT_4 = {
|
||||||
"last_seen": 1562600145,
|
"last_seen": 1562600145,
|
||||||
"mac": "00:00:00:00:00:04",
|
"mac": "00:00:00:00:00:04",
|
||||||
}
|
}
|
||||||
|
CLIENT_5 = {
|
||||||
|
"essid": "ssid",
|
||||||
|
"hostname": "client_5",
|
||||||
|
"ip": "10.0.0.5",
|
||||||
|
"is_wired": True,
|
||||||
|
"last_seen": None,
|
||||||
|
"mac": "00:00:00:00:00:05",
|
||||||
|
}
|
||||||
|
|
||||||
DEVICE_1 = {
|
DEVICE_1 = {
|
||||||
"board_rev": 3,
|
"board_rev": 3,
|
||||||
|
@ -111,11 +119,11 @@ async def test_tracked_devices(hass):
|
||||||
controller = await setup_unifi_integration(
|
controller = await setup_unifi_integration(
|
||||||
hass,
|
hass,
|
||||||
options={CONF_SSID_FILTER: ["ssid"]},
|
options={CONF_SSID_FILTER: ["ssid"]},
|
||||||
clients_response=[CLIENT_1, CLIENT_2, CLIENT_3, client_4_copy],
|
clients_response=[CLIENT_1, CLIENT_2, CLIENT_3, CLIENT_5, client_4_copy],
|
||||||
devices_response=[DEVICE_1, DEVICE_2],
|
devices_response=[DEVICE_1, DEVICE_2],
|
||||||
known_wireless_clients=(CLIENT_4["mac"],),
|
known_wireless_clients=(CLIENT_4["mac"],),
|
||||||
)
|
)
|
||||||
assert len(hass.states.async_all()) == 6
|
assert len(hass.states.async_all()) == 7
|
||||||
|
|
||||||
client_1 = hass.states.get("device_tracker.client_1")
|
client_1 = hass.states.get("device_tracker.client_1")
|
||||||
assert client_1 is not None
|
assert client_1 is not None
|
||||||
|
@ -134,6 +142,11 @@ async def test_tracked_devices(hass):
|
||||||
assert client_4 is not None
|
assert client_4 is not None
|
||||||
assert client_4.state == "not_home"
|
assert client_4.state == "not_home"
|
||||||
|
|
||||||
|
# A client that has never been seen should be marked away.
|
||||||
|
client_5 = hass.states.get("device_tracker.client_5")
|
||||||
|
assert client_5 is not None
|
||||||
|
assert client_5.state == "not_home"
|
||||||
|
|
||||||
device_1 = hass.states.get("device_tracker.device_1")
|
device_1 = hass.states.get("device_tracker.device_1")
|
||||||
assert device_1 is not None
|
assert device_1 is not None
|
||||||
assert device_1.state == "not_home"
|
assert device_1.state == "not_home"
|
||||||
|
|
Loading…
Reference in New Issue