データハブ

データハブは、Gateway API で受信したセンサーデータを外部システムへ転送する機能です。
転送先をデバイス単位でコントロールすることが可能になるため、ゲートウェイデバイス側の送信先を IoTサービスにしておけば、いつでも送信先を制御・変更することができます。
また、データハブで外部転送する際に HTTPS にプロトコル変換することで、ゲートウェイデバイスにかかる暗号化処理をプラットフォーム側へオフロードすることが可能です。

利用シーン

1つのデバイスから発生するセンサデータを、東日本と西日本の2つのシステムへミラーリングして転送しバックアップとして保管できます。


検証システムと本番システムにミラーリングしてデータを転送することで、1つのデバイスで 検証・確認用途、本番用途の2つを同時並行で稼働させられます。

対応プロトコル
センサーデータ送信時プロトコル(Gateway API 参照)データハブ転送時プロトコル
HTTPHTTP/HTTPS
TCPHTTP/HTTPS
UDPHTTP/HTTPS
データハブ仕様
  • IoTサービスプラットフォームで受信したデータを、コントロールパネルのデータ転送先設定で設定した内容に基づき転送が行われます。
  • 受信したリクエストボディとリクエストヘッダが HTTP POST で転送先に送信されます。
    • リクエストヘッダを受信できるのはGateway APIのHTTPで転送した場合のみです。
    • TCPやUDPではリクエストヘッダをデバイスから送信できません。
  • 転送先でエラーが発生した場合、1回のみ再転送処理が行われます。
  • 再転送処理は以下の状態が発生した場合に実行されます。
    • 転送先に接続できない場合や、転送先から一定時間応答がないとき (タイムアウト)。
    • 500 Internal Server Error などのサーバ異常を示す 5xx HTTP ステータスコードが応答されたとき。
  • データハブで送信されるリクエストのHTTPヘッダは、データハブ設定のヘッダに指定した項目が追加され転送されます。
    • デバイスから受信したリクエストヘッダと重複した場合、データハブ設定のヘッダが優先され上書きされます。
出力フォーマット

出力フォーマットは、「未加工」「JSON形式」「カスタム」の3つを選択できます。

「未加工」以外の出力フォーマットを使用する場合、デバイスからGateway APIへデータを送信する時に必ず「テキストデータ」で送信してください。

「バイナリデータ」で送信した場合、出力フォーマットの設定にかかわらず、常に「未加工」で転送先に送信されます。

未加工

「未加工」は、送信データのまま転送されます。

JSON形式

「JSON形式」は、以下のフォーマットで転送されます。

{
  "timestamp": (受信時刻:unix時刻形式),
  "serviceCode": "(iotサービスコード)",
  "id": "(デバイスID)",
  "simId": "(電話番号)",
  "destination": "(転送先URL)",
  "payload": "(転送データ)"
}
項目説明
timestampIoTサービスが受信した時刻が設定されます。
serviceCodeIIJ IoTサービス の契約 ID
idシステム上でデバイスを一意に識別するための「デバイスID」
simId電話番号
destinationデータハブ「転送先設定」で指定した送信先アドレス
payloadゲートウェイデバイスから送信したセンサデータ

※「IIJモバイルサービス/タイプI」ご利用の場合「simId」は付与されません。

カスタム

「カスタム」は、カスタムフォーマット機能を使用して転送されます。

出力オプション
JSON配列展開

JSON配列展開を有効にすると、デバイスからデータをJSON配列※で送信したときに、それぞれの配列の要素に対して出力フォーマットを適用し、再度JSON配列化して送信します。

※JSON配列は、テキストデータとしてJSON形式で送信し、そのJSONのルート要素が配列の場合を指します。それ以外の形式で送信した場合はJSON配列展開は動作せず、JSON配列展開無効時と同様にフォーマットされます。

使用例は以下の通りです。例は出力フォーマットに「JSON形式」を指定した場合です。なお、「カスタム」も同様に処理されます。

送信するデータ
[{
  "name": "temp1",
  "value": 25
}, {
  "name": "temp2",
  "value": 81
}]

