Skip to content

MQTTクライアントによるテスト

リアルタイムデバイスをEMQXに接続しIoTアプリケーションを開発する前に、クライアントツールを使ってEMQXのメッセージングサービスをテストすることは、安全かつ効率的です。

EMQXをローカルにデプロイする前でも、EMQが提供する無料のオンライン公開MQTTブローカーやMQTTクライアントツールを検証ツールとして活用し、MQTTメッセージングサービスやアプリケーション開発の迅速なテストが可能です。

公開ブローカー

本章では、一般的に使われるMQTT 5.0クライアントツールを紹介し、以下のメッセージングサービスをテストするための簡単なデモを示します。

  • クライアント接続の確立
  • トピックのサブスクライブ
  • メッセージのパブリッシュ
  • メッセージの受信と表示

MQTTX

MQTTXはEMQがオープンソースで提供する洗練されたクロスプラットフォーム対応のMQTT 5.0検証ツールです。以下の3種類のツールを含みます。

  • MQTTX Client
  • MQTTX CLI
  • MQTT Web

MQTTX Desktop

MQTTX Desktopはクロスプラットフォーム対応のMQTTデスクトップクライアントツールです。使いやすいグラフィカルインターフェースを提供し、ユーザーが迅速にMQTT接続を作成し、MQTTメッセージのパブリッシュ/サブスクライブをテストできます。

テスト前にMQTTX Clientをダウンロードしてインストールしてください。

  1. ご利用のOSに応じて、アプリケーションストアまたはMQTTX公式サイトからインストールパッケージをダウンロードします。
  2. MQTTX Clientをインストールします。詳細はMQTTX - インストールを参照してください。

以下の手順でMQTTXデスクトップクライアントを使った簡単なテストを行います。

  1. MQTTX Clientを起動し、New ConnectionをクリックしてMQTT接続を作成します。

  2. メッセージをパブリッシュするクライアントとして新規接続を設定します。

    Generalセクションでクライアントの一般情報を入力します。

    • Name: 接続名を入力します。
    • Client ID: デフォルトのままで構いません。クライアント接続の一意識別子で、更新ボタンをクリックすると自動生成されます。
    • Host: 利用するプロトコルを選択します。mqtt://またはws://を選択してください。SSL/TLS認証接続を使う場合は、mqtts://またはwss://を選択します。ホストIPアドレスはデフォルトでbroker.emqx.ioに設定されており、公開ブローカーに接続します。自分のEMQXを使う場合は実際のIPに置き換えてください。
    • Port: 選択したプロトコルに対応するポート番号を入力します。
    • UsernamePassword: ブローカーでユーザー認証が有効な場合は入力し、無効なら空欄のままにします。
    • SSL/TLS: SSL/TLS認証接続を使う場合はトグルボタンで有効にします。

    他の設定はデフォルトのままにし、右上のConnectボタンをクリックします。

    新規接続パラメータ入力
  3. 接続成功後、テキストボックスにトピック名testを入力し、スクリーンショットのようにメッセージを作成します。送信ボタンをクリックすると、トピックtestにメッセージが表示されます。

    テストメッセージのパブリッシュ
  4. Connectionsペインの**+** -> New Connectionをクリックし、メッセージを受信するクライアントとして新規接続を作成します。名前をSubscriberに設定し、他の一般接続設定はクライアントDemoと同じにします。

  5. ConnectionsペインでクライアントSubscriberを選択し、+ New Subscriptionをクリックします。

    • Topic: テキストボックスにtestを入力します。
    • QoS: デフォルト値のままにします。
    • Color: サブスクリプションを識別する色を選択できます。

    他のオプションは空欄のままにし、Confirmボタンをクリックします。

    テストトピックのサブスクライブ
  6. ConnectionsペインでクライアントDemoを選択し、トピックtestに新しいメッセージをパブリッシュします。クライアントSubscriberが新しいメッセージを受信していることが確認できます。

    メッセージ受信の確認

これでMQTTX Clientを使った基本的なパブリッシュとサブスクライブの操作を体験できました。詳細かつ高度な操作についてはMQTTX - パブリッシュとサブスクリプションを参照してください。

MQTTX CLI

MQTTX CLIはEMQが提供するオープンソースのMQTT 5.0コマンドラインツールです。グラフィカルインターフェースを必要とせず、コマンドライン上でMQTTサービスやアプリケーションのテスト・デバッグが可能です。

