MQTT.fx は、Eclipse Paho をベースに構築された Java ベースの MQTT クライアントであり、Windows、Mac、Linux をサポートしています。MQTT.fx を使用して、IoT Platform とのデバイス接続性を検証し、トピックをサブスクライブし、メッセージを公開できます。このトピックでは、Windows 上の MQTT.fx を使用して、IoT Platform への MQTT デバイス接続をシミュレートします。
前提条件
- プロダクトとデバイスを作成し、MQTT 接続パラメーターを取得します。プロダクトとデバイスの作成、MQTT 署名パラメーターの値の取得。
この例では、「MQTT-TLS 接続」で説明されているように、次の表のデバイス証明書と MQTT 接続パラメーターを使用します。
パラメーター 値 ProductKey a1***DeviceName device1DeviceSecret f35***d9eclientId a1***.device1|securemode=2,signmethod=hmacsha256,timestamp=2524608000000|username device1&a1***passwd 86761***21dmqttHostUrl a1***.iot-as-mqtt.cn-shanghai.aliyuncs.comport 1883 - アップリンクおよびダウンリンク通信をテストするために、TSL モデルのプロパティを定義します。プロダクトの TSL モデルの定義。この例では、次の図に示す TSL モデルを定義します:

MQTT.fx 接続の設定
- MQTT.fx をダウンロードしてインストールします。
このトピックでは、mqttfx-5.2.0-windows-x64 を例として使用します。実際の UI はスクリーンショットと異なる場合があります。説明 必要に応じて、MQTT.fx ツールのライセンスをリクエストしてください。
- MQTT.fx を開きます。メニューバーで [Extras] をクリックし、[Edit Connection Profiles] を選択します。

- [Edit Connection Profiles] ページで、次のパラメーターを設定します。
- 基本情報を設定します。
パラメーター 説明 Profile Name カスタム名 (例: iot connection) を入力します。 Profile Type ApsaraMQ for MQTT クライアント接続の場合は、[MQTT Broker] を選択します。 Broker Address MQTT 接続ドメインです。 セクションの 前提条件a1***.iot-as-mqtt.cn-shanghai.aliyuncs.com - a1*** はプロダクトの ProductKey です。
- cn-shanghai はリージョンです。
ポート番号を含めないでください。
ブローカーポート 1883 に設定します。 クライアント ID MQTT のプロトコルフィールドです。 固定フォーマット:
${ClientId}|securemode=${Mode},signmethod=${SignMethod}|timestamp=${timestamp}|。「前提条件」セクションで取得した clientId の値を入力します:a1***.device1|securemode=2,signmethod=hmacsha256,timestamp=2524608000000|。
パラメーターの説明:
- ${ClientId}:デバイス、アプリ、または Web クライアントのクライアント ID です。重要 この値はカスタムで、長さは 64 文字以内である必要があります。デバイスの場合は、その MAC アドレスまたはシリアル番号 (SN) を使用します。これにより、異なるデバイスを識別できます。
- ${Mode}:セキュリティモードです。有効な値は 2 (TLS 直接接続モード。SSL/TLS 設定が必要です) と 3 (TCP 直接接続モード。SSL/TLS 設定は不要です) です。
- ${SignMethod}:アルゴリズムタイプです。サポートされている値は hmacsha256、hmacmd5、hmacsha1 です。
- ${timestamp}:現在時刻 (ミリ秒) です。timestamp は空にすることができます。
IoT Platform が提供する接続パラメーターでは、${ClientId} のデフォルトは
${ProductKey} + '.' + ${DeviceName}で構成される文字列、${Mode} のデフォルトは 2、${SignMethod} のデフォルトは hmacsha256 です。必要に応じて変更できます。重要- MQTT.fx の [Client ID] とデバイスの ${ClientId} を混同しないでください。
- パラメーター間または文字列の末尾にある縦棒 (|) を省略しないでください。
- パラメーターを設定する際は、パラメーター値の中または前後にスペースが含まれていないことを確認してください。
- [Client ID] を入力した後、[生成] をクリックしないでください。
一般 デフォルト値を使用します。要件に合わせて調整してください。 - [ユーザー認証情報] をクリックし、[ユーザー名/パスワードを使用] チェックボックスを選択して、[ユーザー名] と [パスワード] を設定します。
パラメーター 説明 ユーザー名 フォーマット: ${DeviceName}&${ProductKey}。[前提条件] セクションで取得した ユーザー名 の値を入力します: device1&a1***。
device1はデバイスの DeviceName です。a1***はデバイスの ProductKey です。
パスワード DeviceSecret と選択した署名メソッドを使用して連結されたパラメーターを暗号化することで生成されます。 前提条件セクションで取得した passwd の値を入力します: 86761***21d。
重要- 一部の MQTT.fx バージョンでは、パスワード文字列を貼り付けても表示されません。カーソルがテキストボックスの末尾に移動した場合、貼り付けは成功しています。パスワードを再度貼り付けないでください。
- パラメーターとその値では、大文字と小文字が区別されます。
- Client ID:Client ID の設定で ${ClientId} または ${SignMethod} を変更した場合は、パスワードを再計算する必要があります。新しいパスワードが、更新されたパラメーターと一致する値を使用していることを確認してください。パラメーター設定と計算方法の詳細については、「Node.js スクリプトを使用したパスワードの計算」をご参照ください。
- TLS 直接接続モード (securemode=2) の場合は、[SSL/TLS] をクリックし、[SSL/TLS を有効にする] チェックボックスを選択して、[プロトコル] を [TLSv1.2] に設定します。
重要 注:TCP 直接接続モード (
securemode=3) の場合、SSL/TLS 設定は不要です。次のステップに進んでください。
- 基本情報を設定します。
- 構成が完了したら、右下隅の[OK]をクリックします。
- [接続] をクリックします。
右側の緑色のライトは、接続が成功したことを示します。
IoT Platform コンソールの、対応するインスタンスで、 を選択します。プロダクトを選択してデバイスのステータスを確認します。デバイスのステータスは [オンライン] になっているはずです。
以降のセクションでは、カスタムトピックと TSL モデルトピックを使用して上り/下り通信をテストする方法について説明します。この例と結果が異なる場合、接続に失敗しています。ログ情報に基づいて構成を修正してください。
カスタムトピックを使用した通信
| トピック | 権限 | 説明 |
/a1***/device1/user/update/error |
パブリッシュ | アップリンク:デバイスが IoT Platform にメッセージをパブリッシュします。 |
/a1***/device1/user/get |
サブスクライブ | ダウンリンク:デバイスが IoT Platform からのメッセージを受信するためにサブスクライブします。 |
アップリンク通信
- MQTT.fx で、[Publish] をクリックします。[Publish] テキストボックスに、パブリッシュ権限を持つトピック
/a1***/device1/user/update/errorを入力します。 - テキストエディターペインにメッセージ本文を入力し、[Publish] をクリックします。

