すべてのプロダクト
Search
ドキュメントセンター

:デバイスのプロパティ、イベント、およびサービス

最終更新日:Feb 06, 2024

製品のTSL (Thing Specification Language) モデルを定義した後、製品に属するデバイスは、TSLモデルに基づいて、プロパティデータとイベントデータをIoT Platformに送信できます。 デバイスにコマンドを送信して、デバイスのプロパティを変更し、IoT Platformコンソールでサービスを呼び出すことができます。

TSLモデルで定義されているプロパティ、イベント、およびサービスのデータ形式の詳細については、「TSLモデルとは」をご参照ください。

デバイスはAlink JSON形式のデータをIoT Platformに送信するか、カスタムモードを使用してデータを送信します。 Alink JSON形式でデータを送信するようにデバイスを設定することを推奨します。

  • Alink JSON: IoT Connectivity Alliance (ICA) によって定義されている標準データ形式。 デバイスはAlink JSON形式でデータを生成し、IoT Platformにデータを送信します。 詳細については、このトピックの例を参照してください。

  • カスタム: カスタムモードを使用すると、デバイスはバイナリデータストリームなどの生データをIoT Platformに送信できます。 次に、IoT Platformは、IoT Platformに送信したカスタムスクリプトに基づいて、生データをAlink JSON形式に解析します。 詳細については、「メッセージ解析」をご参照ください。 Alink JSON形式でIoT Platformによって生成されたデータは、送信したスクリプトに基づいてバイナリデータに変換されます。 次に、バイナリデータがデバイスに送信されます。物模型数据透传

重要
  • TSLデータがfloat型またはdouble型の場合、TSLデータに対応するパラメーター値には小数点以下1桁以上含まれます。 例: 10.0と11.1。

  • デバイスは、TSLプロパティとTSLイベントのデータを24時間以内に送信できます。 デバイスがプロパティ値またはイベントを送信するときに指定されるtime値は、実際の送信時刻から24時間以内である必要があります。 制限時間を超えると、送信は失敗します。

  • ダウンストリームまたはアップストリーム通信の各メッセージのIDは、デバイスの毎日のメッセージで一意である必要があります。 idパラメーターは、メッセージIDを指定します。

    IoT Platformから送信された各ダウンストリームメッセージのIDは、非同期でデバイスから返された各応答を照合するために使用されます。 IoT Platformは、各ダウンストリームメッセージのIDがデバイスの毎日のメッセージで一意であることを確認する必要があります。 デバイスから送信される各アップストリームメッセージのIDが、デバイスの毎日のメッセージで一意であることを確認してください。

デバイスがIoT Platformにプロパティデータを送信

デバイスがプロパティデータを送信する方法の詳細については、「デバイスプロパティまたはイベントの送信」をご参照ください。

デバイスからIoT Platformにデータを送信するためのトピックとデータ形式:

  • カスタム

    トピック

    データ形式

    リクエストトピック: /sys/${productKey}/${deviceName}/thing/model/up_raw

    リクエストには、デバイスがIoT Platformに送信する必要がある生データが含まれます。

    説明
    • 16進データは、MQTT (Message Queuing Telemetry Transport) を介して送信されます。

    • 送信されたデータには、リクエストメソッドを指定するmethodパラメーターが含まれている必要があります。 パラメーターの値は、データ解析スクリプトで指定したリクエストメソッドと同じである必要があります。 たとえば、サンプルJavaScriptスクリプトのトピックでは、デバイスがIoT Platformに送信する必要があるデータに、methodパラメーターが含まれている必要があります。 パラメーターの値は、データ解析スクリプトのALINK_PROP_REPORT_METHODパラメーターに指定したthing.event.property.postの値と同じである必要があります。

    例:

    0x00002233441232013fa0000 0

    レスポンストピック: /sys/${productKey}/${deviceName}/thing/model/up_raw_reply

    レスポンス例:

    • 通常のレスポンス例

      {
          "code": 200,
          "data": {},
          "id": "123",
          "message": "success",
          "version": "1.0"
      } 
    • 失敗応答のサンプル

      {
          "code": 6813、
          "data": {},
          "id": "123",
          "message": "トピック違法" 、
          "version": "1.0"
      } 
  • Alink JSON

    トピック

    データ形式

    リクエストトピック: /sys/${productKey}/${deviceName}/thing/event/property/post

    リクエストの例

    {
        "id": "123",
        "version": "1.0"、
        "sys":{
            "ack":0
        },
        "params": {
            "Power": {
                "value": "on",
                "time": 1524448722000
            },
            "WF": {
                "value": 23.6,
                "time": 1524448722000
            }
        },
        "method": "thing.event.property.post"
    } 

    レスポンストピック: /sys/${productKey}/${deviceName}/thing/event/property/post_reply

    レスポンス例:

    • 通常のレスポンス例

      {
          "code": 200,
          "data": {},
          "id": "123",
          "message": "success",
          "method": "thing.event.property.post",
          "version": "1.0"
      } 
    • 失敗応答のサンプル

      {
          "code": 6813、
          "data": {},
          "id": "123",
          "message": "結果の形式はエラーです!" 、
          "method": "thing.event.property.post",
          "version": "1.0"
      } 

パラメータ:

表 1 リクエストパラメーター

パラメーター

データ型

説明

id

String

メッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。

バージョン

String

プロトコルのバージョン番号。 値を 1.0 に設定します。

sys

オブジェクト

拡張フィーチャのパラメータ。The parameter for extended features. 値には、各フィーチャのフィールドが含まれます。

説明

デバイスSDKを使用してデバイス機能を開発するときに拡張機能が設定されていない場合、このパラメーターは使用できません。 拡張機能はデフォルトの設定を使用します。

ack

Integer

sysパラメーターの拡張機能フィールド。 このフィールドは、IoT Platformが登録要求の応答データを返すかどうかを指定します。 有効な値:

  • 1: IoT Platformは応答データを返します。

  • 0: IoT Platformは応答データを返しません。

