CURLコマンドを用いたデバイスアダプタの利用例

[更新: 2022年8月15日]

本ドキュメントでは、デバイスアダプタの利用方法を curl を用いて解説します。 curlを用いて行っている送受をデバイスに実装することで、実際にデバイスからデバイスアダプタをご利用いただけます。

本ドキュメントで説明している構成に限らず、同様の通信が可能なデバイスであれば、任意のデバイスを利用してモノプラットフォームを利用いただけます。

ただし、どのような機材でも確実に動作することを保証するものではなく、個別の各デバイス自体の対応可否、LTE接続方法、設定/操作方法などはお客様ご自身で対応いただく必要があります。 また、各デバイス上で動かすOS/アプリケーションがHTTP/HTTPS/TCP/IP等での通信を正しく行うことができるかについてもお客様ご自身でご確認ください。

本ドキュメントの想定環境

モノプラットフォームに登録したセキュアモバイルコネクトSIM
現在のモノプラットフォームでは、セキュアモバイルコネクトを利用したLTEでの接続のみサポートしています。
LTEモデム搭載のセキュアモバイルコネクトを利用可能なWindows PC

LTEルータ経由での接続はLTEルータの仕様により正常に動作しないときがあります。 この利用例ではPCから直でLTEモデムとして認識される搭載をされているPCを前提としています。(LTEルータ経由での確実な接続可能手順が存在するかどうかは現在調査中です)

また、USB-LTEモデムの一部は内部でルータ機能が稼働している場合がありLTEルータと同じ問題が発生することがあります。

公式版curl

curlはWindows標準のものではなく curl公式のバイナリ を使用します。 (Windowsで標準的に搭載されているcurlでは正常に処理されないオプションを一部使用するため)

なお、2022/03/24現在の最新版7.82.0はSSL証明書使用時にエラーになることがあるため、 7.81.0 を使用しています。

利用方法概要

大まかに下記の手順で利用が可能となります。 各手順の詳細については後述します。

  1. 事前準備
    • SIMとモノプラットフォームの設定
    • デバイス側の設定とLTEの接続
  2. デバイスアダプタとの通信
    • セッションキーの入手
    • オブジェクトの送受
    • ファイルの送受

事前準備

SIMとモノプラットフォームの設定

SIMとプロジェクトの登録

ご利用の流れ(SCO-LTEM1NUC) の2~4を参考に 利用予定のセキュアモバイルコネクトSIMをモノプラットフォームのプロジェクトへ紐付けを行ってください。

サービスアダプタの追加

クラウドアプリケーション側の動作確認用として ご利用の流れ(SCO-LTEM1NUC) の7-1を参考にwebsocketのサービスアダプタを追加してください。

PCの設定

ルート証明書の入手

モノプラットフォーム用のルート証明書をこちらからダウンロードし、curl実行時に指定できるパスに保存してください
SAKURAIoTRootCA.crt

サンプルバイナリの入手

基本的には SIPF Object Protocol のコマンドに準拠したバイナリをお客様側で作成いただく必要がありますが、 こちらで用意済みのバイナリで試すこともできます。 こちから入手し、curl実行時に指定できるパスに保存してください
サンプルバイナリデータ

公式版curlの導入

公式サイト より入手し、利用できる環境を整備してください。

LTE接続

LTE搭載PCをLTE網に接続します。

こちらの情報を参考に、各LTE機器の接続手順に従い接続を行います。 接続後、作成したモノプラットフォームのプロジェクトに登録されているSIMの情報ページでセッションがCreateになり、PC側でSIMの情報ページに記載されているIPアドレスが取得できていれば接続できています。

SIMのデバイス接続と設定
さくらのセキュアモバイルコネクト特有の設定

以降の説明はLTE接続状態が維持されている前提となります。

デバイスアダプタへのアクセス

セッションキーの入手

SIPF Auth Protocol を使用して、モノプラットフォームを利用するためのセッションキーを入手します。

このセッションキーはセキュアモバイルコネクト回線経由でのみリクエスト可能で、 接続に使用しているセキュアモバイルコネクトSIMに紐づいて自動的に生成されます。 SIPF Auth Protocolを使用してリクエストするたびに新たなセッションキーが生成され、過去に生成されたセッションキーは無効となります。 状況により無効となる場合がありますでセッションキーの利用時に問題がある時には再度セッションキーの取得を行ってください。

