このトピックでは、Windows で MQTT.fx を使用して、シミュレートされた Message Queuing Telemetry Transport(MQTT)ゲートウェイデバイスを IoT Platform に接続する方法について説明します。また、トピックを使用してデバイスデータを送信する方法についても説明します。
前提条件
IoT Platform Enterprise Edition インスタンスが購入済みであること。 この例では、中国 (上海) リージョンで Exclusive Enterprise Edition インスタンスが購入されています。
MQTT.fx ツールがダウンロードおよびインストールされていること。
この例では、mqttfx-5.2.0-windows-x64 を使用しています。このサードパーティツールは定期的に更新されません。上記の参照リンクにある Web サイトから最新のツールをダウンロードすることをお勧めします。
カスタム証明書が利用可能であること。
この例では、カスタム証明書には
root-ca.crtという名前のルート証明書ファイル、server.keyという名前のサーバー側の秘密鍵ファイル、およびserver.crtという名前のサーバー側の証明書ファイルが含まれています。OpenSSL を使用してカスタム証明書を生成できます。証明書の生成方法の詳細については、「カスタム証明書を生成する」をご参照ください。
背景情報
MQTT.fx は、Java で記述された Eclipse Paho ベースの MQTT クライアントです。MQTT.fx は、Windows、macOS、および Linux オペレーティングシステムをサポートしています。MQTT.fx を使用して、デバイスが IoT Platform に接続できるかどうかを確認できます。また、MQTT.fx を使用すると、デバイスはトピックを使用して IoT Platform と通信できます。
MQTT ゲートウェイを使用すると、デバイスは認証に一方検証またはサードパーティ検証を使用できます。デバイスは、カスタム証明書、サーバー側検証、またはカスタムトピックを使用したメッセージングを使用して検証に合格できます。このようにして、デバイスは IoT Platform に接続して通信できます。
MQTT ゲートウェイとデバイス間の検証と通信の詳細については、「MQTT ゲートウェイ」をご参照ください。
MQTT.fx を使用してデバイスを接続する (一方検証)
手順 1: ゲートウェイとデバイスを作成する
MQTT ゲートウェイを作成する:
server.keyファイルの内容を [サーバー証明書の秘密キー] パラメーターに指定し、server.crtファイルの内容を [サーバー証明書] パラメーターに指定しますゲートウェイページで、作成したゲートウェイを見つけ、[ゲートウェイ URL] 列の値をコピーして保存します。

複数のデバイスを追加する: この例では、デバイスが 1 つ追加されます。MQTT ユーザー名は
device_01、MQTT パスワードはhello123です。
手順 2: MQTT.fx を使用してデバイスを接続する
MQTT.fx を起動し、メニューバーの [その他] をクリックし、[接続プロファイルの編集] を選択します。
[接続プロファイルの編集] ページで、パラメーターを設定します。
次の表の基本情報を指定します。表にないパラメーターにはデフォルト値を使用します。
パラメーター
説明
プロファイル名
カスタム名を入力します。
プロファイルタイプ
接続モードを指定します。 MQTT ブローカー を選択します。
ブローカーアドレス
MQTT エンドポイントを入力します。これは、ゲートウェイの作成時に取得した [ゲートウェイ URL] パラメーターの値です。
ブローカーポート
ポート番号を入力します。デフォルト値は
1883です。クライアント ID
オプション。デバイスの ID。ID は 1 ~ 64 文字の長さでなければなりません。デバイスの MAC アドレスまたはシリアル番号 (SN) を ID として使用することをお勧めします。
ユーザー資格情報ユーザー名/パスワードを使用ユーザー名パスワード をクリックします。表示されるタブで、 を選択し、 と を入力します。
この例では、ユーザー名 パラメーターはデバイスの MQTT ユーザー名 に設定され、パスワード パラメーターはデバイスの MQTT パスワード に設定されます。
[TLS/SSL] をクリックし、[SSL/TLS を有効にする] を選択して、[プロトコル] パラメーターを [TLSv1.2] に設定します。
[CA 証明書ファイル] を選択し、
root-ca.crtファイルのパスを選択します。
右下隅の [OK] をクリックします。
接続する をクリックします。
右側のインジケーターが緑色に変わると、接続が確立されます。IoT Platform コンソールで、管理するインスタンスをクリックして、インスタンスの詳細ページに移動します。 [デバイス] > [デバイス] を選択します。[デバイスリスト] タブで、
device_01のステータスは [オンライン] になります。
MQTT.fx を使用してデバイスを接続する (サードパーティ検証)
手順 1: デバイスを検証するために Function Compute で関数を作成する
上部のナビゲーションバーで、リージョンを選択します。[サービス] ページで、[サービスの作成] をクリックします。
[サービスの作成] パネルで、[サービス名] を入力します。例: IoT_Service。次に、[OK] をクリックします。
[関数] ページで、[関数の作成] をクリックします。
[関数の作成] ページで、パラメーターを設定し、[作成] をクリックします。次の図を参照してください。

