パーサーを設定して、処理されたデータを Lindorm に転送できます。このトピックでは、データ転送プロセスについて説明します。この例では、Thing Specification Language (TSL) 通信 Topic がソース Topic として使用されます。
前提条件
Lindorm へのデータ転送をサポートするリージョンに、データを Lindorm に転送できる IoT Platform インスタンスが作成されていること。詳細については、「リージョン」をご参照ください。
DataSource という名前のデータソースが作成され、TSL 通信 Topic がデータソースに追加されていること。詳細については、「データソースの作成」をご参照ください。
Lindorm コンソールで Lindorm インスタンスが作成され、ビジネス要件に基づいて設定が構成されていること。詳細については、「インスタンスの作成」をご参照ください。
重要リージョン内のデータ転送のみがサポートされています。Lindorm インスタンスは、IoT Platform インスタンスと同じリージョンに存在する必要があります。
[従量課金] および [サブスクリプション] の Lindorm インスタンスのみがサポートされています。Lindorm インスタンスを購入する際、[エンジンタイプの選択] セクションで [時系列エンジンノード] パラメーターを 1 以上の値に設定する必要があります。
ネイティブ Java 用の LindormTSDB SDK が統合されていること。時系列データベース、テーブル、およびデータベースの管理に使用されるアカウントと対応するパスワードが作成されていること。複数の Lindorm インスタンスに時系列データを保存できる設定が構成されていること。詳細については、「チュートリアル: Java Native SDK を使用して LindormTSDB に接続して使用する」をご参照ください。
背景情報
データ宛先を設定すると、システムは IoT Platform のルールエンジンを使用して、デバイスデータを Lindorm に転送するために次の設定を自動的に構成します。
IoT Platform は、Lindorm インスタンスが接続されている vSwitch の 2 つの IP アドレスを占有します。vSwitch の IPv4 CIDR ブロックが Lindorm インスタンスのホワイトリストに追加されます。
Lindorm インスタンスがデプロイされている仮想プライベートクラウド (VPC) にマネージドセキュリティグループが作成されます。セキュリティグループのデフォルト名は sg-nsm- で始まります。
この例では、次のデータが時系列データベースに書き込まれます。
timestamp: timestamp() 関数を呼び出して、デバイスがデータを送信した時刻を取得します。
tags:
deviceName()関数を呼び出して DeviceName を取得します。{"device_id": deviceName(), "region": "cn-shanghai"}タグがデータベースに書き込まれます。fields: JSONPath 式を使用して、デバイスによって送信された Temperature および Humidity プロパティの値を取得します。値はデータベースに書き込まれます。
制限事項
新しいバージョンのデータ転送機能のみを使用して、データを Lindorm に転送できます。
データ宛先の作成
- IoT Platform コンソールにログインします。
[概要] ページで、管理するインスタンスを見つけて、インスタンス ID またはインスタンス名をクリックします。
- 左側のナビゲーションウィンドウで、 を選択します。
[データ転送] ページの右上隅にある [新しいバージョンへ] をクリックして、新しいバージョンに移動します。
説明このステップを実行した場合、[メッセージ転送] > [データ転送] を選択すると、新しいバージョンの [データ転送] ページが表示されます。
[データ宛先] をクリックします。[データ宛先] タブで、[データ宛先の作成] をクリックします。
[データ宛先の作成] ダイアログボックスで、データ宛先の名前を入力します。例: DataPurpose。他のパラメーターを設定し、[OK] をクリックします。次の表にパラメーターを示します。
パラメーター
説明
操作
[ApsaraDB For Lindorm にデータを保存] を選択します。
承認
[承認] をクリックします。システムは、IoT Platform が Lindorm にデータを書き込むことを承認するロールとポリシーを自動的に作成します。詳細については、「AliyunServiceRoleForIoTRuleengineLindorm」をご参照ください。
説明IoT Platform がすでに承認されている場合は、このステップをスキップしてください。
リージョン
IoT Platform インスタンスが存在するリージョンを指定します。
Lindorm インスタンス
VPC で作成した Lindorm インスタンスを指定します。
データベース
データの受信に使用するデータベースの名前を指定します。データベースは Lindorm インスタンスに属している必要があります。
テーブル名
データの受信に使用するテーブルの名前を指定します。テーブルはデータベースに属している必要があります。
アカウント
時系列データベースの管理に使用するアカウントの名前と対応するパスワードを指定します。
詳細については、「ユーザーと権限の管理」をご参照ください。
パスワード
パーサーの設定と開始
DataParser という名前のパーサーを作成します。詳細については、「パーサーの作成」をご参照ください。
[パーサーの詳細] ページで、パーサーを作成済みのデータソースに関連付けます。
[データソース] ウィザードのステップで、[データソースの関連付け] をクリックします。
表示されるダイアログボックスで、[データソース] ドロップダウンリストから DataSource を選択し、[OK] をクリックします。
[パーサーの詳細] ページで、パーサーを作成済みのデータ宛先に関連付けます。
ウィザードで [データ宛先] をクリックします。[データ宛先] セクションで、[データ宛先の関連付け] をクリックします。
表示されるダイアログボックスで、[データ宛先] ドロップダウンリストから DataPurpose を選択し、[OK] をクリックします。
[データ宛先] セクションで、[データ宛先 ID] を表示して保存します。この例では、ID は 1000 です。
パーサースクリプトを記述するときは、[データ宛先 ID] を使用する必要があります。
[パーサーの詳細] ページで、[パーサースクリプト] をクリックします。
コードエディタにスクリプトを入力します。詳細については、「スクリプト構文」をご参照ください。
詳細については、「関数」をご参照ください。
// payload() 関数を呼び出して、デバイスから送信されたデータを取得し、JSON 形式のデータに変換します。 var data = payload("json"); // 送信された温度と湿度の値をフィルタリングします。 var h = data.items.Humidity.value; var t = data.items.Temperature.value; var fields = {"temperature":t, "humidity":h}; var tags = {"device_id": deviceName(), "region": "cn-shanghai"}; var timestamp = timestamp(); // 送信された TSL データを転送します。 writeLindorm(1000, timestamp, tags, fields);説明Lindorm データベースの対応するテーブルフィールドのデータ型が Double であるが、デバイスから送信された湿度値のデータ型が INT である場合、データ転送を成功させるために、次のコードを使用してフィールドのデータ型を Double に変更する必要があります。
varfields={ "temperature":t, "humidity":{ "type":"DOUBLE", "value":h } };[デバッグ] をクリックします。表示されるダイアログボックスで、プロダクトとデバイスを選択し、Topic を指定してから、ペイロードデータを入力してスクリプトが期待どおりに実行されるかどうかを確認します。
次の図にパラメーターを示します。

次の結果は、スクリプトが実行されたことを示します。

[公開] をクリックします。
[データ転送] ページの [パーサー] タブに移動します。DataParser パーサーを見つけ、[アクション] 列の [開始] をクリックしてパーサーを開始します。
デバイスをシミュレートして TSL データを送信し、データ転送結果を表示します。詳細については、「デバイスシミュレーション」をご参照ください。
シミュレートされたデバイスによって送信されたデータが Lindorm 時系列データベースに転送された後、LindormTSDB SDK のクエリ操作を呼び出して、転送されたデータを取得できます。