From 9fc7c65454ec217dcadd521f90c368a0f7f895b9 Mon Sep 17 00:00:00 2001 From: User Date: Sun, 1 Feb 2026 18:09:06 +0100 Subject: [PATCH] fix: filter scanner BT MACs in API responses - /api/latest now filters out devices matching peer bt_mac - Prevents scanner devices from appearing in scan results Co-Authored-By: Claude Opus 4.5 --- src/rf_mapper/web/app.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/rf_mapper/web/app.py b/src/rf_mapper/web/app.py index 8bc264f..ea899ed 100644 --- a/src/rf_mapper/web/app.py +++ b/src/rf_mapper/web/app.py @@ -666,10 +666,17 @@ def create_app(config: Config | None = None) -> Flask: with open(scan_files[0]) as f: scan = json.load(f) - # Get saved floor assignments from database + # Get saved floor assignments and scanner BT MACs from database db = app.config.get("DATABASE") saved_floors = db.get_all_device_floors() if db else {} + # Get scanner BT MACs to filter out + scanner_bt_macs = set() + if db: + for peer in db.get_peers(): + if peer.get("bt_mac"): + scanner_bt_macs.add(peer["bt_mac"].upper()) + # Enrich with distance estimates and saved floor assignments for net in scan.get("wifi_networks", []): net["estimated_distance_m"] = round(estimate_distance(net["rssi"]), 2) @@ -678,12 +685,18 @@ def create_app(config: Config | None = None) -> Flask: if "height_m" not in net: net["height_m"] = None + # Filter out scanner devices and enrich BT devices + filtered_bt = [] for dev in scan.get("bluetooth_devices", []): + address = dev.get("address", "").upper() + if address in scanner_bt_macs: + continue # Skip scanner devices dev["estimated_distance_m"] = round(estimate_distance(dev["rssi"], tx_power=-65), 2) - address = dev.get("address") - dev["floor"] = saved_floors.get(address) if address else dev.get("floor") + dev["floor"] = saved_floors.get(dev.get("address")) if dev.get("address") else dev.get("floor") if "height_m" not in dev: dev["height_m"] = None + filtered_bt.append(dev) + scan["bluetooth_devices"] = filtered_bt scan["gps"] = { "lat": app.config["CURRENT_LAT"],