IBM Node-RED安裝與使用教程
1.Node-RED
Node-RED 是構建物聯網(IOT, Internet of Things)應用程序的一個強大工具,其重點是簡化代碼塊的“連接”以執行任務。它使用可視化編程方法,允許開發人員將預定義的代碼塊(稱為“節點”,Node)連接起來執行任務。連接的節點,通常是輸入節點、處理節點和輸出節點的組合,當它們連接在一起時,構成一個“流”(Flows)。
Node-RED最初是IBM在2013年末開發的一個開源項目,以滿足他們快速連接硬件和設備到Web服務和其他軟件的需求——作為物聯網的一種粘合劑,它很快發展成為一種通用的物聯網編程工具。重要的是,Node-RED已經迅速形成一個重要的、不斷增長的用戶基礎和一個活躍的開發人員社區,他們正在開發新的節點,同時允許程序員復用Node-RED代碼來完成各種各樣的任務。
- Node-Red是一個開源的可視化編程工具
- Node-RED由IBM開發,主要用於連接連接計算機、傳感器和在線服務等協議或組件,以簡化它們之間的布線工作
- Node-RED允許通過組合各部件來編寫應用程序。這些部件也可以是硬件設備、Web API 、在線服務
2.Node-RED應用意義
2.1 Node-RED所屬層次
Node-RED所屬層次如下圖:
主打的是業務邏輯層,但是也包含一些可視化展示層功能,第4部分有詳細介紹
由此可見:
- Node-RED並不是取代了代碼,而是簡化了代碼
- 人們可以利用軟件塊和設備塊更容易連線連成有用的系統,簡化了開發
- 開發者也是想通過這個新穎的形式讓人們更注重於創新,而不是正在重復地做什么
3.Node-RED安裝【Docker版】
3.1 下載Node-RED Docker容器
- Node-RED的1.0系列在Docker Hub上已經改名為nodered/node-red.
- Node-RED的0.20.x在Docker Hub上仍然叫nodered/node-red-docker,
docker pull nodered/node-red
3.2 運行容器
kubernetes@kubernetes-virtual-machine:~$ docker run -it -p 1880:1880 --name nodered nodered/node-red
> node-red-docker@1.0.4 start /usr/src/node-red
> node $NODE_OPTIONS node_modules/node-red/red.js $FLOWS "--userDir" "/data"
18 Mar 07:53:36 - [info]
Welcome to Node-RED
===================
18 Mar 07:53:36 - [info] Node-RED version: v1.0.4
18 Mar 07:53:36 - [info] Node.js version: v10.19.0
18 Mar 07:53:36 - [info] Linux 4.15.0-74-generic x64 LE
18 Mar 07:53:36 - [info] Loading palette nodes
18 Mar 07:53:37 - [info] Settings file : /data/settings.js
18 Mar 07:53:37 - [info] Context store : 'default' [module=memory]
18 Mar 07:53:37 - [info] User directory : /data
18 Mar 07:53:37 - [warn] Projects disabled : editorTheme.projects.enabled=false
18 Mar 07:53:37 - [info] Flows file : /data/flows.json
18 Mar 07:53:37 - [info] Creating new flow file
18 Mar 07:53:37 - [warn]
---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.
If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.
You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------
18 Mar 07:53:37 - [info] Server now running at http://127.0.0.1:1880/
18 Mar 07:53:37 - [info] Starting flows
18 Mar 07:53:37 - [info] Started flows
客戶端訪問http://IP:1880,可以看到node-red 的工作界面,左側是元素選擇區,中間是畫布區,右側是信息/終端打印區,如下圖:
4.使用Node-RED的准備工作
4.1 下載所需插件
操作順序依次是:節點管理-控制面板-安裝-搜索
4.2 搭建MQTT服務器
EMQ 是一個由國人開發的百萬級分布式開源物聯網 MQTT 消息服務器。
docker run --name emq -p 18083:18083 -p 1883:1883 -p 8084:8084 -p 8883:8883 -p 8083:8083 -d emqx/emqx
端口 所屬協議
- 1883 MQTT 協議端口
- 8883 MQTT/SSL 端口
- 8083 MQTT/WebSocket 端口
- 8080 HTTP API 端口
- 18083 Dashboard 管理控制台端口
然后打開http://ip:18083即可打開界面
5.Node-RED的使用
5.1 輸入與輸出
1.首先拖進來輸入和輸出
2.配置輸入節點
由於我當前選擇的json模式,那需要編寫一段json腳本
3.點擊部署,並運行
可以看出上圖輸出是json模式
5.2 文件操作
這里以讀文件舉例
1.首先我在本地創建一個aaa.txt,並在里面寫入“Hello Node-RED”
2.拖出來file in組件,注意這里演示的事讀文件操作
3.拖出來function組件,用來編寫文件路徑
4.然后將輸入和輸出與其進行連接
5.部署運行即可輸出文件中的內容
5.3 接口操作
1.找到http in和http response節點
2.編輯http in節點,輸入接口路徑url
3.將http in和http response整體連接
4.在部署之后在瀏覽器中運行
5.4 數據庫操作
先提前創建數據表
1.拖出mysql組件並配置數據庫信息
2.拖出function,編寫select函數
代碼段如下:
var selectTmp="select data from NodeRED_source where name='%s'";
var newMsg = {
"topic": util.format(selectTmp, msg.payload.name)
}
return newMsg;
3.連接並運行
5.5 數學公式操作
1.首先拖出計算節點
2.查看計算機點配置項
5.6 MQTT操作
1.查看當前mqtt主題有哪些
2.選取mqtt節點組件
其中mqtt in是訂閱節點,mqtt out是發布節點
3.配置mqtt in節點,先選擇服務器
然后配置服務器地址
4.配置主題
5.將mqtt out也同樣配置
6.查看主題是否訂閱成功
7,實現完整連線
8.部署運行
5.7 發郵件操作
1.找到郵件節點
2.配置郵件信息
3.連接
4.部署運行,查看郵件
5.8 可視化界面操作
1.查看dashboard區域
以上便是界面中的菜單,界面如下:
2.下面以創建自定義表單和繪制折線圖為例,首先是創建表單,找到dashboard中的表單組件
填寫表單信息+所屬頁面+調用主題
連接郵件
部署查看界面
由於表單太長,需要設置一下布局
一種是窗口設置
另一種是在布局layout中設置,推薦這一種
調整之后為:
輸入信息並點擊按鈕,查看郵箱
3.折線圖
找到隨機數和折線圖組件
配置折線圖
配置輸入節點的周期性,然后查看界面
6.Node-RED的不足分析
- 1、復雜的多功能物聯網應用:純拿Node-RED構建物聯網應用,UI是瓶頸
- 2、基於流程的編程是一種並不總是最適合應用程序開發的編程模型:基於流程的編程是一個通用模型,不針對特定需求進行定位或優化,例如數據分析或交互界面開發
- 3、功能實現基礎受限:Node-RED的基礎技術是JavaScript,不能構建功能原型,常使用Node-RED進行整體控制
- 4、性能受限:極限數據操作性能不行
原文鏈接:https://blog.csdn.net/fnFenNuDManMan/article/details/104834919
NodeRED官網:https://nodered.org/
NodeREDGITHUB:https://github.com/node-red
NodeRED英文社區:https://discourse.nodered.org/
NodeRED中文社區:https://www.iotschool.com/topics/node81
NodeRED中文社區QQ群:8604461