Soracom

Users

ドキュメント

LoRa → HTTP/HTTPS エントリポイント

LoRaWAN デバイスからの Uplink データを HTTP もしくは HTTPS で転送先へリクエストを転送します。

  • 1 つの LoRa グループに対して 1 個だけ作成できます。
  • LoRaWAN デバイスはこのエントリポイントのみ使用できます。

設定項目

  • [設定名]: 任意の名前
  • [転送先]
    • [プロトコル]: 転送先への送信プロトコル。HTTP もしくは HTTPS から選択。
    • [ホスト名]: 転送先の FQDN。
    • [ポート番号]: 転送先のポート番号。
    • [パス]: 転送先へのリクエストパス。
  • [ヘッダ操作]
    • [デバイス ID 付与]: 転送先へのリクエストに x-soracom-lora-device-id: #{deviceId} を追加します。
    • [署名ヘッダ付与]: 転送先へのリクエストに x-soracom-signature: #{signature} を追加します。
    • [事前共有鍵]: 署名に利用する共通鍵を設定します。詳細は、署名ヘッダと事前共有鍵を使って送信元を検証する を参照してください。
  • [カスタムヘッダ]: 転送先へのリクエストに任意の HTTP ヘッダーを付与できます。

エントリポイント

LoRaWAN の場合、エントリポイントをデータ送信元で意識する必要はありません。LoRa グループで Beam を有効化すると自動的にエントリポイントにデータが送信されます。

リクエスト

Beam はオリジナルのリクエストに対して Connection ヘッダーに close を設定、HTTP メソッドは POST、ペイロードフォーマットは JSON としてリクエストを転送します。

このとき、自動的にデータ送信時刻を HTTP ヘッダー x-soracom-operator-id: {オペレータID} ならびに x-soracom-timestamp: {UNIX 時間 (ミリ秒)} として付与します。

サンプル header

SORACOM Beam の設定直後の状態

x-soracom-timestamp: 1494817070730
x-soracom-operator-id: YOUR_OPERATOR_ID
connection: close

SORACOM Beam の設定 [ヘッダ操作] 内で設定した場合

設定内容;

  • [デバイス ID 付与] オン: (x-soracom-lora-device-id が付与されます)
  • [署名ヘッダ付与] オン: (x-soracom-signature および x-soracom-signature-version が付与されます)
  • [カスタムヘッダ] x-add-customfoobar を追加
x-soracom-timestamp: 1494817070730
x-soracom-lora-device-id: YOUR_LORA_DEVEUI
x-soracom-operator-id: YOUR_OPERATOR_ID
x-add-custom: foobar
x-soracom-signature: 2b6f5126922ace000a88c6df92519acd252364b194b8e1ab3e6a70f29a6ce9a4
x-soracom-signature-version: 20151001
connection: close

サンプル body

実際は compact な JSON で送信されます。

{
  "date": "2017-05-15T02:39:59.886193",
  "gatewayData": [
    {
      "date": "2017-05-15T02:39:59.886193",
      "rssi": -35,
      "snr": 12,
      "gwid": "000b78fffeb00006",
      "channel": 923200000
    }
  ],
  "data": "7b2274223a32352e35307d",
  "deveui": "YOUR_LORA_DEVEUI"
}

body 内の data について

SORACOM Air for LoRaWAN から SORACOM Beam を通過した場合、実データ (ペイロード) は JSON 内の data に ASCII による HEX データ表現で格納されています (Arduino library for LoRaWAN Device を使用した場合。2017 年 4 月現在)。実際に利用する場合はデコードが必要です。各言語におけるデコード例は以下のとおりです。

  • Python 2.7

    raw_data = '7b2274223a32352e35307d'.decode('hex')
    #=> {"t":25.50}
    
  • Perl

    $raw_data = pack("H*", "7b2274223a32352e35307d")
    #=> {"t":25.50}
    
  • Ruby

    raw_data = ["7b2274223a32352e35307d"].pack("H*")
    #=> {"t":25.50}
    

レスポンス

転送先から返された HTTP レスポンスは Beam に到達した際に破棄されます。LoRa ゲートウェイ/デバイスでは HTTP レスポンスを受け取ることはできません。

転送先からエラーレスポンスが返却された場合には、エラーの内容がログとして記録されます。エラーログは、ユーザーコンソールの「ログ」画面から確認できます。