目錄
- 一、概述
- 二、安裝
- 三、基操
- 四、通訊
- 五、數據
- 六、節點
- 七、 應用
- END
一、概述
Rode-Red是什么?
- 基于Node.js的物聯網開發工具,做API、通訊;
- 提供了一些基本的監控功能,可在編輯器界面中查看節點的運行狀態、消息流量等信息。
- 通過安裝一些額外的節點或使用外部監控工具來實現更詳細的監控和管理,
例如:監控數據處理的性能指標、數據傳輸的成功率等。
Node.js是什么?
- 基于谷歌V8引擎的JavaScript運行環境(底層環境)點擊安裝
PM2是什么?
- 實時管理JavaScript應用(包括Node-red)的進程工具;
- 基于PM2部署的Node-red進行PLC(MQTT)數據采集轉發可以確保其7x24h穩定運行。
二、安裝
- 安裝: 安裝node.js,安裝pm2(是什么?)
npm install pm2 -g
,基于pm2安裝Node-Rednpm install -g--unsafe perm node-red pm2 pm2-windows-startup pm2-windows-service
; - 啟動: 在命令行中輸入node-red啟動 Node-RED 服務(臨時調試;關閉CMD窗口會停止服務)
- 自啟動: 在開始菜單
C:\ProgramData\Microsoft\Windows\Start Menu
路徑下建立.bat文件pm2 start C:\Users\Administrator\AppData\Roaming\npm\node_modules\node-red\red.js
開機自動啟動服務 - 打開: 通過瀏覽器訪問
http://localhost:1880
- 創建: 輸入—響應—輸出
- 運行: 點擊 Node-RED 編輯器右上角的 “部署” 按鈕,將流程部署到運行環境中。此時,數據管道就開始按照設定的流程運行,接收輸入數據,進行處理和存儲,并根據需要輸出響應。
- 分析: 監控數據處理的性能指標、數據傳輸的成功率等。
三、基操
前提
- 運行服務
- 瀏覽器
http://localhost:1880
概要
- 輸入:
inject
-
- msg: Payload、topic、或自定義標題
-
- =值: 二進制、環境變量、數字、文本、表達式、msg、時間戳、
-
- 特別說明: JSON
{ "num": 98, "name": "小王","yes":true}
…類似鍵值對格式(可循環嵌套);
- 特別說明: JSON
- 輸出:
debug
-
- msg.
Payload.name
(與輸入的msg標題對應)
- msg.
-
- 與調試輸出相同
- 部署: 每次更改必須 部署
- 注入: 點擊 輸入的左邊小框 該條指令即可輸出內容
- 組合: 框選右擊可組合命令
1. Switch選擇
inject
(數字)——Switch
(添加域)——debug1
、debug2...
(選擇輸出)- 應用:輸入的數字在相應域內選擇當前域的輸出
2. range縮放
inject
(數字)——range
(縮放)——debug
- 應用:根據輸入值放大或縮小其倍數并輸出(模數轉換)
3. delay延遲
inject
(數字)——delay
(延遲)——debug
- 應用:延遲輸出
4. trigger觸發
inject
(數字)——trigger
(觸發)——debug
- 應用:觸發輸出
5. change更改
inject
——change
(增刪改移消息msg.topic)——debug
- 應用:對Payload消息進行操作控制、刪除、修改、移動設定等;
6. loop循環
inject
——function
——loop
===function
——debug
- loop 固定循環次數Fixed Count
- loop 條件判斷輸出Condition
- loop 遍歷function對象Enumeration
- 應用:循環處理事件
7.link跳轉
inject
——link out
link in
(link1)——Debug
- 應用:省略流程的連線,視覺簡化;可多個in、out互聯
四、通訊
1. tcp鏈接
- TCP調試工具(Client、Server、UDP)
- TCP接收信息:
tcp in
——debug
- TCP發送信息:
tcp out
——debug
- 作Server:監聽,只需配置端口號(IP為主機網卡地址)
- 作Client:連接,輸入主機IP、端口號即可
- 應用:TCP通訊傳輸數據
2. UDP鏈接
- TCP調試助手(UDP)
- 發送信息到UDP本地:
inject
——udp out
(本地IP、端口) - 從UDP本地接收信息:
udp in
(遠程IP<網卡IP>、端口)——debug
- 應用:UDP通訊傳輸數據
3. MQTT發布訂閱
inject
——mqtt out
(服務端、發布主題)mqtt in
——debug
(服務端、訂閱主題)- 客戶端發布 _ 公網Server _客戶端訂閱
- 客戶端發布 _ 私有Server _ 客戶端訂閱
- 可用公網Server進行練習測試,也可自己開發Server端 MQTT開發
4. http請求
http in
(get)——function
——http response
- 輸入:請求方法(查數據用GET,添新用POST;全改舊用PUT,微調用PATCH;想刪干凈DELETE一下。)、URL地址
- 應用:網址+URL 地址(http://localhost:1880/test);
5. modbus通訊
modbus read
/write(modbus slave調試工具連接)——debugmodbus server
(modbus poll調試工具連接)——debug- modbus:需要物理IP(非隨意IP)
五、數據
1. MySql數據庫鏈接
- 虛擬機安裝Mysql數據庫 Mysql安裝; 更改主機名為任意IP 更改方法
- 主機安裝Navicat客戶端,測試連接成功 絕活哥; 新建數據庫-表-插入測試內容;sql語句查詢
inject
——mysql2
——debug
- mysql2鏈接參數配置:主機名,端口,用戶名,密碼,數據庫,表名 ; 查詢語句Binds…:
select NAME FROM class1 WHERE ID=1;
- 應用:鏈接Mysql數據庫進行增刪改查
2. 文件讀寫
inject
——寫入文件
(路徑:文件路徑)inject
——讀取文件
——debug
inject
——function
——寫入文件
(msg.filename)- function:msg.filename=“C:\Intel\test1.txt”(代碼中的路徑不能有中文;雙斜杠<單斜杠默認轉譯>)
- 輸出:文件夾下新建文本文件,配置路徑(復制粘貼路徑)
- 應用:查看文件文件寫入內容;查看調試窗口內容
六、節點
- 節點管理
- 搜索關鍵詞即可安裝
node-red-node-random
:隨機數node-red-contrib-mysql2
: MySQL數據庫node-red-contrib-modbus
:MODBUS通訊node-red-contrib-loop
:loop循環node-red-contrib-opcua
:OPC UA通訊node-red-contrib-s7
:S7通訊node-red-contrib-dashbored
:Web控件node-red-contrib-email
:郵件發送
七、 應用
1.企業微信機器人推送消息
inject
——function
(文本發送代碼)——http request
(post,API<企業微信機器人Webhook> )- 邏輯思路:時間戳觸發功能塊(文本發送至企業微信消息代碼)到http response的請求
post
的URL地址(機器人Webhook)
function4代碼:群機器人配置說明
msg.payload={"msgtype": "text","text": {"content": "今日天氣:29度,大部分多云,降雨概率:60%","mentioned_list":["小王","@all"],"mentioned_mobile_list":["mobilenumber","@all"]
}
}
return msg;
添加機器人:
2. 定時執行——過該時刻后5秒執行一個事件
- 記錄時刻:時間戳寫入文件time
- 邏輯思路:時間戳讀取time文件的時間值,創建當前時間對象var newtime = new Date().Valueof(),與讀取時間作差,為真執行輸出;同時更新time文件的時間值
function7代碼片段:
var newtime = new Date().valueOf() //獲取當前時間值
if (newtime - parseInt(msg.payload) > 4*1000){ //過4S執行一次msg.Flag = true
}else{msg.Flag =false
}
function8代碼片段:
msg.payload = new Date().valueOf()
3. 發送郵件
inject
——send email
- host:發信服務器 (SMTP),端口465
- secure:勾選
- user:發送的郵箱賬號
- password:郵箱-安全設置-客戶端專用密碼