MQTT.fx は、Java で記述された Eclipse Paho ベースの Message Queuing Telemetry Transport(MQTT)クライアントです。MQTT.fx は、Windows、macOS、および Linux オペレーティングシステムをサポートしています。MQTT.fx を使用して、デバイスが IoT プラットフォームに接続できるかどうかを確認できます。MQTT.fx では、トピックを使用してメッセージをサブスクライブおよび公開することもできます。このトピックでは、Windows で MQTT.fx を使用して、シミュレートされたデバイスを MQTT 経由で IoT プラットフォームに接続する方法について説明します。
前提条件
プロダクトとデバイスが作成され、MQTT 接続パラメーターが取得されています。詳細については、「プロダクトとデバイスを作成する」および「認証用の MQTT パラメーターを取得する方法」をご参照ください。
次の表に、この例で使用されるデバイス証明書と MQTT 接続パラメーターを示します。パラメーターの詳細については、「TCP 経由で MQTT 接続を確立する」をご参照ください。
パラメーター
値
ProductKey
a1***
DeviceName
device1
DeviceSecret
f35***d9e
clientId
a1***.device1|securemode=2,signmethod=hmacsha256,timestamp=2524608000000|
username
device1&a1***
passwd
86761***21d
mqttHostUrl
a1***.iot-as-mqtt.cn-shanghai.aliyuncs.com
port
1883
TSL モデルが定義されています。これは、TSL 通信用のトピックを介して、テストデバイスと IoT プラットフォーム間の双方向通信をテストするために使用されます。詳細については、「プロダクトの TSL モデルを定義する」をご参照ください。
次の図は、この例で使用される TSL モデルの定義を示しています。
MQTT.fx はオンラインデバイスをシミュレートするために使用され、パススルー以外のデータの送信をサポートしています。パススルーデータを送信するには、実際のデバイスまたは SDK を使用してテストできます。
MQTT.fx を構成する
MQTT.fx ツールをダウンロードしてインストールします。
この例では、mqttfx-5.2.0-windows-x64 を使用しています。このサードパーティ製ツールは定期的に更新されていません。前のリファレンスリンクの Web サイトから最新のツールをダウンロードすることをお勧めします。
説明MQTT.fx を使用するには、ライセンスを申請する必要があります。
MQTT.fx ツールを起動し、メニューバーの [その他] をクリックして、[接続プロファイルの編集] を選択します。
[接続プロファイルの編集] ページで、パラメーターを構成します。
基本情報を指定します。
パラメーター
説明
プロファイル名
カスタム名を入力します。この例では、「iot connection」と入力します。
プロファイルタイプ
接続モードを指定します。[MQTT ブローカー] を選択します。
ブローカーアドレス
mqttHostUrl パラメーターの値である MQTT エンドポイントを入力します。この値は、「前提条件」セクションで取得しました。この例では、a1***.iot-as-mqtt.cn-shanghai.aliyuncs.com と入力します。
a1*** は ProductKey を示します。
cn-shanghai はリージョン ID を示します。
ポート番号は不要です。
ブローカーポート
ポート番号を入力します。このパラメーターを 1883 に設定します。
クライアント ID
MQTT プロトコルのパラメーターを構成します。
形式:
${ClientId}|securemode=${Mode},signmethod=${SignMethod}|timestamp=${timestamp}|
このトピックの「クライアント ID前提条件」セクションで取得した a1***.device1|securemode=2,signmethod=hmacsha256,timestamp=2524608000000| パラメーターの値を入力します。この例では、 が指定されています。
パラメーターの説明:
${ClientId}: クライアントの ID。例: デバイス、アプリケーション、Web ブラウザー。
重要カスタムクライアント ID を指定する必要があります。クライアント ID は 1 ~ 64 文字の長さでなければなりません。クライアントがデバイスの場合は、このパラメーターをデバイスの MAC アドレスまたはシリアル番号(SN)に設定することをお勧めします。これにより、デバイスを簡単に識別できます。
${Mode}: セキュリティモード。有効な値: 2 および 3。ダイレクト TLS 接続を使用する場合は、securemode=2 を指定します。次に、[SSL/TLS] パラメーターを構成する必要があります。ダイレクト TCP 接続を使用する場合は、securemode=3 を指定します。[SSL/TLS] パラメーターを構成する必要はありません。
${SignMethod}: 署名アルゴリズム。有効な値: hmacmd256、hmacmd5、hmacsha1。
${timestamp}: リクエストのタイムスタンプ。単位: ミリ秒。このパラメーターはオプションです。
IoT プラットフォームによって提供される接続パラメーターでは、${ClientId} パラメーターの値は、
${ProductKey} + '.' + ${DeviceName}
形式の文字列です。${Mode} のデフォルト値は 2 で、${SignMethod} のデフォルト値は hmacsha256 です。ビジネス要件に基づいてパラメーターを構成できます。重要MQTT.fx ツールの [クライアント ID] パラメーターとデバイスの ${ClientId} パラメーターを混同しないでください。
パラメーター間およびパラメーターの末尾にある縦棒(|)を省略しないでください。
パラメーターを構成する際は、パラメーター値からすべてのスペースを削除してください。
[クライアント ID] パラメーターを指定した後、[生成] をクリックしないでください。
全般
この例では、パラメーターのデフォルト値が使用されています。ビジネス要件に基づいてパラメーターを構成できます。
[ユーザー資格情報] をクリックします。表示されるタブで、[ユーザー名/パスワードを使用する] を選択し、[ユーザー名] と [パスワード] を入力します。
パラメーター
説明
ユーザー名
ユーザー名は、DeviceName、アンパサンド(&)、および ProductKey で構成されます。形式:
${DeviceName}&${ProductKey}
このトピックの「ユーザー名前提条件」セクションで取得した device1&a1*** パラメーターの値を入力します。この例では、 が指定されています。
device1
は、デバイスの DeviceName を示します。a1***
は、デバイスの ProductKey を示します。
パスワード
パスワードを生成するには、署名アルゴリズムを選択し、デバイスの DeviceSecret を秘密キーとして使用し、必要なパラメーターとその値を連結する必要があります。
このトピックの「パスワード前提条件」セクションで取得した 86761***21d パラメーターの値を入力します。この例では、 が指定されています。
重要MQTT.fx ツールには、マスクされたパスワードが表示される場合があります。パスワードがすでに貼り付けられている場合、ポインターはパスワードの末尾に移動します。この場合、パスワードを再度貼り付ける必要はありません。
パラメーター名と値の文字の大文字と小文字が正しいことを確認してください。
${clientId} パラメーターと ${SignMethod} パラメーターは、[クライアント ID] パラメーターを構成する際に変更できます。この場合、指定した署名アルゴリズムが [クライアント ID] の対応するパラメーターの値と同じであることを確認してください。その後、パスワードを再計算します。パラメーターと計算方法の詳細については、「Node.js スクリプトを使用する」をご参照ください。
TLS 接続(securemode=2)を使用する場合は、[SSL/TLS] タブをクリックし、[SSL/TLS を有効にする] を選択して、[プロトコル] パラメーターを [tlsv1.2] に設定します。
重要TCP 接続(
securemode=3
)を使用する場合は、[SSL/TLS] タブのデフォルト設定を使用し、次の手順に進みます。
右下隅の [OK] をクリックします。
[接続] をクリックします。
右側のインジケーターが緑色に変わると、接続が確立されます。
デバイスのステータスを表示するには、次の手順を実行します。IoT プラットフォームコンソール にログインします。デバイスが属するインスタンスのインスタンス詳細ページに移動します。 左側のナビゲーションウィンドウで、 を選択します。[デバイスリスト] タブで、デバイスを見つけてデバイスステータスを表示します。デバイスが IoT プラットフォームに接続されている場合、デバイスは [オンライン] 状態になります。
以下のセクションでは、MQTT.fx クライアントが IoT プラットフォームに接続されているかどうかを確認するために、カスタムトピックと TSL 通信用のトピックを使用して、ダウンストリームメッセージングとアップストリームメッセージングをテストします。テスト結果が次のサンプル結果と異なる場合は、接続が確立されていません。ログに基づいて設定を変更する必要があります。
カスタムトピックを使用する
カスタムトピックの詳細については、「カスタムトピックを使用して通信する」をご参照ください。この例では、IoT プラットフォームによって提供されるデフォルトのカスタムトピックが使用されます。
トピック | 権限 | 説明 |
| 公開 | アップストリームメッセージング: デバイスは、トピックを介して IoT プラットフォームにメッセージを送信します。 |
| サブスクライブ | ダウンストリームメッセージング: デバイスはトピックをサブスクライブし、IoT プラットフォームから送信されたメッセージを受信します。 |
アップストリームメッセージング
MQTT.fx で、[公開] をクリックします。[公開] フィールドに、公開 権限を持つトピックのパス(
/a1***/device1/user/update/error
)を入力します。エディターで、公開するメッセージを入力し、[公開] をクリックします。
デバイスログIoT プラットフォームコンソール の クラウドツーデバイスメッセージIoT プラットフォームログをクエリする ページに移動し、ワークロードタイプが であるログを表示します。詳細については、「」をご参照ください。
ダウンストリームメッセージング
MQTT.fx で、[サブスクライブ] をクリックします。[サブスクライブ] フィールドに、サブスクライブ 権限を持つトピックのパス(
/a1***/device1/user/get
)を入力します。[サブスクライブ] をクリックします。
サブスクリプションが成功すると、[サブスクライブ] タブにカスタムトピックが表示されます。
デバイスのステータスを表示するには、次の手順を実行します。IoT プラットフォームコンソール にログインします。デバイスが属するインスタンスのインスタンス詳細ページに移動します。左側のナビゲーションウィンドウで、 を選択します。
[デバイスリスト] タブで、デバイスに対応する [操作] 列の [表示] をクリックします。[デバイスの詳細] ページが表示されます。
[トピックリスト] タブで、トピックを見つけて、[操作] 列の [メッセージの公開] をクリックします。
表示されるダイアログボックスに、これはテストです。 などのメッセージを入力し、[OK] をクリックします。
MQTT.fx ツールで、メッセージが受信されたかどうかを確認します。
TSL 通信用のトピックを使用する
TSL 通信用トピックの詳細については、「トピック」をご参照ください。
トピック | 権限 | 説明 |
| 公開 | アップストリームメッセージング: デバイスは、トピックを介してプロパティデータを IoT プラットフォームに送信します。 |
| サブスクライブ | ダウンストリームメッセージング: デバイスはトピックをサブスクライブし、IoT プラットフォームから送信されたプロパティデータを受信します。 |
| サブスクライブ | ダウンストリームメッセージング: デバイスはトピックをサブスクライブし、IoT プラットフォームから送信されたメッセージを受信します。 |
デバイスプロパティを送信する
MQTT.fx で、[サブスクライブ] をクリックします。[サブスクライブ] フィールドに、サブスクライブ 権限を持つトピックのパス(
/sys/a1****/device1/thing/event/property/post_reply
)を入力します。MQTT.fx で、[公開] をクリックします。[公開] フィールドに、公開 権限を持つトピックのパス(
/sys/a1****/device1/thing/event/property/post
)を入力します。エディターで、公開するプロパティデータを入力し、[公開] をクリックします。
公開されるプロパティデータは、Alink JSON 形式である必要があります。詳細については、「デバイスがプロパティデータを IoT プラットフォームに送信する」をご参照ください。この例では、LightCurrent プロパティと LightSwitch プロパティのデータが公開されます。
デバイスのステータスを表示するには、次の手順を実行します。IoT プラットフォームコンソール にログインします。デバイスが属するインスタンスのインスタンス詳細ページに移動します。左側のナビゲーションウィンドウで、 を選択します。
[操作] 列の [表示] をクリックして、[デバイスの詳細] ページに移動します。[TSL データ] タブをクリックして、データを表示します。
デバイスプロパティを設定する
MQTT.fx で、[サブスクライブ] をクリックします。[サブスクライブ] フィールドに、サブスクライブ 権限を持つトピックのパス(
/sys/a1****/device1/thing/service/property/set
)を入力します。デバイスのステータスを表示するには、次の手順を実行します。IoT プラットフォームコンソール にログインします。デバイスが属するインスタンスのインスタンス詳細ページに移動します。左側のナビゲーションウィンドウで、 を選択します。
表示されるページで、デバッグするデバイスを選択します。[プロパティデバッグ] タブで、LightSwitch を [0] に設定します。
[設定] をクリックして、コマンドを送信します。
MQTT.fx ツールで、[サブスクライブ] タブをクリックして、デバイスが受信したメッセージを表示します。
ログを表示する
IoT プラットフォームコンソール の [デバイスログ] ページに移動し、ログの情報(時間、トレース ID、ワークロードタイプなど)を表示します。詳細については、「IoT プラットフォームログをクエリする」をご参照ください。
MQTT.fx ツールで、[ログ] タブをクリックします。表示されるタブで、操作ログとエラーログを表示します。