如何使用 MeshSense 可视化监控您的 Meshtastic 网络
如果您曾经使用 Heltec 或 TTGO T-Beam 等开发板配合 Meshtastic 固件构建过自组网,那么您可能已经遇到了典型的可观测性问题。节点分散在屋顶、阳台或背包上,盯着小小的 0.96 英寸屏幕或通过手机应用点击来快速评估路由很快就让人厌倦了。您需要的是一个带有地图、信号强度图表和包追踪功能的正规仪表板。
MeshSense 项目正是为了解决这一问题而生。它是一个轻量级开源应用,可连接到您的 Meshtastic 节点,并在实时地图上渲染所有网络参数。

该应用的功能
MeshSense 的主要特点是实时收集统计数据,无需变通方案和复杂集成。您只需通过蓝牙或普通 Wi-Fi 将其连接到基站,界面就会开始从周围区域收集数据。
以下是仪表板能节省时间的主要场景:
- 拓扑和节点地图。 应用清晰显示当前活跃的节点、它们的物理 GPS 位置以及最后通信时间。
- 路由追踪。 路由追踪功能让您可以立即看到数据包经过了多少个中间继电器以及哪条路径是最优的。
- 信号质量报告。 您可以监控每个节点的 SNR 和接收电平,以微调定向天线或识别城市中的信号盲区。
- 硬件状态监控。 显示远程设备的电池电量、温度和遥测数据。
在服务器和无头模式下运行
除了 Electron 桌面版本外,该项目在树莓派等单板计算机上也能良好运行,可以放置在基站附近。
提供无头模式,可在没有图形界面的情况下运行。MeshSense 启动一个本地 Web 服务器,可通过本地网络上的任何浏览器访问,并使用密钥保护:
export ADDRESS=10.0.1.20 # IP-адрес вашей Meshtastic ноды
export PORT=5920 # Порт веб-интерфейса
ACCESS_KEY=mySecretKey ./meshsense-x86_64.AppImage --headless
在没有显示器的 ARM64 板上运行应用时,开发者建议通过虚拟帧缓冲区启动 AppImage:
dbus-run-session xvfb-run ./meshsense-arm64.AppImage --headless \
--disable-gpu --in-process-gpu --disable-software-rasterizer
对于基于 Debian 或 Ubuntu 的系统,在启动 AppImage 前需要安装几个软件包:用于容器本身正常运行的 libfuse2 和用于在界面中正确显示图标的 fonts-noto-color-emoji。
底层原理
项目架构分为三个组件:基于 Vite 的前端、Node.js API 后端和 Electron 包装器。
代码中有一个有趣的实现细节:为了通过蓝牙直接与无线电模块交互,开发者构建了一个与系统 libdbus-1-dev 和 cmake 绑定的自定义模块 webbluetooth。这意味着从源码本地构建时,您需要先编译二进制绑定:
git clone --recurse-submodules https://github.com/Affirmatech/MeshSense.git
cd MeshSense
# Сборка нативной зависимости для Bluetooth
cd api/webbluetooth
npm i
npm run build:all
cd ../..
# Установка остальных пакетов
./update.mjs
对于开发环境,启动分为两个独立进程。前端在端口 59 启动,后端在端口 59 启动,自动将未处理的路由代理到 Vite:
# В первом терминале (UI)
cd ui
PORT=5921 npm run dev
# Во втором терминале (API)
cd api
export DEV_UI_URL=http://localhost:5921
PORT=5920 npm run dev
在 README 中,作者坦诚地警告了开发模式的一个 bug:当 Vite 热重载时,状态事件订阅有时会重复,导致日志行出现两次。解决方法很简单,只需在浏览器中重新加载页面即可。
谁适合使用这个项目
MeshSense 是无线电爱好者、LoRa 爱好者和为徒步、别墅或城市备用通信构建去中心化网络的人的实用工具。它省去了手动通过串口解析日志或猜测数据包为什么没能到达下一座山的麻烦。
如果您已经有运行中的家庭服务器或树莓派,并连接了 LoRa 节点,那么将 MeshSense 添加到启动项中是很有意义的——您可以直接在眼前获得清晰的电磁波视图。
相关项目