MQTT
MQTT は、Meshtastic のメッシュネットワークをインターネットに橋渡しし、無線の到達範囲を超えた長距離通信を可能にします。
概要
MQTT モジュールは、ノードを MQTT サーバーに接続し、次のことを可能にします:
- インターネット経由で、物理的に異なるメッシュ上のノードにメッセージを届ける
- ホームオートメーションや監視システムとの連携
- ノードの位置を公開の Meshtastic マップに公開する
- ログ記録や通知のためのカスタムデータパイプライン
仕組み
[自分のノード] → 無線 → [WiFi 付きゲートウェイノード] → MQTT サーバー → [リモートゲートウェイ] → 無線 → [リモートノード]
インターネットに接続されたゲートウェイノード(WiFi または Ethernet)が、メッシュのメッセージを MQTT トピックに公開します。 同じトピックを購読しているリモートのゲートウェイが、それらのメッセージを自分のローカルメッシュに取り込みます。
設定
MQTT を有効にする
- 「設定 → モジュール設定 → MQTT」に移動します。
- MQTT モジュールを有効にします。
- サーバーへの接続を設定します:

| 設定項目 | 説明 | デフォルト |
|---|---|---|
| サーバーアドレス | MQTT サーバーのホスト名 | mqtt.meshtastic.org |
| ユーザー名 | サーバーの認証 | meshdev |
| パスワード | サーバーの認証 | large4cats |
| ルートトピック | メッセージのベーストピック | msh |
| 暗号化 | MQTT ペイロードを暗号化 | 有効 |
| ⚠️ 非推奨:JSON パケットのサポートはファームウェアから削除されました。このフィールドは無視されます | 無効 | |
| TLS | サーバーへのセキュアな接続 | 無効 |
| マップ報告 | 公開マップに位置を報告 | 無効 |
MQTT Proxy on This Phone
If your node has no internet access of its own, it can use the connected phone as its MQTT gateway: enable MQTT and Proxy to client enabled in the module config, and the app relays MQTT traffic between the radio and the broker over your phone’s internet connection.
The MQTT proxy on this phone toggle at the top of the MQTT settings screen shows whether this relay is currently running and lets you cut it off (or restart it) immediately — without editing and re-saving the device’s MQTT configuration.
デフォルトの Meshtastic サーバー
コミュニティが mqtt.meshtastic.org で公開サーバーを運用しています。 これは一般的な利用やテストを目的としています。
ℹ️ 注意:
mqtt.meshtastic.orgへの接続は、TLS のトグルがオフでも常に TLS(ポート 8883)を使用します。 それ以外のサーバーでは、TLS は有効にした場合にのみ使用されます(TLS ありはポート 8883、なしは 1883)。
🔒 プライバシー: 公開サーバー上のメッセージは、購読している誰もが読めます。 プライベートな通信には、必ずチャンネルの暗号化を使用してください。
プライベートサーバー
プライバシーと制御を高めるために、独自の MQTT サーバーを運用できます:
- Mosquitto(軽量、オープンソース)
- HiveMQ
- EMQX
適切な認証情報を設定して、ノードがプライベートサーバーに接続するよう構成します。
マップ報告
マップ報告を有効にすると、ノードは自分の位置を Meshtastic のコミュニティマップに公開します:
- meshmap.net や、同様のコミュニティマップサービスで表示されます
- 共有されるのは位置とノード情報のみです
- 位置を公開したくない場合は、これを無効にしてください
アップリンクとダウンリンク
| 方向 | 説明 |
|---|---|
| アップリンク | メッシュ → MQTT サーバーへのメッセージ |
| ダウンリンク | MQTT サーバー → メッシュへのメッセージ |
メッセージの流れと電波利用時間を制御するため、どの方向を有効にするかをチャンネルごとに設定します。
メッセージ形式
MQTT は protobuf のメッセージ形式を使用します:
| 形式 | 説明 | 用途 |
|---|---|---|
| Protobuf | バイナリの Meshtastic protobuf エンコード | ノード間のメッシュ橋渡し |
⚠️ 注意: JSON 出力のサポートはファームウェアから削除されました。
json_enabledの設定は、以前との互換性のためにアプリ上には表示されますが、現在のファームウェアバージョンには影響しません。
暗号化とプライバシー
階層化された暗号化モデルを理解する:
- チャンネルの暗号化は、MQTT の前にメッシュ上で行われます。 チャンネルに PSK が設定されている場合、MQTT ペイロードはすでに暗号化されています。サーバーや購読者には暗号文しか見えません。
- MQTT の暗号化(モジュールの設定)は、サーバーへの転送のために追加の暗号化レイヤーを加えます。 これはメタデータやルーティング情報を保護します。
- TLS はサーバーへの TCP 接続自体を暗号化し、ネットワークレベルの盗聴を防ぎます。
🔒 重要: デフォルトの公開チャンネルは、よく知られた鍵を使用しています。 デフォルトチャンネルで MQTT 経由で送信されるメッセージは、実質的に暗号化されていません。誰でも解読できます。 プライベートな通信には、必ずカスタムの PSK を使用してください。
ベストプラクティス
- MQTT に橋渡しするチャンネルでは、チャンネルレベルの暗号化(PSK)を使用します
- インターネットに接続できないノードでは MQTT を有効にしないでください(バッファリングしてメモリを浪費します)
- 機密性の高い運用にはプライベートサーバーを使用します
- 混雑した MQTT トピックからメッセージをダウンリンクする際は、電波利用時間に注意してください。ダウンリンクされたメッセージはすべて、ローカルメッシュの無線の電波利用時間を消費します
- メッセージを送り返さず、リモートでメッシュを監視するだけでよい場合は、アップリンクのみを有効にすることを検討してください
トラブルシューティング
MQTT が接続できない
- WiFi を確認: ゲートウェイノードには、有効なインターネット接続(WiFi または Ethernet)が必要です。 MQTT は LoRa の無線リンク自体では動作しません。
- 認証情報を確認: ユーザー名やパスワードが正しくないと、ほとんどのサーバーでは何も表示されずに失敗します。 末尾のスペースがないか、よく確認してください。
- ファイアウォール: ポート 1883(MQTT)または 8883(MQTT+TLS)が開いている必要があります。 一部のネットワークは、標準外のポートをブロックします。
- DNS 解決: カスタムのサーバーホスト名を使う場合は、ノードがそれを解決できるか確認してください。 サーバーの IP アドレスを直接試してみてください。
メッセージが橋渡しされない
- アップリンク/ダウンリンクの設定を確認: アップリンクのみが有効な場合、メッセージはメッシュから MQTT へ流れますが、戻ってきません。 受信側のゲートウェイでダウンリンクを有効にしてください。
- チャンネルの不一致: 両方のゲートウェイが、同じ PSK を持つ同じチャンネルを共有している必要があります。 不一致の場合、メッセージは異なる鍵で暗号化され、判読できないデータとして表示されます。
- トピックの不一致: 両方のゲートウェイが同じルートトピックを使用しているか確認してください。 デフォルトの
mshは公開サーバーで機能します。
関連トピック
- 設定:モジュールと管理:MQTT モジュールの設定リファレンス
- メッセージとチャンネル:チャンネルの暗号化と PSK の設定
- MQTT 連携ガイド:meshtastic.org にある詳細な MQTT ドキュメント