デバイスからJSON配列で送信するデータです。ルート要素に配列を指定します。

JSON配列展開: 有効
[{
  "timestamp": (受信時刻:unix時刻形式),
  "serviceCode": "(iotサービスコード)",
  "id": "(デバイスID)",
  "simId": "(電話番号)",
  "destination": "(転送先URL)",
  "payload": {
    "name": "temp1",
    "value": 25
  }
}, {
  "timestamp": (受信時刻:unix時刻形式),
  "serviceCode": "(iotサービスコード)",
  "id": "(デバイスID)",
  "simId": "(電話番号)",
  "destination": "(転送先URL)",
  "payload": {
    "name": "temp2",
    "value": 81
  }
}]

個々の配列要素を取り出しフォーマットした後、全体をJSON配列化します。

JSON配列展開: 無効
{
  "timestamp": (受信時刻:unix時刻形式),
  "serviceCode": "(iotサービスコード)",
  "id": "(デバイスID)",
  "simId": "(電話番号)",
  "destination": "(転送先URL)",
  "payload": [{
    "name": "temp1",
    "value": 25
  }, {
    "name": "temp2",
    "value": 81
  }]
}

送信されたデータは常に1つとみなし、そのデータを用いて全体をフォーマットします。

出力フォーマットが「未加工」の場合は、JSON配列展開機能は動作しません。また、同様にデバイスからバイナリデータで送信した場合も機能しません。

データハブ転送時のContent-Typeヘッダについて

データハブ転送時に使用されるContent-Typeヘッダは、出力フォーマットの設定やデバイスのデータ送信時の設定によって自動的に設定されます。

判定方法は下記の通りで、上から優先で判定されます。

  1. データハブ設定のHTTPヘッダにてContent-Typeヘッダを指定している。
    • データハブ設定で指定されたContent-Typeヘッダの値が最優先で使用されます。
  2. テキストデータを送信しており、かつ、出力フォーマット「JSON形式」を使用している。
    • Content-Typeにapplication/json;charset=UTF-8が使用されます。
  3. テキストデータを送信しており、かつ、出力フォーマット「カスタム」を指定しており、出力がJSONとしてパースできる。
    • Content-Typeにapplication/json;charset=UTF-8が使用されます。
  4. デバイスのデータ送信時のContent-Typeヘッダを指定している。
    • HTTPでGateway APIに送信された時にContent-Typeヘッダの指定がある場合、その値が使用されます。
  5. バイナリデータを送信している。
    • Content-Typeにapplication/octet-streamが使用されます。
  6. 上記の条件にいずれも一致しなかった場合
    • Content-Typeにtext/plain;charset=UTF-8が使用されます。

HTTPを使用してデータを送信する時、curlやwgetなどの汎用的なWebクライアントツールを使用すると自動的にContent-Typeヘッダが付与されることがあります。

もし意図しないContent-Typeヘッダがデータハブのリクエストに付与される場合、クライアントツールにてConent-Typeヘッダを上書きするか、データハブ設定でContent-Typeヘッダを登録することをお試しください。

注意事項
  • 転送処理の順序は前後する場合があります。したがって後から受信したデータが先に転送される場合があります。
  • 転送先にて送信順序を把握したい場合は、ゲートウェイデバイスからデータを送信する際に「timestamp」を付与することで確認できます。
データ転送時の転送元 IP アドレス

外部システムへの転送はインターネット経由で行われます。
データ転送先でアクセス制限などを行う場合は、以下のIPアドレスを設定してください。

転送元 IP アドレス
160.13.190.72
160.13.190.73

プライベートコネクタをご契約いただき、プライベートネットワークを介してデータ転送を行う場合、お客様専用のゲートウェイ IP アドレスがデータ転送元 IP アドレスです。
お客様専用のゲートウェイ IP アドレスは プライベートコネクタ画面 の情報を参照ください。

ミラーリング機能

1つのデバイスから発生するセンサーデータを、複数のシステムへミラーリングして転送できます。
シンプルなデータのバックアップ用途に加え、検証・本番環境の両システムにセンサデータを転送して利用用途を分けるなどの使い方ができます。