Nob ~/celltrace

02 · android + python

celltrace

Saber dónde están las torres celulares sin usar GPS

Dos proyectos que trabajan juntos para responder qué torre celular le está dando servicio a un celular, sin GPS, y para decir con honestidad cuándo no se puede saber

##Verlo funcionar

##Dos piezas

CellTraceLogger es una app Android (Kotlin) con un servicio en primer plano que anota cada observación de la red celular: MCC, MNC, LAC/TAC, Cell ID y la señal (RSRP, RSRQ, RSSNR) en 5G NR, LTE y 3G. Escribe archivos NDJSON que rotan solos y muestra en un mapa de OpenStreetMap las celdas que va viendo. celltrace es la librería en Python que toma esas observaciones y las cruza con los datos públicos de OpenCellID

##La incertidumbre también es un resultado

celltrace no da una respuesta y ya: cada inferencia trae un nivel de confianza (baja, media o alta), según qué tan estable fue la señal y si una celda domina en el tiempo. Si hay celdas que se solapan o la red está inestable, lo dice en vez de adivinar. Una vez están los datos, funciona sin internet

##Menos llamadas a la API

Para ubicar celdas que no están en el archivo de OpenCellID, la app puede preguntarle a una API externa (Unwired Labs). Cada celda resuelta se guarda en un caché (cached_cells.csv), así una celda se consulta una sola vez aunque aparezca mil veces

##Lo que no hace

No rastrea personas ni da coordenadas exactas de nadie: infiere infraestructura (qué torre o qué sector), no la ubicación de un usuario

~/celltrace · cómo funciona
celular (CellTraceLogger)
 │ Cell ID · LTE / 5G NR · señal
 ▼
celltrace_events_001.ndjson
 │
 ▼
celltrace (Python) ◄── OpenCellID (CSV)
 │ filtro por zona + consenso en el tiempo
 ▼
torre más probable · confianza ALTA

##Bitácora

  1. La libreríaPrimera versión de celltrace: cargar OpenCellID, filtrar por zona, estimar a partir de observaciones y una línea de comandos para probarlo. Pruebas automáticas con pytest en cada cambio
  2. La appCellTraceLogger en un día: el servicio en primer plano, el registro en NDJSON, el mapa y el caché de celdas
  3. Navidad optimizandoMenos llamadas a la API. El mensaje del commit lo dice todo: "optimize the damn api calls"