重要

パラメーターの詳細については、「TSLモデルの使用方法の例」をご参照ください。

機能が設定されていない場合、このパラメーターは使用できません。 デフォルトでは、IoT Platformは登録リクエストの応答データを返します。

メソッド

String

リクエスト方式。 例: thing.event.property.post

params

オブジェクト

デバイスがリクエストで送信する必要があるプロパティデータ。 前の例では、デバイスはPower (power supply) およびWF (working current) プロパティに関する情報を送信します。 情報には、プロパティの値とタイムスタンプが含まれます。 タイムスタンプは、プロパティが送信された時点を示します。

プロパティ値のみを指定した場合、情報にはタイムスタンプは含まれません。 例:

"params": {
    "Power": "on",
    "WF": 23.6
} 

カスタムモジュールのプロパティを使用する場合、各プロパティの識別子は ${モジュール識別子 }:${ プロパティ識別子} 形式になります。 コロン (:) は、この式の2つの部分を接続するために使用されます。 例:

"test:Power": {
    "value": "on",
    "time": 1524448722000
} 

時間

Long

プロパティが送信されたときのUTCタイムスタンプ。 単位:ミリ秒。

このパラメーターはオプションです。 ビジネス要件に基づいて、リクエストにタイムスタンプを指定するかどうかを決定できます。 デバイスがIoT Platformにメッセージを頻繁に送信する場合は、メッセージの順序を特定できるように、リクエストにタイムスタンプを指定することを推奨します。

  • リクエストにtimeパラメーターが含まれている場合、IoT Platformはパラメーター値をプロパティが送信された時点として保存します。

  • リクエストにtimeパラメーターが含まれていない場合、IoT Platformは、プロパティが送信された時点を記録するタイムスタンプを自動的に生成します。

オブジェクト

デバイスによって送信されるプロパティの値。

このパラメーターは、timeパラメーターを指定した場合にのみ必要です。 timeパラメーターを指定せずにプロパティ値を送信することもできます。

表 2. 応答パラメーター

パラメーター

データ型

説明

id

String

メッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。

コード

Integer

ステータスコード。 詳細については、「デバイスの共通コード」をご参照ください。

説明

IoT Platformは、デバイスによって送信されたすべてのプロパティを検証します。 IoT Platformは、各プロパティの形式がTSLモデルで定義されている形式に準拠しているかどうかを確認します。 プロパティが無効な場合、IoT Platformはプロパティを破棄し、エラーコードを返します。

データ

オブジェクト

リクエストが成功した場合、このパラメーターは空のままになります。

メッセージ

String

応答メッセージ。 リクエストが成功した場合、「成功」メッセージが表示されます。

メソッド

String

レスポンス内のリクエストメソッド。 パラメーターの値は、リクエストのmethodパラメーターの値と同じです。

バージョン

String

プロトコルのバージョン番号。 パラメーターの値は、リクエストのversionパラメーターの値と同じです。

エラーコード: IoT Platformはデバイスにエラーコードを返す場合があります。 詳細については、「デバイスのエラーコード」をご参照ください。

データ転送: IoT Platformは、サーバー側サブスクリプションまたはデータ転送機能を使用して、デバイスから送信されたプロパティデータをサーバーまたは他のAlibaba Cloudサービスに転送できます。 関連するトピックとデータ形式の詳細については、「デバイスプロパティの送信」をご参照ください。

デバイスのプロパティの設定

デバイスのプロパティを変更するコマンドをデバイスに送信するには、SetDevicePropertyまたはSetDevicesProperty操作を呼び出します。 デバイスプロパティの設定方法の詳細については、「デバイスサービスの呼び出しまたはデバイスプロパティの設定」をご参照ください。

重要

成功メッセージは、デバイスがIoT Platformからプロパティ値を変更するコマンドを受信したことを示すだけです。 デバイスはコマンドを実行できません。 デバイスの設定に使用されるLink SDKがプロパティ設定要求に応答した後、デバイスは最新のプロパティ値を送信して、プロパティ値が変更されたことを証明する必要があります。 詳細については、このトピックの「デバイスがプロパティデータをIoT Platformに送信する」セクションを参照してください。

IoT Platformからデバイスにデータを送信するためのトピックとデータ形式:

データ形式 (IoT Platformからデバイスへ)

リクエストとレスポンスのトピック

カスタム

  • リクエストトピック: /sys/${productKey}/${deviceName}/thing/model/down_raw

  • レスポンストピック: /sys/${productKey}/${deviceName}/thing/model/down_raw_reply

Alink JSON

  • リクエストトピック: /sys/${productKey}/${deviceName}/thing/service/property/set

  • レスポンストピック: /sys/${productKey}/${deviceName}/thing/service/property/set_reply

サンプルリクエスト:

{
    "id": "123",
    "version": "1.0"、
    "params": {
        "temperature": "30.5"
    },
    "method": "thing.service.property.set"
} 

サンプル応答:

  • 通常のレスポンス例

    {
        "code": 200,
        "data": {},
        "id": "123",
        "message": "success",
        "version": "1.0"
    } 
  • 失敗応答のサンプル

    {
        "code": 9201、
        "data": {},
        "id": "123",
        "message": "device offLine" 、
        "version": "1.0"
    } 

パラメータ:

表 3. リクエストパラメーター

パラメーター

データ型

説明

id

String

メッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。

バージョン

String

プロトコルのバージョン番号。 値を 1.0 に設定します。

params

オブジェクト

変更するプロパティ。The properties that you want to modify. 上記の例では、{ "temperature": "30.5" } は、temperatureプロパティを30.5に設定することを示しています。

変更するプロパティがカスタムモジュールプロパティの場合、プロパティ識別子を ${モジュール識別子 }:${ プロパティ識別子} の形式で入力します。 例: { "test:temperature": "30.5" } コロン (:) は、この式の2つの部分を接続するために使用されます。

メソッド

String

