數(shù)據(jù)橋接簡介
數(shù)據(jù)橋接作為連接 Fastbee 與外部數(shù)據(jù)系統(tǒng)的橋梁,支持對(duì)接多種類型的外部系統(tǒng),如 MQTT 服務(wù)器、 HTTP 服務(wù)器,以及MySQL、SQLServer、Oracle、PostgreSQL等數(shù)據(jù)庫。 通過數(shù)據(jù)橋接,用戶能夠?qū)崟r(shí)地將消息從 Fastbee 傳輸至外部數(shù)據(jù)系統(tǒng),或者從外部數(shù)據(jù)系統(tǒng)拉取數(shù)據(jù)并發(fā)布到 MQTT 服務(wù)器的指定主題。
結(jié)合規(guī)則腳本的編寫,用戶無需額外編寫代碼,即可快速完成所有業(yè)務(wù)數(shù)據(jù)的處理與分發(fā)。用戶可以選擇通過指定的 HTTP 接口接入數(shù)據(jù),或者訂閱 MQTT 主題來接收數(shù)據(jù)。 在數(shù)據(jù)經(jīng)過規(guī)則處理后,再通過數(shù)據(jù)橋接將數(shù)據(jù)發(fā)送到外部應(yīng)用系統(tǒng)中。
橋接輸入側(cè)支持:
- 基于產(chǎn)品維度的設(shè)備上下線,設(shè)備上報(bào),平臺(tái)下發(fā)等事件觸發(fā)
- 基于數(shù)據(jù)流維度:HTTP 接入,MQTT 主題訂閱方式接入數(shù)據(jù)
橋接輸出側(cè)支持:
- 內(nèi)置MQTT重發(fā)布(默認(rèn))
- 外部MQTT服務(wù)器主題發(fā)布輸出
- 第三方 HTTP OpenAPI 接口輸出
- MySQL、SQLServer、Oracle、PostgreSQL 等數(shù)據(jù)庫的SQL插入操作
Warning
注意:輸入和輸出可同時(shí)使用,更加靈活的轉(zhuǎn)發(fā)數(shù)據(jù)和處理數(shù)據(jù)流
橋接輸入側(cè)
HTTP接入
目前開放三個(gè)固定的api接口來接入數(shù)據(jù),分別是:“/bridege/get”,“/bridege/post”,“/bridege/put” 目前使用的認(rèn)證方式的jwt token認(rèn)證,用戶通過創(chuàng)建系統(tǒng)授權(quán)來生成token,然后再請(qǐng)求時(shí)攜帶認(rèn)證頭信息即可完成接入。
數(shù)據(jù)橋接--新增
橋接方向選擇輸入--點(diǎn)擊Http橋接--選擇接入路由
規(guī)則腳本--新增
腳本數(shù)據(jù)選擇HTTP接入--點(diǎn)擊選擇HTTP橋接接入點(diǎn)--修改腳本內(nèi)容即可
MQTT接入
數(shù)據(jù)橋接--新增
橋接方向選擇輸入--點(diǎn)擊Mqtt橋接--輸入服務(wù)器配置和橋接主題即可
規(guī)則腳本--新增
腳本數(shù)據(jù)選擇MQTT接入--點(diǎn)擊選擇Mqtt橋接接入點(diǎn)--修改腳本內(nèi)容即可
橋接輸出側(cè)
內(nèi)置MQTT重發(fā)布
數(shù)據(jù)接入后,可以經(jīng)過腳本處理,修改重新發(fā)布的主題,數(shù)據(jù)格式,數(shù)據(jù)計(jì)算方式,然后重新發(fā)布到內(nèi)部MQTT服務(wù)器,重新交到業(yè)務(wù)系統(tǒng)處理相關(guān)數(shù)據(jù)。
外部MQTT服務(wù)器主題發(fā)布輸出
1.新建mqtt橋接配置: 規(guī)則引擎-->數(shù)據(jù)橋接-->新增

橋接配置參數(shù)說明:
橋接名稱:橋接配置名稱(一般無限制)
橋接方向:輸出 MQTT服務(wù)地址:要橋接的地址(地址+端口),例:m.btsdy.com:1883 / 101.33.237.12:1883
客戶端ID:連接mqtt的clientId,例:S&D1LN0D9DN5X6&205&1
用戶名:連接mqtt的用戶名
密碼:連接mqtt的密碼
橋接路由:橋接方向?yàn)?輸出,橋接路由可為空
新增配置之后,可以點(diǎn)擊連接測(cè)試按鈕創(chuàng)建mqtt客戶端,根據(jù)狀態(tài)判斷配置是否有效
2.創(chuàng)建mqtt輸出腳本: 規(guī)則引擎-->規(guī)則腳本-->新增



3.測(cè)試腳本--建立mqtt橋接規(guī)則腳本之后,選擇規(guī)則腳本對(duì)應(yīng)的產(chǎn)品設(shè)備,使用mqttx工具模擬設(shè)備上報(bào)

