新聞中心
PRESS CENTEREG8200系列邊緣計算網(wǎng)關支持MQTT通信,根據(jù)功能分為兩個節(jié)點,一個是MQTT發(fā)布節(jié)點, 用于向指定的Topic發(fā)送消息;一個是MQTT訂閱節(jié)點,用于接收指定Topic的消息。
兩個節(jié)點都可以創(chuàng)建新的或者使用已創(chuàng)建的mqtt-Broker配置節(jié)點。配置節(jié)點的功能前面講過,此處mqtt-Broker配置節(jié)點指的是和服務器的MQTT連接,一個配置節(jié)點表示一個MQTT連接,網(wǎng)關支持連接多個MQTT服務器。如果網(wǎng)關往一個MQTT服務器上報數(shù)據(jù),MQTT發(fā)布MQTT訂閱使用同一個配置即可。如果網(wǎng)關往多個MQTT服務器上報數(shù)據(jù),MQTT發(fā)布MQTT訂閱需要使用不同的配置。
輸入(MQTT發(fā)布) |
msg.payload #要發(fā)布消息的有效數(shù)據(jù),通常為Json字符串 msg.topic #要發(fā)布的MQTT主題 msg.qos #QOS消息質(zhì)量等級: 0-最多一次 1-最少一次 2-只有一次 msg.retain #設置服務器是否保留消息,建議設置為false MQTT5屬性此處不講解 |
輸出(MQTT訂閱) |
msg.payload #消息的有效數(shù)據(jù),通常為Json字符串 msg.topic #消息來自哪個MQTT主題 msg.qos #QOS消息質(zhì)量等級: 0-最多一次 1-最少一次 2-只有一次 msg.retain #值為true時,消息可能是之前的消息 MQTT5屬性此處不講解 |
1. mqtt-broker 配置項
服務端:MQTT服務器的IP或者域名 端口:MQTT服務器的端口,通常為1883 自動重連:連接斷開后自動重連,建議選擇 使用TLS:根據(jù)服務器要求是否使用加密 協(xié)議版本:支持MQTT 3.1.1和MQTT 5 客戶端ID:根據(jù)服務器要求填寫 Keepalive:根據(jù)服務器要求填寫 Session:是否使用新的會話,強烈建議勾選 用戶名:根據(jù)服務器要求填寫 密碼:根據(jù)服務器要求填寫 #注意:考慮安全因素,用戶名和密碼在流程導出時不會攜帶,重新導入流程時需要手動錄入 Birth Message:按需配置 Close Message:按需配置 Will Message:按需配置 |
2. mqtt 訂閱 配置項
服務端:選擇要使用的MQTT連接 策略:訂閱一個主題需手動錄入,動態(tài)訂閱參考動態(tài)配置 Qos:消息質(zhì)量等級 |
3. mqtt 發(fā)布 配置項
服務端:選擇要使用的MQTT連接 主題:發(fā)布的Topic,如果為空,則可以通過msg.topic設置 Qos:消息質(zhì)量等級,如果為空,則可以通過msg.qos設置 保留:是否保留消息,如果為空,則可以通過msg.retain設置 |
4. 動態(tài)配置
有些特定場景下,MQTT的連接信息是需要動態(tài)配置的。比如:客戶端ID使用的是網(wǎng)關的SN,批量生產(chǎn)時,如果采用默認配置的方法,導入的都是模板的SN,導入后還需要依次修改,這種量產(chǎn)效率很低。動態(tài)配置支持通過msg傳入消息攜帶參數(shù)來修改MQTT的連接信息,從而實現(xiàn)量產(chǎn)效率大大提升。
又比如前面講到的需要動態(tài)訂閱Topic,MQTT訂閱節(jié)點會多一個輸入口,支持以下配置項:
msg.action #要執(zhí)行的操作:支持connect/disconnect/subscribe/unsubscribe msg.broker #對于操作connect,此屬性攜帶的參數(shù)將會覆蓋任何已配置的參數(shù) msg.broker.url msg.broker.port msg.broker.cliendid msg.broker.username msg.broker.password msg.broker.force #如果連接已經(jīng)存在時設置msg.broker屬性,則會記錄一個錯誤.除非設置了force屬性才會斷開舊連接創(chuàng)建新連接 msg.topic #對于操作subscribe/unsubscribe,此屬性用來設置Topic.類型可以是字符串或者字符串數(shù)字 |
1.MQTT訂閱發(fā)布消息
我司提供MQTT測試服務器 |
MQTT Broker:139.129.229.113:1873 clientid:自定義 username:網(wǎng)關SN password:網(wǎng)關密碼 |
[{"id":"f4a210260d18ff83","type":"mqtt out","z":"6ca1ff8bb99e320a","name":"","topic":"/test","qos":"0","retain":"false","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"31b45d2ad62272a2","x":470,"y":200,"wires":[]},{"id":"b60640e8007e6958","type":"inject","z":"6ca1ff8bb99e320a","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":310,"y":200,"wires":[["f4a210260d18ff83"]]},{"id":"ccda781161e3dd59","type":"mqtt in","z":"6ca1ff8bb99e320a","name":"","topic":"/test","qos":"0","datatype":"auto-detect","broker":"31b45d2ad62272a2","nl":false,"rap":true,"rh":0,"inputs":0,"x":310,"y":280,"wires":[["d145f447d20156a7"]]},{"id":"d145f447d20156a7","type":"debug","z":"6ca1ff8bb99e320a","name":"調(diào)試 1","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":470,"y":280,"wires":[]},{"id":"31b45d2ad62272a2","type":"mqtt-broker","name":"","broker":"139.129.229.113","port":"1873","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""}] |
2. MQTT連接配置
這里以連接我們測試服務器進行一個數(shù)據(jù)收發(fā)的配置操作演示:
[{"id":"f4a210260d18ff83","type":"mqtt out","z":"6ca1ff8bb99e320a","name":"","topic":"/test","qos":"0","retain":"false","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"31b45d2ad62272a2","x":470,"y":200,"wires":[]},{"id":"b60640e8007e6958","type":"inject","z":"6ca1ff8bb99e320a","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":310,"y":200,"wires":[["f4a210260d18ff83"]]},{"id":"ccda781161e3dd59","type":"mqtt in","z":"6ca1ff8bb99e320a","name":"","topic":"/test","qos":"0","datatype":"auto-detect","broker":"31b45d2ad62272a2","nl":false,"rap":true,"rh":0,"inputs":0,"x":310,"y":280,"wires":[["d145f447d20156a7"]]},{"id":"d145f447d20156a7","type":"debug","z":"6ca1ff8bb99e320a","name":"調(diào)試 1","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":470,"y":280,"wires":[]},{"id":"31b45d2ad62272a2","type":"mqtt-broker","name":"","broker":"139.129.229.113","port":"1873","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""}] |
3.動態(tài)配置
以下示例是一個動態(tài)配置的流程,實現(xiàn)的功能為:通過系統(tǒng)信息節(jié)點獲取到網(wǎng)關的SN,以SN為用戶名和客戶端ID去連接MQTT服務器,使用狀態(tài)變化節(jié)點來捕獲MQTT連接信息:如果連接失敗,則會以1秒的頻率不斷重連;如果連接成功,則動態(tài)訂閱Topic,示例中動態(tài)訂閱了/test1 /test2 /test3 ,添加3個注入節(jié)點,分別往/test1 /test2 /test33個Topic發(fā)送消息,觀察是否能正確收到數(shù)據(jù):