この機能により、お客様は各デバイス個体に対して固有キーを持たせることなく同一のプログラムでモノプラットフォームに対して異なる個体からのアクセスであることを識別させることができます。

この生成したセッションキーが有効な間は、他の「モノプラットフォームに登録されたセキュアモバイルコネクトSIMの回線」からでもこのセッションキーを使用してモノプラットフォームにアクセスできます。 この時モノプラットフォーム上では「セッションキーを生成したセキュアモバイルコネクトSIMのデバイス」からのアクセスとして扱われる為、お客様の設計意図に合わせてキーを適切に管理してください。

SIPF Auth Protocolでのアクセス方法

後述の認証エンドポイントへ HTTP(HTTPS) POSTリクエストを送ることでセッションキーを入手できます。 クエリストリングやリクエストボディは不要で、デバイスはアクセス元のアドレスを元に判別されます。

リクエストに成功すると、レスポンスボディにセッションキーとしてIDとパスワードが改行文字(LF, 文字コード 0x0a )で区切られて返ります。 一行目がID、二行目がパスワードで、パスワードの後ろにも改行が入ります(ID, 改行, パスワード, 改行の順)。

このセッションキーはメモリ等に保存し、後述のオブジェクト送受信、ファイル送受信で利用します。 デバイスの再起動等でセッションキーを紛失した場合は、再び認証エンドポイントからセッションキーを入手してください。

HTTPでのリクエスト方法

セッションキーのリクエスト

curl -X POST http://auth.sipf.iot.sakura.ad.jp/v0/session_key

実行ログ

D:\curl-7.81.0-win64-mingw\bin>curl -X POST http://auth.sipf.iot.sakura.ad.jp/v0/session_key
uDuOg9w9CLIk
mSokwKPxo6AvcBCb5z

D:\curl-7.81.0-win64-mingw\bin>
HTTPSでのリクエスト方法

セッションキーのリクエスト

curl -X POST --cacert ./SAKURAIoTRootCA.crt https://auth.sipf.iot.sakura.ad.jp/v0/session_key

実行ログ

D:\curl-7.81.0-win64-mingw\bin>curl -X POST --cacert ./SAKURAIoTRootCA.crt https://auth.sipf.iot.sakura.ad.jp/v0/session_key
uDuOg9w9CLIk
M5k3m6oBgfE#o44eFj

D:\curl-7.81.0-win64-mingw\bin>

オブジェクト送受信機能の利用

SIPF Object Protocol を使用して、クラウドアプリケーションに対して温度や時間などの構造化された オブジェクト をバイナリデータでモノプラットフォームを介して送受できます。

オブジェクト、オブジェクト転送単位とは

モノプラットフォームでは、「データ型」「タグ」「値」の組を オブジェクト と呼びます。 このオブジェクトを送受することで、ただの数値や文字列の羅列の送受ではなく、温度や時間等の意味のある情報としてやり取りを行えます。

データ型
値のデータ形式を表します。 32bit整数や文字列等、値のバイナリ表現をどう解釈するべきかの定義です。
タグ
値が表しているものの定義です。 お客様側で任意に定義可能で、値の意味するものをデバイスとクラウドアプリケーション間で共有できます。 例えば、 1 は温度、 2 は時間など、あらかじめお客様側で取り決めておくことで、届いた情報を適切に処理できます。
送信する値のバイナリ表現です。 バイトオーダーは ビッグエンディアン で指定してください。

送受は、 オブジェクト転送単位 と呼ばれる1つ以上のオブジェクトのセットを単位として行います。 オブジェクト転送単位でまとめられたオブジェクトは、デバイスアダプタサイドでもサービスアダプタサイドでも常に一塊で扱われ、オブジェクト同士が関連のある情報として扱かうことができ、管理することができます。 (例:時刻/温度/湿度/計測場所、4つのオブジェクトを転送単位にまとめることで、ある時間のある場所の温湿度の情報、として表現できます。)

