首页 理论教育 NB-IoT物联网技术解析与案例详解-应用开发与接口验证

NB-IoT物联网技术解析与案例详解-应用开发与接口验证

时间:2023-11-05 理论教育 版权反馈
【摘要】:接口具体格式见表17.1和表17.2。图17.7 开发用户配置和使用第三方平台流程图表17.1 URL及token验证接口表17.2 数据接收接口数据接收服务开发详述1)URL及token验证在用户提交与修改第三方配置时,应用使能平台会向填写的URL地址发送http GET请求进行“URL及token”的验证,当平台接收到期望的请求响应时,则配置会被保存成功,并且能接收到相应的数据推送消息。

NB-IoT物联网技术解析与案例详解-应用开发与接口验证

应用开发主要通过Restful API的方式实现和应用使能平台的交互对接。在用户完成产品创建以及硬件接入后,即可根据所接入的硬件设备以及所上传的数据进行相关产品的开发。下面同样以中国移动的应用使能平台OneNET为例,介绍基础接入,具体如图17.6所示。

978-7-111-60888-2-Part05-45.jpg

图17.6 基础接入图

1.数据推送服务

(1)功能描述及开发概览

“第三方平台开发”数据推送服务主要功能是当应用使能平台接收到项目相关设备的数据时,如果用户通过平台的“第三方平台开发”功能设置了数据接收地址,应用使能平台会把数据推送到用户指定的接收地址。数据推送服务以项目为单位,数据推送的消息模式可以设置为明文模式和加密模式,为了数据的安全,推荐使用加密模式。

开发用户配置和使用第三方平台整个流程如图17.7所示。

根据图17.7,开发用户要配置和使用“第三方平台开发”数据推送服务,并且能接收到应用使能平台推送的数据的前提条件是:

1)在应用使能平台创建了相关项目,项目有真实设备并且能正常上报数据。

2)用户方已经开发并部署了应用使能平台能访问的数据接收服务程序。此程序必须包含URL及token验证接口和数据接口两个接口。接口具体格式见表17.1和表17.2。

978-7-111-60888-2-Part05-46.jpg

图17.7 开发用户配置和使用第三方平台流程图

17.1 URLtoken验证接口

978-7-111-60888-2-Part05-47.jpg

17.2 数据接收接口

978-7-111-60888-2-Part05-48.jpg

(2)数据接收服务开发详述

1)URL及token验证

在用户提交与修改第三方配置时,应用使能平台会向填写的URL地址发送http GET请求进行“URL及token”的验证,当平台接收到期望的请求响应时,则配置会被保存成功,并且能接收到相应的数据推送消息。平台发送的“URL及token”请求形式如http://ip:port/test?msg=xxx&nonce=xxx&signature=xxx为用户在平台配置的URL。用户数据接收服务程序在接收到应用使能平台发送的“URL及token”验证请求时,常规的验证流程如下:

①在请求中获取参数“nonce”、“msg”、“signature”的值,将“token”(此为页面配置参数token的值)、“nonce”、“msg”的值计算MD5(token+nonce+msg)加密值,并且编码为Base64字符串值。

②将上一步中Base64字符串值通过URL Decode计算后的值与请求参数“signature”的值进行对比,如果相等,则表示token验证成功。

③如果token验证成功,返回“msg”参数值,否则返回其他值。

注:如果用户不想验证token的有效性,可以选择忽略上述验证。

2)数据接收

当用户成功在应用使能平台配置了第三方开发平台服务器地址后,应用使能平台在收到相关项目下设备数据时,会推送到配置的服务器地址。在开发数据接收服务程序时,要注意:

①应用使能平台为了保证数据不丢失,有重发机制,如果重复数据对业务有影响,数据接收端需要对重复数据进行排除重复处理。

②应用使能平台每一次post数据请求后,等待客户端的响应都设有时限(目前是10s),在规定时限内没有收到响应会认为发送失败。接收程序接收到数据时,尽量进行缓存,再做业务逻辑处理。

推送的数据会根据用户的配置被分为加密模式和明文模式,加密模式下要先解密后,才能看到对应的数据消息格式。数据消息格式如下:

平台以HTTP POST请求形式向第三方平台注册地址推送数据,推送数据相关信息以JSON串的形式置于HTTP请求中的body部分。

第三方平台在接收数据时,根据加密选择,会接收到数据的明文消息或者密文消息。明文格式示例如下:

