nRF Cloud 简介
nRF Cloud 是Nordic提供的云服务,可以实现设备数据上云,OTA,辅助定位等功能。我们可以选择所需的服务以及如何连接设备,或者使用云到云的服务,保持设备连接到我们自己的服务。
该平台基于亚马逊云服务 (AWS) 构建,集成了多个微服务。您和您的设备可以通过网页门户以及 REST、MQTT 和 CoAP API 与 nRF Cloud 服务交互。您还可以根据具体用例组合使用这些接口。
nRF Cloud 适用于多种用户,包括使用 Nordic Semiconductor 芯片开发新产品的硬件或软件工程师、设备群管理人员,以及使用 nRF Cloud REST API 为物联网解决方案构建自定义用户界面的网页或移动应用开发人员。
什么是nRF Cloud REST API
nRF Cloud REST API 是 nRF Cloud 提供的一组基于 REST(Representational State Transfer)架构的应用程序接口。它允许开发者通过标准的 HTTP 请求与 nRF Cloud 平台进行交互和通信。以下是 nRF Cloud REST API 的一些关键特点和功能:
1. 设备管理
2. 数据通信
3. 安全
4. 事件处理
5. 用户管理
通过 nRF Cloud REST API,开发者可以构建自定义的 web 或移动应用程序,以实现对设备的远程监控、控制和管理。这使得开发者能够灵活地集成 nRF Cloud 服务到现有的系统中,或者开发新的物联网解决方案。
这个链接https://api.nrfcloud.com/v1/列出了所有 nRF Cloud REST API以及API的请求/应答数据格式。
本博客主要介绍怎么利用REST API实现云到云的数据交互。
准备工作一 —— 注册nRF cloud 账号
1. 打开https://nrfcloud.com/#/
2. 点击Register,填好相关的信息后确认,此时就注册了一个nRF cloud的开发者(developer)账号。
3. 如果想要体验更多的nRF Cloud服务,如agps辅助定位,wifi定位我们需要将developer账号升级到pro升级方式如下:
• 进入nrf cloud的DASHBOARD界面,点击页面右上角的plan setting选项
![nRF Cloud Rest API](/static/images/nrf-cloud-rest-api-01-nordic-semi-wireless-iot-iIUl-600w.jpeg)
• 点击 Change plan按钮
![nRF Cloud Rest API](/static/images/nrf-cloud-rest-api-02-nordic-semi-wireless-iot-Ersz-600w.jpeg)
• 此时会弹出三个等级账号的资费标准和权限,DEVELOPER就是我们刚刚注册的账号等级,Pro为高级账号,ENTERPRISE为企业账号,升级企业账号需要跟Nordic的销售人员联系,我们会根据实际情况给出收费标准。关于账号的详细介绍可以参考此链接:https://docs.nrfcloud.com/AccountAndTeamManagement/Plans/PlanOverview.html
• 点击PRO下的upgrade!填写相关信息,包括公司信息,信用卡卡号等,即可完成升级。
![nRF Cloud Rest API](/static/images/nrf-cloud-rest-api-03-nordic-semi-wireless-iot-RN2B-600w.jpeg)
准备工作二—— 安装rest api工具Postman
根据以下链接安装POSTMAN并试验发送请求。
准备工作三—— 生成Token
Token分为三种,API Key,JSON Web Token (JWT),和 Service Evaluation Token。REST API 使用 API key对用户进行身份认证,使用 JSON Web Token (JWT) 对设备进行身份认证。nRF Cloud REST API 中的某些API要用JWT,这些API在Authorizations字段需要填入 JSON Web Token。而有些API只需要用API key做认证即可。某些API,如 FetchCurrentPendingFOTAJobExecution,支持这两种认证方式。Service Evaluation Token起到的作用跟JWT一样,只不过它只有30天有效期。
![nRF Cloud Rest API](/static/images/nrf-cloud-rest-api-04-nordic-semi-wireless-iot-Dw5Z-600w.jpeg)
![nRF Cloud Rest API](/static/images/nrf-cloud-rest-api-05-nordic-semi-wireless-iot-YZvH-600w.jpeg)
API Key 在nRF cloud 账号生成的时候就自带了,点击右上角的user account就可以找到。
![nRF Cloud Rest API](/static/images/nrf-cloud-rest-api-06-nordic-semi-wireless-iot-iwUx-600w.jpeg)
如果你是开发者账号Service Evaluation Token 在Team里面生成,如果你是Pro账号,在这里生成的则是没有使用时间限制的JWT。
![nRF Cloud Rest API](/static/images/nrf-cloud-rest-api-07-nordic-semi-wireless-iot-rQ9--600w.jpeg)
示例
准备工作做完了,我们就可以正式使用REST API了。下面举几个REST API的例子:
获取设备信息:
![nRF Cloud Rest API](/static/images/nrf-cloud-rest-api-08-nordic-semi-wireless-iot-Y66b-600w.jpeg)
用curl指令使用此API:
curl https://api.nrfcloud.com/v1/devices -H "Authorization: Bearer 0b6f1715f8e7xxxxx205752xxxxx5aeffa39"
这条API,类型是GET, 认证类型是Bearer token,Token类型是simple token,即API Key,以上指令中紧跟着Bearer后的就是nRF CLOUD账户中对应的API Key。
同样,我们也可以使用POSTMAN来完成,如下图所示,填入正确的API类型,API地址,认证类型和Token后,点击send,在回复框中能够得到nrf cloud的回复,列出所有设备的信息。
![nRF Cloud Rest API](/static/images/nrf-cloud-rest-api-09-1-nordic-semi-wireless-iot-4XXG-535w.jpeg)
通过WIFI热点的SSID来获取WIFI定位坐标
![nRF Cloud Rest API](/static/images/nrf-cloud-rest-api-10-nordic-semi-wireless-iot-GMsJ-600w.jpeg)
curl指令示例:
curl -X POST https://api.nrfcloud.com/v1/location/wifi -H "Authorization: Bearer <JWT_Token>" -H "Content-Type: application/json" -d {\"accessPoints\":[{\"macAddress\":\"40:9b:cd:c1:5a:40\",\"ssid\":\"Nordic_WLAN_5GHz\"},{\"macAddress\":\"00:90:fe:eb:4f:42\",\"ssid\":\"Nordic_Guest\"}]}
这条指令API类型为POST,包含两个header(-H),一个是Authorization,一个是Content-Type,在Authorization中输入nrf cloud账号相关的JWT,在Content-Type中选择 application/json,说明我们的请求主体是json格式的,接下来-d字符后面跟着的就是以json格式编辑的WIFI的ssid和MAC地址。
同样,在POSTMAN中,如下图所示,填入API地址,类型选择为POST,Token此时填入的是JWT。
![nRF Cloud Rest API](/static/images/nrf-cloud-rest-api-11-nordic-semi-wireless-iot-kunH-600w.jpeg)
然后在Header中确认选中content type为application/json
![nRF Cloud Rest API](/static/images/nrf-cloud-rest-api-12-nordic-semi-wireless-iot-F0uc-600w.jpeg)
然后再Body中填入请求主体,即json格式的WIFI SSID和MAC地址,最后点击Send,我们就可以在下面的回复框中得到经纬度和误差。
![nRF Cloud Rest API](/static/images/nrf-cloud-rest-api-13-nordic-semi-wireless-iot-sxZG-600w.jpeg)