LoRaWAN デバイスからの Uplink データを、HTTP もしくは HTTPS リクエストとして指定の URL に転送 (POST) します。
- 1 つの LoRaWAN グループに対して 1 個だけ作成できます。
- LoRaWAN デバイスは、LoRaWAN → HTTP/HTTPS エントリポイントのみ使用できます。
設定項目
- : 任意の名前
- : 転送先への送信プロトコル。HTTP もしくは HTTPS から選択。
- : 転送先の FQDN。
- : 転送先のポート番号。
- : 転送先へのリクエストパス。
x-soracom-lora-device-id: #{deviceId}
を追加します。 : 転送先へのリクエストに x-soracom-signature: #{signature}
を追加します。 : 転送先へのリクエストに - 署名ヘッダと事前共有鍵を使って送信元を検証する を参照してください。 : 署名に利用する共通鍵を設定します。詳細は、
- : 転送先へのリクエストに任意の HTTP ヘッダーを付与できます。
エントリポイント
LoRaWAN の場合、データ送信元で LoRaWAN → HTTP/HTTPS エントリポイントを意識する必要はありません。LoRaWAN グループで LoRaWAN → HTTP/HTTPS エントリポイントを追加すると、データが 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 の設定
内で設定した場合設定内容;
x-soracom-lora-device-id
が付与されます) オン: (x-soracom-signature
およびx-soracom-signature-version
が付与されます) オン: (x-add-custom
値foobar
を追加
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 レスポンスを受け取ることはできません。
転送先からエラーレスポンスが返却された場合には、エラーの内容がログとして記録されます。エラーログは、ユーザーコンソールの「ログ」画面から確認できます。