7.4.6. RESTful API

RESTful APIの使用を開始するにはトークンを生成する必要があります。 

このトークンはGETまたはPOSTメソッドに含める必要があります。表7-4はRESTful APIの詳細です。

HTTPヘッダーのContent-Typeapplication/x-www-form-urlencodedである必要があります。


表7-4 RESTful API
REST APIHTTPメソッド説明
/api/user/get/api_token

GET

RESTful APIトークンを取得する。

指定可能なパラメーター:

p

LoRaWAN®サーバーのパスワード

例:

/api/user/get/api_token?p=xxxx

 

応答:

このAPIはREST APIのトークンを取得するために使用されます。

APIトークンを取得するには、HTTP GETメソッドのクエリパラメータとしてパスワード「p」を渡す必要があります。

応答はJSONオブジェクトで、statustokenexpired_time3つの項目があります。


satusは「OK」か「FAILED」です。

tokenはREST APIにアクセスするためのトークンです。

expired_timeは1970/01/01 00:00:00からのミリ秒単位の有効期限です。

/api/user/generate/api_tokenGET

RESTFul APIトークンを再生成する。

このAPIは古いトークンを消去して新しいトークンを再生成します。


指定可能なパラメーター:

p

LoRaWAN®サーバーのパスワード

例:

/api/user/get/api_token?p=xxxx


応答:

このAPIはREST APIのトークンを再生成するために使用されます。

APIトークンを取得するにはHTTP PostメソッドのPOST BODY内にパスワード「p」が必要です。

応答はJSONオブジェクトで、statustokenexpired_time3つの項目があります。


satus
は「OK」か「FAILED」です。

tokenはREST APIにアクセスするためのトークンです。

expired_timeは1970/01/01 00:00:00からのミリ秒単位の有効期限です。

/api/device/uplinkGET

指定した時間範囲でデバイスのアップリンクデータを取得します。


指定可能なパラメーター:

start

データレコードをスキップする番号。

length

返されるデータレコードの最大数。

deveui

アップリンクデータを取得するデバイスを指定します。

ftime

アップリンクデータレコードをフィルタリングする時間範囲の開始時間。

ttime

アップリンクデータレコードをフィルタリングする時間範囲の終了時間。


応答:

JSONオブジェクトにはcountdataの2つが含まれます。

countは返されるレコードの数です。

dataはアップリンクデータの配列です。

各アップリンクデータは「7.4.1. ダウンリンクおよびアップリンクデータのJSON形式」に記載された別のJSONオブジェクトです。

配列内のデータの順序は時間の降順です。最新のデータは配列の先頭にあります。

/api/device/downlinkPOST

ダウンリンクデータを送信してデバイスを指定します。

 
指定可能なパラメーター:

deveui

ダウンリンクを送信するデバイスのDevice EUI。 

port

ダウンリンクを送信するデバイスのポート番号。

data

16進数のダウンリンクデータ。このフィールドはbase64を受け入れません。

txpower

ダウンリンクの送信電力(txpower)。値の範囲は1〜20です。

 /api/device/listGET

デバイスリストを取得します。


指定可能なパラメーター:

start

デバイスをスキップする数

length

返されるデバイスの最大数。

deveui

デバイスを検索するための正規表現文字列。


応答:

JSONオブジェクトにはcountdeviceの2つが含まれます。

countは返されるレコードの数です。

deviceはデバイスの配列です。

各デバイスは「7.3.2. LoRaWAN®デバイス管理」に記載された別のJSONオブジェクトです。

/api/device/createPOST

デバイスを作成します。


指定可能なパラメーター:

deveui

Device EUIの8バイトの16進数。

devaddr

Device Addressの4バイトの16進数。

activate

アクティベーション方法: abpまたはotaa

lorawan_class

LoRaWAN®クラス: AC

appeui

Application EUIの8バイトの16進数。

appkey

Application Keyの16バイトの秘密キー。

appskey

Application Session Keyの16バイトの秘密キー。

nwkskey

Network Session Keyの16バイトの秘密キー。

devname

オプションのフィールド。作成されたデバイスの名前。

appid

オプションのフィールド。作成されたデバイスのアプリケーションタイプ。

lorawan、sensor、tracker、las_sensor、airq_sensor、smoke_sensor、watermeter、gba_sensor

 light_sensor、parking_sensor、ble_sensor、netvox_r311a、netvox_rb11eです。

rx_window

オプションのフィールド。デバイスの有効なRXウィンドウです。

 「rx1」「rx2」「both」のいずれかです。

値が「rx1」「x2」「both」と等しくない場合、「rx1」を指定したことになります。