リクエスト方式。 例: thing.service.property.set

表 4. 応答パラメーター

パラメーター

データ型

説明

id

String

メッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。

コード

Integer

ステータスコード。 詳細については、「デバイスの共通コード」をご参照ください。

データ

オブジェクト

リクエストが成功した場合、このパラメーターは空のままになります。

メッセージ

String

応答メッセージ。 リクエストが成功した場合、「成功」メッセージが表示されます。

バージョン

String

プロトコルのバージョン番号。 パラメーターの値は、リクエストのversionパラメーターの値と同じです。

エラーコード: IoT Platformはデバイスにエラーコードを返す場合があります。 詳細については、「デバイスのエラーコード」をご参照ください。

データ転送: IoT Platformは、サーバー側サブスクリプションまたはデータ転送機能を使用して、プロパティ変更結果をサーバーまたは他のAlibaba Cloudサービスに転送できます。 関連するトピックとデータ形式の詳細については、「ダウンストリームリクエストへのレスポンスの送信」をご参照ください。

デバイスがIoT Platformにイベントを送信

デバイスがイベントを送信する方法の詳細については、「デバイスプロパティまたはイベントの送信」をご参照ください。

デバイスからIoT Platformにデータを送信するためのトピックとデータ形式:

  • カスタム

    トピック

    データ形式

    リクエストトピック: /sys/${productKey}/${deviceName}/thing/model/up_raw

    リクエストには、デバイスがIoT Platformに送信する必要がある生データが含まれます。

    説明

    送信されたデータには、リクエストメソッドを指定するmethodパラメーターが含まれている必要があります。 パラメーターの値は、データ解析スクリプトで指定したリクエストメソッドと同じである必要があります。 たとえば、methodパラメーターをthing.event.${tsl.event.identifier}.postに設定できます。

    例:

    0xff0000007b0 0

    レスポンストピック: /sys/${productKey}/${deviceName}/thing/model/up_raw_reply

    レスポンス例:

    • 通常のレスポンス例

      {
          "code": 200,
          "data": {},
          "id": "123",
          "message": "success",
          "version": "1.0"
      } 
    • 失敗応答のサンプル

      {
          "code": 6813、
          "data": {},
          "id": "123",
          "message": "トピック違法" 、
          "version": "1.0"
      } 
  • Alink JSON

    TSLモジュール

    トピック

    データ形式

    デフォルトモジュール

    • リクエストトピック: /sys/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post

    • レスポンストピック: /sys/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post_reply

    デフォルトのTSLモジュールが使用されている場合、Alink JSON形式のサンプルリクエスト:

    {
        "id": "123",
        "version": "1.0"、
        "sys":{
            "ack":0
        },
        "params": {
            "value":{
                "Power": "on",
                "WF": "2"
            },
            "time": 1524448722000
        },
        "method": "thing.event.${tsl.event.identifier}.post"
    } 

    Alink JSON形式のサンプル応答:

    {
        "code": 200,
        "data": {},
        "id": "123",
        "message": "success",
        "method": "thing.event.${tsl.event.identifier}.post" 、
        "version": "1.0"
    } 

    リクエストが失敗した場合、{} が返されます。

    カスタムモジュール

    • リクエストトピック: /sys/${productKey}/${deviceName}/thing/event/${tsl.functionBlockId }:{ tsl.event.identifier}/post

    • レスポンストピック: /sys/${productKey}/${deviceName}/thing/event/${tsl.functionBlockId }:{ tsl.event.identifier}/post_reply

パラメータ:

表 5. リクエストパラメーター

パラメーター

データ型

説明

id

String

メッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。

バージョン

String

プロトコルのバージョン番号。 値を 1.0 に設定します。

sys

オブジェクト

拡張フィーチャのパラメータ。The parameter for extended features. 値には、各フィーチャのフィールドが含まれます。

説明

デバイスSDKを使用してデバイス機能を開発するときに拡張機能が設定されていない場合、このパラメーターは使用できません。 拡張機能はデフォルトの設定を使用します。

ack

Integer

sysパラメーターの拡張機能フィールド。 このフィールドは、IoT Platformが登録要求の応答データを返すかどうかを指定します。 有効な値:

  • 1: IoT Platformは応答データを返します。

  • 0: IoT Platformは応答データを返しません。

重要

パラメーターの詳細については、「TSLモデルの使用方法の例」をご参照ください。

機能が設定されていない場合、このパラメーターは使用できません。 デフォルトでは、IoT Platformは登録リクエストの応答データを返します。

メソッド

String

リクエスト方式。

  • デフォルトモジュール

    値をthing.event.${tsl.event.identifier}.postに設定します。

  • カスタムモジュール

    値をthing.event.${tsl.functionBlockId }:${ tsl.event.identifier}.postに設定します。

説明

${tsl.event.identifier} はTSLモデルで定義されたイベントの識別子を指定し、${tsl.functionBlockId} はカスタムモジュールの識別子を指定します。 詳細については、「TSL機能の追加」をご参照ください。

params

オブジェクト

イベントのパラメーター。

オブジェクト

イベントのパラメーターの値。 上記の例は、Power (power supply) およびWF (working current) パラメータに関する情報を示しています。

{
    "Power": "on",
    "WF": "2"
} 

時間

Long

イベントが送信されたときのUTCタイムスタンプ。 単位:ミリ秒。

このパラメーターはオプションです。 ビジネス要件に基づいて、リクエストにタイムスタンプを指定するかどうかを決定できます。 デバイスがIoT Platformにメッセージを頻繁に送信する場合は、メッセージの順序を特定できるように、リクエストに時間パラメーターを指定することを推奨します。

  • リクエストにtimeパラメーターが含まれている場合、IoT Platformはパラメーター値をイベントが送信された時点として保存します。

  • リクエストにtimeパラメーターが含まれていない場合、IoT Platformはイベントが送信された時点を記録するタイムスタンプを自動的に生成します。

表 6. 応答パラメーター

