1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
import asyncio from bleak import BleakScanner # RSSI de referencia a 1 metro (usualmente entre -59 y -65 dBm) RSSI_REFERENCE = -59 # Factor de propagación (n) PROPAGATION_CONSTANT = 2 def calculate_distance(rssi, reference=RSSI_REFERENCE, n=PROPAGATION_CONSTANT): return 10 ** ((reference - rssi) / (10 * n)) async def scan_for_devices(): print("Escaneando dispositivos BLE...") devices = await BleakScanner.discover() return devices async def main(): devices = await scan_for_devices() if not devices: print("No se encontraron dispositivos BLE.") return for device in devices: # Calcular distancia estimada distance = calculate_distance(device.rssi) print(f"Dispositivo encontrado: {device.name} - {device.address} - RSSI: {device.rssi} dBm - Distancia estimada: {distance:.2f} metros") # Ejecutar el escaneo asyncio.run(main()) |