数据桥接
数据桥接简介
数据桥接作为连接 Fastbee 与外部数据系统的桥梁,支持对接多种类型的外部系统,如 MQTT 服务器、 HTTP 服务器,以及MySQL、SQLServer、Oracle、PostgreSQL等数据库。 通过数据桥接,用户能够实时地将消息从 Fastbee 传输至外部数据系统,或者从外部数据系统拉取数据并发布到 MQTT 服务器的指定主题。
结合规则脚本的编写,用户无需额外编写代码,即可快速完成所有业务数据的处理与分发。用户可以选择通过指定的 HTTP 接口接入数据,或者订阅 MQTT 主题来接收数据。 在数据经过规则处理后,再通过数据桥接将数据发送到外部应用系统中。
桥接输入侧支持:
- 基于产品维度的设备上下线,设备上报,平台下发等事件触发
- 基于数据流维度:HTTP 接入,MQTT 主题订阅方式接入数据
桥接输出侧支持:
- 内置MQTT重发布(默认)
- 外部MQTT服务器主题发布输出
- 第三方 HTTP OpenAPI 接口输出
- MySQL、SQLServer、Oracle、PostgreSQL 等数据库的SQL插入操作
注意
注意:输入和输出可同时使用,更加灵活的转发数据和处理数据流
桥接输入侧
HTTP接入
目前开放三个固定的api接口来接入数据,分别是:“/bridege/get”,“/bridege/post”,“/bridege/put” 目前使用的认证方式的jwt token认证,用户通过创建系统授权来生成token,然后再请求时携带认证头信息即可完成接入。
数据桥接--新增
桥接方向选择输入--点击Http桥接--选择接入路由
规则脚本--新增
脚本数据选择HTTP接入--点击选择HTTP桥接接入点--修改脚本内容即可
MQTT接入
数据桥接--新增
桥接方向选择输入--点击Mqtt桥接--输入服务器配置和桥接主题即可
规则脚本--新增
脚本数据选择MQTT接入--点击选择Mqtt桥接接入点--修改脚本内容即可
桥接输出侧
内置MQTT重发布
数据接入后,可以经过脚本处理,修改重新发布的主题,数据格式,数据计算方式,然后重新发布到内部MQTT服务器,重新交到业务系统处理相关数据。
外部MQTT服务器主题发布输出
1.新建mqtt桥接配置: 规则引擎-->数据桥接-->新增
桥接配置参数说明:
桥接名称:桥接配置名称(一般无限制)
桥接方向:输出 MQTT服务地址:要桥接的地址(地址+端口),例:fastbee.cn:1883 / 101.33.237.12:1883
客户端ID:连接mqtt的clientId,例:S&D1LN0D9DN5X6&205&1
用户名:连接mqtt的用户名
密码:连接mqtt的密码
桥接路由:桥接方向为 输出,桥接路由可为空
新增配置之后,可以点击连接测试按钮创建mqtt客户端,根据状态判断配置是否有效
2.创建mqtt输出脚本: 规则引擎-->规则脚本-->新增
3.测试脚本--建立mqtt桥接规则脚本之后,选择规则脚本对应的产品设备,使用mqttx工具模拟设备上报
我们通过桥接功能将本地设备上报的数据桥接到fastbee演示站点数据
可以看到,通过mqtt桥接功能,设备上报的数据在两个平台都接收到。
第三方 HTTP OpenAPI 接口输出
1.FastBee平台配置
添加配置
1.新建脚本与mqtt输出一样,规则引擎-->数据桥接-->新增
配置参数说明:
桥接名称:配置名称
桥接方向:输出
请求方法:根据要对接平台api说明选择 get/post/put
桥接地址:api访问的完整地址,例:http://localhost:18083/api/v5/metrics
请求头:根据对接平台api说明文档添加,例:认证参数 Authorization,application/json等等
请求参数:根据对接平台api说明文档添加
请求体:根据对接平台api说明文档添加
增加http桥接输出规则脚本: 规则引擎-->规则脚本-->新增
输出侧测试--使用mqttx模拟设备上报数据测试
在后端看到如下日志
2.其他平台对接参考
1.emqx对接
对接参考文档:https://www.emqx.io/docs/zh/v5.1/admin/api.html#java
1.在mqtt服务器新建API密钥
2.HTTP认证:采用Basic认证:将用户名和密码用MD5在线加密
3.在fastbee平台创建配置
HTTP认证参数:Authorization: 支持两种认证方式:Basic或Bearer
accept:application/json
两种认证方式:
在emqx管理界面创建api密钥
fastbee平台创建桥接配置
2.萤石对接
对接参考文档:https://open.ys7.com/help/81
HTTP认证参数:Content-Type: application/x-www-form-urlencoded
accessToken
3.OneNET-中国移动物联网开放平台对接
对接参考文档:https://open.ys7.com/help/81
HTTP认证参数:Content-Type: application/x-www-form-urlencoded
accessToken
参数说明:
4.百度智能云api对接
参考文档:https://cloud.baidu.com/doc/EVS/s/Ekowke5c8
1.创建应用
2.获取access_token:https://console.bce.baidu.com/support/#/api?product=AI&project=%E5%9B%BE%E5%83%8F%E8%AF%86%E5%88%AB&parent=%E9%89%B4%E6%9D%83%E8%AE%A4%E8%AF%81%E6%9C%BA%E5%88%B6&api=oauth%2F2.0%2Ftoken&method=post
HTTP认证参数:access_token
Content-Type: application/json; charset=utf-8
5.海康威视API对接
参考文档:https://ai.hikvision.com/resource-center/document-detail/8aee27227c3046eba42e84d26d88bc96
1.注册账号
2.获取token:https://ai.hikvision.com/resource-center/document-detail/a45858cdd40c43fb8669537e55bf2cae
HTTP认证参数:Content-Type:application/x-www-form-urlencoded
referer:https://ai.hikvision.com/
token
在康海平台注册账号之后,在个人控制台获取ak和sk,获取token
更对平台对接参考对应平台的api对接文档
数据库存储
1.新增数据库存储配置:规则引擎-->数据桥接-->新增
数据库存储配置说明: 桥接名称:
桥接方向:一般为输入
数据库类型:目前仅支持关系型数据库
数据源:MySQL/Oracle/SQL server/PostgreSQL
链接地址:ip + 端口,例如:localhost:3306
用户名:登录数据库的用户名
密码:密码
数据库名称:库名
SQL:sql语句,例如:
INSERT INTO database_storage(topic, payload, serial_number, product_id,protocol_code)
VALUES ('${topic}', '${payload}', '${serialNumber}', '${productId}','${protocolCode}');
说明:可在脚本中使用msgContext.setData("test",1);
然后sql语句通过${test}调用
可在输出侧http body和 sql语句中传入该值
注意
注意:sql语句 values 中使用自定义占位符 '${}' 赋值
单引号 '' 最好不要省略,否则可能会导致sql语句错误
2.新增数据存储规则脚本:规则引擎-->规则脚本-->新增
规则脚本给sql语句传值格式:
以下几个字段在规则脚本中可以省略,因为后端已经封装好,如果sql涉及其他字段需要手动封装
msgContext.setData("topic",NewTopic);
msgContext.setData("payload",NewPayload);
msgContext.setData("serialNumber",serialNumber);
msgContext.setData("productId",productId);
msgContext.setData("protocolCode",protocolCode);