前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LoRaServer 笔记 2.6 WebUI 中 Rest API 的调用逻辑分析

LoRaServer 笔记 2.6 WebUI 中 Rest API 的调用逻辑分析

作者头像
twowinter
发布2020-04-17 11:33:23
1.2K0
发布2020-04-17 11:33:23
举报
文章被收录于专栏:twowintertwowintertwowinter

前言

应用如何根据 LoRa App Server 提供的北向 API 进行开发呢? 那么多的 API 都是怎么使用,这篇笔记梳理了主要API的调用逻辑。

小能手最近在学习 LoRa Server 项目,应该是最有影响力的 LoRaWAN 服务器开源项目。它组件丰富,代码可读性强,是个很好的学习资料。更多学习笔记,可点此查看

1 应用相关 ApplicationService

1.1 新建应用

API 示例

请求

POST /api/applications

{
  "application":{
    "name":"demoapp",
    "description":"demo",
    "organizationID":"1","serviceProfileID":"38d7f9dd-549e-4b9b-9634-cf96655a6371"
  }
}

回复

200 OK

{
  "id":"2"
}
API 参数说明

serviceProfile 将应用的通用参数做了抽象提出,这里必须填入,以前倒是没有。

2 设备模板 DeviceProfileService

2.1 设备模板列表

Web UI
API 示例

请求

GET /api/device-profiles?limit=10&organizationID=1

回复

200 OK

{
  "totalCount":"2",
  "result":[
    {
      "id":"8d185e44-75d9-43f8-a7db-98ae7534b7d7",
      "name":"ClassA_ABP",
      "organizationID":"1",
      "networkServerID":"6",
      "createdAt":"2019-10-30T03:13:07.864454Z",
      "updatedAt":"2019-10-30T03:13:07.864454Z"
    },{
      "id":"97e5262e-48f7-4aa8-9c76-9427c18dcbf5",
      "name":"ClassA_OTAA",
      "organizationID":"1",
      "networkServerID":"6",
      "createdAt":"2019-10-29T11:10:15.457647Z",
      "updatedAt":"2019-10-29T11:10:15.457647Z"
    }
  ]
}
API 参数说明

UI 参数名

UI 参数数值

是否必填

API 对应参数

API 参数说明

organizationID

int

*

organizationID

以前其实是 application,后来把 profile 提出来,profile 可以给多个应用共用

2.2 创建设备模版

Web UI
API 示例

请求

POST /api/device-profiles

{
  "deviceProfile":{
    "name":"ClassA_OTAA",
    "networkServerID":"6",
    "macVersion":"1.0.2",
    "regParamsRevision":"A",
    "supportsJoin":true,
    "organizationID":"1"
  }
}

回复

200 OK

{
  "id": "619d2aac-75a6-47bd-9c19-e89658c0adc5"
}
API 参数说明

UI 参数名

UI 参数数值

是否必填

API 对应参数

API 参数说明

Device-profile name

string

*

name

Network-server

整数:NS ID

*

networkServerID

协议版本

枚举:V1.0.0V1.0.1V1.0.2V1.0.3V1.1.0

*

mac_version

string:1.0.01.0.11.0.21.0.31.1.0

Regional Parameters revision

枚举

regParamsRevision

加网方式

枚举:OTAA / ABP默认是ABP

supports_join

true: OTAA / false: ABP

设备类型

枚举:CLASS A / CLASS B / CLASS C默认是CLASS A

supports_class_b,supports_class_c

CLASS A:supports_class_b=false supports_class_c=false;CLASS B: supports_class_b=true supports_class_c=false;CLASS C: supports_class_b=false supports_class_c=true

组织 ID

枚举

organizationID

设备最大发射功率

整数:默认为0,0~15

maxEIRP

等于《region param》 的 TXPower

RX1 Delay

整数:默认1 s

rx_delay_1

RX2 DR

整数:默认 0

rx_datarate_2

RX2 Frequency

整数:默认 505.3 MHz

rx_freq_2

2.3 查看设备模板

API 示例

请求

GET /api/device-profiles/{id}

回复

200 OK

