Update CSV metrics to include client counts and signal averages while reordering fields

This commit is contained in:
Yaro Kasear 2025-05-02 10:49:01 -05:00
parent f95945883c
commit 5c55276ef3

View file

@ -152,24 +152,24 @@ def write_csv(outfile):
timestamp = datetime.utcnow().isoformat() timestamp = datetime.utcnow().isoformat()
row = { row = {
"Timestamp": timestamp, "Timestamp": timestamp,
"ClientsOnAP": len([mac for mac, count in ap_clients[target_ap_bssid].items() if count > 3]),
"ClientsOnChannel": len([mac for mac, count in clients.items() if count > 3]), "ClientsOnChannel": len([mac for mac, count in clients.items() if count > 3]),
"APsOnChannel": len(aps), "APsOnChannel": len(aps),
"PacketCount": packet_count,
"AvgAPSignal": round(sum([sum(v)/len(v) for v in ap_signals.values() if v]) / len(ap_signals) if ap_signals else 0, 2), "AvgAPSignal": round(sum([sum(v)/len(v) for v in ap_signals.values() if v]) / len(ap_signals) if ap_signals else 0, 2),
"StrongestAPSignal": max([max(v) for v in ap_signals.values() if v], default=0), "StrongestAPSignal": max([max(v) for v in ap_signals.values() if v], default=0),
"AvgSSIDSignal": round(sum([sum(v)/len(v) for v in ssid_signals.values() if v]) / len(ssid_signals) if ssid_signals else 0, 2), "UnlinkedDevices": len(unlinked_candidates),
"MaxSSIDSignal": max([max(v) for v in ssid_signals.values() if v], default=0),
"ClientsOnAP": len([mac for mac, count in ap_clients[target_ap_bssid].items() if count > 3]),
"NumberofBSSIDsOnSSID": len([ "NumberofBSSIDsOnSSID": len([
bssid for bssid, ssid in ssid_map.items() bssid for bssid, ssid in ssid_map.items()
if target_ap_bssid in ssid_map and ssid == ssid_map.get(target_ap_bssid) if target_ap_bssid in ssid_map and ssid == ssid_map.get(target_ap_bssid)
]) if target_ap_bssid and target_ap_bssid in ssid_map else 0, ]) if target_ap_bssid and target_ap_bssid in ssid_map else 0,
"AvgSSIDSignal": round(sum([sum(v)/len(v) for v in ssid_signals.values() if v]) / len(ssid_signals) if ssid_signals else 0, 2),
"MaxSSIDSignal": max([max(v) for v in ssid_signals.values() if v], default=0),
"NumberofChannelsOnSSID": len(set([ "NumberofChannelsOnSSID": len(set([
bssid_channels.get(bssid) bssid_channels.get(bssid)
for bssid, ssid in ssid_map.items() for bssid, ssid in ssid_map.items()
if target_ap_bssid in ssid_map and ssid == ssid_map.get(target_ap_bssid) if target_ap_bssid in ssid_map and ssid == ssid_map.get(target_ap_bssid)
])) if target_ap_bssid and target_ap_bssid in ssid_map else 0, ])) if target_ap_bssid and target_ap_bssid in ssid_map else 0,
"UnlinkedDevices": len(unlinked_candidates), "PacketCount": packet_count,
"Deadpoints": len([ap for ap in aps if is_deadpoint(ap)]) "Deadpoints": len([ap for ap in aps if is_deadpoint(ap)])
} }