デバイスアダプタに送信したバイナリデータはモノプラットフォーム内でJSON形式に変換され、サービスアダプタ・クラウドアプリケーション間ではJSON形式でやりとりされます。 形式の詳細は データフォーマット を参照ください。

デバイスアダプタ側での形式については SIPF Object Protocolで送受されるデータ形式について で述べます。

SIPF Object Protocolで送受されるデータ形式について

SIPF Object Protocol ではデバイスとデバイスアダプタの間をコマンドと呼ばれる形式のバイナリデータを送受することで通信を成立させます。 このコマンド形式は、マシン処理のしやすさや通信料を優先した、比較的低用量で低負荷なバイナリ形式として設計されています。

デバイスからデバイスアダプタに対して何かしらの要求を行う際には、このコマンド形式のバイナリデータを生成し送出する必要があります。 また、逆にデバイスアダプタからの応答もこのコマンド形式に基づいて送られてくるので、受け取ったバイナリデータをデバイス側で解析する必要があります。

コマンド構造

コマンドのバイナリ構造の詳細は下記に記載してあります。
SIPF Object protocol コマンド構造

SIPF Object Protocolでのアクセス手段

SIPF Object Protocol コマンド形式のバイナリデータをデバイスアダプタとデバイスの間で送受する必要がありますが、 SIPF Object Protocolではその送受の下回りのプロトコルとしていくつかの手段を提供しています。 その中から使用するデバイスが持つ機能等に応じてお客様側で選択いただけます。 また今後の拡張として、より最適化されたプロトコルや、他の一般的なプロトコルの追加も検討しています。

現在はHTTPとHTTPSに対応しており、SIPF Object Protocolのバイナリデータをリクエスト/レスポンスボディとして送受できます。

デバイスからデバイスアダプタ方向へのオブジェクト送信方法

SIPF Auth Protocolで取得したセッションキーをBasic認証のユーザー名/パスワードに指定し、

に対して OBJECTS_UP コマンドをPOSTしてください。

OBJECTS_UP コマンドに対してデバイスアダプターが TRANSMISSION_ID コマンドで送ってくる応答を OBJECTS_UP_RESULT.bin に受け取っています。

以下の例では、リクエストボディーに Sample Binary for OBJECT_UP を使用しています。

HTTP

送信要求

curl -X POST -H "Content-type: application/octet-stream" -u uDuOg9w9CLIk:M5k3m6oBgfE#o44eFj --data-binary @./OBJECTS_UP.bin --output ./OBJECTS_UP_RESULT.bin http://da.sipf.iot.sakura.ad.jp/v0

実行ログ

D:\curl-7.81.0-win64-mingw\bin>curl -X POST -H "Content-type: application/octet-stream" -u uDuOg9w9CLIk:M5k3m6oBgfE#o44eFj --data-binary @./OBJECTS_UP.bin --output ./OBJECTS_UP_RESULT.bin http://da.sipf.iot.sakura.ad.jp/v0
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    86  100    30  100    56    120    224 --:--:-- --:--:-- --:--:--   348

D:\curl-7.81.0-win64-mingw\bin>

デバイスアダプタからの応答(OBJECTS_UP_RESULT.bin のダンプ)

