team-3/src/c3nav/mapdata/management/commands/findbeacons.py

29 lines
1.4 KiB
Python

import numpy as np
from django.core.management.base import BaseCommand
from c3nav.mapdata.models.geometry.space import WifiMeasurement, RangingBeacon
class Command(BaseCommand):
help = 'list FTM-capable APs that have been spotted'
def handle(self, *args, **options):
found_beacons = {}
# lets collect them
for wifi_measurement in WifiMeasurement.objects.select_related("space"):
for measurement_list in wifi_measurement.data:
for measurement in measurement_list:
if measurement.get("supports80211mc", False) or measurement.get("distance", None):
found_beacons.setdefault(measurement["bssid"], []).append((wifi_measurement, measurement))
# put in the ones we know
known = {r.wifi_bssid: r for r in RangingBeacon.objects.all()}
# lets go through them
for bssid, measurements in found_beacons.items():
print(bssid, measurements[0][1]["ssid"], known.get(bssid))
points = {wifi_measurement.geometry for wifi_measurement, measurement in measurements}
for wifi_measurement, measurement in measurements:
break
#print(f" Space={wifi_measurement.space.title!r} RSSI={measurement['rssi']} "
# f"distance={measurement.get('distance')} distance_sd={measurement.get('distance_sd')}")