このトピックでは、data TypeパラメーターがCustomに設定されている製品のThing Specification Language (TSL) データを解析するスクリプトを作成し、スクリプトを送信する方法について説明します。 このトピックでは、上流および下流のプロパティデータを解析するために使用できるサンプルスクリプトも提供します。
前提条件
プロダクトのデータ型パラメーターは、プロダクトの作成時に [カスタム] に設定されます。 詳細については、「プロダクトの作成」をご参照ください。
背景情報
Data Typeパラメーターは、ICA標準データ形式 (Alink JSON) に設定されます。 この場合、デバイスはAlink JSON形式でデータを生成し、そのデータをIoT Platformに報告します。 Alink JSONデータ形式の詳細については、「デバイスのプロパティ、イベント、およびサービス」をご参照ください。
Data TypeパラメーターはCustomに設定されています。 この場合、IoT Platformは、送信したデータ解析スクリプトを使用してアップストリームTSLデータをAlink JSON形式のデータに変換し、デバイスがIoT Platformと通信するときにダウンストリームTSLデータをカスタム形式のデバイスデータに変換します。
この例では、デフォルトモジュールのプロパティが使用されます。 カスタムモジュールを使用する場合は、各識別子を ${モジュール識別子 }:${ プロパティ識別子} の形式で指定する必要があります。 例: model1:prop_int16
ステップ1: スクリプトを書く
プロダクトを作成します。 IoT Platformコンソールでプロダクトを作成し、[データ型] パラメーターを [カスタム] に設定します。
[TSL機能の追加]: 製品のTSLモデルを定義します。
この例では、3つのプロパティが定義される。 次の表にプロパティを示します。
ID
データ型
有効値
読み取り /書き込みタイプ
prop_float
FLOAT
-100 ~ 100
Read と write
prop_int16
INT32
-100 ~ 100
Read と write
prop_bool
BOOLEAN
0: enabledおよび1: disabled
Read と write
TSLモデルに基づいてアップストリームおよびダウンストリームのTSLデータを解析するスクリプトが作成されます。
この例では、データ通信に使用されるパラメータの値の長さが指定される。 次の表に長さを示します。
デバイスがデータを報告するために送信するリクエスト
パラメーター
バイト数
フレームタイプ
1 バイト
リクエストの ID です。
4 バイト
prop_int16
2バイト
prop_bool
1 バイト
prop_float
4 バイト
データレポート要求への応答
パラメーター
バイト数
フレームタイプ
1 バイト
リクエストの ID です。
4 バイト
結果コード
1 バイト
プロパティの設定要求Requests to configure properties
パラメーター
バイト数
フレームタイプ
1 バイト
リクエストの ID です。
4 バイト
prop_int16
2バイト
prop_bool
1 バイト
prop_float
4 バイト
プロパティ設定要求への応答
パラメーター
バイト数
フレームタイプ
1 バイト
リクエストの ID です。
4 バイト
結果コード
1 バイト
スクリプトを作成します。
[製品] ページで、管理する製品を見つけ、[操作] 列の [表示] をクリックします。
製品の詳細ページで、[メッセージ分析] をクリックします。
プログラミング言語を選択し、[スクリプトの編集] フィールドにスクリプトを記述します。
サポートされるスクリプト言語
アップストリームデータをカスタム形式でAlink JSON形式のデータに変換する関数:
Alink JSON形式のデータをカスタム形式のダウンストリームデータに変換する関数:
サンプルコード
JavaScript (ECMAScript 5)
rawDataToProtocol
protocolToRawData
Python 2.7
raw_data_to_protocol
protocol_to_raw_データ
PHP 7.2
rawDataToProtocol
protocolToRawData
説明カスタムトピックに送信されるデータを解析するために使用できるスクリプトを記述する必要があります。 スクリプトの記述方法については、「メッセージ解析スクリプトの送信」をご参照ください。
カスタムトピックに送信されるデータの解析およびTSLデータの解析に使用できる完全なサンプルスクリプトの詳細については、「カスタムデータの解析に使用されるJavaScriptコードのサンプル」、「Pythonでパススルーまたはカスタムデータを解析するための完全なサンプルコード」、および「カスタムデータの解析に使用されるPHPコードのサンプル」をご参照ください。
手順 2:オンラインでのスクリプトのテスト
この例で指定され、返される16進文字列とJSON形式のデータは、テストにのみ使用され、実際のシナリオではデバッグには使用できません。
スクリプトを作成した後、[シミュレーションタイプ] パラメーターを設定し、[入力シミュレーション] タブでシミュレーションデータを指定してスクリプトをテストします。
デバイスがIoT Platformに報告するシミュレートされたプロパティデータを使用してスクリプトをテストします。
シミュレーションタイプパラメーターを [アップストリームデバイスデータ] に設定し、次のシミュレーションデータを入力して、[実行] をクリックします。
説明この例では、シミュレートされたJavaScriptデータが使用されます。 サンプルJavaScriptスクリプトの詳細については、「サンプルJavaScriptスクリプト」をご参照ください。
サンプルPythonおよびPHPスクリプトの詳細については、「Pythonサンプルスクリプト」および「PHPサンプルスクリプト」をご参照ください。
文字列を16進データに変換するツールを使用して、JSON形式のデータを16進データに変換できます。 たとえば、変換された16進データが
00002233441232013fa0000 0の場合、次のデータを指定します。0x00002233441232013fa0000 0データ解析エンジンは、スクリプトで定義されているルールに基づいて、パススルーデータを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形式のデータを次のデータに変換します。
0x0200003039c 8IoT Platformがデバイスに送信するシミュレートされたデータを使用してスクリプトをテストし、デバイスにプロパティの変更を要求します。
[シミュレーションタイプ] パラメーターを [受信デバイスデータ] に設定し、次のJSON形式のデータを入力して、[実行] をクリックします。
{ "method": "thing.service.property.set", "id": "12345", "version": "1.0"、 "params": { "prop_float": 123.452, "prop_int16": 333, "prop_bool": 1 } }データ解析エンジンは、JSON形式のデータを次のデータに変換します。
0x0100003039014d0142f6e7 6dデバイスがプロパティを変更した後にデバイスがIoT Platformに返すシミュレートされた結果データを使用してスクリプトをテストします。
シミュレーションタイプパラメーターを [アップストリームデバイスデータ] に設定し、次のデータを入力して [実行] をクリックします。
0x030022334c 8データ解析エンジンは、パススルーデータを次のJSON形式のデータに変換します。
{ "code": "200", "data": {}, "id": "2241348", "version": "1.0" }
手順 3:スクリプトの送信
IoT Platformがスクリプトを実行する前に、スクリプトをIoT Platformに送信する必要があります。 ドラフト状態のスクリプトは呼び出すことができません。
スクリプトが期待どおりにデータを解析できることを確認したら、[送信] をクリックしてスクリプトをIoT Platformに送信します。 IoT Platformは、スクリプトを使用してアップストリームデータとダウンストリームデータを解析できます。
手順 4:物理デバイスでのデバッグ
ビジネスでスクリプトを使用する前に、物理デバイスを使用してIoT Platformと通信します。 これにより、IoT Platformがスクリプトを呼び出し、アップストリームとダウンストリームデータを解析できるかどうかを確認できます。
IoT Platform Link SDKを使用して、デバイスを設定し、デバイスをIoT Platformに接続できます。 詳細については、「Link SDK」をご参照ください。
IoT Platformがスクリプトを呼び出してアップストリームプロパティデータを解析できることを確認します。
デバイスを使用して、
0x00002233441232013fa0000 0などのプロパティデータをIoT Platformに報告します。IoT Platformコンソールで、左側のナビゲーションウィンドウで を選択します。
[デバイス] ページでデバイスを見つけ、[操作] 列の [表示] をクリックします。 [デバイスの詳細] ページで、 タブ、[ステータス] タブをクリックします。 報告されたプロパティデータが存在するかどうかを確認します。
IoT Platformがスクリプトを呼び出してダウンストリームプロパティデータを解析できることを確認します。
IoT Platformコンソールにログインします。 左側のナビゲーションページで、 を選択します。
[オンラインデバッグ] ページで、デバッグする製品とデバイスを選択し、[デフォルトモジュール] を選択します。 デバッグするプロパティの識別子 (prop_int16など) を選択します。 メソッドを [Set] に設定します。 次のデータを入力し、[コマンドの送信] をクリックします。
{ "method": "thing.service.property.set", "id": "12345", "version": "1.0"、 "params": { "prop_float": 123.452, "prop_int16": 333, "prop_bool": 1 } }デバイスがプロパティを設定するコマンドを受信したかどうかを確認します。
[デバイスの詳細] ページで、 を選択します。 表示されるタブで、現在のプロパティデータがデバイスによって報告されているかどうかを確認します。
(オプション) メッセージ解析スクリプトの更新
メッセージペアリングスクリプトが送信された後、[メッセージ分析] タブでスクリプトを変更または削除し、このトピックで説明されている手順に従って新しいスクリプトをテストおよび送信できます。 スクリプトが送信された後、約1分で製品の既存のすべてのデバイスに有効になります。 また、製品の新しく追加されたデバイスにも有効になります。
スクリプトが変更および再送信された後、メッセージ解析サービスに関連するコードも変更されていることを確認します。 そうしないと、ビジネスの中断が発生する可能性があります。
スクリプトを削除すると、メッセージ解析サービスが利用できなくなり、ビジネスが中断する可能性があります。
作業は慎重に行ってください。
参考資料
データ解析のプロセスについては、「メッセージ解析」をご参照ください。
カスタムトピックに送信されるデータを解析する方法の詳細については、「メッセージ解析スクリプトの送信」をご参照ください。
デバイスにメッセージを送信するために使用されるAPI操作の詳細については、「TSLモデルの使用」および「メッセージング」をご参照ください。