このトピックでは、データ形式カスタムのプロダクトの Thing Specification Language (TSL) データを解析するスクリプトを記述する方法について説明します。 アップストリームとダウンストリームのプロパティデータを解析するサンプルスクリプトを示します。

手順 1:スクリプトの送信

  1. IoT Platform コンソールでプロダクトを作成します。
    プロダクトの作成方法の詳細については、「プロダクトの作成」をご参照ください。
    [データ形式][カスタム] に設定します。
  2. プロダクトの TSL モデルを定義します。 カスタムプロパティの詳細については、「機能の定義」をご参照ください。

    この例では、次の 3 つのプロパティが定義されています。

    識別子 データ型 有効値 読み取り/書き込みタイプ
    prop_float float -100 から 100 読み取り/書き込み
    prop_int16 int32 -100 から 100 読み取り/書き込み
    prop_bool bool 0:有効、1:無効 読み取り/書き込み

    アップストリームとダウンストリームの TSL データを解析するスクリプトは、ここで定義されている TSL に基づいて定義されます。

  3. 通信プロトコルを次のように定義します。
    表 1. デバイスからレポートされたデータのリクエスト
    フィールド バイト数
    フレームタイプ 1
    リクエスト ID 4
    プロパティ prop_int16 2
    プロパティ prop_bool 1
    プロパティ prop_float 4
    表 2. デバイスからレポートされたデータに対するレスポンス
    フィールド バイト数
    フレームタイプ 1
    リクエスト ID 4
    リターンコード 1
    表 3. プロパティ設定のリクエスト
    フィールド バイト数
    フレームタイプ 1
    リクエスト ID 4
    プロパティ prop_int16 2
    プロパティ prop_bool 1
    プロパティ prop_float 4
    表 4. プロパティ設定に対するレスポンス
    フィールド バイト数
    フレームタイプ 1
    リクエスト ID 4
    リターンコード 1
  4. スクリプトを記述します。
    1. [プロダクト] ページでターゲットプロダクトを見つけ、[表示] をクリックします。
    2. [プロダクト詳細] ページで、[データ解析] タブを選択します。
    3. スクリプト言語を選択します。 [スクリプトの編集] テキストボックスにスクリプトを入力します。

      JavaScript (ECMAScript 5) と Python 2.7 がサポートされています。

      アップストリームとダウンストリームの TSL データを解析するには、スクリプトで次の関数を呼び出す必要があります。

      • Alink JSON データをカスタムデータに変換する関数
        • JavaScript (ECMAScript 5):protocolToRawData
        • Python 2.7:protocol_to_raw_data
      • カスタムデータを Alink JSON データに変換する関数
        • JavaScript (ECMAScript 5):rawDataToProtocol
        • Python 2.7:raw_data_to_protocol

      完全なサンプルスクリプトについては、「JavaScript 例」と「Python 例」をご参照ください。

      また、解析したデータをカスタム Topic にアップロードするスクリプトを記述する必要があります。 スクリプトの記述方法の詳細については、「概要」をご参照ください。

      カスタム Topic データと TSL データのデータ解析を含む完全なサンプルスクリプトについては、「完全なサンプルスクリプト (JavaScript)」と「完全なサンプルスクリプト (Python)」をご参照ください。

手順 2:オンラインでのスクリプトのテスト

