Gateway API

デバイスからGateway APIへセンサーデータを送信することで、IoTサービスが提供するプラットフォーム機能(デバイスモニタリング、データハブ、データストレージ、クラウドアダプタ)を利用することができます。

データ送信時のプロトコルはHTTP、TCP、UDP、MQTTの4つに対応しています。
HTTPは通信の信頼性を高く保つことが出来ますが、TCP/UDPと較べてデータ通信量、ゲートウェイデバイスの消費電力/処理負荷が高くなる傾向があります。
送信時の仕様は、以下の項目を参照して下さい。

 

HTTP/TCP/UDP

テキストデータ送信

 

プロトコルHTTPTCPUDP
メソッドPOST(なし)(なし)
エンドポイントgw.iot.iij.jpgw.iot.iij.jpgw.iot.iij.jp
ポート番号801992119920
リクエストパス/v1(なし)(なし)
文字コードUTF-8UTF-8UTF-8
リクエストボディ文字列文字列文字列
1リクエストあたりの最大データサイズ

256KB
(AWS IoTのメッセージ最大サイズは128KBになります。クラウドアダプタをご利用の際はご注意ください)

※制限を超えるデータを送信すると「HTTP/1.1 413 Request Entity Too Large」レスポンスを返します

1KB

※制限を超えるデータを送信すると「Request Data Too Large」文字列を返します

1KB

※制限を超えるデータを送信してもレスポンスは返しません

送信コマンド例 (Linux)curl -X POST http://gw.iot.iij.jp/v1 -d ‘{“name”:”test_data”,”value”:100.0}’

ファイルを指定して送信する場合
curl -X POST -d @data.txt http://gw.iot.iij.jp/v1
echo -n ‘{“name”:”test_data”,”value”:100.0}’ | nc gw.iot.iij.jp 19921

ファイルを指定して送信する場合
cat data.txt | nc gw.iot.iij.jp 19921
echo -n ‘{“name”:”test_data”,”value”:100.0}’ | nc -u -w 1 gw.iot.iij.jp 19920

ファイルを指定して送信する場合
cat data.txt | nc -u -w 1 gw.iot.iij.jp 19920
レスポンス送信が成功した場合、HTTP/1.1 200 OKを返します

送信が成功した場合、受信したバイト数を返します。

例)received bytes=32

レスポンスは返しません

※送信コマンド例のデータは、デバイスモニタリング機能を利用する場合の例 {“name”:”test_data”,”value”:100.0} を記載しています。デバイスモニタリング機能を利用せず、データハブ、データストレージ、クラウドアダプタ機能のみを利用する場合は、必ずしもこのフォーマットに従う必要はありません。(参考:デバイスモニタリング

 

バイナリデータ送信
プロトコルHTTPTCPUDP
メソッドPOST(なし)(なし)
エンドポイントgw.iot.iij.jpgw.iot.iij.jpgw.iot.iij.jp
ポート番号801992319922
リクエストパス/v1/binary(なし)(なし)
リクエストボディバイナリデータバイナリデータバイナリデータ
1リクエストあたりの最大データサイズ

256KB
(AWS IoTのメッセージ最大サイズは128KBになります。クラウドアダプタをご利用の際はご注意ください)

※制限を超えるデータを送信すると「HTTP/1.1 413 Request Entity Too Large」レスポンスを返します

1KB

※制限を超えるデータを送信すると「Request Data Too Large」文字列を返します

1KB

※制限を超えるデータを送信してもレスポンスは返しません

送信コマンド例 (Linux)echo -en "\xde\xad\xbe\xef" | curl -H
"Content-Type:application/octet-stream" --data-binary @- gw.iot.iij.jp/v1/binary

ファイルを指定して送信する場合
curl -H "Content-Type:application/octet-stream" --data-binary @data.bin gw.iot.iij.jp/v1/binary
echo -en "\xde\xad\xbe\xef" | nc gw.iot.iij.jp 19923

ファイルを指定して送信する場合
nc gw.iot.iij.jp 19923 < data.bin
echo -en "\xde\xad\xbe\xef" | nc -u -w 1 gw.iot.iij.jp 19922

ファイルを指定して送信する場合
nc -u -w 1 gw.iot.iij.jp 19922 < data.bin
レスポンス送信が成功した場合、HTTP/1.1 200 OKを返します

送信が成功した場合、受信したバイト数を返します。

例)received bytes=32

レスポンスは返しません

 

ファイルデータ送信
プロトコルHTTP
メソッドPOST
エンドポイントgw.iot.iij.jp
ポート番号80
リクエストパス/v1/upload
リクエストボディHTTPマルチパート
1リクエストあたりの最大データサイズ100MB
送信コマンド例(Linux)例1)
curl -H "Content-Type: multipart/form-data" -F "data=@image.jpg" gw.iot.iij.jp/v1/upload

例2)
curl -X POST -T image.jpg -H 'Content-Disposition: attachment; filename="image.jpg"' http://gw.iot.iij.jp/v1/upload

 

 デバイス情報取得
取得フォーマットCSVTSVJSON
プロトコルHTTP
メソッドGET
エンドポイントgw.iot.iij.jp
ポート番号80
リクエストパス/v1/dvc-state/csv/v1/dvc-state/tsv/v1/dvc-state/json
リクエストボディ / パラメータなし
送信コマンド例curl http://gw.iot.iij.jp/v1/dvc-state/csvcurl http://gw.iot.iij.jp/v1/dvc-state/tsvcurl http://gw.iot.iij.jp/v1/dvc-state/json
受信レスポンス例(※)

id,dvc-99999999
ipAddress,10.10.10.1
name,コンテナAデバイス
データ送信状態,ON
送信間隔,10sec
設置場所,松江

id                      dvc-99999999
ipAddress          10.10.10.1
name                コンテナAデバイス
データ送信状態    ON
送信間隔            10sec
設置場所            松江

{
  "id": "dvc-99999999",
  "ipAddress": "10.10.10.1",
  "name": "コンテナAデバイス",
  "labelContents": {
    "データ送信状態": "ON",
    "送信間隔": "10sec",
    "設置場所": "松江"
  }
}

※ デバイス名に「コンテナAデバイス」、ラベルに「データ送信状態:ON」「送信間隔:10sec」「設置場所:松江」を設定した場合のレスポンス例となります


MQTT

クラウドアダプタを用いてMQTTプロトコルで接続する方法を記載しています。クラウドアダプタ7. サービス活用リファレンスのクラウドアダプタ関連のページも参照ください。

接続方法
 AWS
プロトコルMQTT
エンドポイントgw.iot.iij.jp
ポート番号1883
接続コマンド例# publish
mosquitto_pub -d -h gw.iot.iij.jp -t “topic/test" -m “Test Message“

# subscribe
mosquitto_sub -d -h gw.iot.iij.jp -t “topic/test"

 

データ種別とサービス機能の対応

 データ種別

備考

テキストデータバイナリデータファイルデータ
デバイスモニタリング××テキストデータはデバイスモニタリングに記載のJSONフォーマットのみ対応
データストレージバイナリデータは全てBase64エンコードされて保存される
データハブ× 
クラウドアダプタHTTP転送×AWS IoTの場合JSONのみ対応
クラウドアダプタMQTT接続×