概述
本文思路参考了 玖零大壮的视频和公众号文章,在此表示感谢!
物联网开发 第4讲 中移OneNET HTTP推送服务接入
实验环境:1爱快软路由的端口映射和动态域名设置,并可实现外网访问。
2 运行NodeRed的ubuntu server 电脑
HTTP数据推送官方说明https://open.iot.10086.cn/doc/v5/develop/detail/632
HTTP推送用于实现平台与应用服务器之间的单向数据通信。平台作为客户端,通过HTTP/HTTPS请求方式,将项目下应用及设备数据推送给应用服务器。HTTP推送服务使用流程包括实例创建、实例验证、规则配置、消息推送4个步骤。
点击验证时,平台服务器会向配置的服务器地址发送HTTP GET请求,进行地址有效性验证,请求形式示例如下:
http://url?msg=xxx&nonce=xxx&signature=xxx
携带参数信息包括:
参数 | 说明 |
msg | 推送的消息内容。实例验证阶段,为平台生成的随机字符串;接收消息阶段,为平台推送的设备或业务消息数据 |
nonce | 平台生成的随机字符串 |
signature | 加密签名,signature结合了创建实例填写的token参数和请求中的msg、nonce参数。 |
应用服务器收到请求后,需要通过signature参数字段对请求进行校验。若确认此次GET请求来自OneNET平台,需在响应中原样返回msg参数,实例验证才能通过,否则验证失败,实例配置不生效。signature参数校验方法如下:
(1) 将实例配置时填写的token参数及校验请求中携带的nonce、msg参数拼接得到字符串A,即A = token + nonce + msg
(2) 将字符串A进行md5加密得到字符串B
(3) 将字符串B进行Base64转换,并通过URL Decode计算后得到参数C,将参数C与signature进行对比,相等则表示校验成功,标识请求来于OneNET平台
如果用户不想验证,可选择跳过该过程,直接返回msg参数。实例验证通过后,下一步进行消息源(需要推送的数据)的配置。以下说明以明文方式。
下面说明具体验证过程:
新建HTTP推送实例
建好的但没有验证的实例
NodeRed端web验证服务器的搭建
点击HTTP推送实例的“验证”,服务器端回收到如下信息:
OneNet HTTP推送验证失败,是因为服务器端没有返回任何信息,下一部是要实现原样返回msg,但我们要先实现如何提取msg的信息。流图更改如下:
在function节点添加:msg.payload=msg.payload.msg,然后按部署按钮。
再次在Onenet 验证,查看服务器是否提取了msg信息
提取msg信息成功,下一步只要返回给OneNet平台msg信息,即可验证成功。流图添加http response 节点即可。
再次验证,验证成功!
完整流图程序。
[
{
"id": "8f2bd4c3cffc1451",
"type": "tab",
"label": "流程 2",
"disabled": false,
"info": "",
"env": []
},
{
"id": "61e8d9d9adc70f05",
"type": "http in",
"z": "8f2bd4c3cffc1451",
"name": "",
"url": "/node",
"method": "get",
"upload": false,
"swaggerDoc": "",
"x": 140,
"y": 140,
"wires": [
[
"8eeceb4c73ac6c7c",
"be2f1af54fbd56be"
]
]
},
{
"id": "8eeceb4c73ac6c7c",
"type": "debug",
"z": "8f2bd4c3cffc1451",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 330,
"y": 140,
"wires": []
},
{
"id": "4b73285128b057b8",
"type": "debug",
"z": "8f2bd4c3cffc1451",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 530,
"y": 220,
"wires": []
},
{
"id": "be2f1af54fbd56be",
"type": "function",
"z": "8f2bd4c3cffc1451",
"name": "",
"func": "msg.payload=msg.payload.msgnreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 310,
"y": 220,
"wires": [
[
"4b73285128b057b8",
"8725eaf423373ace"
]
]
},
{
"id": "8725eaf423373ace",
"type": "http response",
"z": "8f2bd4c3cffc1451",
"name": "",
"statusCode": "",
"headers": {},
"x": 530,
"y": 280,
"wires": []
}
]
最后
以上就是可爱翅膀为你收集整理的NodeRed 搭建web服务器--②实现与OneNet HTTP数据推送的验证的全部内容,希望文章能够帮你解决NodeRed 搭建web服务器--②实现与OneNet HTTP数据推送的验证所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复