トピックは、パブリッシュ/サブスクライブモデルにおける仲介メッセージブローカーです。デバイスは、トピックを使用してメッセージを送受信し、IoT Platform と通信できます。IoT Platform は、権限付与を簡素化し、デバイスとの通信を可能にするために、トピックカテゴリとトピックを提供します。このトピックでは、トピックを定義、使用、および分類する方法について説明します。
トピックカテゴリ
トピックカテゴリは、プロダクトの側面から定義されます。各トピックカテゴリは、同じプロダクト内の異なるデバイスのトピックのセットを示します。プロダクトに対して複数のトピックカテゴリを定義できます。トピックカテゴリは、プロダクト内のすべてのデバイスに有効です。
以下の項目では、トピックカテゴリの使用方法について説明します。
トピックカテゴリの特徴を定義します。
トピックカテゴリは複数のフィールドで構成されます。フィールドはスラッシュ (/) で区切ります。例:
/${productKey}/${deviceName}/user/update。${productKey} フィールドと ${deviceName} フィールドは固定です。接尾辞と接頭辞のフィールドは、異なる目的のメッセージを識別するために使用されます。
${productKey}: プロダクトの ProductKey です。
変数は実際の ProductKey に置き換える必要があります。
${deviceName}: デバイスの DeviceName です。
トピックカテゴリでは、${deviceName} はプロダクト内のすべてのデバイスを示す変数です。変数を実際の DeviceName に置き換える必要はありません。
トピックカテゴリの権限を定義します。
[パブリッシュ]: プロダクトのデバイスは、トピックカテゴリのトピックにメッセージをパブリッシュできます。
[サブスクライブ]: プロダクトのデバイスは、トピックカテゴリのトピックをサブスクライブしてメッセージを受信できます。
[パブリッシュとサブスクライブ]: デバイスは、対応するトピックにメッセージをパブリッシュしたり、対応するトピックからメッセージを受信したりできます。
トピックを定義する
トピックカテゴリの ${productKey}/${deviceName} は、一意のデバイスを指定します。デバイスのトピックは、2 つの変数が実際の値に置き換えられた後に生成されます。
トピックの形式はトピックカテゴリと同じです。トピックとトピックカテゴリの違いは、トピックカテゴリの ${deviceName} 変数がトピックの実際の DeviceName に置き換えられることです。
次の例は、a19mzPZ*** プロダクトの device1 デバイスと device2 デバイスのトピックを示しています。
/a19mzPZ****/device1/user/update/a19mzPZ****/device2/user/update
トピックカテゴリの特徴と権限は、特定のトピックにマッピングされます。以下の項目では、トピックの使用方法について説明します。
トピックはメッセージ通信に使用されます。
重要アップストリームおよびダウンストリームメッセージングをデバッグする場合は、指定したトピックに必要な権限があることを確認してください。
トピックは、指定されたデバイスのみが使用できます。
たとえば、
/a19mzPZ****/device1/user/updateトピックは、Device 1 という名前のデバイスに属しています。Device 1 のみが、サブスクライブされたトピックにメッセージをパブリッシュしたり、サブスクライブされたトピックからメッセージを受信したりできます。他のデバイスはトピックを使用できません。デバイスのメッセージングを管理します。
デバイスのステータスを表示するには、次の手順を実行します。IoT Platform コンソール にログインし、[デバイス] ページでデバイスを無効にします。また、サーバーで DisableThing オペレーションを呼び出して、デバイスを無効にすることもできます。デバイスを無効にしたくない場合は、デバイスに送信されるメッセージを管理できます。
トピックを生成する
次の図は、トピックが生成される方法を示しています。

