MENU

Soracom

Users

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

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

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

エントリポイント

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

設定項目

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

リクエスト

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

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

サンプル 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 レスポンスを受け取ることはできません。

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