IoT Platform は、デバイス開発用に Link SDK を提供しています。この SDK には、デバイスとクラウド間の通信のための Alink プロトコルが含まれています。Link SDK がお使いの組み込み環境の要件を満たさない場合は、Alink プロトコルのデータをカプセル化して、IoT Platform と直接通信できます。
概要
Alink プロトコルは、デバイスと IoT Platform 間の双方向通信のための JSON ベースのデータ交換仕様です。ビジネスデータのやり取りを簡素化し、標準化します。
利用可能な Link SDK とサポートされている言語は、「デバイス側 Link SDK」に記載されています。
次の表に、IoT Platform の機能ごとの Alink プロトコルのトピックを示します。
| 機能 | データ形式の説明 |
| デバイス接続 | |
| メッセージ通信 | |
| デバイス管理 | |
| 監視と O&M |
以降のセクションでは、デバイス接続と、アップストリームおよびダウンストリームのデータフローについて説明します。
デバイスのオンボーディング
IoT Platform へのデバイス接続は、直接接続されたデバイスとサブデバイスで異なりますが、どちらも登録、アクティベーションと接続、データ報告の3つのステップに従います。
直接接続されたデバイスは、2つの方法で接続できます。
- デバイス固有の証明書を使用:デバイス証明書 (ProductKey、DeviceName、DeviceSecret) をデバイスにプリインストールします。その後、デバイスは登録、接続、データの報告を行います。
- プロダクト固有の証明書を動的登録に使用:プロダクト証明書 (ProductKey と ProductSecret) をデバイスにプリインストールします。その後、デバイスは登録、接続、データの報告を行います。
サブデバイスは、次の2つの方法のいずれかを使用してゲートウェイ経由で接続します。
- デバイス固有の証明書を使用:デバイス証明書 (ProductKey、DeviceName、DeviceSecret) をサブデバイスにプリインストールします。サブデバイスは証明書をゲートウェイに報告します。ゲートウェイはトポロジー関係を追加し、そのチャネルを再利用してデータを報告します。
- 動的登録を使用:ProductKey をサブデバイスにプリインストールします。サブデバイスは ProductKey と DeviceName をゲートウェイに報告します。IoT Platform は DeviceName を検証し、DeviceSecret を発行します。サブデバイスは証明書をゲートウェイに報告し、ゲートウェイはトポロジー関係を追加して、そのチャネル経由でデータを中継します。
デバイスのプロパティまたはイベントの報告
- パススルー (カスタム) データフォーマット
番号 説明 1 デバイスは、特定のトピックにパススルーデータを報告します。トピックの詳細については、「デバイスのプロパティ、イベント、サービス」をご参照ください。 1.1 IoT Platform は、データ解析スクリプトを使用して、デバイスから報告されたデータを解析します。プラットフォームは、スクリプト内の rawDataToProtocolメソッドを呼び出して、報告されたデータを IoT Platform の標準データフォーマット (Alink JSON フォーマット) に変換します。「データ解析」のトピックでは、解析スクリプトの作成方法について説明しています。
1.2 IoT Platform は、変換された Alink JSON データを使用してビジネスロジックを処理します。 ルールエンジンが設定されている場合、データ転送ルールに基づいて、データは別のトピックやクラウドサービスなどの宛先に転送されます。
重要- ルールエンジンは、スクリプトによって解析されたデータを受信します。
- データ転送を設定する際は、ソース トピックを[TSL モデルのデータ報告]用トピック (例:
/${productKey}/${deviceName}/thing/event/property/postまたは/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post) に設定します。詳細については、「データ転送ルールの設定」または「データソースの追加」をご参照ください。
1.3 IoT Platform は、データ解析スクリプト内の protocolToRawDataメソッドを呼び出して、結果データをデバイスが受信できる形式に変換します。1.4 IoT Platform は、解析されたデータをデバイスにプッシュします。 2 QueryDevicePropertyData API を呼び出して、デバイスから報告された過去のプロパティデータを照会できます。QueryDeviceEventData API を呼び出して、デバイスから報告された過去のイベントデータを照会できます。 - 非パススルー (Alink JSON) データフォーマット
番号 説明 1 デバイスは、非パススルーデータ用の特定のトピックにデータを報告します。トピックの詳細については、「デバイスのプロパティ、イベント、サービス」をご参照ください。 1.1 IoT Platform はビジネスロジックを処理します。 ルールエンジンが設定されている場合、データ転送ルールに基づいて、データは別のトピックやクラウドサービスなどの宛先に転送されます。
重要 データ転送を設定する際は、ソース トピックを[TSL モデルのデータ報告]用トピック (例:/${productKey}/${deviceName}/thing/event/property/postまたは/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post) に設定します。詳細については、「データ転送ルールの設定」または「データソースの追加」をご参照ください。1.2 IoT Platform は、処理結果をデバイスに返します。 2 QueryDevicePropertyData API を呼び出して、デバイスから報告された過去のプロパティデータを照会できます。QueryDeviceEventData API を呼び出して、デバイスから報告された過去のイベントデータを照会できます。
デバイスサービスの呼び出しまたはプロパティの設定
- 非同期サービス呼び出しまたはプロパティ設定
番号 説明 1 IoT Platform でサービスを呼び出します。 - プロパティの設定:SetDeviceProperty API を呼び出して、デバイスの特定のプロパティを設定します。
- サービスの呼び出し:InvokeThingService API を呼び出して、サービスを非同期に呼び出します。
呼び出し方法が非同期に設定されている場合、サービスは非同期で呼び出されます。
1.1 IoT Platform は、送信されたパラメーターを検証します。 1.2 IoT Platform は、デバイスにデータを非同期で送信し、結果を返します。成功した場合、結果にはメッセージ ID が含まれます。 パススルー (カスタム) データの場合、IoT Platform はまずデータ解析スクリプト内の
protocolToRawDataメソッドを呼び出してデータ形式を変換します。その後、変換されたデータをデバイスに送信します。2 デバイスはデータを受信した後、ビジネスロジックを処理します。 説明 メッセージ処理のトピックは、パススルー (カスタム) データと非パススルー (Alink JSON) データで異なります。「デバイスプロパティの設定」および「デバイスサービスの呼び出し (非同期呼び出し)」をご参照ください。3 デバイスはビジネスロジックを処理した後、結果を IoT Platform に返します。 IoT Platform は結果を受信した後、次の操作を実行します。
- データがパススルー形式の場合、IoT Platform はデータ解析スクリプト内の
rawDataToProtocolメソッドを呼び出して、デバイスから返された結果のデータ形式を変換します。 - ルールエンジンが設定されている場合、データ転送ルールに基づいて、データは別のトピックやクラウドサービスなどの宛先に転送されます。重要
- パススルーデータの場合、ルールエンジンはスクリプトによって解析されたデータを受信します。
- データ転送を設定する際は、ソース トピックを[サービス応答メッセージ]用トピック (例:
/${productKey}/${deviceName}/thing/downlink/reply/message) に設定します。詳細については、「データ転送ルールの設定」または「データソースの追加」をご参照ください。
- 同期サービス呼び出し
番号 説明 1 InvokeThingService API を呼び出して、同期サービスを呼び出します。呼び出し方法が同期に設定されている場合、サービスは同期で呼び出されます。 1.1 IoT Platform は、送信されたパラメーターを検証します。 1.2 IoT Platform は、同期呼び出しを使用して revert-RPC (RRPC) トピックを呼び出し、デバイスにデータを送信します。 パススルー (カスタム) データの場合、IoT Platform はまずデータ解析スクリプト内の
protocolToRawDataメソッドを呼び出してデータ形式を変換します。その後、変換されたデータをデバイスに送信します。1.3 IoT Platform は、デバイスが結果を返すのを同期的に待機します。 2 デバイスはビジネスロジックを処理した後、結果を IoT Platform に返します。タイムアウトが発生した場合は、タイムアウトエラーメッセージが返されます。 2.1 IoT Platform はデバイスから結果を受信した後、その結果を呼び出し元に返します。 データがパススルー形式の場合、IoT Platform はデータ解析スクリプト内の
rawDataToProtocolメソッドを呼び出して、デバイスから返された結果のデータ形式を変換します。
トポロジー関係
| 番号 | 説明 | |
| 1 | サブデバイスがゲートウェイに接続します。 サードパーティがトポロジー関係を追加する必要がある場合は、次のようにゲートウェイに通知します。 |
|
| 1.1 | ゲートウェイは、検出されたサブデバイスに関する情報を、デバイス検出リスト用のトピック/sys/${productKey}/${deviceName}/thing/list/found に報告します。IoT Platform はデータを受信した後、ルールエンジンが設定されている場合は、データ転送ルールに基づいて、データはクラウドサービスなどの宛先に転送されます。 |
|
| 1.2 | クラウドサービスからサブデバイスのデータを取得できます。 | |
| 1.3 | ゲートウェイとサブデバイスの間にトポロジー関係を追加するかどうかを決定できます。 追加するには、NotifyAddThingTopo API を呼び出して、トピック |
|
| 2 |
|
|
| 3 | トポロジー関係を削除するために、ゲートウェイはトピック/sys/${productKey}/${deviceName}/thing/topo/delete を使用します。 |
|
| 4 | GetThingTopo API を呼び出して、トピック/sys/${productKey}/${deviceName}/thing/topo/get を通じて、ゲートウェイとサブデバイス間のトポロジー関係を照会します。 |
|