将Edgex網關接入Thingsboard物聯網平台
系統環境準備Thingsboard物聯網平台平台概述安裝概述Edgex foundry開源邊緣計算物聯網軟體架構将Edgex網關接入Thingsboard物聯網平台的關鍵元件eKuiper安裝确認推薦安裝eKuiper 管理控制台将 Edgex 裝置資料上報關鍵步驟主要步驟Thingsboard平台建立網關建立 EdgeX 流并建立規則登入eKuiper 管理控制台添加docker内的 eKuiper 規則引擎建立規則,發送物聯網平台物聯網遙測上傳API參考說明
系統環境準備
Thingsboard物聯網平台
平台概述
在衆多的開源物聯網平台項目中,Thingsboard在體系架構先進性、功能完整性、文檔完備性方面,應是首屈一指。
物聯網平台ThingsBoard,作為大屏開發工具,隻要拖拉一些内置控件或直接定制開發控件的方式,可快速提供較好的可視化效果。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwIjNx8CX39CXy8CXycXZpZVZnFWbp9zZuBnLyIDZ3IWZjNjYkNTMkhDMxImN3MzY1QGOwYGZwYjMzAzLchzN4IDO0czLcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.png)
更多詳細參考官網
安裝概述
1.參見官方文檔
https://thingsboard.io/docs/user-guide/install/cluster/docker-compose-setup/
2.推薦參考
語雀文檔 基于docker-compose部署步驟
https://www.yuque.com/qingchuntian/tfod6d/ktkxg2
Edgex foundry開源邊緣計算物聯網軟體架構
Edgex foundry是一個Linux 基金會營運的開源邊緣計算物聯網軟體架構項目,該項目的核心是基于與硬體和作業系統完全無關的參考軟體平台建立的互操作架構,使能即插即用的元件生态系統,統一市場,加速物聯網方案的部署。EdgeX Foundry 使有意參與的各方在開放與互操作的物聯網方案中自由協作,無論他們是使用公開标準或私有方案。
安裝文檔參考官網,推薦docker方式。
https://cn.edgexfoundry.org/
建議安裝版本不帶token ,友善後面調試開發,如:yml檔案帶'no-secty.'關鍵字
curl https://raw.githubusercontent.com/edgexfoundry/edgex-compose/ireland/docker-compose-no-secty.yml -o docker-compose.yml; docker-compose up -d
将Edgex網關接入Thingsboard物聯網平台的關鍵元件
LF Edge eKuiper - 超輕量物聯網邊緣資料分析軟體
eKuiper安裝确認
LF Edge eKuiper 是 Golang 實作的輕量級物聯網邊緣分析、流式處理開源軟體,可以運作在各類資源受限的邊緣裝置上。eKuiper 設計的一個主要目标就是将在雲端運作的實時流式計算架構(比如 Apache Spark (opens new window),Apache Storm (opens new window)和 Apache Flink (opens new window)等)遷移到邊緣端。eKuiper 參考了上述雲端流式處理項目的架構與實作,結合邊緣流式資料處理的特點,采用了編寫基于
源 (Source)
,
SQL (業務邏輯處理)
,
目标 (Sink)
的規則引擎來實作邊緣端的流式資料處理。
該軟體在安裝Edgex foundry時候已經預設安裝到docker裡面
推薦看中文文檔
https://docs.emqx.cn/kuiper/latest/
推薦安裝eKuiper 管理控制台
從 eKuiper 0.9.1 版本開始,每釋出一個 eKuiper 新版本,會随之釋出對應版本的管理控制台。本文以一個實際例子來說明如何使用管理控制台對 eKuiper 節點進行操作與管理。有這個工具友善寫eKuiper 處理規則,具備互動界面
1.使用docker安裝需指定軟體版本号,安裝文檔裡面可能不是最新的版本,沒有規則編輯界面的
2.安裝說明
https://docs.emqx.cn/kuiper/latest/manager-ui/overview.html#%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1
docker run --name kuiperManager --network=home_edgex-network -d -p 9082:9082 emqx/kuiper-manager:1.2.1
複制
- UI 端:可視化的界面,便于使用者操作
- Kuiper-manager:管理控制台,本質是一個反向 HTTP 代理服務,提供使用者管理,權限驗證等服務。既可以部署在雲端,也可以部署在邊緣端
- eKuiper 執行個體,被管理的 eKuiper 節點執行個體,Kuiper-manager 可以同時管理多個 eKuiper 節點
登入 kuiper-manager
登入時需要提供 kuiper-manager 的位址,使用者名、密碼。如下圖所示:
- 位址:
http://$yourhost:9082
- 使用者名:admin
- 密碼:public
使用該工具,直接管理現有docker内部的eKuiper 節點,端口是 59720 ;非官網教程那個端口
将 Edgex 裝置資料上報關鍵步驟
主要參考文檔
https://docs.edgexfoundry.org/2.2/examples/Ch-CommandingDeviceThroughRulesEngine/
核心思路:使用規則引擎eKuiper,基于Thingsboard物聯網平台網關方式,使用規則引擎的資料格式模闆生成平台所需格式json資料,采用mqtt接口把資料發送到Thingsboard物聯網平台。
本文檔不會涵蓋 EdgeX 或 LF Edge eKuiper 的基本操作。讀者應具備以下基本知識:
- 擷取并啟動 EdgeX。有關如何使用虛拟裝置服務擷取和啟動 EdgeX,請參閱快速入門。
- 運作 eKuiper 規則引擎。請參閱EdgeX eKuiper 規則引擎教程以了解 eKuiper 和 EdgeX 的基礎知識。
主要步驟
- Thingsboard平台建立網關裝置,接收 EdgeX 端發送過來資料,并明确mqtt端口預設1883,同時複制網關token備用。
- 啟動 eKuiper 并建立 EdgeX 流,在規則引擎中建立mqtt轉發規則。
- 建立規則,使用模版生成Thingsboard平台所需格式json資料,并發送對應mqtt接口。
Thingsboard平台建立網關
建立 EdgeX 流并建立規則
建立 EdgeX 流并建立規則3種方式
1.通過指令方式,參考https://docs.edgexfoundry.org/2.2/examples/Ch-CommandingDeviceThroughRulesEngine/
2.通過Edgex foundry UI管理界面,通過互動界面的方式,建立EdgeX 流和規則,可查詢規則狀态等資訊。但目前支撐簡單規則,不支援資料模闆規則。
3.在筆者實踐中,通過eKuiper 管理控制台最新版本,可實作 eKuiper 規則引擎全面管理。
為友善大家閱讀,下面以界面操作方式介紹
登入eKuiper 管理控制台
http://localhost:9082/
添加docker内的 eKuiper 規則引擎
連結成功後,建立流demo,選擇流類型為edgex
建立規則,發送物聯網平台
- 建立規則,id名稱不能重複,sql規則按照業務需求取出監測名額和裝置名稱
更多sql參考
https://docs.emqx.cn/kuiper/latest/sqls/streams.html
關鍵說明:如何使用 meta 函數抽取在 EdgeX 消息總線中發送的其它資訊?
SELECT Temperature,meta(DeviceName) AS DeviceName,tstamp() as tm FROM demo
複制
- 動作可以有多個及多種類型,下圖是動作發送物聯網平台參數配置
1、第一個參數:物聯網平台mqtt位址及端口
2、第二個參數: 預設物聯網平台mqtt主題,不能改。 主題:v1/gateway/telemetry
3、第三個參數:物聯網平台前面建立的網關裝置的token
4、資料轉換模闆,需要參考說明 eKuiper 中使用 Golang 模版 (template) 定制分析結果
{"{{.DeviceName}}":[{"ts":{{.tm}}, "values": {"temperature": {{.Temperature}}}}]}
複制
物聯網遙測上傳API參考說明
物聯網MQTT 網關 API 參考
為了将裝置遙測釋出到 ThingsBoard 伺服器節點,請将 PUBLISH 消息發送到以下主題:
Topic: v1/gateway/telemetry
複制
資訊:
{
"Device A": [
{
"ts": 1483228800000,
"values": {
"temperature": 42,
"humidity": 80
}
},
{
"ts": 1483228801000,
"values": {
"temperature": 43,
"humidity": 82
}
}
],
"Device B": [
{
"ts": 1483228800000,
"values": {
"temperature": 42,
"humidity": 80
}
}
]
}
複制
其中裝置 A和裝置 B是您的裝置名稱,溫度和濕度是遙測鍵,ts是以毫秒為機關的 unix 時間戳。
來源 | 知識星球 | 物聯網低代碼平台的價值
聲明:如轉載,請注明本文連結,謝謝合作。