diff --git a/homeassistant/components/unifi/sensor.py b/homeassistant/components/unifi/sensor.py index 7dc086878e3..bb9365d486b 100644 --- a/homeassistant/components/unifi/sensor.py +++ b/homeassistant/components/unifi/sensor.py @@ -77,6 +77,8 @@ def async_wlan_client_value_fn(controller: UniFiController, wlan: Wlan) -> int: client.mac for client in controller.api.clients.values() if client.essid == wlan.name + and dt_util.utcnow() - dt_util.utc_from_timestamp(client.last_seen or 0) + < controller.option_detection_time ] ) diff --git a/tests/components/unifi/test_sensor.py b/tests/components/unifi/test_sensor.py index d619cd4c3c9..3d50df8ada9 100644 --- a/tests/components/unifi/test_sensor.py +++ b/tests/components/unifi/test_sensor.py @@ -470,6 +470,7 @@ async def test_wlan_client_sensors( wireless_client_1 = { "essid": "SSID 1", "is_wired": False, + "last_seen": dt_util.as_timestamp(dt_util.utcnow()), "mac": "00:00:00:00:00:01", "name": "Wireless client", "oui": "Producer", @@ -479,6 +480,7 @@ async def test_wlan_client_sensors( wireless_client_2 = { "essid": "SSID 2", "is_wired": False, + "last_seen": dt_util.as_timestamp(dt_util.utcnow()), "mac": "00:00:00:00:00:02", "name": "Wireless client2", "oui": "Producer2", @@ -526,9 +528,17 @@ async def test_wlan_client_sensors( # Verify state update - decreasing number wireless_client_1["essid"] = "SSID" - wireless_client_2["essid"] = "SSID" - mock_unifi_websocket(message=MessageKey.CLIENT, data=wireless_client_1) + + async_fire_time_changed(hass, datetime.utcnow() + DEFAULT_SCAN_INTERVAL) + await hass.async_block_till_done() + + ssid_1 = hass.states.get("sensor.ssid_1") + assert ssid_1.state == "1" + + # Verify state update - decreasing number + + wireless_client_2["last_seen"] = 0 mock_unifi_websocket(message=MessageKey.CLIENT, data=wireless_client_2) async_fire_time_changed(hass, datetime.utcnow() + DEFAULT_SCAN_INTERVAL)