{
  "deviceProfile":{
    "id":"8d185e44-75d9-43f8-a7db-98ae7534b7d7",
    "name":"ClassA_ABP",
    "organizationID":"1",
    "networkServerID":"6",
    "supportsClassB":false,
    "classBTimeout":0,
    "pingSlotPeriod":0,
    "pingSlotDR":0,
    "pingSlotFreq":0,
    "supportsClassC":false,
    "classCTimeout":0,
    "macVersion":"1.0.2",
    "regParamsRevision":"A",
    "rxDelay1":0,
    "rxDROffset1":0,
    "rxDataRate2":0,
    "rxFreq2":0,
    "factoryPresetFreqs":[],
    "maxEIRP":0,
    "maxDutyCycle":0,
    "supportsJoin":false,
    "rfRegion":"CN470",
    "supports32BitFCnt":false,
    "payloadCodec":"",
    "payloadEncoderScript":"",
    "payloadDecoderScript":"",
    "geolocBufferTTL":0,
    "geolocMinBufferSize":0
  },
  "createdAt":"2019-10-30T03:13:07.864454Z","updatedAt":"2019-10-30T03:13:07.864454Z"
}

3 设备调试

3.1 新建设备

这边涉及3条API,搞个序列图会比较好点。

API序列图

WebLoRaAppServerPOST /api/devicesResponse status=200POST /api/devices/{device_keys.dev_eui}/keysPOST /api/devices/{device_activation.dev_eui}/activatealt 设备模板支持 OTAA Response status=200WebLoRaAppServer

API 示例 1 POST /api/devices

请求

POST /api/devices

{
  "device":{
    "name":"device1",
    "description":"1",
    "deviceProfileID":"8d185e44-75d9-43f8-a7db-98ae7534b7d7","devEUI":"0000000000000001",
    "applicationID":"2"
  }
}

参数说明

创建设备,依赖此前创建的 deviceProfileID 及 applicationID,以及web输入的DevEUI

回复

200 OK

API 示例 2 POST /api/devices/{device_keys.dev_eui}/keys

请求

POST /api/devices/{device_keys.dev_eui}/keys

{
  "deviceKeys":{
    "nwkKey":"00000000000000010000000000000001",
    "devEUI":"0000000000000002"
  }
}

参数说明

这里感觉有问题,WebUI 上填的是 appKey,API 传递进来却变成了 nwkKey。

回复

200 OK

API 示例 3 POST /api/devices/{device_activation.dev_eui}/activate

请求

POST /api/devices/0000000000000001/activate

{
  "deviceActivation":{
    "devAddr":"00000001",
    "nwkSEncKey":"9aeebc8d7875455993331715d5776999",
    "appSKey":"c78d932e67659811477755d5da9812d3",
    "devEUI":"0000000000000001",
    "fNwkSIntKey":"9aeebc8d7875455993331715d5776999",
    "sNwkSIntKey":"9aeebc8d7875455993331715d5776999"
  }
}

参数说明

根据web输入的 devAddr、appSKey、nwkSKey,其中 nwkSEncKey=fNwkSIntKey=sNwkSIntKey。

回复

200 OK

4 网关调试

4.1 新建网关

API 示例

请求

POST /api/gateways

{
  "gateway":{
    "location":{},
    "name":"gw2",
    "description":"2",
    "id":"0000e1abb6975616",
    "gatewayProfileID":null,
    "networkServerID":"6",
    "organizationID":"1"
  }
}

回复

200 OK

END

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1 应用相关 ApplicationService
    • 1.1 新建应用
      • API 示例
      • API 参数说明
  • 2 设备模板 DeviceProfileService
    • 2.1 设备模板列表
      • Web UI
      • API 示例
      • API 参数说明
    • 2.2 创建设备模版
      • Web UI
      • API 示例
      • API 参数说明
    • 2.3 查看设备模板
      • API 示例
  • 3 设备调试
    • 3.1 新建设备
      • API序列图
      • API 示例 1 POST /api/devices
      • API 示例 2 POST /api/devices/{device_keys.dev_eui}/keys
      • API 示例 3 POST /api/devices/{device_activation.dev_eui}/activate
  • 4 网关调试
    • 4.1 新建网关
      • API 示例
  • END
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档