Meshview EN

Mira tu malla Meshtastic, en directo.

Meshview lee una red mallada Meshtastic desde un broker MQTT y la muestra mientras ocurre: un mapa de sus nodos, los paquetes que envían, los caminos que siguen esos paquetes y estadísticas de todo ello.

Esto es Meshview reescrito en Rust, que toma el relevo de la versión en Python: las mismas páginas, la misma API y la misma base de datos, que adopta tal cual. Un único binario estático con toda la web dentro, en inglés, español y ruso. Cada cambio en master se compila, se prueba y se publica como imagen, y ya da servicio a una malla pública.

Mapa en directo

Cada nodo que se oye, coloreado según el preset de su canal, con los enlaces que revelan los traceroutes y los informes de vecinos, y cada paquete parpadeando al llegar.

Una página por nodo

Su telemetría y sus vecinos, un código QR para añadirlo como contacto y hasta dónde se prevé que llegue, con el modelo de terreno del ITS.

Traceroutes

Dibujados de ida y vuelta, a partir de lo que informó cada gateway que los oyó.

Estadísticas

Paquetes, nodos y gateways día a día, los nodos con más tráfico, las conversaciones, cada paquete según llega y un modo kiosco para una pantalla en la pared.

Desde MQTT

En claro o con TLS, a una base SQLite o PostgreSQL, con limpieza e instantánea diarias y, en SQLite, copias de seguridad consistentes cuando las pidas.

Un proceso, o varios

Todo en uno, o un ingestador que escribe y tantos servidores web como quieras leyendo a su lado, con sondas para Kubernetes.

Una API

Versionada, y documentada por el propio servidor en una referencia interactiva, en inglés, español y ruso.

Software libre

Bajo la GNU AGPL, versión 3 o posterior, escrito en Rust. Las contribuciones son bienvenidas.

Capturas

La malla que recoge O Zulo, tal como la muestra Meshview.

Resumen de la malla

La portada de la malla de O Zulo: nodos recientes y activos, gateways
                 MQTT y paquetes, una lista de nodos y un mapa de la península ibérica
                 salpicado de nodos.

Más de mil nodos, de Galicia a Andalucía, con la lista al lado para buscar.

Nodo

La página de un nodo: su identidad, dispositivo y canal, posición y
                 actividad, sobre un mapa de A Coruña con sus vecinos y su cobertura
                 predicha dibujada como un contorno a su alrededor.

Quién es, qué lleva, dónde está, cuánto se le oye, sus vecinos y hasta dónde se prevé que llegue.

Traceroute

Un traceroute dibujado como grafo: flechas verdes para la ida desde el
                 nodo que lo inició hasta el trazado, y rojas discontinuas para la
                 vuelta.

La ida en verde y la vuelta en rojo.

Gráfico de la malla

El grafo de la malla del canal NarrowFast: nodos coloreados por su rol,
                 los routers más grandes, unidos por los enlaces que encontraron los
                 traceroutes y los informes de vecinos.

Cada enlace oído en las últimas doce horas, con los nodos coloreados por su rol.

Estadísticas de la malla

La página de estadísticas: totales de nodos, paquetes, observaciones y
                 gateways, y gráficas de paquetes y nodos por día.

Día a día, a partir de instantáneas diarias que sobreviven a los paquetes de los que salieron.

Nodos de la red

La lista de nodos: una tabla con su hardware, rol, posición, canal y la
                 última vez que se oyeron, con filtros encima.

Filtrados, ordenados y paginados por el servidor, para que miles de nodos sigan yendo ágiles.

Referencia de la API

La referencia de la API en español: las convenciones de la API, con los
                 endpoints agrupados a su lado.

En /api/docs de cada Meshview, generada a partir del código que responde.

Ejecutarlo

Un contenedor, un fichero de configuración y un broker que leer.

Contenedor

podman run -d --name meshview \
  -p 8081:8081 \
  -v meshview-data:/data \
  -v ./config.toml:/etc/meshview/config.toml:ro \
  ghcr.io/meshview/meshview:latest

La base de datos vive en /data, y la configuración, de solo lectura, en /etc/meshview. latest es la última versión publicada, y cada versión tiene su propia etiqueta, para amd64 y arm64.

¿Te va el riesgo? master se reconstruye con cada cambio: lo de mañana hoy mismo, con fallos garantizados y sin coste adicional.

Configuración

[mqtt]
server = "mqtt.example.org"
topics = ["msh/EU_868/#"]

[site]
title = "Nuestra malla"
language = "es"

En TOML, y cualquier clave puede venir también del entorno, como MESHVIEW_MQTT__SERVER. Mira la referencia de configuración y la guía de despliegue.

Míralo funcionando

Decenas de comunidades de todo el mundo tienen su Meshview público. MeshviewWorld las reúne en un mapa, con todos los nodos que oyen, y mantiene por sí solo una lista de las instancias al día: dónde está cada una, qué versión usa y cuántos nodos ve.

Si vienes de la versión en Python

Detenla, convierte su config.ini con scripts/convert-config.py y arranca Meshview sobre la misma base de datos: la adopta tal cual, con todos sus paquetes y nodos, y las direcciones antiguas de la API redirigen a las nuevas. La guía de migración tiene los detalles: cómo volver atrás, con SQLite, y cómo probarlo antes en una copia, con PostgreSQL.