パラメーター

データ型

説明

id

String

メッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。

コード

Integer

ステータスコード。 詳細については、「デバイスの共通コード」をご参照ください。

説明

IoT Platformは、デバイスによって送信されたすべてのイベントを検証します。 IoT Platformは、各イベントのデータ形式がTSLモデルで定義されている形式に準拠しているかどうかを確認します。 イベントが無効な場合、IoT Platformはイベントを破棄し、エラーコードを返します。

データ

オブジェクト

リクエストが成功した場合、このパラメーターは空のままになります。

メッセージ

String

応答メッセージ。 リクエストが成功した場合、「成功」メッセージが表示されます。

メソッド

String

レスポンス内のリクエストメソッド。 パラメーターの値は、リクエストのmethodパラメーターの値と同じです。

バージョン

String

プロトコルのバージョン番号。 パラメーターの値は、リクエストのversionパラメーターの値と同じです。

Alink JSON形式の例: アラームイベントはTSLモデルで定義されています。 詳細については、「TSLモデルとは」をご参照ください。

{
    "schema": "https://iot-tsl.oss-cn-shanghai.aliyuncs.com/schema.json",
    "link": "/sys/${productKey}/airCondition/thing/",
    "profile": {
        "productKey": "${productKey}" 、
        "deviceName": "airCondition"
    },
    "events": [
        {
            "identifier": "alarm",
            "name": "alarm",
            "desc": "Fan alert",
            "type": "alert",
            "required": true,
            "outputData": [
                {
                    "identifier": "errorCode",
                    "name": "Error code",
                    "dataType": {
                        "type": "text",
                        "specs": {
                            "length": "255"
                        }
                    }
                }
            ],
            "method": "thing.event.alarm.post"
        }
    ]
}

デバイスは、Alink JSONデータ形式の次のリクエストでイベントを送信します。

{
    "id": "123",
    "version": "1.0"、
    "params": {
        "value":{
            "errorCode": "error"
        },
        "time": 1524448722000
    },
    "method": "thing.event.alarm.post"
} 

エラーコード: IoT Platformはデバイスにエラーコードを返す場合があります。 詳細については、「デバイスのエラーコード」をご参照ください。

データ転送: IoT Platformは、サーバー側サブスクリプションまたはデータ転送機能を使用して、デバイスから送信されたイベント情報をサーバーまたは他のAlibaba Cloudサービスに転送できます。 関連するトピックとデータ形式の詳細については、「データ形式」をご参照ください。

デバイスサービスを非同期モードで呼び出す

IoT Platformでは、同期モードまたは非同期モードでサービスを呼び出すことができます。 TSLモデルでサービスを定義する場合は、サービスを呼び出すモードを指定する必要があります。 サービスの定義方法の詳細については、「TSL機能の追加」をご参照ください。 デバイスサービスを呼び出す方法の詳細については、「デバイスサービスの呼び出しまたはデバイスプロパティの設定」をご参照ください。

  • 同期モード: InvokeThingServiceまたはInvokeThingsService操作を呼び出して、デバイスのサービスを呼び出すことができます。 IoT Platformは、Revert-Remote Procedure Call (RRPC) 同期通信メカニズムを使用して、デバイスにリクエストを送信します。 同期モードでサービスを呼び出すと、IoT PlatformはRRPCトピックをサブスクライブします。 詳細については、「RRPCの概要」をご参照ください。

  • 非同期モード: InvokeThingServiceまたはInvokeThingsService操作を呼び出して、デバイスのサービスを呼び出すことができます。 IoT Platformは、デバイスにリクエストを非同期に送信します。 非同期モードでサービスを呼び出すと、IoT Platformは非同期応答トピックにサブスクライブします。

IoT Platformからデバイスにデータを送信するためのトピックとデータ形式:

データ形式 (IoT Platformからデバイスへ)

リクエストとレスポンスのトピック

カスタム

  • リクエストトピック: /sys/${productKey}/${deviceName}/thing/model/down_raw

  • レスポンストピック: /sys/${productKey}/${deviceName}/thing/model/down_raw_reply

Alink JSON

  • デフォルトTSLモジュール

    • リクエストトピック: /sys/${productKey}/${deviceName}/thing/service/${tsl.service.identifier}

    • レスポンストピック: /sys/${productKey}/${deviceName}/thing/service/${tsl.service.identifier}_reply

  • カスタムモジュール

    • リクエストトピック: /sys/${productKey}/${deviceName}/thing/service/${tsl.functionBlockId }:${ tsl.service.identifier}

    • レスポンストピック: /sys/${productKey}/${deviceName}/thing/service/${tsl.functionBlockId }:${ tsl.service.identifier}_返信

Alink JSON形式のサンプルリクエスト:

{
    "id": "123",
    "version": "1.0"、
    "params": {
        "Power": "on",
        "WF": "2"
    },
    "method": "thing.service.${tsl.service.identifier}"
} 

サンプル応答:

  • 通常のレスポンス例

    {
        "code": 200,
        "data": {},
        "id": "123",
        "message": "success",
        "version": "1.0"
    } 
  • 失敗応答のサンプル

    {
        "code": 9201、
        "data": {},
        "id": "123",
        "message": "device offLine" 、
        "version": "1.0"
    } 

パラメータ:

表7. リクエストパラメーター

パラメーター

データ型

説明

id

String

メッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。

バージョン

String

プロトコルのバージョン番号。 値を 1.0 に設定します。

params

オブジェクト

サービスの呼び出しに使用されるパラメーター。 各パラメータは、サービス識別子とサービスの値で構成されます。 上記の例には、Power (電源) およびWF (動作電流) パラメータが含まれています。

{
    "Power": "on",
    "WF": "2"
} 

メソッド

String

リクエスト方式。

  • デフォルトモジュール

    値をthing.service.${tsl.service.identifier} に設定します。

  • カスタムモジュール

    値をthing.service.${tsl.functionBlockId }:${ tsl.service.identifier} に設定します。

