MQTT
MQTT 3.1.1または5.0のブローカーに接続し、QoSを指定してトピックをサブスクライブし、メッセージをパブリッシュして、ログで追います。
MQTTリクエストは、ブローカーに接続し、トピックフィルタをサブスクライブし、メッセージをパブリッシュします。作業中は接続したままで、ログには追跡しているトピックのすべてのメッセージが表示されます。 EcholotはMQTT 3.1.1と5.0に対応しています。

Alpenglowで試す
Realtime › Warehouse sensorsは、ドキュメントリポジトリのexamples/serversフォルダにあるlocalhostのローカルブローカーに接続します(bun run realtime)。
接続する
- ファイル › 新規MQTTリクエストを選ぶか、サイドバーのリクエストの横にある+メニューから新規MQTTリクエストを選びます。
- ブローカーのアドレスを入力します。
- アドレスの前にあるMQTTバッジのメニューでプロトコルを選びます:MQTT 5.0(デフォルト)またはMQTT 3.1.1。
- 接続(⌘R)を選びます。接続中は接続解除と表示されます。
| アドレス | 接続方法 | デフォルトのポート |
|---|---|---|
mqtt://broker | TCP | 1883 |
mqtts://broker | TLS | 8883 |
ws://broker | WebSocket。アドレスにパスがなければ/mqtt | ほかのws://アドレスと同じ |
wss://broker | TLS上のWebSocket。アドレスにパスがなければ/mqtt | ほかのwss://アドレスと同じ |
アドレスには{{variables}}が使えます。Alpenglowのセンサーのリクエストはmqtt://{{mqttHost}}を使っています。
エディタのタブは次のとおりです:ドキュメント、サブスクライブ、パブリッシュ、接続、認証、変数、テスト、スクリプト、設定。 TLSの検証、プロキシ、証明書などの設定は、HTTPリクエストと同じように適用されます。
ユーザー名とパスワード
MQTTのユーザー名とパスワードは、認証タブにあるリクエストのBasic認証です。パスワードはシークレット変数({{mqttPassword}}など)に入れると、
キーチェーンに保存され、リクエストファイルには残りません。ほかの認証と同じく、フォルダやワークスペースに一度設定することもできます。ほかの種類の認証はMQTTには適用されません。
接続
接続タブには、CONNECTのそのほかの項目があります:
| フィールド | 内容 |
|---|---|
| クライアントID | クライアントのID。{{variables}}が使えます。空にするとecholot-とランダムな接尾辞が使われます |
| クリーンスタート(5.0)またはクリーンセッション(3.1.1) | このクライアントIDのためにブローカーが保持していたサブスクリプションとメッセージを使わずに開始します。デフォルトでオン |
| キープアライブ | pingの間隔(秒)。0で無効。デフォルトは60 |
| Will | 接続が切れたときにWillメッセージをパブリッシュ。Willトピック、Willペイロード、QoS、Retainを指定します。このクライアントが挨拶なしに去ったときに、ブローカーがパブリッシュするメッセージです |
サブスクライブ
サブスクライブタブには、リクエストがサブスクライブするトピックフィルタが一覧されます:
- 下の欄にフィルタを入力します。たとえば
warehouses/+/temperatureです。+は1階層に、#は残りすべてに一致します(logs/#など)。 - QoS 0、QoS 1、QoS 2のいずれかを選びます。
- 一度だけサブスクライブするにはサブスクライブを、フィルタをリクエストとともに保存するには+を選びます。
接続時にサブスクライブにチェックを入れた保存済みのフィルタは、リクエストが接続するたびにサブスクライブされます。アプリ内でも、実行時も、コマンドラインからも、エージェントでも同様です。 接続中は、保存した各フィルタにサブスクライブとサブスクライブ解除のボタンが表示されます。MQTT 5.0では、No Localを使うと、このクライアント自身がパブリッシュしたメッセージが除外されます。
パブリッシュ
パブリッシュタブでは、メッセージを送信します:
- トピックとペイロードを入力します。どちらにも
{{variables}}が使えます。 - QoSを選び、ブローカーに後からサブスクライブする人のためにメッセージを保持してもらうにはRetainにチェックを入れます。
- パブリッシュを選びます。
メッセージをリクエストとともに保存するには、+を選びます。実行時にパブリッシュにチェックを入れた保存済みのメッセージは、リクエストがあなたの操作なしに実行されるとき、順番にパブリッシュされます。 ランナーとコマンドラインは、接続し、有効なフィルタをサブスクライブし、有効なメッセージをパブリッシュし、10秒間待ち受けて、閉じます。
メッセージログ
レスポンスペインのメッセージタブには、セッションが表示されます。受信したメッセージとパブリッシュしたメッセージ、サブスクリプション、ブローカーの確認応答が、新しいものが最後に、それぞれ時刻とサイズ付きで並びます。
- メッセージには、トピック、QoS、保持されていたかどうか、パケットIDが表示されます。
- すべてのトピックで、ログを1つのトピックに絞り込めます。
- すべて、送信、受信で方向によって絞り込み、メッセージをフィルタでテキストからメッセージを探せます。
- その他は、JSONのペイロードを整形して表示します。
- 最初の行には、どのクライアントIDがどのプロトコルで接続したか、ブローカーが以前のセッションを保持していたかどうかが表示されます。ブローカーが接続を切ったときは、MQTTの理由コード付きで、その理由がログに表示されます。
QoS 1と2の配信の確認応答は、どちらの方向も自動で行われます。
接続が閉じると、セッションはログをレスポンスのボディとして履歴に保存されるので、ボディに対するチェックを使えます。
MQTT 5.0
ブローカーの理由コードは、SuccessやNot authorizedのように、ログと、接続が拒否されたときに名前で表示されます。これは両方のバージョンで同じです。MQTT 5.0を選んだ場合:
- サブスクリプションのNo Localは、このクライアント自身のメッセージを除外します。
- クリーンスタートは、3.1.1のクリーンセッションに代わります。
- 保存したメッセージにはコンテンツタイプ(リクエストファイルの
content-type)を付けられ、Content Typeプロパティとして送信されます。
コマンドラインから
echolot mqtt subscribeとecholot mqtt publishは、パスワードをECHOLOT_MQTT_PASSWORDに入れて、ターミナルからブローカーと通信します。echolot mqttを参照してください。