IoT Platform コンソール にログインし、プロダクトを作成します。詳細については、「プロダクトを作成する」をご参照ください。
プロダクトを作成すると、IoT Platform は、[基本通信用トピック]、[TSL 通信用トピック]、[カスタムトピック] など、プロダクトのトピックカテゴリを事前に定義します。
[プロダクトの詳細] ページで、[トピックカテゴリ] タブをクリックして、トピックカテゴリを表示します。詳細については、「トピックを分類する」をご参照ください。[トピックカテゴリ] タブで、[トピックカテゴリ] をクリックします。[トピックカテゴリ] タブで、[トピックカテゴリの編集] をクリックし、パラメータを構成してから、[OK] をクリックして、プロダクトのカスタムトピックカテゴリを作成します。詳細については、「カスタムトピックを通信に使用する」をご参照ください。
プロダクトにデバイスを追加します。詳細については、「デバイスを追加する」をご参照ください。
デバイスが追加されると、プロダクトのすべてのトピックカテゴリがデバイスに自動的にマッピングされ、特定のトピックが生成されます。トピックカテゴリの特徴と権限も、特定のトピックにマッピングされます。デバイスごとにトピックを作成する必要はありません。
重要トピックは、デバイスを構成して IoT Platform に接続した後にのみ、[デバイスの詳細] ページの [トピックリスト] タブに表示されます。次のいずれかの方法を使用して、デバイスが [サブスクライブ] 権限を持っているトピックをサブスクライブし、[トピックリスト] タブでトピックを表示できます。
デバイスシミュレーションを使用する: デバイスがオンラインになると、IoT Platform は、デバイスでサブスクライブ権限を持つ基本通信用トピックと TSL (Thing Specification Language) 通信用トピックを自動的にサブスクライブします。また、[デバイスシミュレーション] ページのカスタムトピックの [アップストリームデバッグ] 機能を使用して、カスタムトピックをサブスクライブすることもできます。
MQTT.fx を使用してデバイスをシミュレートし、デバイスを IoT Platform に接続する: デバイスがオンラインになると、[サブスクライブ] 機能を使用してトピックをサブスクライブできます。
Link SDK を開発してデバイスを IoT Platform に接続し、デバイスをアクティブ化してから、トピックをサブスクライブします。詳細については、手順 3 をご参照ください。
SubscribeTopic: 構成済みまたはシミュレートされたデバイスを IoT Platform に接続し、デバイスが想定どおりにオンラインになったら、このオペレーションを呼び出してデバイスのトピックをサブスクライブできます。
アップストリームおよびダウンストリームメッセージングをデバッグする場合は、指定したトピックに必要な権限があることを確認してください。
[プロダクトの詳細] ページの [トピックカテゴリ] タブで、各トピックの [許可される操作] パラメータを表示できます。
デバイスを構成し、デバイスを IoT Platform に接続します。
デバイスが IoT Platform と通信し、IoT Platform の複数の機能を使用するには、デバイスが関連するトピックをサブスクライブする必要があります。また、パブリッシュ権限を持つトピックにメッセージをパブリッシュするロジックも指定する必要があります。デバイスの構成方法の詳細については、「Link SDK ドキュメント」をご参照ください。
デバイスは、SUB コマンドを送信して、指定したトピックをサブスクライブし、IoT Platform からメッセージを取得できます。デバイスの構成方法の詳細については、「Link SDK ドキュメント」をご参照ください。
IoT Platform によって提供される C バージョン 3.1、3.2、および 4.x 用の Link SDK は、自動トピックサブスクリプションをサポートしています。サポートされているトピックの詳細については、「自動トピックサブスクリプション」をご参照ください。
重要デバイスは、
/sys/${productKey}/${deviceName}/thing/service/property/setなど、IoT Platform で事前に定義されているシステムトピックをサブスクライブできます。デバイスは、/sys/${productKey}/${deviceName}/#式を使用して、名前が/sys/${productKey}/${deviceName}で始まるシステムトピックをサブスクライブすることはできません。デバイスは、パブリッシュ権限を持つトピックに PUB コマンドを送信することで、IoT Platform にメッセージを送信できます。デバイスの構成方法の詳細については、「Link SDK ドキュメント」をご参照ください。
デバイスを確認し、デバイスを IoT Platform に接続します。詳細については、「デバイスを確認する」をご参照ください。
デバイスが SUB コマンドを送信してトピックをサブスクライブしたら、次の手順を実行してトピックを表示します。IoT Platform コンソール にログインし、 を選択し、デバイスを見つけて、[操作] 列の [表示] をクリックします。[デバイスの詳細] ページで、[トピックリスト] をクリックします。表示されるタブの [サブスクライブ済みトピック] セクションに、すべてのサブスクライブ済みトピックが表示されます。
説明デバイスは、UNSUB コマンドを送信して、指定したトピックのサブスクリプションを解除できます。その後、トピックは [サブスクライブ済みトピック] セクションから削除されます。
トピックを通信に使用する
次の図は、デバイスが IoT Platform に接続された後の通信プロセスを示しています。

