Contexto

En escenarios con conectividad degradada o inexistente (por ejemplo, tras un desastre), las personas en terreno pueden observar cambios relevantes para el mapa (vías bloqueadas, deslizamientos, puentes dañados) antes de que vuelva el Internet. La pregunta es: ¿cómo capturar esos reportes de forma simple y comunitaria?

Este artículo describe un MVP comunitario: usar una red LoRa mesh (Meshtastic) para enviar reportes de texto con ubicación GNSS a un gateway (Raspberry Pi) que, cuando tiene Internet, crea Notas de OpenStreetMap (OSM Notes).

Alcance y privacidad: esto no es un sistema de atención de emergencias. No enviar PII (datos personales identificables). El propósito es apoyar flujos de mapeo.


Arquitectura (MVP)

  1. Un voluntario porta un dispositivo LoRa con GNSS (p. ej. T‑Echo) y lo conecta por Bluetooth al teléfono (app Meshtastic).
  2. El voluntario envía un mensaje: #osmnote <texto libre>.
  3. El mensaje viaja por la mesh hasta un nodo conectado por USB a una Raspberry Pi.
  4. La Raspberry ejecuta el servicio OSM Mesh Notes Gateway:
  • asocia el texto con la posición GNSS más reciente del nodo emisor,
  • valida que sea suficientemente reciente (movilidad),
  • encola si no hay Internet,
  • y crea una OSM Note cuando Internet vuelve.

Comandos (UX)

  • #osmnote <mensaje>: crea (o encola) una nota.
  • #osmhelp: ayuda de uso.
  • #osmstatus: estado del gateway (Internet OK/NO, colas).
  • #osmlist [n]: últimas notas del nodo (incluye pendientes y enviadas).
  • #osmcount: conteos.
  • #osmqueue: tamaños de cola.

Mensajes sin comandos: el gateway no responde.


Reglas de ubicación (movilidad)

En Meshtastic, la posición GNSS y el texto no siempre viajan juntos; además, en movilidad (moto/carro) una posición vieja puede desplazar mucho la nota.

Por eso el gateway mantiene un cache por nodo y aplica umbrales:

  • POS_GOOD = 15s (ideal)
  • POS_MAX = 60s (máximo)

Decisión:

  • sin posición reciente → rechazo
  • posición > 60s → rechazo
  • 15–60s → aceptar como “posición aproximada”

Cola offline (store-and-forward)

Si no hay Internet:

  • el reporte se guarda en SQLite con un ID local: Q-0007
  • el usuario recibe un ACK por DM
  • el worker reintenta periódicamente

Cuando se envía con éxito, el usuario recibe:

  • Q-0007 → Nota OSM #1234567

Dedupe conservador (sin perder eventos reales)

En desastre, textos idénticos pueden describir eventos distintos (“Casa derrumbada”). Para no perder información:

Se considera duplicado solo si coincide:

  • mismo nodo emisor
  • mismo texto normalizado
  • ubicación muy cercana (lat/lon a 4 decimales ~11 m)
  • misma ventana temporal (120s)

No se deduplica entre nodos distintos.


Guía rápida para voluntarios

  1. Encender el dispositivo GNSS al aire libre 30–60s.
  2. Conectar por Bluetooth en la app Meshtastic.
  3. Enviar: #osmnote <lo que observas>.
  4. Esperar ACK por DM.

Código y especificación

  • El repositorio contiene el código del gateway, scripts de instalación (Raspberry), unit systemd, y pruebas.
  • La especificación canónica debe vivir en docs/spec.md (Markdown versionado) y puede copiarse al wiki como espejo.

Créditos

Este trabajo se desarrolla en el marco de AC3 (Asociación de Cartografía Colaborativa de Colombia) como parte de las actividades del grant NASA Lifelines (Speed Dating).


Próximos pasos

  • Pruebas en terreno con más nodos.
  • Refinar guías de despliegue.
  • Extensiones opcionales para reportes humanitarios privados (fuera de alcance del MVP).

Enlaces

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Trending