説明

${tsl.service.identifier} はTSLモデルで定義されたサービス識別子を指定し、${tsl.functionBlockId} はカスタムモジュールの識別子を指定します。 詳細については、「TSL機能の追加」をご参照ください。

表8. 応答パラメーター

パラメーター

データ型

説明

id

String

メッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。

コード

Integer

ステータスコード。 詳細については、「デバイスの共通コード」をご参照ください。

データ

オブジェクト

応答メッセージ。

このパラメーターの値は、TSLモデルによって異なります。 サービスが応答を返さない場合、このパラメーターは空のままになります。 サービスが応答を返す場合、返されるデータは、TSLモデルで定義されているサービスの形式に準拠しています。

メッセージ

String

応答メッセージ。 リクエストが成功した場合、「成功」メッセージが表示されます。

バージョン

String

プロトコルのバージョン番号。 パラメーターの値は、リクエストのversionパラメーターの値と同じです。

Alink JSON形式の例: SetWeightサービスは、次のTSLモデルで定義されています。

{
    "schema": "https://iotx-tsl.oss-ap-southeast-1.aliyuncs.com/schema.json",
    "profile": {
        "productKey": "testProduct01"
    },
    "services": [
        {
            "outputData": [
                {
                    "identifier": "OldWeight",
                    "dataType": {
                        "specs": {
                            "unit": "kg",
                            "min": "0",
                            "max": "200",
                            "step": "1"
                        },
                        "type": "double"
                    },
                    "name": "OldWeight"
                },
                {
                    "identifier": "CollectTime",
                    "dataType": {
                        "specs": {
                            "length": "2048"
                        },
                        "type": "text"
                    },
                    "name": "CollectTime"
                }
            ],
            "identifier": "SetWeight",
            "inputData": [
                {
                    "identifier": "NewWeight",
                    "dataType": {
                        "specs": {
                            "unit": "kg",
                            "min": "0",
                            "max": "200",
                            "step": "1"
                        },
                        "type": "double"
                    },
                    "name": "NewWeight"
                }
            ],
            "method": "thing.service.SetWeight",
            "name": "重みを設定" 、
            "required": false,
            "callType": "async"
        }
    ]
}

Alink JSON形式のサンプルリクエスト:

{
    "method": "thing.service.SetWeight",
    "id": "105917531",
    "params": {
        "NewWeight": 100.8
    },
    "version": "1.0"
} 

Alink JSON形式のサンプル応答:

{
    "id": "105917531",
    "code": 200,
    "data": {
        "CollectTime": "1536228947682",
        "OldWeight": 100.101
    }
    "message": "success",
    "version": "1.0"
} 

エラーコード: IoT Platformはデバイスにエラーコードを返す場合があります。 詳細については、「デバイスのエラーコード」をご参照ください。

データ転送: IoT Platformは、サーバー側サブスクリプションまたはデータ転送機能を使用して、非同期呼び出しの結果をサーバーまたは他のAlibaba Cloudサービスに転送できます。 関連するトピックとデータ形式の詳細については、「ダウンストリームリクエストへのレスポンスの送信」をご参照ください。

ゲートウェイは、複数のプロパティとイベントを同時にIoT Platformに送信します。

ゲートウェイは、複数のプロパティとイベントを同時にIoT Platformに送信できます。 ゲートウェイは、自身のプロパティおよびイベント、またはゲートウェイに接続されているサブデバイスのプロパティおよびイベントを送信できます。

説明
  • ゲートウェイは、最大200個のプロパティと20個のイベントを同時に送信できます。

  • ゲートウェイは、同時に最大20個のサブデバイスのデータを送信できます。