通信モード | 説明 |
デバイスから IoT Platform にメッセージを送信する | デバイスは、パブリッシュ権限を持つトピックを使用して、IoT Platform にメッセージを送信します。詳細については、「デバイスが IoT Platform にデータを送信する」をご参照ください。 トピックのデータ形式については、「Alink プロトコル」をご参照ください。 |
IoT Platform からエンタープライズサーバーにデータを転送する | IoT Platform は、デバイスメッセージをエンタープライズサーバーに転送します。詳細については、「AMQP サーバー側サブスクリプションを構成する」および「MNS サーバー側サブスクリプションを構成する」をご参照ください。 ルールエンジンのデータ転送機能によって提供されるデータ転送ルールを構成して、デバイスデータを複数の Alibaba Cloud サービスに転送できます。サービスには、Message Service (MNS)、ApsaraDB RDS、Tablestore (OTS)、Function Compute、Lindorm、Message Queue for Apache RocketMQ が含まれます。 詳細については、「データ転送 (旧バージョン)」および「データ転送 (新バージョン)」をご参照ください。 詳細については、「IoT Platform がエンタープライズサーバーにデータを転送する」をご参照ください。 トピックのデータ形式については、「データ形式」をご参照ください。 |
デバイスのリモートコントロールを実行する | エンタープライズサーバーは、IoT Platform の API オペレーションを呼び出して、デバイスにメッセージを送信します。詳細については、「デバイスのリモートコントロールを実行する」をご参照ください。 |
IoT Platform からデバイスにメッセージを送信する | IoT Platform コンソールでは、サブスクライブ済みトピックを使用して、デバイスにコマンドまたはメッセージを送信できます。
|
デバイス間の通信を実現する | 両端のデバイスを IoT Platform に接続し、IoT Platform を使用して、デバイス間の接続および通信リクエストを処理できます。次のトピックでは、デバイス間の通信を実現するために使用できる 2 つの方法について説明します。 |
トピックを分類する
トピックは、基本通信用トピック、TSL 通信用トピック、およびカスタムトピックに分類されます。次の表に、トピックのタイプを示します。
インスタンスタイプ | 目的 | 説明 |
基本通信用トピック | これらのトピックは、無線 (OTA) アップデート中にメッセージを送信するために使用されます。メッセージは、デバイスが OTA モジュールバージョンを送信するとき、IoT Platform がデバイスにアップデートパッケージをプッシュするとき、デバイスがアップデートの進捗状況を送信するとき、およびデバイスが最新アップデートパッケージの情報をリクエストするときに送信されます。 | |
これらのトピックは、デバイスタグを送信するために使用されます。メーカーやデバイスモデルなど、デバイスに関する特定の情報を使用して、デバイスタグを指定できます。 | ||
これらのトピックは、ネットワークタイムプロトコル (NTP) を使用して、デバイスの時刻を IoT Platform と同期するために使用されます。組み込みデバイスは、リソースが限られているため、NTP をサポートしていません。したがって、正確なタイムスタンプを取得することはできません。 | ||
これらのトピックは、デバイスシャドウデータを送信するために使用されます。IoT Platform はデバイスシャドウをパブリッシュでき、デバイスは更新されたデバイスシャドウを受信できます。 | ||
これらのトピックは、構成情報を送信するために使用されます。デバイスは IoT Platform から構成情報をリクエストでき、IoT Platform はデバイスに構成情報をプッシュできます。 このようにして、デバイスを停止または再起動することなく、デバイスのシステムパラメータとネットワークパラメータをリモートで更新できます。 | ||
これらのトピックは、メッセージをブロードキャストするために使用されます。IoT Platform の PubBroadcast API オペレーションを呼び出して、指定したトピックをサブスクライブしているデバイスにメッセージをブロードキャストできます。このようにして、複数のデバイスを同時に管理できます。 | ||
TSL 通信用トピック | これらのトピックは、TSL モデルに固有です。 説明 IoT Platform の Pub API オペレーションを呼び出して、TSL ベースのトピックにメッセージを送信することはできません。 IoT Platform では、TSL ベースのトピックを使用してリモートデバイスを管理できます。SetDeviceProperty または SetDevicesProperty API オペレーションを呼び出して、デバイスプロパティの値を指定できます。また、InvokeThingService または InvokeThingsService API オペレーションを呼び出して、デバイスサービスを呼び出すこともできます。 | |
カスタムトピック | デフォルトでは、IoT Platform は 3 つのカスタムトピックカテゴリを提供します。ビジネス要件に基づいてカスタムトピックカテゴリを作成できます。 トピックカテゴリは、トピックの構成に使用できるテンプレートです。トピックカテゴリを変更または更新すると、プロダクト内のすべてのデバイスのデータ通信に影響を与える可能性があります。デバイスの研究開発段階でトピックカテゴリを確認し、デバイスがオンラインになった後にトピックカテゴリを変更しないことをお勧めします。 |
制限
プロダクトのトピックカテゴリのトピック数は、プロダクトに追加されるデバイスの数と同じです。詳細については、「制限」をご参照ください。