之前我們發(fā)布的《串口服務(wù)器基于EMQX平臺自建MQTT服務(wù)器實(shí)現(xiàn)通訊教程》一文中簡單的介紹了安裝Docker以及在Docker中部署EMQX 服務(wù)教程,也介紹了Docker系列優(yōu)勢優(yōu)點(diǎn)及其安裝部署教程,本文我們將通過Node-RED環(huán)境搭建、項(xiàng)目鏡像實(shí)現(xiàn)docker安裝、安裝Modbus功能插件、邊緣計(jì)算網(wǎng)關(guān)配置等教程詳細(xì)的介紹了Docker容器實(shí)現(xiàn)邊緣采集網(wǎng)關(guān)搭建案例教程。
Node-RED是構(gòu)建物聯(lián)網(wǎng)(IOT, Internet of Things)應(yīng)用程序的一個(gè)強(qiáng)大工具,其重點(diǎn)是簡化代碼塊的“連接”以執(zhí)行任務(wù)。它使用可視化編程方法,允許開發(fā)人員將預(yù)定義的代碼塊(稱為“節(jié)點(diǎn)”,Node)連接起來執(zhí)行任務(wù)。連接的節(jié)點(diǎn),通常是輸入節(jié)點(diǎn)、處理節(jié)點(diǎn)和輸出節(jié)點(diǎn)的組合,當(dāng)它們連接在一起時(shí),構(gòu)成一個(gè)“流”(Flows)。
圖1 Node-RED網(wǎng)關(guān)開發(fā)環(huán)境安裝流程
docker環(huán)境如何部署,網(wǎng)上已經(jīng)有很多教程,這里不在說明,推薦參考官方安裝說明,地址:https://docs.docker.com/engine/install/centos/(國內(nèi)可能訪問比較慢),也可以在阿里云的文檔中心查看如何部署docker環(huán)境。
docker安裝項(xiàng)目文件非常的簡單,只需要兩條指令即可實(shí)現(xiàn)Node-RED開發(fā)環(huán)境部署,其中第一條通過“docker pull 存儲庫名稱”,就可以項(xiàng)目鏡像,也可以通過“docker --help”查詢指令說明。
圖2 docker --help指令(部分)
從Node-RED 1.0開始,Docker Hub上的存儲庫已重命名為“nodered/node-red”,使用“docker pull nodered/node-red”拉取項(xiàng)目鏡像。
要以最簡單的形式在Docker 中運(yùn)行,只需運(yùn)行:
docker run -it -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red
讓我們解讀下指令:
docker run:運(yùn)行容器;
-it:打印安裝會話,可以省略;
-p:配置本地端口和外部映射端口;
-v node_red_data:/data:掛載一個(gè)名為“node_red_data”的docker到容器/數(shù)據(jù)目錄;
--name mynodered:命名為“mynodered”;
nodered/node-red:鏡像地址;
只使用“Docker run”不先拉取項(xiàng)目鏡像也是可以的,該指令會查詢本地鏡像如果沒有就會自動從Docker Hub存儲庫下載項(xiàng)目鏡像;
其他的自定義安裝建議仔細(xì)閱讀Node-RED官方文檔(https://nodered.org/docs/)后進(jìn)行,我這里只是介紹這個(gè)工具的一種用法就不使用自定義安裝功能;
通過Node-RED默認(rèn)安裝環(huán)境是無法實(shí)現(xiàn)RTU設(shè)備的邊緣采集,還需要通過安裝不同的功能插件才能實(shí)現(xiàn),安裝Modbus功能插件(node-red-contrib-modbus)實(shí)現(xiàn)Modbus RTU/Modbus TCP協(xié)議轉(zhuǎn)換和邊緣采集,安裝數(shù)據(jù)庫插件(node-red-node-mysql)實(shí)現(xiàn)邊緣采集數(shù)據(jù)的存儲,除了安裝插件還需要少量的“javascript”腳本轉(zhuǎn)換格式和數(shù)據(jù)上報(bào)等。
好在安裝插件的過程可以通過可視化網(wǎng)頁界面實(shí)現(xiàn),無需理解復(fù)雜的安裝指令,這也是Node-RED的優(yōu)點(diǎn)之一,在地址欄中輸入部署Node-RED環(huán)境的IP地址和端口,我這里為192.168.88.5:1880。
打開右上腳的菜單,選擇節(jié)點(diǎn)管理,點(diǎn)擊“安裝”,搜索框中輸入Modbus功能插件(node-red-contrib-modbus)和數(shù)據(jù)庫插件(node-red-node-mysql)。
安裝成功節(jié)點(diǎn)后在工具欄新增以下節(jié)點(diǎn):
“node-red-contrib-modbus”節(jié)點(diǎn)作者,制作了不同用法的示例,可以通過導(dǎo)入功能,測試?yán)斫獠煌?jié)點(diǎn)的功能,強(qiáng)烈建議多去理解這些實(shí)例,方便后續(xù)使用;
添加“Modbus read”節(jié)點(diǎn)周期查詢Modbus設(shè)備狀態(tài),第一需要配置Modbus設(shè)備的地址我這里使用“Modbus Slave”軟件模擬,地址為192.168.88.100:8890:
圖左通過雙擊打開“Modbus read”配置界面,圖右新增Modbus設(shè)備連接地址,圖中配置寄存器參數(shù),這里以地址0x0000的保持寄存器為例,配置“Poll Rate”查詢周期。
使用“function”節(jié)點(diǎn)提取“Modbus read”節(jié)點(diǎn)周期查詢的數(shù)據(jù),雙擊打開函數(shù)節(jié)點(diǎn),編輯以下腳本:
msg.payload=msg.payload.data;
msg.payload=msg.payload.slice(0,1);
return msg;
使用“template”將“function”節(jié)點(diǎn)處理的結(jié)果進(jìn)行打包,我這里將數(shù)據(jù)打包為JSON數(shù)據(jù):
最后通過TCP連接將數(shù)據(jù)傳輸?shù)街付ǚ?wù)器:
“6”為“DEBUG”節(jié)點(diǎn)用于調(diào)試,通過上述配置就可以將Modbus TCP指令采集到的數(shù)據(jù)轉(zhuǎn)換為JSON數(shù)據(jù)并將數(shù)據(jù)上報(bào)到指定服務(wù)器:
也可以通過Node-RED提供的MQTT連接節(jié)點(diǎn)將數(shù)據(jù)傳輸?shù)椒?wù)器,同時(shí)也可以通過“mysql”節(jié)點(diǎn)將將采集數(shù)據(jù)通過sql語句傳輸?shù)綌?shù)據(jù)庫。
采集上報(bào)數(shù)據(jù)庫與MQTT服務(wù)器流程舉例。至此,一個(gè)簡單的邊緣采集網(wǎng)關(guān)搭建完成。
今天的分享就到這里啦,EBYTE每一天都致力于更好的助力物聯(lián)化、智能化、自動化的發(fā)展,提升資源利用率,更多邊緣計(jì)算網(wǎng)關(guān)產(chǎn)品和邊緣技術(shù)技術(shù)資料信息,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)進(jìn)行了解,也可以直接撥打400電話咨詢技術(shù)專員!
什么是邊緣計(jì)算網(wǎng)關(guān)?邊緣計(jì)算網(wǎng)關(guān)有什么特點(diǎn)?
7 X 24 銷售服務(wù)熱線
4000-330-990深圳辦事處柯經(jīng)理:18218726658 杭州辦事處戴經(jīng)理:17512568697
常州辦事處崔經(jīng)理:15906110783 南京辦事處葛經(jīng)理:17626012283
業(yè)務(wù)郵箱:support@cdebyte.com
全國銷售投訴電話:19934352316
地址:四川省成都市高新西區(qū)西區(qū)大道199號B5棟(前臺座機(jī):028-61543675)
?? 成都億佰特電子科技有限公司【版權(quán)所有】 蜀ICP備13019384號-3