rx2_freq

オプションのフィールド。デバイスのMhz単位のRX2ウィンドウ周波数です。

 rx_windowが「rx2」「both」に等しい場合のみ有効になります。

この値が割り当てられていない場合、システムは選択されたchannel_planに従って適切なrx2_freqを選択します。

 rx2_dr

オプションのフィールド。デバイスのRX2ウィンドウDataRate。

サポートされるデータレートには、「DR0」「DR1」「DR2」「DR3」「DR4」「DR5」が含まれます。

この値が割り当てられていない場合、システムは選択されたchannel_planに従って適切なrx2_drを選択します。

relax

オプションのフィールド。  

「true」はリラックスカウンターチェックを有効にし、「false」は無効にします。

 値が「true」でも「false」でもない場合、「true」を選択したことになります。

relax_counter_length

オプションのフィールド。  リラックスカウンターの長さ。

32または16で、relaxフィールドが有効(relax = true)になっている場合のみアクティブになります。

値が32または16に等しくない場合、自動的に32に調整されます。

channel_plan

オプションのフィールド。 デバイスのチャネルプラン。

現在サポートされているチャネルプランは次のとおりです。

EU863-870
US902-928
CN779-787
EU433
AU915-928
AS923
KR920-923
IND865-867
RU864-870

 チャネルプランが上記のオプションと等しくない場合、「AS923」が選択されたことになります。

adr

オプションのフィールド。「true」はデバイスADRを有効にし、「false」は無効にします。

値が「true」でも「false」でもない場合、「true」が選択されたことになります。

cflist

オプションのフィールド。デバイスのJoinAccepet CFList ID。

 CFListはデバイスの作成後に作成できます。

/api/device/deletePOST

デバイスを削除します。

 
指定可能なパラメーター:

deveui

Device EUIの8バイトの16進数。

/api/cflist/listGET

CFlistを取得します。

このAPIはCFList情報を取得するために使用されます。

LoRaWAN®サーバーからデバイスメタデータをプルバックするために、APIトークンをHTTP GETメソッドのクエリパラメーターとして渡す必要があります。

応答はJSONオブジェクトです。

TYPE、COUNT、LISTの3つの項目があり、TYPEは「cflist」である必要があります。

COUNTはCFList内のアイテムの数です。LISTはcflist内のアイテムのIDによる昇順です。


指定可能なパラメーター:

start

応答の開始点。

length

CFListの返される最大数。

/api/cflist/createPOST

CFListを作成する。

 
指定可能なパラメーター:

id

CFList ID

name

CFList Name

freq1

Mhz単位のCFListの「Frequency 1」

freq2

Mhz単位のCFListの「Frequency 2」

freq3

Mhz単位のCFListの「Frequency 3」

freq4

Mhz単位のCFListの「Frequency 4」

freq5

Mhz単位のCFListの「Frequency 5」

/api/cflist/deletePOST

CFListを削除する。

 
指定可能なパラメーター:

id

CFList ID

/api/post/listGETHTTP POST URLリストを取得します。
/api/post/updatePOST

HTTP POST URLリストを更新します。

 
指定可能なパラメーター:

posts

POST URLを記述するJSONオブジェクトを含むJSON配列。

clearall

すべてのPOST URLをクリアする場合は、clearallを1に設定します。

 

リスト7-2リスト7-3 は、RESTful APIを使用してアップリンクデータを取得してデバイスを作成する、Go言語で記述された2つの例を示しています。

 

リスト7-2 アップリンクデータを取得するGoの例
package main
import (
	"fmt"
	"net/http"
	"io/ioutil"
)

func main() {
	resp,_ := http.Get("http://192.168.0.111:8080/api/device/uplink?token=c0b2843c2e744bdc2a19d1b8fc9b176b")
	defer resp.Body.Close()
	body, _ := ioutil.ReadAll(resp.Body)
	fmt.Println(string(body))
}
リスト7-3 デバイスを作成するGoの例
package main
import (
	"strings"
	"fmt"
	"net/http"
	"io/ioutil"
) 

func main() {
	resp, _:= http.Post("http://192.168.0.111:8080/api/device/create","application/x-www-form-urlencoded",strings.NewReader("token=c0b2843c2e744bdc2a19d1b8fc9b176b&deveui=000b78fffeabcdee&devaddr=feabcdee&lorawan_class=A&activate=abp&appskey=2b7e151628aed2a6abf7158809cf4f3c&nwkskey=2b7e151628aed2a6
abf7158809cf4f3c")) 
	defer resp.Body.Close()
	body, _ := ioutil.ReadAll(resp.Body)
	fmt.Println(string(body))
}