
MeshCore room-server-v1.17.0
パケット無線向けの新しい軽量ハイブリッドルーティングメッシュプロトコル
MeshCore について
MeshCore は、LoRa やその他のパケット無線を使用する組み込みプロジェクト向けに、マルチホップパケットルーティングを可能にする軽量でポータブルな C++ ライブラリです。インターネットなしで動作する、耐障害性の高い分散型通信ネットワークを構築したい開発者向けに設計されています。
🔍 MeshCore とは?
MeshCore は現在、さまざまな LoRa デバイスをサポートしており、ファームウェアを手動でコンパイルする必要なく簡単に書き込むことができます。ユーザーは Adafruit ESPTool などのツールを使ってビルド済みバイナリを書き込み、シリアルコンソールを通じてネットワークとやり取りできます。 MeshCore は、Meshtastic や Reticulum に似たワイヤレスメッシュネットワークを構築する機能を提供しますが、組み込みプロジェクト向けの軽量なマルチホップパケットルーティングに重点を置いています。カジュアルな LoRa 通信に特化した Meshtastic や、高度なネットワーキングを提供する Reticulum とは異なり、MeshCore はシンプルさとスケーラビリティのバランスを取っており、カスタム組み込みソリューションに最適です。デバイス(ノード)は中間ノードを介してメッセージを中継することで、長距離通信が可能になります。これは、従来の通信インフラが利用できないオフグリッド、緊急時、または戦術的な状況で特に役立ちます。
⚡ 主な機能
- マルチホップパケットルーティング
- デバイスは複数のノードをまたいでメッセージを転送でき、単一の無線の到達範囲を超えて通信範囲を拡張します。
- ネットワーク効率のバランスを取り、過剰なトラフィックを防ぐために、設定可能なホップ数をサポートします。
- ノードは固定された役割を使用し、「Companion」ノードはメッセージをまったく中継しないため、悪影響を及ぼすルーティングパスが使用されるのを防ぎます。
- LoRa 無線をサポート – Heltec、RAK Wireless、その他の LoRa ベースのハードウェアで動作します。
- 分散型で耐障害性 – 中央サーバーやインターネットは不要で、ネットワークは自己修復します。
- 低消費電力 – バッテリー駆動やソーラー駆動のデバイスに最適です。
- 導入が簡単 – ビルド済みのサンプルアプリケーションで簡単に始められます。
🎯 MeshCore は何に使える?
- オフグリッド通信: 遠隔地でも接続を維持します。
- 緊急対応と災害復旧: インフラが停止している場所で即座にネットワークを構築します。
- アウトドア活動: ハイキング、キャンプ、アドベンチャーレースでの通信。
- 戦術・セキュリティ用途: 軍事、法執行機関、民間警備のユースケース。
- IoT・センサーネットワーク: 遠隔センサーからデータを収集し、中央拠点に中継します。
🚀 はじめかた
- The Comms Channel による MeshCore QuickStart Playlist を視聴する
- Liam Cottle による MeshCore Technical Presentation を視聴する。
- よくある質問 と ドキュメント に目を通す。
- サポートされているデバイスに MeshCore ファームウェアを書き込む。
- サポートされているクライアントで接続する。
開発者向け:
- Visual Studio Code に PlatformIO をインストールする。
- MeshCore リポジトリをクローンし、Visual Studio Code で開く。
- 変更して実行できるサンプルアプリケーションを参照:
- Companion Radio - BLE、USB、または Wi-Fi 経由で外部チャットアプリと使用するためのもの。
- KISS Modem - ホストアプリケーション向けのシリアル KISS プロトコルブリッジ。(プロトコルドキュメント)
- Simple Repeater - メッセージを中継してネットワークカバレッジを拡張します。
- Simple Room Server - 共有投稿用のシンプルな BBS サーバー。
- Simple Secure Chat - デバイス間の安全なターミナルベースのテキスト通信。
- Simple Sensor - テレメトリとアラート機能を備えた遠隔センサーノード。
Simple Secure Chat のサンプルは、Visual Studio Code のシリアルモニター、または Android の Serial USB Terminal を通じて操作できます。
⚡️ MeshCore Flasher
サポートされているデバイスに書き込めるビルド済みファームウェアを用意しています。
- https://meshcore.io/flasher を開く
- サポートされているデバイスを選択する
- いずれかのファームウェアタイプを書き込む:
- Companion、Repeater、または Room Server
- 書き込みが完了したら、以下の MeshCore クライアントのいずれかで接続できます。
📱 MeshCore クライアント
Companion ファームウェア
Companion ファームウェアは、書き込んだファームウェアのタイプに応じて、BLE、USB、または Wi-Fi 経由で接続できます。
- Web: https://app.meshcore.nz
- Android: https://play.google.com/store/apps/details?id=com.liamcottle.meshcore.android
- iOS: https://apps.apple.com/us/app/meshcore/id6742354151?platform=iphone
- NodeJS: https://github.com/liamcottle/meshcore.js
- Python: https://github.com/fdlamotte/meshcore-cli
Repeater および Room Server ファームウェア
Repeater および Room Server ファームウェアは、Web 設定ツールで USB 経由でセットアップできます。
また、モバイルアプリのリモート管理機能を使用して、LoRa 経由で管理することもできます。
🛠 ハードウェア互換性
MeshCore は、MeshCore Flasher に記載されているデバイス向けに設計されています。
📜 ライセンス
MeshCore は、MIT ライセンスの下でリリースされているオープンソースソフトウェアです。個人および商用プロジェクトで自由に使用、変更、配布できます。
コントリビューション
PR は 'dev' をベースブランチとして提出してください! 軽微な変更の場合は PR を提出していただければレビューを試みますが、より「影響の大きい」変更の場合は、まず Issue を開いて議論を始めてください。まず何を達成したいのかを打ち明け、特にこのコードベースの構造やアーキテクチャに影響を与える場合は、最善のアプローチについて合意に達するよう努める方がよいでしょう。
従うよう努めるべき一般的な原則をいくつか示します:
- シンプルに保つ。高水準言語プログラマーのようには考えないでください。組み込みのことを考え、不要なレイヤーを一切入れずにコードを簡潔に保ってください。
- setup/begin 関数の実行中を除き、動的メモリ割り当てを行わないでください。
- コアソースモジュールと同じ波括弧とインデントのスタイルを使用してください。(.clang-format がまもなく追加される予定ですが、既存のコードを遡って再フォーマットしないでください。これは問題の発見を難しくする不要な差分を生み出すだけです)
優先順位付けにご協力ください!最も関心のある issue/PR に thumbs-up でリアクションしてください。作業計画を立てる際にリアクション数を参考にしています。
ユニットテストの実行
ユニットテストを実行するには、次のコマンドを実行します:
pio test --environment native --verbose
ロードマップ / To-Do
パイプラインにはかなり主要な機能がいくつかあり、まだ特定の時期は定まっていません。おおよその時系列順に:
- Companion 無線: UI の再設計
- Repeater + Room Server: ACL の追加(Sensor Node と同様)
- Repeater のブリッジモードの標準化
- Repeater/Bridge: ゾーニング/フィルタリング用の Transport Codes の標準化
- Core + Repeater: 拡張ゼロホップ近隣探索
- Core: ラウンドトリップ手動パスのサポート
- Companion + アプリ: 複数のサブメッシュのサポート(および「オフグリッド」クライアントリピートモード)
- Core + アプリ: LZW メッセージ圧縮のサポート
- Core: 弱いホップと強いホップに対する動的 CR(コーディングレート)
- Core: 1 つの物理デバイス上で複数の仮想ノードをホストするための新しいフレームワーク
- V2 プロトコル仕様: パスハッシュ、新しい暗号化仕様などを含む V2 パケットプロトコルに関する議論と合意
📞 サポートを受ける
- バグの報告や機能リクエストは GitHub Issues ページで行ってください。
- 追加のガイドやコンポーネントは 私のサイト で見つけられます。
- MeshCore Discord に参加して、開発者とチャットしたり、コミュニティから助けを得たりしてください。