- IoT Platform コンソールにログインします。インスタンスの [Simple Log Service] ページで、[デバイスからクラウドへのメッセージ] ログを表示します。IoT プラットフォームログの照会。

ダウンリンク通信
- MQTT.fx で、[Subscribe] をクリックします。[Subscribe] テキストボックスに、サブスクライブ権限を持つトピック
/a1***/device1/user/getを入力します。 - [Subscribe] をクリックします。
サブスクリプションが成功すると、トピックがリストに表示されます。
- IoT Platform コンソールにログインします。インスタンスで、 を選択します。
- デバイスの [操作] 列で、[表示] をクリックして [デバイス詳細] ページに移動します。
- [トピックリスト] タブをクリックします。サブスクライブしたトピックの [操作] 列で、[メッセージを公開] をクリックします。
- メッセージ本文 (例:This is a test.) を入力し、[OK] をクリックします。
- MQTT.fx に戻り、受信したメッセージを表示します。

TSL モデルの Topic を使用した通信
| Topic | 権限 | 説明 |
/sys/a1****/device1/thing/event/property/post |
公開 | アップリンク:デバイスはプロパティデータを IoT Platform にレポートします。 |
/sys/a1****/device1/thing/event/property/post_reply |
サブスクライブ | ダウンリンク:デバイスは IoT Platform からのプロパティレポートの応答を受信するためにサブスクライブします。 |
/sys/a1****/device1/thing/service/property/set |
サブスクライブ | ダウンリンク:デバイスは IoT Platform からのプロパティ設定コマンドを受信するためにサブスクライブします。 |
デバイスプロパティのレポート
- MQTT.fx で、[サブスクライブ] をクリックします。[サブスクライブ] テキストボックスに、[サブスクライブ] 権限を持つ Topic を入力します:
/sys/a1****/device1/thing/event/property/post_reply。 - MQTT.fx で、[パブリッシュ] をクリックします。[パブリッシュ] テキストボックスに、[パブリッシュ] 権限を持つ Topic を入力します:
/sys/a1****/device1/thing/event/property/post。 - テキストエディターペインで、レポートするプロパティデータを入力し、[パブリッシュ] をクリックします。
レポートされるプロパティデータは、「デバイスプロパティのレポート」で説明されているように、標準の Alink JSON フォーマットを使用する必要があります。この例では、LightCurrent プロパティと LightSwitch プロパティのデータをレポートします。

- IoT Platform コンソールにログインします。インスタンスで、を選択します。
- デバイスの [操作] 列で [表示] をクリックします。[デバイス詳細] ページで、[TSL モデルデータ] をクリックしてデバイスデータを表示します。
デバイスプロパティの設定
- MQTT.fx で、[サブスクライブ] をクリックします。[サブスクライブ] テキストボックスに、[サブスクライブ] 権限を持つ Topic を入力します:
/sys/a1****/device1/thing/service/property/set。 - IoT Platform コンソールにログインします。インスタンスで、を選択します。
- デバッグするデバイスを選択します。[プロパティのデバッグ] タブで、メインライトスイッチを [オフ-0] に設定します。
- [設定] をクリックして命令を送信します。
- MQTT.fx の [サブスクライブ] タブで、デバイスが受信したメッセージを表示します。

ログの表示
- IoT Platform コンソールにログインします。インスタンスの Simple Log Service ページで、時間、TraceID、ビジネスタイプなどの運用ログを確認します。詳細については、IoT プラットフォームログのクエリをご参照ください。
- MQTT.fx で、[ログ] をクリックして操作ログとエラーログを表示します。

