Improve counting of UniFi WLAN Clients sensor (#97785)

This commit is contained in:
Robert Svensson 2023-08-04 19:22:46 +02:00 committed by GitHub
parent b5e23ee650
commit 66cb407e4f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 2 deletions

View File

@ -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
]
)

View File

@ -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)