ゲートウェイからIoT Platformにデータを送信するためのトピックとデータ形式:

  • カスタム

    トピック

    データ形式

    リクエストトピック: /sys/${productKey}/${deviceName}/thing/model/up_raw

    リクエストには、ゲートウェイがIoT Platformに送信する必要がある生データが含まれます。

    説明

    送信されたデータには、リクエストメソッドを指定するmethodパラメーターが含まれている必要があります。 パラメーターの値は、データ解析スクリプトで指定したリクエストメソッドと同じである必要があります。 たとえば、methodパラメーターをthing.event.property.pack.postに設定できます。

    例:

    0xff0000007b0 0

    レスポンストピック: /sys/${productKey}/${deviceName}/thing/model/up_raw_reply

    レスポンス例:

    • 通常のレスポンス例

      {
          "code": 200,
          "data": {},
          "id": "123",
          "message": "success",
          "version": "1.0"
      } 
    • 失敗応答のサンプル

      {
          "code": 6813、
          "data": {},
          "id": "123",
          "message": "トピック違法" 、
          "version": "1.0"
      } 
  • Alink JSON

    リクエストとレスポンスのトピック

    リクエストデータとレスポンスデータ

    リクエストトピック: /sys/${productKey}/${deviceName}/thing/event/property/pack/post

    Alink JSON形式のサンプルリクエスト:

    {
        "id": "123",
        "version": "1.0"、
        "sys":{
            "ack":0
        },
        "params": {
            "properties": {
                "Power": {
                    "value": "on",
                    "time": 1524448722000
                },
                "WF": {
                    "value":{
                    "time": 1524448722000
                }
            },
            "events": {
                "alarmEvent1": {
                    "value":{
                        "param1": "on",
                        "param2": "2"
                    },
                    "time": 1524448722000
                },
                "alertEvent2": {
                    "value":{
                        "param1": "on",
                        "param2": "2"
                    },
                    "time": 1524448722000
                }
            },
            "subDevices": [
                {
                    "identity": {
                        "productKey": "",
                        "deviceName": ""
                    },
                    "properties": {
                        "Power": {
                            "value": "on",
                            "time": 1524448722000
                        },
                        "WF": {
                            "value":{
                            "time": 1524448722000
                        }
                    },
                    "events": {
                        "alarmEvent1": {
                            "value":{
                                "param1": "on",
                                "param2": "2"
                            },
                            "time": 1524448722000
                        },
                        "alertEvent2": {
                            "value":{
                                "param1": "on",
                                "param2": "2"
                            },
                            "time": 1524448722000
                        }
                    }
                }
            ]
        },
        "method": "thing.event.property.pack.post"
    } 

    レスポンストピック: /sys/${productKey}/${deviceName}/thing/event/property/pack/post_reply

    Alink JSON形式のサンプル応答:

    {
        "code": 200,
        "data": {},
        "id": "123",
        "message": "success",
        "method": "thing.event.property.pack.post" 、
        "version": "1.0"
    } 

    リクエストが失敗した場合、{} が返されます。

パラメータ:

表9. リクエストパラメーター

パラメーター

データ型

説明

id

String

メッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。

バージョン

String

プロトコルのバージョン番号。 値を 1.0 に設定します。

sys

オブジェクト

拡張フィーチャのパラメータ。The parameter for extended features. 値には、各フィーチャのフィールドが含まれます。

説明

デバイスSDKを使用してデバイス機能を開発するときに拡張機能が設定されていない場合、このパラメーターは使用できません。 拡張機能はデフォルトの設定を使用します。

ack

Integer

sysパラメーターの拡張機能フィールド。 このフィールドは、IoT Platformが登録要求の応答データを返すかどうかを指定します。 有効な値:

  • 1: IoT Platformは応答データを返します。

  • 0: IoT Platformは応答データを返しません。

重要

パラメーターの詳細については、「TSLモデルの使用方法の例」をご参照ください。

機能が設定されていない場合、このパラメーターは使用できません。 デフォルトでは、IoT Platformは登録リクエストの応答データを返します。

params

オブジェクト

ゲートウェイがリクエストで送信する必要があるプロパティデータとイベントデータ。

プロパティ

オブジェクト

送信されるプロパティ。 各プロパティの識別子、valuetimeを指定できます。

timeパラメーターはオプションです。 ビジネス要件に基づいて、リクエストに時間パラメーターを指定するかどうかを決定できます。 ゲートウェイがIoT Platformにメッセージを頻繁に送信する場合は、メッセージの順序を特定できるように、リクエストに時間パラメーターを指定することを推奨します。

上記の例では、ゲートウェイはPower (power supply) およびWF (working current) プロパティに関する情報を送信します。

カスタムモジュールのプロパティを使用する場合、各プロパティの識別子は ${モジュール識別子 }:${ プロパティ識別子} 形式になります。 コロン (:) は、この式の2つの部分を接続するために使用されます。 例:

"test:Power": {
    "value": "on",
    "time": 1524448722000
} 

イベント

オブジェクト

送信されるイベント。 各イベントの識別子、、および時間を指定できます。

timeパラメーターはオプションです。 ビジネス要件に基づいて、リクエストに時間パラメーターを指定するかどうかを決定できます。 ゲートウェイが頻繁にメッセージをIoT Platformに送信する場合は、リクエストに時間パラメーターを指定することを推奨します。 これは、メッセージの順序を識別するのに役立ちます。

上記の例では、alarmEvent1 (アラートイベント1) とalarmEvent2 (アラートイベント2) が送信されます。 イベントのパラメータはparam1とparam2である。

カスタムモジュールのイベントを使用する場合、各イベントの識別子は ${モジュール識別子 }:${ イベント識別子} になります。 コロン (:) は、この式の2つの部分を接続するために使用されます。 例:

"test:alarmEvent1": {
    "value":{
        "param1": "on",
        "param2": "2"
    },
    "time": 1524448722000
} 

サブデバイス

オブジェクト

接続されたサブデバイスに関する情報。

productKey

String

接続されたデバイスが属するプロダクトのProductKey。

deviceName

String

サブデバイスのDeviceName。

メソッド

String

リクエスト方式。 値をthing.event.property.pack.postに設定します。

表10. 応答パラメーター

パラメーター

データ型

説明

id

String

メッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。

コード

Integer

ステータスコード。 値200は、成功したリクエストを示します。

説明

IoT Platformは、デバイス、トポロジ関係、および送信されたプロパティとイベントが、TSLモデルで定義されている形式に準拠しているかどうかを確認します。 前の項目の形式が無効な場合、リクエストは失敗しました。

データ

オブジェクト

リクエストが成功した場合、このパラメーターは空のままになります。

メッセージ

String

応答メッセージ。 リクエストが成功した場合、「成功」メッセージが表示されます。

メソッド

String

レスポンス内のリクエストメソッド。 パラメーターの値は、リクエストのmethodパラメーターの値と同じです。

バージョン

String

プロトコルのバージョン番号。 パラメーターの値は、リクエストのversionパラメーターの値と同じです。

エラーコード: IoT Platformはデバイスにエラーコードを返す場合があります。 詳細については、「デバイスのエラーコード」をご参照ください。

データ転送: IoT Platformは、サーバー側サブスクリプションまたはデータ転送機能を使用して、ゲートウェイから報告されたTSLデータのバッチをサーバーまたは他のAlibaba Cloudサービスに転送できます。 次に、システムは、TSLデータをメッセージに分離し、メッセージを順番に転送する。 メッセージは、ゲートウェイおよびゲートウェイに接続されるサブデバイスのプロパティおよびイベントのデータを含む。 関連するトピックとデータ形式の詳細については、「デバイスプロパティの送信」および「デバイスイベントの送信」をご参照ください。

デバイスが過去のTSLデータをIoT Platformに送信する

デバイスからIoT Platformにデータを送信するためのトピックとデータ形式:

  • リクエストトピック: /sys/${productKey}/${deviceName}/thing/event/property/history/post

  • レスポンストピック: /sys/${productKey}/${deviceName}/thing/event/property/history/post_reply

Alink JSON形式のサンプルリクエスト:

{
    "id": "123", 
    "version": "1.0"、
    "sys":{
        "ack":0
    }, 
    "method": "thing.event.property.history.post" 、 
    "params": [
        {
            "identity": {
                "productKey": "", 
                "deviceName": ""
            }, 
            "properties": [
                {
                    "Power": {
                        "value": "on", 
                        "time": 1524448722000
                    }, 
                    "WF": {
                        "value": "3" 、 
                        "time": 1524448722000
                    }
                }, 
                {
                    "Power": {
                        "value": "on", 
                        "time": 1524448722000
                    }, 
                    "WF": {
                        "value": "3" 、 
                        "time": 1524448722000
                    }
                }
            ], 
            "events": [
                {
                    "alarmEvent": {
                        "value":{
                            "Power": "on", 
                            "WF": "2"
                        }, 
                        "time": 1524448722000
                    }, 
                    "alertEvent": {
                        "value":{
                            "パワー": "オフ" 、 
                            "WF": "3"
                        }, 
                        "time": 1524448722000
                    }
                }
            ]
        }, 
        {
            "identity": {
                "productKey": "", 
                "deviceName": ""
            }, 
            "properties": [
                {
                    "Power": {
                        "value": "on", 
                        "time": 1524448722000
                    }, 
                    "WF": {
                        "value": "3" 、 
                        "time": 1524448722000
                    }
                }
            ], 
            "events": [
                {
                    "alarmEvent": {
                        "value":{
                            "Power": "on", 
                            "WF": "2"
                        }, 
                        "time": 1524448722000
                    }, 
                    "alertEvent": {
                        "value":{
                            "パワー": "オフ" 、 
                            "WF": "3"
                        }, 
                        "time": 1524448722000
                    }
                }
            ]
        }
    ]
}

Alink JSON形式のサンプル応答:

  • 通常のレスポンス例

    {
        "code": 200,
        "data": {},
        "id": "123",
        "message": "success",
        "method": "thing.event.property.history.post" 、
        "version": "1.0"
    } 
  • 失敗応答のサンプル

    {
        "code": 5092、
        "data": {},
        "id": "123",
        "message": "プロパティが見つかりません" 、
        "method": "thing.event.property.history.post" 、
        "version": "1.0"
    } 

パラメータ:

表11. リクエストパラメーター

パラメーター

データ型

説明

id

String

メッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。

バージョン

String

プロトコルのバージョン番号。 値を 1.0 に設定します。

sys

オブジェクト

拡張フィーチャのパラメータ。The parameter for extended features. 値には、各フィーチャのフィールドが含まれます。

説明

デバイスSDKを使用してデバイス機能を開発するときに拡張機能が設定されていない場合、このパラメーターは使用できません。 拡張機能はデフォルトの設定を使用します。

ack

Integer

sysパラメーターの拡張機能フィールド。 このフィールドは、IoT Platformが登録要求の応答データを返すかどうかを指定します。 有効な値:

  • 1: IoT Platformは応答データを返します。

  • 0: IoT Platformは応答データを返しません。

重要

パラメーターの詳細については、「TSLモデルの使用方法の例」をご参照ください。

機能が設定されていない場合、このパラメーターは使用できません。 デフォルトでは、IoT Platformは登録リクエストの応答データを返します。

メソッド

String

リクエスト方式。 値をthing.event.property.history.postに設定します。

params

オブジェクト

デバイスがリクエストで送信する必要があるプロパティデータとイベントデータ。

identity

String

データが属するデバイスに関する証明書情報。 productKeyおよびdeviceNameパラメーターを指定する必要があります。

説明

直接接続されたデバイスは、自身の過去のTSLデータのみを送信できます。 ゲートウェイは、ゲートウェイに接続されているサブデバイスの履歴TSLデータを送信できます。 ゲートウェイが接続されたサブデバイスの履歴データを送信する場合、IDパラメータには、接続されたサブデバイスに関する情報が含まれます。

プロパティ

オブジェクト

送信されるプロパティ。 各プロパティの識別子、valuetimeパラメーターを指定できます。

前の例では、デバイスはPower (power supply) およびWF (working current) プロパティに関する履歴データを送信します。

カスタムモジュールのプロパティを使用する場合、各プロパティの識別子は ${モジュール識別子 }:${ プロパティ識別子} 形式になります。 コロン (:) は、この式の2つの部分を接続するために使用されます。 例:

"test:Power": {
    "value": "on",
    "time": 1524448722000
} 

イベント

オブジェクト

デバイスが送信する必要があるイベント。 各イベントの識別子、、および時間を指定できます。

上記の例では、alarmEvent (アラートイベント) イベント、Power (power supply) プロパティ、およびWF (working current) プロパティに関する履歴データが送信されます。

カスタムモジュールのイベントを使用する場合、各イベントの識別子は ${モジュール識別子 }:${ イベント識別子} になります。 コロン (:) は、この式の2つの部分を接続するために使用されます。 例:

"test:alarmEvent": {
    "value":{
        "Power": "on", 
        "WF": "2"
    }, 
    "time": 1524448722000
} 
表12. 応答パラメーター

パラメーター

データ型

説明

id

String

メッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。

コード

Integer

ステータスコード。 詳細については、「デバイスの共通コード」をご参照ください。

データ

オブジェクト

リクエストが成功した場合、このパラメーターは空のままになります。

メッセージ

String

応答メッセージ。 リクエストが成功した場合、「成功」メッセージが表示されます。

メソッド

String

レスポンス内のリクエストメソッド。 パラメーターの値は、リクエストのmethodパラメーターの値と同じです。

バージョン

String

プロトコルのバージョン番号。 パラメーターの値は、リクエストのversionパラメーターの値と同じです。

エラーコード: IoT Platformはデバイスにエラーコードを返す場合があります。 詳細については、「デバイスのエラーコード」をご参照ください。

データ転送: IoT Platformは、サーバー側サブスクリプションまたはデータ転送機能を使用して、デバイスから送信された過去のTSLデータをサーバーまたは他のAlibaba Cloudサービスに転送できます。 関連するトピックとデータ形式の詳細については、「履歴プロパティの送信」および「履歴イベントの送信」をご参照ください。

重要

IoT Platformが過去のTSLデータを転送するとき、propertiesパラメーターの値のプロパティごと、またはeventsパラメーターの値のイベントごとにメッセージを作成します。 メッセージは、プロパティおよびイベントの履歴データを転送するために使用される。

デバイスは複数のプロパティとイベントを同時にIoT Platformに送信します

デバイスからIoT Platformにデータを送信するためのトピックとデータ形式:

  • リクエストトピック: /sys/${productKey}/${deviceName}/thing/event/property/batch/post

  • レスポンストピック: /sys/${productKey}/${deviceName}/thing/event/property/batch/post_reply

Alink JSON形式のサンプルリクエスト:

{
    "id": "123", 
    "version": "1.0"、
    "sys":{
        "ack":0
    }, 
    "method": "thing.event.property.batch.post" 、 
    "params": {
        "properties": {
            "パワー": [
                {
                    "value": "on", 
                    "time": 1524448722000
                },
                {
                    "value": "off" 、 
                    "time": 1524448722001
                }
            ], 
            "WF": [
                {
                    "value": 3、 
                    "time": 1524448722000
                },
                {
                    "value": 4、 
                    "time": 1524448722009
                }
            ]
        }, 
        "events": {
            "alarmEvent": [
                {
                    "value":{
                        "Power": "on", 
                        "WF": "2"
                    }, 
                    "time": 1524448722000
                },
                {
                    "value":{
                        "Power": "on", 
                        "WF": "2"
                    }, 
                    "time": 1524448722000
                }
            ]
        }
    }
}

Alink JSON形式のサンプル応答:

  • 通常のレスポンス例

    {
        "code": 200,
        "data": {},
        "id": "123",
        "message": "success",
        "method": "thing.event.property.batch.post" 、
        "version": "1.0"
    } 
  • 失敗応答のサンプル

    {
        "code": 9201、
        "data": {},
        "id": "123",
        "message": "device offLine" 、
        "method": "thing.event.property.batch.post" 、
        "version": "1.0"
    } 

パラメータ:

表13. リクエストパラメーター

パラメーター

データ型

説明

id

String

メッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。

バージョン

String

プロトコルのバージョン番号。 値を 1.0 に設定します。

sys

オブジェクト

拡張フィーチャのパラメータ。The parameter for extended features. 値には、各フィーチャのフィールドが含まれます。

説明

デバイスSDKを使用してデバイス機能を開発するときに拡張機能が設定されていない場合、このパラメーターは使用できません。 拡張機能はデフォルトの設定を使用します。

ack

Integer

sysパラメーターの拡張機能フィールド。 このフィールドは、IoT Platformが登録要求の応答データを返すかどうかを指定します。 有効な値:

  • 1: IoT Platformは応答データを返します。

  • 0: IoT Platformは応答データを返しません。

重要

パラメーターの詳細については、「TSLモデルの使用方法の例」をご参照ください。

機能が設定されていない場合、このパラメーターは使用できません。 デフォルトでは、IoT Platformは登録リクエストの応答データを返します。

メソッド

String

リクエスト方式。 値をthing.event.property.batch.postに設定します。

params

オブジェクト

デバイスがリクエストで送信する必要があるプロパティデータとイベントデータ。

プロパティ

オブジェクト

送信されるプロパティ。 各プロパティの識別子、valuetimeパラメーターを指定できます。

上記の例では、デバイスはPower (電源) プロパティとWF (動作電流) プロパティを同時に送信します。

カスタムモジュールのプロパティを使用する場合、各プロパティの識別子は ${モジュール識別子 }:${ プロパティ識別子} 形式になります。 コロン (:) は、この式の2つの部分を接続するために使用されます。 例:

"test:Power": {
    "value": "on",
    "time": 1524448722000
} 

イベント

オブジェクト

デバイスが送信する必要があるイベント。 各イベントの識別子、、および時間を指定できます。

上記の例では、デバイスはalarmEvent (アラートイベント) 、Power (power supply) プロパティ、およびWF (working current) プロパティを同時に送信します。

カスタムモジュールのイベントを使用する場合、各イベントの識別子は ${モジュール識別子 }:${ イベント識別子} になります。 コロン (:) は、この式の2つの部分を接続するために使用されます。 例:

"test:alarmEvent": {
    "value":{
        "Power": "on", 
        "WF": "2"
    }, 
    "time": 1524448722000
} 
表14. 応答パラメーター

パラメーター

データ型

説明

id

String

メッセージの ID 。 有効な値: 0 ~ 4294967295 各メッセージIDは、デバイスに対して一意である必要があります。

コード

Integer

ステータスコード。 詳細については、「デバイスの共通コード」をご参照ください。

データ

オブジェクト

リクエストが成功した場合、このパラメーターは空のままになります。

メッセージ

String

応答メッセージ。 リクエストが成功した場合、「成功」メッセージが表示されます。

メソッド

String

レスポンス内のリクエストメソッド。 パラメーターの値は、リクエストのmethodパラメーターの値と同じです。

バージョン

String

プロトコルのバージョン番号。 パラメーターの値は、リクエストのversionパラメーターの値と同じです。

エラーコード: IoT Platformはデバイスにエラーコードを返す場合があります。 詳細については、「デバイスのエラーコード」をご参照ください。

データ転送: IoT Platformは、サーバー側サブスクリプション機能を使用して、デバイスから送信されたTSLデータのバッチをサーバーに転送できます。 プロパティとイベントは、2つの別々のメッセージで転送されます。 特定のトピックとデータ形式の詳細については、「デバイスプロパティの一括送信」および「デバイスイベントの一括送信」をご参照ください。

参考資料

プロパティデータの送信、履歴データの送信、およびプロパティの複数の値の同時送信の違いは何ですか?