我們通過橋接功能將本地設(shè)備上報(bào)的數(shù)據(jù)橋接到fastbee演示站點(diǎn)數(shù)據(jù)
可以看到,通過mqtt橋接功能,設(shè)備上報(bào)的數(shù)據(jù)在兩個(gè)平臺(tái)都接收到。
第三方 HTTP OpenAPI 接口輸出
1.FastBee平臺(tái)配置
添加配置
1.新建腳本與mqtt輸出一樣,規(guī)則引擎-->數(shù)據(jù)橋接-->新增

配置參數(shù)說明:
橋接名稱:配置名稱
橋接方向:輸出
請(qǐng)求方法:根據(jù)要對(duì)接平臺(tái)api說明選擇 get/post/put
橋接地址:api訪問的完整地址,例:http://localhost:18083/api/v5/metrics
請(qǐng)求頭:根據(jù)對(duì)接平臺(tái)api說明文檔添加,例:認(rèn)證參數(shù) Authorization,application/json等等
請(qǐng)求參數(shù):根據(jù)對(duì)接平臺(tái)api說明文檔添加
請(qǐng)求體:根據(jù)對(duì)接平臺(tái)api說明文檔添加
增加http橋接輸出規(guī)則腳本: 規(guī)則引擎-->規(guī)則腳本-->新增
輸出側(cè)測(cè)試--使用mqttx模擬設(shè)備上報(bào)數(shù)據(jù)測(cè)試

在后端看到如下日志

2.其他平臺(tái)對(duì)接參考
1.emqx對(duì)接
對(duì)接參考文檔:https://www.emqx.io/docs/zh/v5.1/admin/api.html#java
1.在mqtt服務(wù)器新建API密鑰
2.HTTP認(rèn)證:采用Basic認(rèn)證:將用戶名和密碼用MD5在線加密
3.在fastbee平臺(tái)創(chuàng)建配置
HTTP認(rèn)證參數(shù):Authorization: 支持兩種認(rèn)證方式:Basic或Bearer
accept:application/json
兩種認(rèn)證方式:
在emqx管理界面創(chuàng)建api密鑰
fastbee平臺(tái)創(chuàng)建橋接配置

2.螢石對(duì)接
對(duì)接參考文檔:https://open.ys7.com/help/81
HTTP認(rèn)證參數(shù):Content-Type: application/x-www-form-urlencoded
accessToken



3.OneNET-中國移動(dòng)物聯(lián)網(wǎng)開放平臺(tái)對(duì)接
對(duì)接參考文檔:https://open.ys7.com/help/81
HTTP認(rèn)證參數(shù):Content-Type: application/x-www-form-urlencoded
accessToken
參數(shù)說明:
4.百度智能云api對(duì)接
參考文檔:https://cloud.baidu.com/doc/EVS/s/Ekowke5c8
1.創(chuàng)建應(yīng)用
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認(rèn)證參數(shù):access_token
Content-Type: application/json; charset=utf-8



5.??低旳PI對(duì)接
參考文檔:https://ai.hikvision.com/resource-center/document-detail/8aee27227c3046eba42e84d26d88bc96
1.注冊(cè)賬號(hào)
2.獲取token:https://ai.hikvision.com/resource-center/document-detail/a45858cdd40c43fb8669537e55bf2cae
HTTP認(rèn)證參數(shù):Content-Type:application/x-www-form-urlencoded
referer:https://ai.hikvision.com/
token
在康海平臺(tái)注冊(cè)賬號(hào)之后,在個(gè)人控制臺(tái)獲取ak和sk,獲取token
更對(duì)平臺(tái)對(duì)接參考對(duì)應(yīng)平臺(tái)的api對(duì)接文檔
數(shù)據(jù)庫存儲(chǔ)
1.新增數(shù)據(jù)庫存儲(chǔ)配置:規(guī)則引擎-->數(shù)據(jù)橋接-->新增

數(shù)據(jù)庫存儲(chǔ)配置說明: 橋接名稱:
橋接方向:一般為輸入
數(shù)據(jù)庫類型:目前僅支持關(guān)系型數(shù)據(jù)庫
數(shù)據(jù)源:MySQL/Oracle/SQL server/PostgreSQL
鏈接地址:ip + 端口,例如:localhost:3306
用戶名:登錄數(shù)據(jù)庫的用戶名
密碼:密碼
數(shù)據(jù)庫名稱:庫名
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}調(diào)用
可在輸出側(cè)http body和 sql語句中傳入該值
Warning
注意:sql語句 values 中使用自定義占位符 '${}' 賦值
單引號(hào) '' 最好不要省略,否則可能會(huì)導(dǎo)致sql語句錯(cuò)誤
2.新增數(shù)據(jù)存儲(chǔ)規(guī)則腳本:規(guī)則引擎-->規(guī)則腳本-->新增

規(guī)則腳本給sql語句傳值格式:
以下幾個(gè)字段在規(guī)則腳本中可以省略,因?yàn)楹蠖艘呀?jīng)封裝好,如果sql涉及其他字段需要手動(dòng)封裝
msgContext.setData("topic",NewTopic);
msgContext.setData("payload",NewPayload);
msgContext.setData("serialNumber",serialNumber);
msgContext.setData("productId",productId);
msgContext.setData("protocolCode",protocolCode);
3.測(cè)試數(shù)據(jù)庫存儲(chǔ)

