デバイスとサーバーが IoT Platform に接続された後、IoT Platform を使用して、デバイスとサーバー間、およびデバイス間の通信を実装できます。このトピックでは、デバイス、IoT Platform、およびサーバー間の通信を確立する方法について説明します。
背景情報
デバイスは、トピックを介してメッセージを送受信します。トピックの詳細については、「トピック」をご参照ください。
デバイスを開発する際には、デバイスから送信される生データの形式を指定する必要があります。IoT Platform は、デバイスと IoT Platform を簡単に接続し、通信を実装するために使用できる Link SDK を提供しています。
C 用 Link SDK の詳細については、「MQTT 経由の接続の例」および「TSL モデルの例」「例」をご参照ください。
Link SDK は、Java、Python、Node.js 言語、および Android と iOS プラットフォームもサポートしています。詳細については、「Link SDK を使用したデバイス接続」をご参照ください。
IoT Platform がデバイスからトピックを受信すると、ルールエンジンがデータ形式を変換します。その後、IoT Platform は変換されたトピックをサーバーに転送します。トピック、メッセージタイプ、およびデータ形式の詳細については、「データ形式」をご参照ください。
デバイスから IoT Platform へのデータ送信
デバイスを IoT Platform に接続すると、デバイスは IoT Platform と通信できます。デバイスは、次のいずれかの方法を使用して IoT Platform にデータを送信できます。
カスタムトピックを使用してカスタム形式のデータを送信します。
IoT Platform コンソールで、カスタムトピックの [許可される操作] を [公開] に設定します。プロダクトトピックは、プロダクト下のデバイスに自動的にマッピングされます。
次のいずれかの方法でカスタムトピックを作成できます。
IoT Platform コンソールを使用します。詳細については、「カスタムトピックを通信に使用する」をご参照ください。
IoT Platform SDK を使用します。IoT Platform SDK のダウンロード API 操作を呼び出して、カスタムトピックを作成できます。
デバイスを開発する際に、カスタムトピックにメッセージを送信するようにデバイスを設定します。
デバイスでメッセージを送信するには、カスタムトピックとメッセージ形式を設定する必要があります。IoT Platform によって提供される Link SDK の使用方法については、「サーバーにメッセージを送信するようにデバイスを設定する」をご参照ください。
TSL (Thing Specification Language) 特有のトピックを使用してデータを送信します。
TSL 機能の詳細については、「TSL モデルとは」をご参照ください。
デバイスは、プロパティとイベントを送信できます。手順:
IoT Platform コンソールで、ビジネス要件に基づいて TSL 機能を定義します。詳細については、「TSL 機能を追加する」をご参照ください。
デバイスを開発する際に、定義された TSL 機能に基づいてプロパティとイベントを送信するようにデバイスを設定します。
デバイスから送信されるプロパティとイベントの標準データ形式の詳細については、「デバイスがプロパティデータを IoT Platform に送信する」および「デバイスがイベントを IoT Platform に送信する」をご参照ください。
IoT Platform は、事前定義された TSL 特有のトピックを提供します。これらのトピックを直接使用できます。IoT Platform によって提供される Link SDK の使用方法については、「Link SDK を使用してプロパティとイベントを送信する」をご参照ください。
IoT Platform からエンタープライズサーバーへのデータ転送
IoT Platform はルールエンジン機能を提供し、サーバーにデータを転送するための複数の方法をサポートしています。転送できるデータには、デバイスから送信されたメッセージ、デバイスステータスの変更、デバイスライフサイクルの変更、履歴 TSL データ、ファームウェアアップデートステータス、ゲートウェイによって検出された新しいサブデバイスの情報、およびデバイストポロジの変更が含まれます。メッセージはトピックに基づいて転送されます。トピックのデータ形式の詳細については、「データ形式」をご参照ください。
サーバー側サブスクリプション: IoT Platform が提供するサーバー側サブスクリプション機能を使用して、1 つ以上のタイプのメッセージをサブスクライブできます。その後、IoT Platform は、サブスクリプション設定に基づいて、プロダクト内のすべてのデバイスから指定されたタイプのメッセージをサーバーに転送します。サーバー側サブスクリプションを設定するには、次のいずれかの方法を使用できます。
Advanced Message Queuing Protocol (AMQP) SDK を使用して、IoT Platform によって転送されたデバイスメッセージを受信します。詳細については、「AMQP サーバー側サブスクリプション」および関連ドキュメントをご参照ください。
Message Service (MNS) SDK を使用して、IoT Platform によって MNS キューに転送されたデバイスメッセージを受信します。詳細については、「MNS サーバー側サブスクリプション」をご参照ください。
データ転送: ルールエンジンのデータ転送機能によって提供されるデータ転送ルールを設定して、デバイスデータを複数の Alibaba Cloud サービスに転送できます。サービスには、Simple Message Queue (formerly MNS) (SMQ)、ApsaraDB RDS、Tablestore (OTS)、Function Compute、Lindorm、および Message Queue for Apache RocketMQ が含まれます。詳細については、「データ転送 (旧バージョン)」または「データ転送 (新バージョン)」をご参照ください。
データ転送とサーバー側サブスクリプションの違いについては、「データ転送機能の比較」をご参照ください。
デバイスのリモートコントロールを実行する
サーバー上の IoT Platform SDK を使用して、デバイスのリモートコントロールを実現できます。デバイスのリモートコントロールを実行するには、API 操作を呼び出して、IoT Platform からデバイスにコマンドを送信する必要があります。サーバーは、次のいずれかの方法を使用してコマンドを送信できます。
カスタムトピックを使用してリモートデバイスを制御します。
非同期制御: Pub 操作を呼び出して、[許可される操作] パラメーターが [サブスクライブ] に設定されているカスタムトピックにカスタム形式のデータを送信します。デバイスはこのトピックをサブスクライブしてメッセージを受信します。
説明Pub 操作を呼び出して TSL 関連のコマンドを送信することはできません。
カスタムトピックを使用してリモートデバイスを制御する方法の詳細については、「デバイスにメッセージを送信するようにサーバーを設定する」をご参照ください。
同期制御: RRpc 操作を呼び出して、指定されたデバイスにメッセージを送信し、応答を同期的に取得します。
同期 MQTT 通信の詳細については、「RRPC とは」をご参照ください。
同期通信のために RRpc 操作を呼び出す方法の詳細については、「Raspberry Pi サーバーをリモート制御する」をご参照ください。
バッチ制御: PubBroadcast 操作を呼び出して、すべてのオンラインデバイスにメッセージをブロードキャストします。
バッチ制御を実現する方法の詳細については、「メッセージをブロードキャストする」をご参照ください。
TSL 特有のトピックを使用します。
TSL 特有の API 操作を使用して、IoT Platform からデバイスにプロパティ設定またはサービス呼び出しコマンドを送信できます。
単一デバイスの制御。
SetDeviceProperty 操作を呼び出して、単一デバイスにプロパティ設定コマンドを送信します。
IoT Platform がコマンドを送信した後、デバイスは非同期的にコマンドを受信して実行します。デバイスプロパティが更新されたかどうかを確認するには、後でデバイスから送信されるプロパティを表示する必要があります。
InvokeThingService 操作を呼び出して、単一デバイスにサービス呼び出しコマンドを送信します。
[呼び出し方法] パラメーターは、サービスが同期的に呼び出されるか非同期的に呼び出されるかを決定します。このパラメーターは、サービスをカスタマイズするときに指定します。詳細については、「TSL 機能を追加する」をご参照ください。
[呼び出し方法] パラメーターが [同期] に設定されている場合、InvokeThingService 操作が呼び出された後、応答は同期的に返されます。
[呼び出し方法] パラメーターが [非同期] に設定されている場合、InvokeThingService 操作が呼び出された後、応答は非同期的に返されます。ルールエンジンを使用して応答を取得できます。ルールの SQL クエリのデータソースを [TSL データレポート] に設定し、特定のトピックを
thing/downlink/reply/message
に設定する必要があります。データソースの設定方法の詳細については、「データ転送ルールを設定する」および「データソースを作成する」をご参照ください。
複数デバイスの制御。
SetDevicesProperty 操作を呼び出して、複数デバイスにプロパティ設定コマンドを送信します。
InvokeThingsService 操作を呼び出して、複数デバイスにサービス呼び出しコマンドを送信します。
TSL 特有のトピックを使用してリモートデバイスを制御する方法の詳細については、「TSL ベースの通信を確立する」をご参照ください。
デバイス間通信の実装
両端のデバイスを IoT Platform に接続し、IoT Platform を使用してデバイス間の接続および通信リクエストを処理できます。次のトピックでは、デバイス間通信を実現するために使用できる 2 つの方法について説明します。