スクリプトの編集後、[アナログ入力] タブで [シミュレーションタイプ] を選択し 、テストスクリプトとシミュレーションデータを入力してスクリプトをテストします。

  • デバイスからレポートされたプロパティデータを解析します。

    シミュレーションタイプを [デバイス送信データ] に設定し、次のシミュレーションデータを入力して [実行] をクリックします。

    0x00002233441232013fa00000

    データ解析エンジンは、スクリプトで定義されたルールに従って、パススルーデータを JSON データに変換します。

    [解析結果] をクリックして、解析されたデータを表示します。

    {
        "method": "thing.event.property.post", 
        "id": "2241348", 
        "params": {
            "prop_float": 1.25, 
            "prop_int16": 4658, 
            "prop_bool": 1
        }, 
        "version": "1.0"
    }
  • IoT Platform から返されたレスポンスを解析します。

    シミュレーションタイプを [デバイス受信データ] に設定し、次の JSON データを入力して [実行] をクリックします。

    {
      "id": "12345",
      "version": "1.0",
      "code": 200,
      "method": "thing.event.property.post",
      "data": {}
    }

    データ解析エンジンは、JSON データを次のデータに変換します。

    0x0200003039c8
  • IoT Platform から送信されたプロパティ設定用のデータを解析します。

    シミュレーションタイプを [デバイス受信データ] に設定し、次の JSON データを入力して [実行] をクリックします。

    {
        "method": "thing.service.property.set", 
        "id": "12345", 
        "version": "1.0", 
        "params": {
            "prop_float": 123.452, 
            "prop_int16": 333, 
            "prop_bool": 1
        }
    }

    データ解析エンジンは、JSON データを次のデータに変換します。

    0x0100003039014d0142f6e76d
  • プロパティを設定した後、デバイスから返された結果データを解析します。

    シミュレーションタイプを [デバイス送信データ] に設定し、次のシミュレーションデータを入力して [実行] をクリックします。

    0x0300223344c8

    データ解析エンジンは、パススルーデータを次の JSON データに変換します。

    {
      "code": "200",
      "data": {},
      "id": "2241348",
      "version": "1.0"
    }

手順 3:スクリプトの送信

スクリプトでデータが正しく解析されることを確認したら、[送信] をクリックして、IoT Platform のバックエンドシステムにスクリプトを送信します。

IoT Platform は、送信されたスクリプトのみを呼び出すことができます。 ステータスが下書きのスクリプトは呼び出すことができません。

手順 4:物理デバイスでのデバッグ

スクリプトを使用する前に、実デバイスを使用して IoT Platform と通信します。 IoT Platform がスクリプトを呼び出し、アップストリームデータとダウンストリームデータを解析できることを確認してください。

  • アップストリームプロパティデータをテストします。
    1. デバイスからレポートされたプロパティデータ (0x00002233441232013fa00000 など) を使用します。
    2. IoT Platform コンソールで、[デバイス] > [デバイス] を選択します。
    3. ターゲットデバイスを見つけ、[表示] をクリックします。 [デバイス情報] ページの [ステータス] タブで、プロパティデータが存在するかどうかを確認します。
  • ダウンストリームプロパティデータをテストします。
    1. IoT Platform コンソールで、[監視と運用] > [オンラインデバッグ] を選択します。
    2. デバッグするプロダクトとデバイスを選択します。 [実デバイスのデバッグ] をクリックします。 デバッグ機能をプロパティの識別子 (prop_int16 など) に設定します。 メソッドを [Set] に設定します。 次のデータを入力し、[コマンドの送信] をクリックします。
      {
          "method": "thing.service.property.set", 
          "id": "12345", 
          "version": "1.0", 
          "params": {
              "prop_float": 123.452, 
              "prop_int16": 333, 
              "prop_bool": 1
          }
      }
    3. デバイスがプロパティ設定用のデータを受信しているかどうかを確認します。
    4. このデバイスの [デバイス情報] ページの [ステータス] タブで、プロパティデータをレポートしているかどうかを確認します。

関連トピック

  • JavaScript (ECMAScript 5) のスクリプトテンプレートと例の詳細については、「JavaScript 例」をご参照ください。
  • Python 2.7 のスクリプトテンプレートと例の詳細については、「Python 例」をご参照ください。
  • データ解析プロセスの詳細については、「データ解析の概要」をご参照ください。
  • カスタム Topic データの解析方法の詳細については、「概要」をご参照ください。