🌐 日本語 — Community translation View in English

MQTT

MQTT は、Meshtastic のメッシュネットワークをインターネットに橋渡しし、無線の到達範囲を超えた長距離通信を可能にします。

概要

MQTT モジュールは、ノードを MQTT サーバーに接続し、次のことを可能にします:

  • インターネット経由で、物理的に異なるメッシュ上のノードにメッセージを届ける
  • ホームオートメーションや監視システムとの連携
  • ノードの位置を公開の Meshtastic マップに公開する
  • ログ記録や通知のためのカスタムデータパイプライン

仕組み

[自分のノード] → 無線 → [WiFi 付きゲートウェイノード] → MQTT サーバー → [リモートゲートウェイ] → 無線 → [リモートノード]

インターネットに接続されたゲートウェイノード(WiFi または Ethernet)が、メッシュのメッセージを MQTT トピックに公開します。 同じトピックを購読しているリモートのゲートウェイが、それらのメッセージを自分のローカルメッシュに取り込みます。

設定

MQTT を有効にする

  1. 設定 → モジュール設定 → MQTT」に移動します。
  2. MQTT モジュールを有効にします。
  3. サーバーへの接続を設定します:

MQTT のトグルスイッチ

設定項目 説明 デフォルト
サーバーアドレス MQTT サーバーのホスト名 mqtt.meshtastic.org
ユーザー名 サーバーの認証 meshdev
パスワード サーバーの認証 large4cats
ルートトピック メッセージのベーストピック msh
暗号化 MQTT ペイロードを暗号化 有効
JSON 出力 ⚠️ 非推奨:JSON パケットのサポートはファームウェアから削除されました。このフィールドは無視されます 無効
TLS サーバーへのセキュアな接続 無効
マップ報告 公開マップに位置を報告 無効

このスマートフォンでの MQTT プロキシ

ノード自体がインターネットに接続できない場合、接続中のスマートフォンを MQTT ゲートウェイとして使えます。モジュール設定で「MQTT」と「クライアントへのプロキシを有効化」を有効にすると、アプリがスマートフォンのインターネット接続を通じて、無線機とサーバーの間で MQTT の通信を中継します。

MQTT 設定画面の上部にある「このスマートフォンでの MQTT プロキシ」トグルは、この中継が現在動作しているかどうかを示し、デバイスの MQTT 設定を編集して保存し直すことなく、すぐに停止(または再開)できます。

デフォルトの 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 の設定は、以前との互換性のためにアプリ上には表示されますが、現在のファームウェアバージョンには影響しません。

暗号化とプライバシー

階層化された暗号化モデルを理解する:

  1. チャンネルの暗号化は、MQTT の前にメッシュ上で行われます。 チャンネルに PSK が設定されている場合、MQTT ペイロードはすでに暗号化されています。サーバーや購読者には暗号文しか見えません。
  2. MQTT の暗号化(モジュールの設定)は、サーバーへの転送のために追加の暗号化レイヤーを加えます。 これはメタデータやルーティング情報を保護します。
  3. TLS はサーバーへの TCP 接続自体を暗号化し、ネットワークレベルの盗聴を防ぎます。

🔒 重要: デフォルトの公開チャンネルは、よく知られた鍵を使用しています。 デフォルトチャンネルで MQTT 経由で送信されるメッセージは、実質的に暗号化されていません。誰でも解読できます。 プライベートな通信には、必ずカスタムの PSK を使用してください。

ベストプラクティス

  • MQTT に橋渡しするチャンネルでは、チャンネルレベルの暗号化(PSK)を使用します
  • インターネットに接続できないノードでは MQTT を有効にしないでください(バッファリングしてメモリを浪費します)
  • 機密性の高い運用にはプライベートサーバーを使用します
  • 混雑した MQTT トピックからメッセージをダウンリンクする際は、電波利用時間に注意してください。ダウンリンクされたメッセージはすべて、ローカルメッシュの無線の電波利用時間を消費します
  • メッセージを送り返さず、リモートでメッシュを監視するだけでよい場合は、アップリンクのみを有効にすることを検討してください

トラブルシューティング

MQTT が接続できない

  • WiFi を確認: ゲートウェイノードには、有効なインターネット接続(WiFi または Ethernet)が必要です。 MQTT は LoRa の無線リンク自体では動作しません。
  • 認証情報を確認: ユーザー名やパスワードが正しくないと、ほとんどのサーバーでは何も表示されずに失敗します。 末尾のスペースがないか、よく確認してください。
  • ファイアウォール: ポート 1883(MQTT)または 8883(MQTT+TLS)が開いている必要があります。 一部のネットワークは、標準外のポートをブロックします。
  • DNS 解決: カスタムのサーバーホスト名を使う場合は、ノードがそれを解決できるか確認してください。 サーバーの IP アドレスを直接試してみてください。

メッセージが橋渡しされない

  • アップリンク/ダウンリンクの設定を確認: アップリンクのみが有効な場合、メッセージはメッシュから MQTT へ流れますが、戻ってきません。 受信側のゲートウェイでダウンリンクを有効にしてください。
  • チャンネルの不一致: 両方のゲートウェイが、同じ PSK を持つ同じチャンネルを共有している必要があります。 不一致の場合、メッセージは異なる鍵で暗号化され、判読できないデータとして表示されます。
  • トピックの不一致: 両方のゲートウェイが同じルートトピックを使用しているか確認してください。 デフォルトの msh は公開サーバーで機能します。

関連トピック