データ転送ルールを設定して、処理されたデータをストレージ用の時系列データベース (TSDB) に転送できます。 このトピックでは、データを宛先インスタンスに転送する方法について説明します。
前提条件
データをTSDBに転送できるIoT Platformインスタンスは、TSDBへのデータ転送をサポートするリージョンに作成されます。 詳細は、「リージョン」をご参照ください。
- 仮想プライベートクラウド (VPC) にデプロイされたTSDBインスタンスは、日本 (東京) リージョンで作成されます。 詳細については、以下をご参照ください。 TSDBドキュメント。
- データ転送ルールが作成され、データの処理に使用されるSQL文が書き込まれます。 詳細については、「データ転送ルールの設定」をご参照ください。
背景情報
データデスティネーションを設定すると、次の設定が自動的に完了します。 その後、IoT Platformのルールエンジンを使用して、デバイスデータをTSDBインスタンスに転送できます。
- IoT Platformは、TSDBインスタンスが存在するvSwitchの2つのIPアドレスを占有します。 vSwitchのIPv4 CIDRブロックがTSDBインスタンスのホワイトリストに追加されます。
- TSDBインスタンスが存在するVPCにマネージドセキュリティグループが作成されます。 セキュリティグループのデフォルト名はsg-nsm- で始まります。
制限事項
- データはリージョン内でのみ転送できます。 たとえば、でデプロイされているIoT Platformインスタンスからのみデータを転送できます。 日本 (東京) にデプロイされたTSDBインスタンスのリージョン 日本 (東京) のリージョン。
- VPCにデプロイされているTSDBインスタンスにのみデータを転送できます。
- データはJSON形式でのみ転送できます。
- 転送されたメッセージでは、timestampおよびtag valueとして設定されているフィールドを除いて、すべてのフィールドがメトリックとしてTSDBに書き込まれます。 metricパラメーターのデータ型は、数値と文字列をサポートします。 他のデータ型を使用すると、データがデータベースに書き込まれない場合があります。
使用上の注意
新しいバージョンまたは古いバージョンのデータ転送機能を使用して、Lindormにデータを転送できます。 新しいバージョンのデータ転送機能を使用する方法の詳細については、「新しいバージョンのデータ転送機能を使用してLindormにデータを転送する」をご参照ください。
手順
- IoT Platformコンソールにログインします。
[概要] ページで、[すべての環境] をクリックします。 [すべての環境] タブで、管理するインスタンスを見つけ、インスタンスIDまたはインスタンス名をクリックします。
- 左側のナビゲーションウィンドウで、 を選択します。
- 管理するルールの横にある [表示] をクリックします。 [データ転送ルール] ページが表示されます。 重要 新しいバージョンの [データ転送] ページが表示されている場合は、右上隅の [前のバージョンに戻る] をクリックし、管理するルールの [操作] 列の [表示] をクリックします。
- [データ転送] セクションで、[操作の追加] をクリックします。
- [操作の追加] ダイアログボックスで、[操作] ドロップダウンリストから [データをTSDBに保存] を選択します。 ページの指示に従って他のパラメーターを設定し、[OK] をクリックします。
パラメーター 説明 操作 [データをTSDBに保存] を選択します。 Region IoT Platformインスタンスがデプロイされているリージョン: 日本 (東京) TSDBインスタンス データの転送先として作成したVPC内のTSDBインスタンスを指定します。 メトリックデータ型 metricパラメーターのデータ型を指定します。 有効な値: Numeric TypeおよびString。 アイコンをクリックして詳細情報を取得します。
timestamp タイムスタンプ。 次の設定がサポートされています。 - エスケープ文字式
${}
を使用します。 たとえば、パラメーターを${time}
に設定します。 これは、パラメーター値がデータソーストピックのメッセージのtimeフィールドの値に対応することを指定します。 - ルールエンジン関数
timestamp()
を使用します。 これは、パラメーター値がルールエンジンサーバーのタイムスタンプに設定されることを指定します。 - 値を入力してください。 入力値はUNIXタイムスタンプである必要があります。 たとえば、1404955893000を入力できます。
タグ名 データを识别するためのタグ名を指定します。 タグ名には、英数字、および次の特殊文字を使用できます。:,.'/-_()[] タグ値 タグの値を指定します。 次の設定がサポートされています。 - エスケープ文字式
${}
を使用します。 たとえば、データソーストピックのメッセージの構造にキーがcityであるlocationプロパティが含まれている場合、タグ値を${city}
に設定できます。 これは、パラメータ値がメッセージのcityフィールドの値に対応することを指定します。 この設定を使用することを推奨します。 deviceName()
など、ルールエンジンで指定された関数を使用します。 これは、タグ値がデバイスの名前であることを指定します。 サポートされている機能の詳細については、「functions」をご参照ください。- 定数を入力します。 たとえば、定数北京を入力できます。 値には、英数字、および次の特殊文字を使用できます。:,.'/-_()[]
説明- 最大8つのタグ名と8つのタグ値を追加できます。
- TSDBが設定されたタグ名とタグ値を取得できることを確認します。 TSDBがタグの名前または値を取得できない場合、データをデータベースに書き込むことはできません。
ロール TSDBにデータを書き込む権限をIoT Platformに付与します。 - エスケープ文字式
- [データ転送] ページに移動し、管理しているルールを見つけて、ルールの [操作] 列で [開始] をクリックします。
データ転送の例
次のコードブロックは、データ転送ルールのサンプルSQL文を提供します。
SELECT時間、都市、電力、距離FROM "/alprodu ****/myDevice/user/update";
次のセクションでは、SQL文に基づいてルールエンジンがデータを処理し、TSDBにデータを書き込む方法を示します。
- サンプルSQLステートメントでは、ルールエンジンが
/alprodu ****/myDevice/user/update
トピックのメッセージからtime、city、power、およびdistanceフィールドをフィルタリングし、フィルタリングされたフィールドの内容を転送するメッセージの内容として使用することを示しています。次の例は、上記のSQL文に基づいてデータが処理された後に転送するメッセージの内容を示しています。
{ "time": 1513677897、"city": "beijing" 、"distance": 8545、"power": 93.0 }
- ルールエンジンは、設定されたデータ転送操作に基づいて、2行のデータをTSDBに書き込みます。
この例では、次のデータがTSDBに書き込まれます。
データ: timestamp:1513677897、[metric:power value:93.0] タグ: cityName=beijing
データ: timestamp:1513677897、[metric:distance value:8545] タグ: cityName=beijing
次のセクションでは、データがTSDBに書き込まれる方法について説明します。
上記の転送されたメッセージでは、timestampとして設定されたtimeフィールドとtag値として設定されたcityフィールドを除いて、他のフィールド (powerとdistance) がメトリックとしてTSDBに書き込まれます。