以下の手順でMQTTX CLIを使い、接続、パブリッシュ/サブスクライブ、メッセージ表示を行います。

  1. MQTT CLIをダウンロードしてインストールします。ここではmacOSを例に説明します。他のOSについてはMQTTX CLI - インストールを参照してください。

    bash
    # Homebrew
    brew install emqx/mqttx/mqttx-cli
    # Intelチップ
    curl -LO https://www.emqx.com/zh/downloads/MQTTX/v1.9.0/mqttx-cli-macos-x64
    sudo install ./mqttx-cli-macos-x64 /usr/local/bin/mqttx
    # Apple Silicon
    curl -LO https://www.emqx.com/zh/downloads/MQTTX/v1.9.0/mqttx-cli-macos-arm64
    sudo install ./mqttx-cli-macos-arm64 /usr/local/bin/mqttx
  2. コマンドラインツールで以下のコマンドを実行し、EMQXに接続してtesttopic/#トピックをサブスクライブします。

    shell
    mqttx sub -t 'testtopic/#' -q 1 -h 'localhost' -p 1883 'public' -v

    パラメータの説明:

    • -t: サブスクライブするトピック
    • -q: メッセージのQoS(デフォルト: 0)
    • -h: リスナーのIPアドレス(デフォルト: localhost
    • -p: ブローカーのポート(デフォルト: 1883
    • -v: メッセージの前にトピックを表示

    実行成功後、コマンドラインは受信待機状態になり、メッセージ受信後に内容を表示します。

    さらにパラメータの詳細はMQTTX CLI - サブスクライブを参照してください。

  3. 新しいコマンドラインウィンドウを開き、以下のコマンドを実行してEMQXに接続し、トピックtesttopic/#にメッセージをパブリッシュします。

    bash
    mqttx pub -t 'testtopic/1' -q 1 -h 'localhost' -p 1883 -m 'from MQTTX CLI'

    パラメータ:

    • -t: パブリッシュするトピック
    • -q: メッセージのQoS(デフォルト: 0)
    • -h: リスナーのIPアドレス(デフォルト: localhost
    • -p: ブローカーのポート(デフォルト: 1883
    • -m: メッセージ本文

    実行成功後、コマンドラインは接続を確立しメッセージをパブリッシュし、ブローカーから切断します。ステップ2のコマンドラインウィンドウには以下のメッセージが表示されます。

    bash
    topic:  testtopic/1
    payload:  from MQTTX CLI

    さらにパラメータの詳細はMQTTX CLI - パブリッシュを参照してください。

MQTTX Web

MQTTX WebはブラウザベースのMQTT 5.0 WebSocketクライアントツールです。ツールのダウンロードやインストール不要で、WebSocket経由のMQTT開発やデバッグを完結できます。MQTTX Webでのテスト操作はMQTTX Clientと基本的に同じです。

mqtt-x-web

ダッシュボード WebSocket

EMQX DashboardはWebSocketクライアントを提供しており、手軽かつ効果的なMQTTテストツールとして利用できます。MQTT over WebSocketでEMQXへの接続、トピックのサブスクライブ、メッセージのパブリッシュをテスト可能です。

  1. EMQX Dashboardの左ナビゲーションメニューでDiagnose -> WebSocket Clientをクリックします。

  2. Connectionセクションに接続情報を入力します。

    • Host: 対応するIPアドレスを入力します(デフォルト: localhost)。
    • Port: デフォルトの8083のままにします。
    • UsernamePassword: もしあれば入力し、アクセス制御がなければ空欄のままにします。

    他の設定はデフォルトのままにします。

  3. Connectボタンをクリックして接続を確立します。

  4. Subscriptionセクションでサブスクライブするトピックをtesttopic/#に設定し、Subscribeボタンをクリックしてサブスクライブを完了します。トピックtesttopic/#が下のテーブルに追加されます。

    ダッシュボードWebSocketクライアント

    サブスクライブ後、トピックにマッチするすべてのメッセージがこの接続に転送されます。

  5. Publishセクションでパブリッシュするメッセージのトピックを設定します。

    • Topic: testtopic/1に設定します(ワイルドカード+#はサポートされません)。
    • Payload: {"msg": 'Hello"}に設定します。
    • QoS: デフォルト値の0に設定します。
    • Retain: リテインメッセージに設定したい場合はチェックボックスを選択します。リテインメッセージの詳細はリテインメッセージを参照してください。

    Publishボタンをクリックすると、Publishedセクションに1件のレコードが追加されます。メッセージはすべてのサブスクライバーにルーティングされます。このテストではパブリッシャーも受信者なので、Receivedセクションにも新しいレコードが追加されます。

    ダッシュボードWebSocketクライアント受信