任意のLTEデバイスからのデバイスアダプタの利用例

モノプラットフォームではデバイス側のインターフェイス仕様をオープンとして、 ユーザが任意のデバイスでシステムを設計しモノプラットフォームを利用できるように設計されています。 このインターフェイスをデバイスアダプタと呼び、このインターフェイス経由でモノプラットフォームの機能を利用できます。

ユーザが使用可能なデバイスですが基本的には、現在はセキュアモバイルコネクトを使用してLTE網に接続してIP通信が出来るデバイスであればモノプラットフォームを利用することができます。 http/httpsのプロトコルを利用しているため、これらの通信の機能が実装されているデバイスではより容易に利用が可能です。 比較的低リソースのデバイスでも用意されることの多いプロトコルベースの為試しやすいものとなっています。 また将来的には、省電力性や即時性用途向けなど各方面へ特化したプロトコルも拡張していく予定です。

このドキュメントではモノプラットフォームのデバイス側のインターフェイルの利用方法を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では正常に処理されないオプションを一部使用するため)
    https://curl.se/
    (2022/03/24現在の最新版7.82.0は証明書使用時にエラーになることがあるため7.81.0を使用しています。 https://curl.se/windows/dl-7.81.0/ )

利用方法概要

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

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

事前準備

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

SIMとプロジェクトの登録

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

サービスアダプタの追加

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

PCの設定

ルート証明書の入手

こちから入手し、curl実行時に指定できるパスに保存してください
SAKURAIoTRootCA.crt

サンプルバイナリの入手

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

公式版curlの導入

公式サイトより入手し利用できる環境を整備してください。
curlはwindows標準のものではなくcurl公式のバイナリを使用します。 (Windowsで標準的に搭載されているcurlでは正常に処理されないオプションを一部使用するため)
https://curl.se/
(2022/03/24現在の最新版7.82.0は証明書使用時にエラーになることがあるため7.81.0を使用しています。 https://curl.se/windows/dl-7.81.0/ )

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とPASSWORDがtextで応答されます。 一行目がID、二行目がPASSWORDとなります。

このセッションキーは、後述のオブジェクト送受信、ファイル送受信で利用します。

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を使用して、モノプラットフォームを介してユーザクラウドアプリケーションに対してオブジェクトの送受を行うことができます。

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

モノプラットフォームでは、TYPEとTAGという二つの情報が付加されたVALUEをオブジェクトと呼び、 このオブジェクトをつかって送受することで、ただの数値の羅列の送受ではなく、 意味のある情報としてデバイスとクラウドアプリケーションの間の情報のやり取りを行うことができます。

  • TYPE
    VALUEのデータ形式がどのようなものであるかを表します。
    32bit整数や、文字列等、VALUEのバイナリをどう解釈するべきかの定義になります。
  • TAG
    オブジェクト内のVALUEが何を表しているかをデバイスとクラウドアプリケーション間で共有することができます。
    例えば、TAG=1は温度、TAG=2は時間、などあらかじめユーザ側で取り決めておくことで、届いた情報を適切に処理可能となります。

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

送受されるオブジェクトはサービスアダプタ側では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 コマンド形式のバイナリデータをMessage Bodyとして 送受が可能となっています。

デバイスからデバイスアダプタ方向へのObject送信方法

SIPF Auth Protocolで取得したセッションキーを用いてBASIC認証で、
http://da.sipf.iot.sakura.ad.jp/v0
https://da.sipf.iot.sakura.ad.jp/v0
に対してOBJECTS_UPコマンドのバイナリをPOSTします。

この例では Sample Binary for OBJECT_UP を使用しています。

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

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

送信要求

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漢字"
                }
        ]
}

デバイスアダプタからデバイス方向へのObject受信方法

SIPF Auth Protocolで取得したセッションキーを用いてBASIC認証で、
http://da.sipf.iot.sakura.ad.jp/v0
https://da.sipf.iot.sakura.ad.jp/v0
に対してOBJECTS_DOWN_REQUESTコマンドのバイナリをPOSTします。

この例では Sample Binary for OBJECT_DOWN_REQUEST を使用しています。

OBJECTS_DOWN_REQUESTコマンドに対してデバイスアダプターがOBJECT_DOWNコマンドで送ってくる応答を OBJECTS_DOWN.binに受け取っています。 OBJECTS_DOWN.binには受信したObjectが詰まっています。

HTTP

受信要求

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

サービスアダプタ側から送信する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"
}
HTTPS

受信要求

curl -X POST --cacert ./SAKURAIoTRootCA.crt -H "Content-type: application/octet-stream" -u uDuOg9w9CLIk:M5k3m6oBgfE#o44eFj --data-binary @./OBJECTS_DOWN_REQUEST.bin --output ./OBJECTS_DOWN.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_DOWN_REQUEST.bin --output ./OBJECTS_DOWN.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   104  100    91  100    13    173     24 --:--:-- --:--:-- --:--:--   199

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

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

00000000  12 00 00 01 7f da 9b bd  8e 00 00 4f 00 5b ee 94  |...........O.[..|
00000010  39 7c 30 4f d4 97 97 89  e5 8b ec ce 38 00 00 00  |9|0O........8...|
00000020  00 00 00 00 00 00 00 01  7f da 8a 12 59 00 00 00  |............Y...|
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

サービスアダプタ側から送信する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": "5bee9439-7c30-4fd4-9797-89e58becce38",
    "timestamp": "2022-03-30T11:15:56.122Z"
}

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

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

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

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

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

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

ファイル送信先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

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ではアクセスできませんので注意してください。

https(httpで取得したURL)

アップロード

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>
https(httpsで取得したURL)

アップロード

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/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>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/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>
送信完了通知の送信
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

URL要求:

curl -X PUT -u uDuOg9w9CLIk:M5k3m6oBgfE#o44eFj --cacert ./SAKURAIoTRootCA.crt https://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 --cacert ./SAKURAIoTRootCA.crt https://file.sipf.iot.sakura.ad.jp/v1/files/TEST.JPG/complete/


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

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

この例ではTEST.JPGというFILE_IDでモノプラットフォームに保存されているファイルをデバイス側に取得し、photo.jpgとしてデバイス内に保存します。

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

ファイル受信用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

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からのダウンロード

ここではhttpsのみ利用できます。httpではアクセスできませんので注意してください。

https(httpで取得したURL)

ダウンロード

curl -X GET --output ./photo.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 ./photo.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>
https(httpsで取得したURL)

ダウンロード

curl -X GET --output ./photo.jpg --cacert SAKURAIoTRootCA.crt "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>curl -X GET --output ./photo.jpg --cacert SAKURAIoTRootCA.crt "https://content.sipf.iot.sakura.ad.jp/iot-core-prod/113301192220/05833547-4ecd-45eb-94e7-c0bb85f0754e?AWSAccessKeyId=AYQ3AX6ZZO1Z5QNVPCNT&Signature=Drud4%2BoHq0GtwZR4tSLDMe4a56I%3D&Expires=1648651743"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  138k  100  138k    0     0   200k      0 --:--:-- --:--:-- --:--:--  200k

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