一
Node-RED環(huán)境搭建
Node-RED是構(gòu)建物聯(lián)網(wǎng)(IoT,Internet of Things)應(yīng)用程序的一個強大工具,其重點是簡化代碼塊的“連接”以執(zhí)行任務(wù)。它使用可視化編程方法,允許開發(fā)人員將預(yù)定義的代碼塊(稱為“節(jié)點”,Node)連接起來執(zhí)行任務(wù)。連接的節(jié)點,通常是輸入節(jié)點、處理節(jié)點和輸出節(jié)點的組合,當它們連接在一起時,構(gòu)成一個“流”(Flows)。
Node-RED網(wǎng)關(guān)開發(fā)環(huán)境安裝流程
docker環(huán)境如何部署,網(wǎng)上已經(jīng)有很多教程,這里不再說明,推薦參考官方安裝說明。
二
項目鏡像安裝
docker安裝項目文件非常的簡單,只需要兩條指令即可實現(xiàn)Node-RED開發(fā)環(huán)境部署,其中第一條通過“docker pull 存儲庫名稱”,就可以項目鏡像,也可以通過“docker --help”查詢指令說明。
docker --help指令(部分)
從Node-RED 1.0開始,Docker Hub上的存儲庫已重命名為“nodered/node-red”,使用“docker pull nodered/node-red”拉取項目鏡像。
要以最簡單的形式在 Docker 中運行,只需運行:
docker run -it -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red
讓我們解讀下指令:
docker run:運行容器;
-it:打印安裝會話,可以省略;
-p:配置本地端口和外部映射端口;
-v node_red_data:/data:掛載一個名為“node_red_data”的docker到容器/數(shù)據(jù)目錄;
--name mynodered:命名為“mynodered”;
nodered/node-red:鏡像地址;
只使用“Docker run”不先拉取項目鏡像也是可以的,該指令會查詢本地鏡像如果沒有就會自動從Docker Hub存儲庫下載項目鏡像;
其他的自定義安裝建議仔細閱讀Node-RED官方文檔后進行,筆者這里只是介紹這個工具的一種用法,不使用自定義安裝功能。
三
安裝插件
通過Node-RED默認安裝環(huán)境是無法實現(xiàn)RTU設(shè)備的邊緣采集,還需要通過安裝不同的功能插件才能實現(xiàn),安裝Modbus功能插件(node-red-contrib-modbus)實現(xiàn)Modbus RTU/Modbus TCP協(xié)議轉(zhuǎn)換和邊緣采集,安裝數(shù)據(jù)庫插件(node-red-node-mysql)實現(xiàn)邊緣采集數(shù)據(jù)的存儲,除了安裝插件還需要少量的“javascript”腳本轉(zhuǎn)換格式和數(shù)據(jù)上報等。
好在安裝插件的過程可以通過可視化網(wǎng)頁界面實現(xiàn),無需理解復(fù)雜的安裝指令,這也是Node-RED的優(yōu)點之一,在地址欄中輸入部署Node-RED環(huán)境的IP地址和端口,這里為192.168.88.5:1880。
打開右上角的菜單,選擇節(jié)點管理,點擊“安裝”,搜索框中輸入Modbus功能插件(node-red-contrib-modbus)和數(shù)據(jù)庫插件(node-red-node-mysql)。
成功安裝節(jié)點后在工具欄新增以下節(jié)點:
“node-red-contrib-modbus”節(jié)點作者,制作了不同用法的示例,可以通過導(dǎo)入功能,測試理解不同節(jié)點的功能,強烈建議多去理解這些實例,方便后續(xù)使用。
四
網(wǎng)關(guān)實現(xiàn)
添加“Modbus read”節(jié)點周期查詢Modbus設(shè)備狀態(tài),第一需要配置Modbus設(shè)備的地址,筆者這里使用“Modbus Slave”軟件模擬,地址為192.168.88.100:8890:
圖左通過雙擊打開“Modbus read”配置界面,圖右新增Modbus設(shè)備連接地址,圖中配置寄存器參數(shù),這里以地址0x0000的保持寄存器為例,配置“Poll Rate”查詢周期。
使用“function”節(jié)點提取“Modbus read”節(jié)點周期查詢的數(shù)據(jù),雙擊打開函數(shù)節(jié)點,編輯以下腳本:
msg.payload=msg.payload.data;
msg.payload=msg.payload.slice(0,1);
return msg;
使用“template”將“function”節(jié)點處理的結(jié)果進行打包,這里將數(shù)據(jù)打包為JSON數(shù)據(jù):
最后通過TCP連接將數(shù)據(jù)傳輸?shù)街付ǚ?wù)器:
“6”為“DEBUG”節(jié)點用于調(diào)試,通過上述配置就可以將Modbus TCP指令采集到的數(shù)據(jù)轉(zhuǎn)換為JSON數(shù)據(jù)并將數(shù)據(jù)上報到指定服務(wù)器:
也可以通過Node-RED提供的MQTT連接節(jié)點將數(shù)據(jù)傳輸?shù)椒?wù)器,同時也可以通過“mysql”節(jié)點將將采集數(shù)據(jù)通過sql語句傳輸?shù)綌?shù)據(jù)庫。
采集上報數(shù)據(jù)庫與MQTT服務(wù)器流程舉例
至此,一個簡單的邊緣采集網(wǎng)關(guān)搭建完成。
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2914文章
44938瀏覽量
377074 -
容器
+關(guān)注
關(guān)注
0文章
499瀏覽量
22123 -
Docker
+關(guān)注
關(guān)注
0文章
492瀏覽量
11967
發(fā)布評論請先 登錄
相關(guān)推薦
如何使用 Docker容器化技術(shù)
ARM平臺實現(xiàn)Docker容器技術(shù)
ARM平臺實現(xiàn)Docker容器技術(shù)
如何在Docker中創(chuàng)建容器
理解Docker容器并暢玩docker
Docker容器管理命令(一)
基于DOCKER容器的ELK日志收集系統(tǒng)分析
![基于<b class='flag-5'>DOCKER</b><b class='flag-5'>容器</b>的ELK日志收集系統(tǒng)分析](https://file.elecfans.com/web2/M00/49/47/poYBAGKhwJmANuO2AAATOod54FM103.jpg)
docker容器刪除后數(shù)據(jù)還在嗎
docker容器與容器之間通信
docker進入容器的方法有哪些
docker容器有幾種狀態(tài)
ARM平臺實現(xiàn)Docker容器技術(shù)
![ARM平臺<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>Docker</b><b class='flag-5'>容器</b>技術(shù)](https://file1.elecfans.com/web2/M00/C3/DE/wKgaomXpMM2ANlt5AARGmREsrH4588.png)
評論