Inventory デバイスで、SORACOM Air (IoT SIM など) やエージェントを使用することなく Harvest Data にデータを送信し、可視化できます。エージェントを使用しない場合は、Inventory にデバイスを登録したときに払い出されるデバイス ID とデバイスシークレットを使用して、HTTP リクエストで Harvest Data にデータを送信します。
エージェントを使用して、デバイスで値が変化したときに Harvest Data にデータを送信する方法は、デバイスを管理し情報を収集する を参照してください。
ステップ 1: Inventory にデバイスを登録する
Inventory にデバイスを登録します。このデバイスを、Inventory デバイスと呼びます。
Inventory にデバイスを登録すると、デバイス登録費用が発生します。なお、Inventory には無料枠があります。詳しくは、SORACOM Inventory のご利用料金 を参照してください。
ユーザーコンソール にログインして、データを送信する Harvest Data のカバレッジタイプを選択します。
たとえば、グローバルカバレッジの Harvest Data にデータを送信する場合は、グローバルカバレッジの表示に変更します。詳しくは、SORACOM ユーザーコンソールで表示するカバレッジタイプを変更する を参照してください。
→ → の順にクリックします。
をクリックします。
以下の項目を設定します。
項目 説明 デバイスの名前を入力します。 Inventory デバイスが所属するグループ (Inventory グループ) を選択します。「新しいグループを作成」を選択すると、Inventory グループを作成 できます。 をクリックします。
Inventory デバイスが作成され、デバイス ID、デバイスキー ID、シークレットキーが表示されます。必ずメモしてください。
をクリックします。
ステップ 2: グループを設定する
ステップ 1: Inventory にデバイスを登録する で選択した Inventory グループで、Harvest Data を有効化します。詳しくは、SORACOM Harvest Data を有効化する を参照してください。
SORACOM Harvest Data の設定はグループに対して行います
ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。
ステップ 3: Harvest Data にデータを送信する
ステップ 1: Inventory にデバイスを登録する でメモしたデバイス ID (${device_id}) およびシークレットキー (${secret_key}) を指定して、Harvest Data にデータを送信します。
以下のサンプルはグローバルカバレッジの例です
以下のサンプルはグローバルカバレッジの Inventory を利用して、Harvest Data にデータを送信する例です。日本カバレッジの Inventory を利用して、Harvest Data にデータを送信する場合は、以下のコマンドに記載されている https://g.api.soracom.io
を https://api.soracom.io
に読み替えてください。
以下のいずれかの方法で Harvest Data に送信できます。
Harvest Data にリクエストボディで JSON を送信する例:
POST リクエストで送信します。シークレットはヘッダーに指定します。
$ curl -X POST https://g.api.soracom.io/v1/devices/${device_id}/publish \ -H "x-device-secret: ${secret_key}" \ -d '{ "temperature": 20 }'
Harvest Data にクエリパラメータでデータを送信する例 (1):
GET リクエストで送信します。シークレットキーは、ヘッダーに指定します。データは、URL エンコーディングして、クエリパラメータに指定します。
$ curl -X GET "https://g.api.soracom.io/v1/devices/${device_id}/publish?temperature=21" \ -H "x-device-secret: ${secret_key}"
Harvest Data にクエリパラメータでデータを送信する例 (2):
GET リクエストで送信します。シークレットキーとデータは、URL エンコーディングして、クエリパラメータに指定します。
$ url_encoded_secret_key=$(python3 -c "import sys, urllib.parse; print(urllib.parse.quote_plus('${secret_key}'))") $ curl -X GET "https://g.api.soracom.io/v1/devices/${device_id}/publish?device_secret=${url_encoded_secret_key}&temperature=22"
以下のレスポンスが返されたときは、Inventory デバイスに設定した Inventory グループで Harvest Data が有効化されていることを確認してください。
{"code":"DEM0005","message":"Device d-3j21u474egfo3diktgp is not configured to use application endpoint"}
以下のレスポンスが返されたときは、指定したカバレッジタイプに指定した Inventory デバイスが存在することを確認してください。
{"code":"DIC0000","message":"No such resource found"}
API リクエスト数の制限
https://g.api.soracom.io/v1/devices/${device_id}/publish
へのリクエストは、呼び出し元の IP アドレス単位で 1 分間あたりの最大リクエスト数が定められています。リクエスト数の上限に達した場合は、HTTP レスポンスのステータスコード 429
(Too Many Requests) が返されます。少し時間をあけて再度実行してください。
GET リクエストで送信した場合のデータ形式について
GET リクエストで送信した場合は、文字列で保存されます。数値形式など、任意のデータ形式で送信するには、POST リクエストを利用してください。
Harvest Data のデータを確認する
ユーザーコンソール にログインし、データを送信した Inventory デバイスにあわせてカバレッジタイプを変更します。
たとえば、グローバルカバレッジの Inventory デバイスでデータを送信した場合は、グローバルカバレッジの表示に変更します。詳しくは、SORACOM ユーザーコンソールで表示するカバレッジタイプを変更する を参照してください。
→ → の順にクリックします。
デバイス管理画面が表示されます。
データを送信した Inventory デバイスにチェックを入れ、
→ の順にクリックします。SORACOM Harvest Data 画面が表示されます。SORACOM Harvest Data 画面の操作については、SORACOM Harvest Data に保存したデータを確認 / 削除する を参照してください。