[関数の詳細] ページで、既存のサンプルコードを次のコードに置き換え、[デプロイ] をクリックします。
検証関数は、MQTT ユーザー名 パラメーターの値を deviceName パラメーターの値として返します。
# -*- coding: utf-8 -*- import logging import json import time import enum import random import string class Request: def __init__(self, json_str): self.clientId = None self.username = None self.password = None self.certificateCommonName = None for key, value in json.loads(json_str).items(): setattr(self, key, value) class Response: def __init__(self): self.deviceName = None self.result = 'true' self.message = 'success' def handler(self, request): # ビジネス要件に基づいて、MQTT ユーザー名と MQTT パスワードパラメーターの有効性を検証します。 self.deviceName = request.username return json.dumps(self.__dict__) def handler(event, context): request = Request(event) return Response().handler(request)
手順 2: ゲートウェイを作成する
MQTT ゲートウェイを作成する:
server.keyファイルの内容を [サーバー証明書の秘密キー] パラメーターに指定し、server.crtファイルの内容を [サーバー証明書] パラメーターに指定します。 デバイス検証済み FC サービス パラメーターには IoT_Service を選択し、デバイス検証済み FC 関数パラメーターには three_part_auth を選択します。ゲートウェイページで、作成したゲートウェイを見つけ、ゲートウェイ URL 列の URL をコピーして保存します。

手順 3: MQTT.fx を使用してデバイスを接続する
MQTT.fx を起動し、メニューバーの [その他] をクリックし、[接続プロファイルの編集] を選択します。
[接続プロファイルの編集] ページで、パラメーターを設定します。次の表でパラメーターについて説明します。
次の表の基本情報を指定します。表にないパラメーターにはデフォルト値を使用します。
パラメーター
説明
プロファイル名
カスタム名を入力します。
プロファイルタイプ
接続モードを指定します。 MQTT ブローカー を選択します。
ブローカーアドレス
MQTT エンドポイントを入力します。これは、ゲートウェイの作成時に取得した [ゲートウェイ URL] パラメーターの値です。
ブローカーポート
ポート番号を入力します。デフォルト値は
1883です。クライアント ID
オプション。デバイスの ID。ID は 1 ~ 64 文字の長さでなければなりません。デバイスの MAC アドレスまたは SN を ID として使用することをお勧めします。
ユーザー資格情報ユーザー名/パスワードを使用ユーザー名パスワードユーザー名
threeParty_device_001をクリックします。表示されるタブで、 を選択し、 パラメーターと パラメーターを設定します。この例では、 パラメーターは に設定されています。説明ユーザー名ユーザー名 パラメーターの値は 4 ~ 32 文字の長さでなければならず、文字、数字、ハイフン (-)、アンダースコア (_)、アットマーク (@)、ピリオド (.)、およびコロン (:) を含めることができます。 パラメーターの値は、プロダクトのすべてのデバイス間で一意である必要があります。
パスワード パラメーターの値は 1 ~ 32 文字で、英字、数字、ハイフン(-)、アンダースコア(_)、アットマーク(@)、ピリオド(.)、およびコロン(:)を含めることができます。
[TLS/SSL] をクリックし、[SSL/TLS を有効にする] を選択して、[プロトコル] パラメーターを [TLSv1.2] に設定します。
CA 証明書ファイル
root-ca.crt
を選択し、 ファイルのパスを選択します。
右下隅の [OK] をクリックします。
接続する をクリックします。
右側のインジケーターが緑色に変わると、接続が確立されます。Function Compute の検証関数は、[deviceName] パラメーターの値として
threeParty_device_001を返します。threeParty_device_001は、IoT Platform コンソールで自動的に作成されるデバイスの DeviceName として使用されます。 [デバイス] > [デバイス] を選択して、デバイスのステータスを表示できます。この例では、デバイスのステータスは [オンライン] です。
カスタムトピックを使用してデバイスデータを送信する
テキストエディターで、公開するメッセージを入力し、[公開] をクリックします。
IoT Platform コンソール にログインします。管理するインスタンスを見つけ、[インスタンスの詳細] ページに移動し、[メンテナンス] > [デバイスログ] を選択します。[デバイスログ] ページで、タイプが [デバイスからクラウドへのメッセージ] のログを表示します。詳細については、「IoT プラットフォームログのクエリ」をご参照ください。
