>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
TypeScript

MeshSenseでMeshtasticネットワークを視覚的に監視する方法

HeltecやTTGO T-BeamなどのボードでMeshtasticファームウェアを使用して自律ネットワークを構築したことがあるなら、一般的な可観測性の問題に遭遇したことがあるでしょう。ノードは屋根上、バルコニー、バックパックなどに散らばっており、ルートの概要をすぐに把握するために小さな0.96インチの画面を凝視したりモバイルアプリをタップしたりするのは、すぐに飽きてしまいます。マップ、信号強度グラフ、パケットトレーシングを備えた適切なダッシュボードが欲しいですよね。

MeshSenseプロジェクトは、まさにこの問題を解決します。Meshtasticノードに接続し、すべてのネットワークパラメータをライブマップでレンダリングする、軽量なオープンソースアプリケーションです。

このアプリケーションできること

MeshSenseの主な機能は、ワークアラウンドや複雑な統合なしでリアルタイム統計を収集できることです。ベースノードにBluetoothまたは通常のWi-Fiで接続するだけで、インターフェースが周囲のデータ収集を開始します。

ダッシュボードが時間を節約できる主なシナリオは次のとおりです:

  • トポロジーとノードマップ。現在アクティブなノード、物理的なGPS位置、最後に通信したタイミングを明確に表示します。
  • 経路トレーシング。Traceroute機能により、パケットが中間リレーをいくつ通過し、どのパスが最適だったかを即座に確認できます。
  • 信号品質レポート。各ノードからのSNRと受信レベルを監視して、指向性アンテナを微調整したり、都市のデッドゾーンを特定したりできます。
  • ハードウェアステータス監視。リモートデバイスのバッテリー充電、温度、テレメトリデータが表示されます。

サーバー上およびヘッドレスモードでの実行

Electronデスクトップ版に加えて、ベースラジオ局の近くに配置したRaspberry Piなどのシングルボードコンピュータでも 잘動作します。

グラフィカルインターフェースなしで動作するヘッドレスモードが利用可能です。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です。

内部構造

プロジェクトアーキテクチャは3つのコンポーネントで構成されています:Viteベースのフロントエンド、Node.js APIバックエンド、Electronラッパーです。

コードには興味深い実装詳細があります:Bluetooth経由でラジオモジュールと直接やり取りするために、開発者はシステムのlibdbus-1-devcmakeに結び付けられたカスタムモジュール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

開発の場合、起動は2つの独立したプロセスに分割されます。フロントエンドはポート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で、作者はdevモードのバグについて正直に警告しています:Viteホットリロード時に状態イベントのサブスクリプションが重複することがあり、ログ行が2回表示されることがあります。これはブラウザでページを再読み込みするだけで修正できます。

プロジェクトが役立つ人

MeshSenseは、アマチュア無線家、LoRa愛好家、ハイキング、コテージ、バックアップ都市メッセージング用に分散通信ネットワークを構築している人にとって便利なユーティリティです。シリアルポート経由でログを手動で解析したり、パケットが次の丘に到達しなかった理由を推測したりする必要がなくなります。

接続されたLoRaノードを備えたホームサーバーまたはRaspberry Piをすでに実行している場合は、MeshSenseをスタートアップに追加して、目の前にある新鮮な視点でエアウェーブを確認することを検討する価値があります。

関連プロジェクト