Seed last_seen from ARP cache on startup so watchdog has a baseline
Without this, last_seen is empty after every restart and the watchdog skips all devices (ts is None → continue). Devices that are genuinely active refresh last_seen via ARP requests or mDNS. AP proxy ghosts only send ARP replies (now filtered), so they go silent and the watchdog fires departure after WATCHDOG_TIMEOUT_SEC.
This commit is contained in:
@@ -821,6 +821,12 @@ def seed_from_arp_cache():
|
|||||||
if ip in infrastructure_ips:
|
if ip in infrastructure_ips:
|
||||||
dev['infrastructure'] = True
|
dev['infrastructure'] = True
|
||||||
known_devices[mac] = dev
|
known_devices[mac] = dev
|
||||||
|
# Seed last_seen so the watchdog has a baseline.
|
||||||
|
# Devices that are genuinely active will refresh this via ARP
|
||||||
|
# requests or mDNS; AP proxy ghosts (only ARP replies) won't.
|
||||||
|
with last_seen_lock:
|
||||||
|
if mac not in last_seen:
|
||||||
|
last_seen[mac] = time.time()
|
||||||
|
|
||||||
logging.info(f"Seeded {len(known_devices)} devices from ARP cache")
|
logging.info(f"Seeded {len(known_devices)} devices from ARP cache")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
Reference in New Issue
Block a user