
MeshCore room-server-v1.17.0
パケット無線向けの新しい軽量ハイブリッドルーティングメッシュプロトコル
MeshCoreについて
MeshCoreは、LoRaやその他のパケット無線を使用した組み込みプロジェクト向けのマルチホップパケットルーティングを可能にする、軽量でポータブルなC++ライブラリです。インターネットなしで動作する、回復力のある分散型通信ネットワークを作成したい開発者向けに設計されています。
🔍 MeshCoreとは?
MeshCoreは現在、幅広いLoRaデバイスをサポートしており、ファームウェアを手動でコンパイルする必要なく簡単にフラッシュできます。ユーザーはAdafruit ESPToolなどのツールを使用してプレビルドバイナリをフラッシュし、シリアルコンソールを介してネットワークと対話できます。 MeshCoreは、MeshtasticやReticulumと同様のワイヤレスメッシュネットワークを作成する機能を提供しますが、組み込みプロジェクト向けの軽量マルチホップパケットルーティングに重点を置いています。カジュアルなLoRa通信向けに調整されたMeshtasticや、高度なネットワーキングを提供するReticulumとは異なり、MeshCoreはシンプルさとスケーラビリティのバランスを取っており、デバイス(ノード)が中間ノードを介してメッセージを中継することで長距離通信できるカスタム組み込みソリューションに最適です。これは、従来の通信インフラが利用できないオフグリッド、緊急時、または戦術的な状況で特に役立ちます。
⚡ 主な機能
- マルチホップパケットルーティング
- デバイスは複数のノード間でメッセージを転送し、単一無線の到達範囲を超えて拡張できます。
- ネットワーク効率のバランスを取り過剰なトラフィックを防ぐため、設定可能な最大ホップ数をサポートします。
- ノードは固定ロールを使用し、「コンパニオン」ノードはメッセージを一切中継せず、悪影響のあるルーティングパスが使用されるのを防ぎます。
- LoRa無線をサポート – Heltec、RAK Wireless、その他のLoRaベースのハードウェアで動作します。
- 分散型で回復力 – 中央サーバーやインターネット不要。ネットワークは自己修復します。
- 低消費電力 – バッテリー駆動または太陽光発電デバイスに最適。
- 簡単に展開 – プレビルドのサンプルアプリケーションで簡単に始められます。
🎯 MeshCoreは何に使えますか?
- オフグリッド通信: 遠隔地でも接続を維持。
- 緊急対応と災害復旧: インフラがダウンした場所に即座にネットワークを構築。
- アウトドア活動: ハイキング、キャンプ、アドベンチャーレースでの通信。
- 戦術・セキュリティアプリケーション: 軍事、法執行、民間警備のユースケース。
- IoTおよびセンサーネットワーク: リモートセンサーからデータを収集し、中央の場所に中継。
🚀 はじめ方
- The Comms ChannelによるMeshCoreクイックスタートプレイリストを見る
- Liam CottleによるMeshCoreテクニカルプレゼンテーションを見る。
- 私たちのよくある質問とドキュメントを読む。
- サポートされているデバイスに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のシリアルUSBターミナルを介して操作できます。
⚡️ MeshCoreフラッシャー
サポートされているデバイスにフラッシュできるプレビルドファームウェアがあります。
- 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ファームウェアは、ウェブ設定ツールでUSB経由で設定できます。
リモート管理機能を使用して、モバイルアプリのLoRa経由で管理することもできます。
🛠 ハードウェア互換性
MeshCoreは、MeshCoreフラッシャーにリストされているデバイス向けに設計されています。
📜 ライセンス
MeshCoreはMITライセンスのもとでリリースされたオープンソースソフトウェアです。個人および商用プロジェクトで自由に使用、変更、配布できます。
コントリビューション
'dev'をベースブランチとしてPRを送信してください! 小さな変更の場合はPRを送信していただければレビューを試みますが、より「影響の大きい」変更については、まずIssueを開いて議論を開始してください。まず達成したいことを打診し、特にこのコードベースの構造やアーキテクチャに影響を与える場合、最善のアプローチについて合意を形成する方が良いでしょう。
以下は遵守すべき一般原則です:
- シンプルに保つ。高級言語プログラマーのように考えないでください。組み込みを意識し、不要なレイヤーなしでコードを簡潔に保ってください。
- setup/begin関数以外では動的メモリ割り当てを行わない。
- コアソースモジュールと同じブレースとインデントスタイルを使用する。(.clang-formatは近く追加される予定ですが、既存のコードを遡って再フォーマットしないでください。問題の発見を困難にする不要な差分が生じるだけです)
優先順位付けにご協力ください!最も関心のあるIssue/PRに👍でリアクションしてください。作業計画の際にリアクション数を参考にします。
単体テストの実行
単体テストを実行するには、次のコマンドを実行します:
pio test --environment native --verbose
ロードマップ / To-Do
かなり主要な機能がいくつか計画されており、まだ特定の時期は決まっていません。非常に大まかな時系列順:
- Companionラジオ: UI再設計
- Repeater + Room Server: ACLの追加(Sensor Nodeのように)
- リピーター向けブリッジモードの標準化
- Repeater/Bridge: ゾーニング/フィルタリングのためのTransport Codesの標準化
- Core + Repeater: 強化されたゼロホップ近隣探索
- Core: ラウンドトリップ手動パスサポート
- Companion + Apps: 複数サブメッシュのサポート(および「オフグリッド」クライアントリピートモード)
- Core + Apps: LZWメッセージ圧縮のサポート
- Core: 弱いホップと強いホップのための動的CR(コーディングレート)
- Core: 1台の物理デバイス上で複数の仮想ノードをホストするための新しいフレームワーク
- V2プロトコル仕様: パスハッシュや新しい暗号化仕様などを含むV2パケットプロトコルに関する議論と合意
📞 サポートを受ける
- GitHub Issuesページでバグを報告し、機能をリクエストしてください。
- 私のサイトで追加のガイドやコンポーネントを見つけてください。
- MeshCore Discordに参加して開発者とチャットし、コミュニティから助けを得ましょう。