00000000  02 00 00 01 7f da 42 be  7b 00 00 12 00 00 b6 85  |......B.{.......|
00000010  39 df b3 2b 4e f9 8d 27  4d a3 73 e2 c2 25        |9..+N..'M.s..%|
0000001e

サービスアダプタからクラウドアプリケーションに送信されるJSON

{
  "id": "b68539df-b32b-4ef9-8d27-4da373e2c225",
  "device_id": "9819",
  "timestamp_src": "1970-01-01T00:00:00.000Z",
  "timestamp_platform_from_src": "2022-03-30T09:58:01.594Z",
  "timestamp_platform_to_dst": "2022-03-30T09:58:01.622Z",
  "type": "object",
  "payload": [
    {
      "type": "uint8",
      "tag": "01",
      "value": 1
    },
    {
      "type": "int16",
      "tag": "02",
      "value": -1
    },
    {
      "type": "float64",
      "tag": "03",
      "value": 3.141592653589793
    },
    {
      "type": "binary",
      "tag": "04",
      "value": "ABEi"
    },
    {
      "type": "string.utf8",
      "tag": "05",
      "value": "012abcABC漢字"
    }
  ]
}
HTTPS

HTTPSにおけるコマンド送信方法は、ルート証明書の指定が必要なこと以外はHTTPと同じです。

送信要求

curl -X POST --cacert ./SAKURAIoTRootCA.crt -H "Content-type: application/octet-stream" -u uDuOg9w9CLIk:M5k3m6oBgfE#o44eFj --data-binary @./OBJECTS_UP.bin --output ./OBJECTS_UP_RESULT.bin https://da.sipf.iot.sakura.ad.jp/v0

実行ログ

D:\curl-7.81.0-win64-mingw\bin>curl -X POST --cacert ./SAKURAIoTRootCA.crt -H "Content-type: application/octet-stream" -u uDuOg9w9CLIk:M5k3m6oBgfE#o44eFj --data-binary @./OBJECTS_UP.bin --output ./OBJECTS_UP_RESULT.bin https://da.sipf.iot.sakura.ad.jp/v0
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    86  100    30  100    56     63    117 --:--:-- --:--:-- --:--:--   182

D:\curl-7.81.0-win64-mingw\bin>

デバイスアダプタからの応答(OBJECTS_UP_RESULT.bin のダンプ)

00000000  02 00 00 01 7f da 46 12  84 00 00 12 00 00 08 21  |......F........!|
00000010  e7 90 85 60 48 21 ba 54  1e fd 14 1f a9 d8        |...`H!.T......|
0000001e

サービスアダプタからクラウドアプリケーションに送信されるJSON

{
  "id": "0821e790-8560-4821-ba54-1efd141fa9d8",
  "device_id": "9819",
  "timestamp_src": "1970-01-01T00:00:00.000Z",
  "timestamp_platform_from_src": "2022-03-30T10:01:39.715Z",
  "timestamp_platform_to_dst": "2022-03-30T10:01:39.752Z",
  "type": "object",
  "payload": [
    {
      "type": "uint8",
      "tag": "01",
      "value": 1
    },
    {
      "type": "int16",
      "tag": "02",
      "value": -1
    },
    {
      "type": "float64",
      "tag": "03",
      "value": 3.141592653589793
    },
    {
      "type": "binary",
      "tag": "04",
      "value": "ABEi"
    },
    {
      "type": "string.utf8",
      "tag": "05",
      "value": "012abcABC漢字"
    }
  ]
}

デバイスアダプタからデバイス方向へのオブジェクト受信方法

オブジェクト送信と同様にセッションキーをBasic認証に指定して、 OBJECTS_DOWN_REQUEST コマンドをPOSTしてください。

デバイスアダプタからは OBJECTS_DOWN コマンドが返ります。 このコマンドには、クラウドアプリケーションから送られたオブジェクトがSIPF Object Protocolのバイナリ形式に変換されて格納されています。

以下の例では、リクエストボディーに Sample Binary for OBJECT_DOWN_REQUEST を使用しています。

HTTP

クラウドアプリケーションからサービスアダプタに向けて、以下のようなJSONを送信した場合

{
  "device_id": "9819",
  "type": "object",
  "payload": [
    {
      "type": "uint8",
      "tag": "01",
      "value": 1
    },
    {
      "type": "int16",
      "tag": "02",
      "value": -1
    },
    {
      "type": "float64",
      "tag": "03",
      "value": 3.141592653589793
    },
    {
      "type": "binary",
      "tag": "04",
      "value": "ABEi"
    },
    {
      "type": "string.utf8",
      "tag": "05",
      "value": "012abcABC漢字"
    }
  ]
}

サービスアダプタからクラウドアプリケーションへは以下のようなJSONが応答されます

{
  "device_id": "9819",
  "type": "notify",
  "id": "2adee59d-ca89-4b34-a641-925a2079a48f",
  "timestamp": "2022-03-30T11:14:35.365Z"
}

デバイスからの受信要求

curl -X POST -H "Content-type: application/octet-stream" -u uDuOg9w9CLIk:M5k3m6oBgfE#o44eFj --data-binary @./OBJECTS_DOWN_REQUEST.bin --output ./OBJECTS_DOWN.bin http://da.sipf.iot.sakura.ad.jp/v0

実行ログ

D:\curl-7.81.0-win64-mingw\bin>curl -X POST -H "Content-type: application/octet-stream" -u uDuOg9w9CLIk:M5k3m6oBgfE#o44eFj --data-binary @./OBJECTS_DOWN_REQUEST.bin --output ./OBJECTS_DOWN.bin http://da.sipf.iot.sakura.ad.jp/v0
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   104  100    91  100    13    415     59 --:--:-- --:--:-- --:--:--   479

D:\curl-7.81.0-win64-mingw\bin>

デバイスアダプタからの応答(OBJECTS_DOWN.bin のダンプ)

00000000  12 00 00 01 7f da 99 04  5c 00 00 4f 00 2a de e5  |........\..O.*..|
00000010  9d ca 89 4b 34 a6 41 92  5a 20 79 a4 8f 00 00 00  |...K4.A.Z y.....|
00000020  00 00 00 00 00 00 00 01  7f da 88 d6 e3 01 00 00  |................|
00000030  01 01 01 03 02 02 ff ff  09 03 08 40 09 21 fb 54  |...........@.!.T|
00000040  44 2d 18 10 04 03 00 11  22 20 05 0f 30 31 32 61  |D-......" ..012a|
00000050  62 63 41 42 43 e6 bc a2  e5 ad 97                 |bcABC......|
0000005b
HTTPS

OBJECTS_UP 同様、ルート証明書の指定が必要なこと以外はHTTPと同様のため省略します。

ファイル送受信機能の利用

ここではモノプラットフォームのファイル送受信機能を行う例を説明します。

ファイル送受信機能の詳細は ファイル送受信 を参照してください。

ファイルのモノプラットフォームへの送信

ファイルを送信するためには、以下の3段階の手順を踏む必要があります。

  1. ファイル本体の送信先URLを取得
  2. ファイル本体を送信
  3. 送信完了通知を送信

以下では、 camera.jpg というファイルを TEST.JPG という名前でモノプラットフォームに送信/保存する例を示します。

ファイル本体の送信先URLを取得

以下のエンドポイントにアクセスしてください。 オブジェクト送受信同様、 SIPF Auth Protocol で取得したセッションキーをBasic認証に指定する必要があります。

戻り値として、本体送信先のURLが返ります。 返却されるURLはHTTPSのため、本体のアップロードにはルート証明書が必要です。 デバイスの制限等でHTTPSを使えない場合は、HTTPのURLにアクセスしてください。

また、URLには有効期限がありますのでURLを使いまわさず、アップロードが必要になる度に新しいURLを取得してください。

HTTP

URL要求:

curl -X PUT -u uDuOg9w9CLIk:M5k3m6oBgfE#o44eFj http://file.sipf.iot.sakura.ad.jp/v1/files/TEST.JPG/

実行ログ

D:\curl-7.81.0-win64-mingw\bin>curl -X PUT -u uDuOg9w9CLIk:M5k3m6oBgfE#o44eFj http://file.sipf.iot.sakura.ad.jp/v1/files/TEST.JPG/
https://content.sipf.iot.sakura.ad.jp/iot-core-prod/113301192220/605e98ce-7e0d-4742-bd67-22a39d92826b?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AYQ3AX6ZZO1Z5QNVPCNT%2F20220330%2Fjp-north-1%2Fs3%2Faws4_request&X-Amz-Date=20220330T125449Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=aebb309c4034441cd11daeae7e6fe53a5d006e2587ff33f0b66d2d26407add5f

D:\curl-7.81.0-win64-mingw\bin>
HTTPS

ルート証明書の指定が必要なこと以外はHTTPと同様です。

URL要求:

curl -X PUT -u uDuOg9w9CLIk:M5k3m6oBgfE#o44eFj --cacert ./SAKURAIoTRootCA.crt https://file.sipf.iot.sakura.ad.jp/v1/files/TEST.JPG/

実行ログ

D:\curl-7.81.0-win64-mingw\bin>curl -X PUT -u uDuOg9w9CLIk:M5k3m6oBgfE#o44eFj --cacert ./SAKURAIoTRootCA.crt https://file.sipf.iot.sakura.ad.jp/v1/files/TEST.JPG/
https://content.sipf.iot.sakura.ad.jp/iot-core-prod/113301192220/05833547-4ecd-45eb-94e7-c0bb85f0754e?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AYQ3AX6ZZO1Z5QNVPCNT%2F20220330%2Fjp-north-1%2Fs3%2Faws4_request&X-Amz-Date=20220330T132402Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=682db98af0ceecf9e87ac5d93b56dc0ba34a7128d261c5aee2bd8c280f70229f

D:\curl-7.81.0-win64-mingw\bin>
ファイル本体のアップロード

上記手順で取得したURLに、ファイルの中身を送信してください。 デバイスの制限等でHTTPSを使えない場合は、HTTPのURLにアクセスしてください。

HTTPS

アップロード

curl -X PUT -H "Content-type: application/octet-stream" --data-binary @./camera.jpg --cacert ./SAKURAIoTRootCA.crt "https://content.sipf.iot.sakura.ad.jp/iot-core-prod/113301192220/605e98ce-7e0d-4742-bd67-22a39d92826b?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AYQ3AX6ZZO1Z5QNVPCNT%2F20220330%2Fjp-north-1%2Fs3%2Faws4_request&X-Amz-Date=20220330T125449Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=aebb309c4034441cd11daeae7e6fe53a5d006e2587ff33f0b66d2d26407add5f"

実行ログ

D:\curl-7.81.0-win64-mingw\bin>curl -X PUT -H "Content-type: application/octet-stream" --data-binary @./camera.jpg --cacert ./SAKURAIoTRootCA.crt "https://content.sipf.iot.sakura.ad.jp/iot-core-prod/113301192220/605e98ce-7e0d-4742-bd67-22a39d92826b?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AYQ3AX6ZZO1Z5QNVPCNT%2F20220330%2Fjp-north-1%2Fs3%2Faws4_request&X-Amz-Date=20220330T125449Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=aebb309c4034441cd11daeae7e6fe53a5d006e2587ff33f0b66d2d26407add5f"

D:\curl-7.81.0-win64-mingw\bin>
送信完了通知の送信

ファイルの中身の送信が完了したら、忘れずに送信完了の通知を行ってください。 これまで同様、専用エンドポイントへのリクエストが必要です。

HTTP

URL要求:

curl -X PUT -u uDuOg9w9CLIk:M5k3m6oBgfE#o44eFj http://file.sipf.iot.sakura.ad.jp/v1/files/TEST.JPG/complete/

実行ログ

D:\curl-7.81.0-win64-mingw\bin>curl -X PUT -u uDuOg9w9CLIk:M5k3m6oBgfE#o44eFj http://file.sipf.iot.sakura.ad.jp/v1/files/TEST.JPG/complete/

D:\curl-7.81.0-win64-mingw\bin>
HTTPS

これまで同様、ルート証明書の指定が必要なこと以外はHTTPと同様のため省略します。

ファイルのモノプラットフォームからの取得

ファイルを受信するためには、以下の2段階の手順を踏む必要があります。

  1. ファイル本体の受信先URLを取得
  2. ファイル本体を受信

以下では、 TEST.JPG という名前でモノプラットフォームに保存されているファイルを camera.jpg としてデバイス内に保存する例を示します。

ファイル受信用URLの要求

SIPF Auth Protocol で取得したセッションキーをBasic認証に指定して、エンドポイントにアクセスします。

戻り値として、ファイルの中身取得先のURLが返ります。 返却されるURLはHTTPSのため、本体の取得にはルート証明書が必要です。 デバイスの制限等でHTTPSを使えない場合は、HTTPのURLにアクセスしてください。

また、URLには有効期限がありますのでURLを使いまわさず、ダウンロードが必要になる度に新しいURLを取得してください。

HTTP

URL要求:

curl -X GET -u uDuOg9w9CLIk:M5k3m6oBgfE#o44eFj http://file.sipf.iot.sakura.ad.jp/v1/files/TEST.JPG/

実行ログ

D:\curl-7.81.0-win64-mingw\bin>curl -X GET -u uDuOg9w9CLIk:M5k3m6oBgfE#o44eFj http://file.sipf.iot.sakura.ad.jp/v1/files/TEST.JPG/
https://content.sipf.iot.sakura.ad.jp/iot-core-prod/113301192220/05833547-4ecd-45eb-94e7-c0bb85f0754e?AWSAccessKeyId=AYQ3AX6ZZO1Z5QNVPCNT&Signature=C9AH%2FSzBWWcKSBb76fnCG3VtvtY%3D&Expires=1648651574

D:\curl-7.81.0-win64-mingw\bin>
HTTPS

ルート証明書の指定が必要なこと以外はHTTPと同様です。

URL要求:

curl -X GET -u uDuOg9w9CLIk:M5k3m6oBgfE#o44eFj --cacert ./SAKURAIoTRootCA.crt https://file.sipf.iot.sakura.ad.jp/v1/files/TEST.JPG/

実行ログ

D:\curl-7.81.0-win64-mingw\bin>curl -X GET -u uDuOg9w9CLIk:M5k3m6oBgfE#o44eFj --cacert ./SAKURAIoTRootCA.crt https://file.sipf.iot.sakura.ad.jp/v1/files/TEST.JPG/
https://content.sipf.iot.sakura.ad.jp/iot-core-prod/113301192220/05833547-4ecd-45eb-94e7-c0bb85f0754e?AWSAccessKeyId=AYQ3AX6ZZO1Z5QNVPCNT&Signature=Drud4%2BoHq0GtwZR4tSLDMe4a56I%3D&Expires=1648651743

D:\curl-7.81.0-win64-mingw\bin>
入手したURLからのダウンロード

上記手順で取得したURLからファイルの中身を取得してください。 デバイスの制限等でHTTPSを使えない場合は、HTTPのURLにアクセスしてください。

HTTPS

ダウンロード

curl -X GET --output ./camera.jpg --cacert ./SAKURAIoTRootCA.crt "https://content.sipf.iot.sakura.ad.jp/iot-core-prod/113301192220/05833547-4ecd-45eb-94e7-c0bb85f0754e?AWSAccessKeyId=AYQ3AX6ZZO1Z5QNVPCNT&Signature=C9AH%2FSzBWWcKSBb76fnCG3VtvtY%3D&Expires=1648651574"

実行ログ

D:\curl-7.81.0-win64-mingw\bin>curl -X GET --output ./camera.jpg --cacert ./SAKURAIoTRootCA.crt "https://content.sipf.iot.sakura.ad.jp/iot-core-prod/113301192220/05833547-4ecd-45eb-94e7-c0bb85f0754e?AWSAccessKeyId=AYQ3AX6ZZO1Z5QNVPCNT&Signature=C9AH%2FSzBWWcKSBb76fnCG3VtvtY%3D&Expires=1648651574"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  138k  100  138k    0     0   201k      0 --:--:-- --:--:-- --:--:--  202k

D:\curl-7.81.0-win64-mingw\bin>

サンプルバイナリデータ

Sample Binary for OBJECT_UP

OBJECTS_UP.bin

このバイナリに含まれるオブジェクト

TAG=1 : uint8=1
TAG=2 : int16=-1
TAG=3 : float64=3.141592653589793
TAG=4 : bin=0x001122
TAG=5 : string_utf8="012abcABC漢字"

バイナリダンプ

00000000  00 00 00 00 00 00 00 00  00 00 00 2c 00 01 01 01  |...........,....|
00000010  03 02 02 ff ff 09 03 08  40 09 21 fb 54 44 2d 18  |........@.!.TD-.|
00000020  10 04 03 00 11 22 20 05  0f 30 31 32 61 62 63 41  |....." ..012abcA|
00000030  42 43 e6 bc a2 e5 ad 97                           |BC......|
00000038

Sample Binary for OBJECT_DOWN_REQUEST

OBJECTS_DOWN_REQUEST.bin

バイナリダンプ

00000000  11 00 00 00 00 00 00 00  00 00 00 01 00           |.............|
0000000d