①数据点消息(type=1)

示例:

978-7-111-60888-2-Part05-49.jpg

②数据点消息批量形式(type=1)

示例:

978-7-111-60888-2-Part05-50.jpg

978-7-111-60888-2-Part05-51.jpg(www.xing528.com)

③设备上下线消息(type=2)

示例:

978-7-111-60888-2-Part05-52.jpg

密文格式:

978-7-111-60888-2-Part05-53.jpg

说明:在明文传输时,存在msg、msg_signature、nonce字段,分别表示明文传输的数据、msg部分的消息摘要、用于摘要计算的随机字符串;在加密传输时,存在enc_msg、msg_signa-ture等字段。

上述格式中,相关字段的具体意义说明见表17.3。

17.3 加密字段意义说明表

978-7-111-60888-2-Part05-54.jpg

平台基于AES算法提供加解密技术,具体如下:

•EncodingAESKey即消息加解密Key的Base64编码形式,长度固定为43个字符,从a~z,A~Z,0~9共62个字符中选取。由服务开启时填写,后也可申请修改。

•AES密钥计算为AESKey=Base64_Decode(EncodingAESKey+“=”),EncodingAESKey尾部填充一个字符的“=”,用Base64_Decode生成32个字节的AESKey。

•AES采用CBC模式,密钥长度为32个字节(256位),数据采用PKCS#7填充,初始化iv向量取密钥前16字节;PKCS#7:K为密钥字节数(采用32),buf为待加密的内容,N为其字节数。buf需要被填充为K的整数倍。在buf的尾部填充(K-N%K)个字节,每个字节的内容是(K-N%K)。

•Base64采用MIME格式,字符包括大小写字母各26个,加上10个数字,和加号“+”、斜杠“/”,一共64个字符,等号“=”用作后缀填充。

出于安全考虑,平台网站提供了修改EncodingAESKey的功能(在EncodingAESKey可能泄漏时进行修改,对应上第三方平台申请时填写的接收消息的加密对称密钥),所以建议保存当前的和上一次的EncodingAESKey,若当前EncodingAESKey生成的AESKey解密失败,则尝试用上一次的AESKey解密。

平台的加密消息部分为enc_msg=Base64_Encode(AES_Encrypt[random(16B)+msg_len(4B)+msg]),即以16字节随机字节串拼接4字节表示消息体长度的字节串(此处4字节长度表示为网络字节序),再加上消息本身的字节串作为AES加密的明文,再以AES算法对明文进行加密生成密文,最后对密文进行Base64的编码操作生成加密消息体。

对加密消息体的解密流程为:

①首先进行加密消息体的Base64解码操作,aes_msg=Base64_Decode(enc_msg)。

②对获取的解码内容以AES算法进行解密操作,获取明文部分,plain_msg=AES_Decrypt(aes_msg),解密中使用的密钥由EncodingAESKey计算得来,使用的初始化iv向量为计算出的aes密钥的前16字节。

③去掉plain_msg的前16字节,再以前4字节取出消息体长度,根据消息体长度获取真实的消息部分(推荐以消息体长度获取真实消息,以兼容plain_msg未来可能出现的结构变更)。表示加密传输的数据,后两字段与明文传输一致。

2.API调用服务

API调用主要实现应用层通过Rsetful API的方式和应用使能平台进行交互对接,实现命令的下发、数据的读写以及相关业务的交互。下面针对终端设备在使用协议接入应用使能平台的API进行详细介绍。

针对LwM2M协议,目前主要开发了以下几种API用来实现上层应用和应用使能平台的交互和对接,具体可参见表17.4。

17.4 API说明表

978-7-111-60888-2-Part05-55.jpg

部分API的示例见表17.5和表17.6。

17.5 创建设备API

978-7-111-60888-2-Part05-56.jpg

(续)

978-7-111-60888-2-Part05-57.jpg

17.6 读取设备资源API

978-7-111-60888-2-Part05-58.jpg

其余API的详细信息请访问中国移动应用使能平台(OneNET)门户网站http://open.iot.10086.cn/来查阅。

二进制推送服务对内容大小有限制,为满足用户接收数据稳定性的要求,对二进制最大上传明确了大小限制,API使用更新说明见表17.7。

17.7 API使用更新

978-7-111-60888-2-Part05-59.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