日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MQTT應用指南

瑞科慧聯(lián)(RAK) ? 2022-08-23 11:54 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

#概述

本文旨在幫助已經(jīng)購買RAK商業(yè)網(wǎng)關產(chǎn)品并且使用內置LoRa Server功能的用戶,了解如何通過MQTT訂閱商業(yè)網(wǎng)關內置LoRa Server的數(shù)據(jù),使用戶了解商業(yè)網(wǎng)關的工作原理,方便用戶在自己的應用服務器獲取節(jié)點數(shù)據(jù),達到便捷使用應用服務器完成數(shù)據(jù)展示和數(shù)據(jù)分析的目的。

本文將以RAK公司的商業(yè)網(wǎng)關產(chǎn)品(室內網(wǎng)關RAK7258或室外網(wǎng)關RAK7249)為例,介紹如何配置商業(yè)網(wǎng)關使用內置MQTT服務器和私有(外置)MQTT服務器,以及如何訂閱節(jié)點數(shù)據(jù)和向節(jié)點發(fā)送數(shù)據(jù)等。

#LoRaWAN和MQTT簡介

本章節(jié)介紹LoRaWAN網(wǎng)絡和MQTT網(wǎng)絡,用于幫助用戶對LoRaWAN和MQTT的工作原理有一個簡單直觀的了解。如果您已經(jīng)熟悉了LoRaWAN和MQTT的工作原理,可跳過此章節(jié)。

#LoRaWAN簡介

LoRaWAN網(wǎng)絡包含的角色Figure 1: LoRaWAN網(wǎng)絡包含的角色

從上圖可以看出,LoRaWAN網(wǎng)絡包括如下3個角色,各個角色的作用如下所示:

  • 終端設備(End Nodes):即節(jié)點設備,負責數(shù)據(jù)采集,并將數(shù)據(jù)加密后以無線信號的形式傳遞給網(wǎng)關。
  • 網(wǎng)關(Concentrator/Gateway):將終端發(fā)送的數(shù)據(jù)透傳給NS服務器。
  • NS服務器(Network Server):根據(jù)數(shù)據(jù)身份信息、密鑰對網(wǎng)關轉發(fā)的數(shù)據(jù)進行解密、處理。

RAK簡化LoRaWAN實際部署條件,RAK商業(yè)網(wǎng)關集成了NS服務器,它配合節(jié)點可以輕松搭建LoRaWAN網(wǎng)絡。

#MQTT簡介

MQTT代表MQ遙測傳輸,是一種發(fā)布/訂閱極其簡單和輕量級的消息傳遞協(xié)議,用于受限設備和低帶寬、高延遲或不可靠的網(wǎng)絡。設計原則是使網(wǎng)絡帶寬和設備資源要求最小化以及確??煽啃浴_@些原則使該協(xié)議成為物聯(lián)網(wǎng)世界的理想選擇。

MQTT網(wǎng)絡角色Figure 2: MQTT網(wǎng)絡角色

如上圖所示,MQTT網(wǎng)絡角色包括如下3個,各個角色的作用如下所示:

  • 發(fā)布者(Publisher):發(fā)布信息。
  • 訂閱者(Subscriber):收集發(fā)布者發(fā)布的信息。
  • MQTT Broker:接收發(fā)布信息并將信息向訂閱者進行展示。

MQTT Broker同比是新聞發(fā)布網(wǎng)站,發(fā)布者是新聞發(fā)布成員,訂閱者是瀏覽、查看新聞的用戶。

#MQTT在LoRaWAN網(wǎng)絡中的作用

MQTT在LoRaWAN網(wǎng)絡中的作用Figure 3: MQTT在LoRaWAN網(wǎng)絡中的作用

實際應用1:使用RAK商業(yè)網(wǎng)關內置的MQTT Broker功能。

RAK商業(yè)網(wǎng)關獲取數(shù)據(jù)并發(fā)送給內置NS,內置NS將數(shù)據(jù)發(fā)布至內置的MQTT Broker,用戶通過第三方程序訂閱數(shù)據(jù)。這種應用情況下,RAK商業(yè)網(wǎng)關既是發(fā)布者,又是MQTT Broker。

注意:

  • 如果使用網(wǎng)關內置的MQTT Broker,則無法通過公網(wǎng)訂閱或發(fā)布數(shù)據(jù)。
  • 網(wǎng)關內置的MQTT Broker僅適用于項目研發(fā)和測試階段,由于內置的MQTT Broker沒有密碼、證書等驗證方式,容易被其他人竊取傳感器數(shù)據(jù),因此,不建議在生產(chǎn)部署時使用。

實際應用2:使用用戶私有的MQTT Broker功能。

RAK商業(yè)網(wǎng)關獲取數(shù)據(jù)并發(fā)送給內置NS,內置NS將數(shù)據(jù)發(fā)布至第三方MQTT Broker,用戶通過第三方程序訂閱數(shù)據(jù)。這種應用情況下,RAK商業(yè)網(wǎng)關僅為發(fā)布者。

#訂閱節(jié)點數(shù)據(jù)和向節(jié)點發(fā)送數(shù)據(jù)

本節(jié)以RAK商業(yè)網(wǎng)關為例,介紹如何通過MQTT.fx工具訂閱節(jié)點上報的數(shù)據(jù)和向節(jié)點發(fā)送數(shù)據(jù)。您可以通過單擊MQTT.fx下載MQTT.fx工具(MQTT客戶端)。

#配置商業(yè)網(wǎng)關使用內置服務器

1、在瀏覽器地址欄中輸入商業(yè)網(wǎng)關的IP地址192.168.230.1,按"Enter",進入如下界面。

商業(yè)網(wǎng)關登錄界面Figure 4: 商業(yè)網(wǎng)關登錄界面

2、在打開的商業(yè)網(wǎng)關登錄界面中輸入用戶名和密碼,單擊"Login"。

默認用戶名和密碼都為root。

3、在左側導航欄中選擇“LoRa Network > Network Settings”。

4、在“LoRaWAN Network Settings”界面上,設置"Mode"為"Network Server"模式。

配置RAK7249使用內置服務器Figure 5: 配置RAK7249使用內置服務器

5、單擊“Switch mode”切換模式。

約15秒左右,網(wǎng)關即可切換為Network Server模式。在該模式下,商業(yè)網(wǎng)關既是網(wǎng)關,又是NS服務器。

#添加節(jié)點到商業(yè)網(wǎng)關的內置服務器

1、在商業(yè)網(wǎng)關左側導航欄中選擇“LoRa Network > Application”,進入應用概覽頁面。

2、輸入應用名稱,單擊“Add”,如下圖所示。

注意:

本示例采用"Type1 : Unified Application Key",即同一Application中,所有節(jié)點設備使用相同的Application Key。不需要單獨為設備設置Application Key。支持通過OTAA自動添加設備。如果您想使用“Type2 : Separate Application Key”,請參考Web 平臺配置指南。

新增應用Figure 6: 新增應用

在應用配置頁面根據(jù)頁面提示配置應用信息,如下圖所示。

配置應用Figure 7: 配置應用

  • Name:應用名稱,用戶自定義。
  • Auto Add LoRa Device:是否開啟自動添加設備。開啟后,如果設備的Application Key與Application EUI通過身份驗證,設備將被自動添加到服務器上。
  • Application EUI:標識唯一的應用提供者,開啟自動添加設備后需要填寫。單擊讓系統(tǒng)自動生成Application EUI。需與節(jié)點設備三元組信息中的“AppEUI”保持一致。
  • Application Key:由應用程序擁有者分配給終端。單擊讓系統(tǒng)自動生成Application Key。需與節(jié)點設備三元組信息中的“AppKey”保持一致。
  • Description:應用描述信息,用戶自定義。

注意:您也可以使用Micro USB線連接節(jié)點設備到PC,后使用串口工具打開相應端口分別發(fā)送AT+APPEUIAT+APPKEY獲取Application EUI和Application Key的值后填寫到此處,可省去后續(xù)配置節(jié)點的步驟。本示例采用系統(tǒng)自動生成的方法。

4、單擊"Save & Apply"保存配置。

5、在系統(tǒng)自動返回的應用概覽頁面,單擊"Edit"進入應用配置頁面添加節(jié)點。

應用概覽頁面Figure 8: 應用概覽頁面

6、輸入節(jié)點的Device EUI后,單擊“Add”,如下圖所示。Device EUI可在節(jié)點設備的標簽上獲取,也可使用Micro USB線連接節(jié)點設備到PC,后使用串口工具打開相應端口發(fā)送AT+DEVEUI進行查詢。

添加節(jié)點設備Figure 9: 添加節(jié)點設備

7、在節(jié)點配置頁面配置節(jié)點設備信息,如下圖所示。

配置節(jié)點設備信息Figure 10: 配置節(jié)點設備信息

  • Device name:節(jié)點設備名稱,用戶自定義。
  • Class:節(jié)點設備類型,需與節(jié)點保持一致。這里以節(jié)點出廠默認配置Class A為例。
  • Join mode:節(jié)點設備的入網(wǎng)方式,需與節(jié)點保持一致。這里以節(jié)點設備出廠默認配置OTAA為例。
  • Frame-counter Width:報文序號計數(shù)器長度。
  • LoRaWAN MAC Version:LoRaWAN協(xié)議版本號。
  • LoRaWAN Regional Parameters Reversion:LoRaWAN區(qū)域參數(shù)版本號。
  • Enable LPTP:是否開啟LPTP協(xié)議。LPTP協(xié)議是RAK自定義的LoRa?報文分片/重組協(xié)議,僅部分RAK節(jié)點產(chǎn)品(RAK7421、RAK7431及RAK4203)支持。
  • Description:節(jié)點的描述信息,用戶自定義。

8、單擊"Save & Apply"保存配置。

#使用商業(yè)網(wǎng)關內置的MQTT Broker

用戶可通過商業(yè)網(wǎng)關內置的Application Server Integration功能使用MQTT客戶端訂閱NS Topic消息來獲取節(jié)點數(shù)據(jù),也可以使用MQTT客戶端向節(jié)點發(fā)送數(shù)據(jù)。

#配置商業(yè)網(wǎng)關使用內置的MQTT Broker

1、在商業(yè)網(wǎng)關左側導航欄中選擇"LoRa Network > Global Integration"。

2、在"Application Server Integration"頁面上,設置應用服務器集成的相關參數(shù)。

如果使用內置的MQTT Broker,則“MQTT Broker Address”和“MQTT Broker Port”參數(shù)的值保持默認即可。如果您不了解MQTT協(xié)議的topic,建議保持MQTT topic相關參數(shù)的默認配置。此處使用內置的MQTT Broker,全部參數(shù)保持默認配置,如下圖所示。

配置商業(yè)網(wǎng)關使用內置的MQTT BrokerFigure 11: 配置商業(yè)網(wǎng)關使用內置的MQTT Broker

3、單擊"Save & Apply"保存配置。

#通過MQTT.fx客戶端訂閱節(jié)點數(shù)據(jù)

1、打開MQTT.fx工具,主界面如下圖所示。

MQTT.fx工具主界面Figure 12: MQTT.fx工具主界面

2、單擊左上角的新建圖標,如下圖所示。

新建圖標Figure 13: 新建圖標

3、在下圖中紅框處輸入網(wǎng)關的IP地址。

輸入網(wǎng)關的IP地址Figure 14: 輸入網(wǎng)關的IP地址

4、單擊“Connect”。最右側的黑色圓形變成綠色,說明已經(jīng)成功連接到網(wǎng)關內置的MQTT Broker。

成功連接到網(wǎng)關內置的MQTT BrokerFigure 15: 成功連接到網(wǎng)關內置的MQTT Broker

5、選擇“Subscribe”頁簽。

6、在“Subscribe”頁簽的輸入框中輸入待訂閱的topic,單擊輸入框右側的“Subscribe”。

輸入待訂閱的topic時,topic的格式應該與商業(yè)網(wǎng)關"Application Server Integration"頁面上Uplink Topic的格式保持一致,如下圖所示,其中,application_ID需要替換成實際的application ID的值,device_EUI需要替換成節(jié)點的device_EUI的值。

Uplink Topic參數(shù)Figure 16: Uplink Topic參數(shù)

application ID的值和device_EUI的值請參考下面兩個圖來獲取。

獲取application IDFigure 17: 獲取application ID

獲取device_EUIFigure 18: 獲取device_EUI


以上面兩個圖中獲取的application ID和device_EUI的值為例,則需要在輸入框中輸入的topic為:application/2/device/00d939567c667e1e/rx,如下圖所示。

訂閱節(jié)點上報的數(shù)據(jù)Figure 19: 訂閱節(jié)點上報的數(shù)據(jù)

· 如果要訂閱一個應用下的所有節(jié)點數(shù)據(jù),例如:要訂閱應用2下的所有節(jié)點數(shù)據(jù),則需要輸入如下topic:

application/2/device/+/rx

· 如果要訂閱所有應用下的所有節(jié)點數(shù)據(jù),則需要輸入如下topic:

application/+/device/+/rx

7、使用節(jié)點成功join之后發(fā)送一條數(shù)據(jù)。例如:要在節(jié)點側發(fā)送一條“HelloRakwireless”,因為節(jié)點需要接收16進制的數(shù)據(jù),將“Hello Rakwireless”轉換為16進制,即“48656c6c6f52616b776972656c657373”,則發(fā)送的AT命令如下圖所示。

在節(jié)點側發(fā)送數(shù)據(jù)示例Figure 20: 在節(jié)點側發(fā)送數(shù)據(jù)示例

8、在MQTT.fx界面上查看已訂閱的節(jié)點數(shù)據(jù),如下圖所示。

在MQTT.fx界面上查看已訂閱的節(jié)點數(shù)據(jù)Figure 21: 在MQTT.fx界面上查看已訂閱的節(jié)點數(shù)據(jù)

上圖中"data"字段的值即為節(jié)點發(fā)送的數(shù)據(jù),只是這些數(shù)據(jù)進行了base64編碼,對"data"字段的值進行base64解碼后即可看到原始數(shù)據(jù)。

9、查看商業(yè)網(wǎng)關web管理界面上節(jié)點發(fā)送的數(shù)據(jù)是否與MQTT.fx界面上一致。

查看商業(yè)網(wǎng)關web管理界面Figure 22: 查看商業(yè)網(wǎng)關web管理界面

#通過MQTT.fx客戶端向節(jié)點發(fā)送數(shù)據(jù)

1、在MQTT.fx工具的主界面上,選擇“Publish”頁簽。

2、在“Publish”頁簽的輸入框2中輸入topic,在輸入框3中輸入{"confirmed": true,"data": "SGVsbG8=","fPort":10},單擊“Publish”。

注意:

{"confirmed": true,"data": "SGVsbG8=","fPort": 10}中字段的說明如下所示:

"confirmed"的取值包括true和false。
"data"的取值即要發(fā)送的數(shù)據(jù),需要對數(shù)據(jù)進行base64編碼。
"fPort"的取值即要發(fā)送的端口號,有效端口號為1~255。

輸入topic時,topic的格式應該與商業(yè)網(wǎng)關"Application Server Integration"頁面上Downlink Topic的格式保持一致,如下圖所示,其中,application_ID需要替換成實際的application ID的值,device_EUI需要替換成節(jié)點的device_EUI的值。

Downlink Topic參數(shù)Figure 23: Downlink Topic參數(shù)

application ID的值和device_EUI的值請參考下面兩個圖來獲取。

獲取application IDFigure 24: 獲取application ID

獲取device_EUIFigure 25: 獲取device_EUI

以上面兩個圖中獲取的application ID和device_EUI的值為例,則需要在輸入框2中輸入的topic為:application/2/device/00d939567c667e1e/tx,如下圖所示。

通過MQTT.fx向節(jié)點發(fā)送數(shù)據(jù)Figure 26: 通過MQTT.fx向節(jié)點發(fā)送數(shù)據(jù)

注意:

通過MQTT.fx客戶端向節(jié)點發(fā)送數(shù)據(jù)后,Class C模式下節(jié)點會立刻收到MQTT.fx下發(fā)的數(shù)據(jù),Class A模式下節(jié)點會在下一次上發(fā)數(shù)據(jù)之后收到MQTT.fx下發(fā)的數(shù)據(jù)。

3、在節(jié)點端查看接收到的數(shù)據(jù),如下圖所示。

查看節(jié)點端接收到的數(shù)據(jù)Figure 27: 查看節(jié)點端接收到的數(shù)據(jù)

#使用用戶私有的MQTT Broker

本節(jié)介紹在商業(yè)網(wǎng)關上配置用戶私有的MQTT Broker信息、連接MQTT客戶端與用戶私有的MQTT Broker、通過MQTT客戶端訂閱節(jié)點數(shù)據(jù)和通過MQTT客戶端向節(jié)點發(fā)送數(shù)據(jù)的具體方法。

#配置商業(yè)網(wǎng)關使用用戶私有的MQTT Broker

1、在商業(yè)網(wǎng)關左側導航欄中選擇"LoRa Network > Global Integration"。

2、在"Application Server Integration"頁面上,設置應用服務器集成的相關參數(shù)。

如果要使用用戶私有的MQTT Broker,則需要配置如下參數(shù)。

  • MQTT Broker Address:用戶私有的MQTT服務器的IP地址。
  • MQTT Broker Port:MQTT服務器的端口號,默認端口號為1883。
  • Enable User Authentication:打開用戶認證開關。
  • Username:訪問MQTT服務器的用戶名。
  • Password:訪問MQTT服務器的用戶密碼。

如果您不了解MQTT協(xié)議的topic,建議保持MQTT topic相關參數(shù)的默認配置。

此處使用用戶私有的MQTT Broker且保持MQTT topic相關參數(shù)的默認配置,如下圖所示。

配置商業(yè)網(wǎng)關使用用戶私有的MQTT BrokerFigure 28: 配置商業(yè)網(wǎng)關使用用戶私有的MQTT Broker

3、單擊"Save & Apply"保存配置。

#連接MQTT.fx客戶端至用戶私有的MQTT Broker

1、打開MQTT.fx。

2、單擊設置圖標,如下圖所示。

設置圖標Figure 29: 設置圖標

系統(tǒng)彈出“Edit Connection Profiles”對話框。

3、在“Edit Connection Profiles”對話框中,單擊左下角的+。

4、設置“Profile Name”、“Broker Address”、"Broker Port",單擊“User Credentials”,輸入“User Name”和“Password”,如下圖所示。

新建Profile并配置參數(shù)Figure 30: 新建Profile并配置參數(shù)

5、單擊右下角的“OK”。

6、“Edit Connection Profiles”對話框自動關閉,MQTT.fx主界面中已自動選擇了剛創(chuàng)建的Profile。

7、在MQTT.fx主界面中單擊“Connect”。最右側的黑色圓形變成綠色,說明已經(jīng)成功連接到用戶私有的MQTT Broker。

#通過MQTT.fx客戶端訂閱節(jié)點數(shù)據(jù)

具體方法請參考通過MQTT.fx客戶端訂閱節(jié)點信息。

#通過MQTT.fx客戶端向節(jié)點發(fā)送數(shù)據(jù)

具體方法請參考通過MQTT.fx客戶端向節(jié)點發(fā)送數(shù)據(jù)

前面章節(jié)介紹了通過MQTT如何訂閱節(jié)點的上行數(shù)據(jù)Uplink以及如何向節(jié)點下發(fā)數(shù)據(jù)Downlink,節(jié)點還有其他三種類型的數(shù)據(jù),分別是Join、Ack和Status。其中Join是節(jié)點入網(wǎng)時的信息,Ack是向節(jié)點下發(fā)數(shù)據(jù)之后節(jié)點回復的確認信息,Status是節(jié)點的電池電量信息。

下面將分別介紹這五種數(shù)據(jù)的具體格式和含義。

#Uplink

{

  "applicationID": "1", // 節(jié)點所屬應用的id

  "applicationName": "test-app", // 節(jié)點所屬應用的名稱

  "devEUI": "3637343457387e11", // 節(jié)點的devEUI

  "deviceName": "dev-5205", // 節(jié)點名稱

  "timestamp": 1592730721, // 接收到節(jié)點數(shù)據(jù)的Unix時間戳 

  "fCnt": 6,

  "fPort": 2,

  "data": "AQIDBA==", // base64編碼后的數(shù)據(jù),解碼之后就是節(jié)點實際上發(fā)的數(shù)據(jù)

  "data_encode": "base64", // 數(shù)據(jù)的編碼類型

  "adr": true, // 節(jié)點是否開啟了adr

  "rxInfo": [ // 所有接收到節(jié)點數(shù)據(jù)的網(wǎng)關信息

?    {

?      "gatewayID": "d896e0fff010611e", // 網(wǎng)關的gateway_id

?      "loRaSNR": 13.3, // 當前網(wǎng)關的信噪比

?      "rssi": -71, // 當前網(wǎng)關的RSSI

?      "location": { // 對應網(wǎng)關的經(jīng)緯度以及海拔信息

?        "latitude": 0,

?        "longitude": 0,

?        "altitude": 0

?      }

?    }

  ],

  "txInfo": {

?    "frequency": 486300000, // 節(jié)點發(fā)送數(shù)據(jù)使用的的頻率

?    "dr": 2 // 節(jié)點當前的data rate

  }

}

#Downlink

{

  "devEUI":"3637343457387e11", // 節(jié)點的devEUI信息

  "confirmed": true, // This dl pkt need confirm or not.

  "fPort": 2, // The port will be used for sending this packet

  "data": "AgAAAA==" // 發(fā)送給節(jié)點的數(shù)據(jù),經(jīng)過base64編碼

}

#Join

{

  "applicationID": "1",

   "applicationName": "test-app",

  "deviceName": "dev-5205",

  "devEUI": "3637343457387e11",

  "devAddr": "02000001" // Join成功之后分配給節(jié)點的短地址

}

#Ack

只有服務器給節(jié)點下發(fā)了confirmed類型的數(shù)據(jù)后,節(jié)點才會回復Ack。

注意:節(jié)點不一定立即回復Ack,Ack可能會在節(jié)點下一次發(fā)送上行數(shù)據(jù)時攜帶。

{

  "applicationID": "1",

  "applicationName": "test-app",

  "deviceName": "dev-5205",

  "devEUI": "3637343457387e11",

  "acknowledged": true, 

  "fCnt": 7

}

#Device Status

{

  "applicationID": "1",

  "applicationName": "test-app",

  "deviceName": "dev-5205",

  "devEUI": "3637343457387e11",

  "battery": 254, // 電池剩于電量的分級。254表示電源滿電狀態(tài),1表示電池電量即將耗盡。

  "margin": 8, // 是最近一次成功接收DevStatusReq命令的解調信噪比

  "externalPowerSource": false, // 是否使用了額外的電源

  "batteryLevelUnavailable": false, // 節(jié)點的電量級別是否有效

  "batteryLevel": 100 // batteryLevelUnavailabl為true的情況下,batteryLevel表示電量百分比

}

#程序示例

以下是使用python代碼調用MQTT訂閱節(jié)點的上行數(shù)據(jù)并將對應內容打印出來,每收到一條上行數(shù)據(jù),程序會主動向節(jié)點發(fā)送一個下行數(shù)據(jù),內容是“Hello rak”。使用代碼前請仔細閱讀代碼注釋。

以下源碼基于python3運行環(huán)境,在運行代碼前,需要使用命令pip3 install paho-mqtt安裝依賴庫。

#!/usr/bin/env python 



import json

import base64

import paho.mqtt.client as mqtt

from datetime import datetime

 

\# mqtt服務器IP

mqtt_ip = '111.230.247.253'

\# mqtt服務器端口

mqtt_port = 1883

\# mqtt用戶名

mqtt_username = 'rakwireless'

\# mqtt密碼

mqtt_password = 'rakwireless.com'

\# mqtt訂閱topic。該topic可以訂閱所有節(jié)點信息

mqtt_rx_topic = 'application/+/device/+/rx'

 

\# 將字符串轉換為16進制

def str_to_hex(s):

  return r"\x"+r'\x'.join([hex(ord(c)).replace('0x', '') for c in s])

 

\# 一旦訂閱到消息,回調此方法

def on_message(mqttc, obj, msg):

  on_print_rak_node_info(msg.payload)

 

\# 打印訂閱到的節(jié)點信息

def on_print_node_rx_info(json_rx):

  try:

?    devEUI     = json_rx['devEUI']

?    applicationID        = json_rx['applicationID']

?    applicationName  = json_rx['applicationName']

?    deviceName        = json_rx['deviceName']

?    timestamp      = json_rx['timestamp']

?    fCnt           = json_rx['fCnt']

?    fPort           = json_rx['fPort']

?    data       = json_rx['data']

?    data_hex       = str_to_hex(base64.b64decode(data).decode("utf-8"))

?    \# 將時間戳轉換為本地時間

?    str_local_time = datetime.fromtimestamp(timestamp)

 

?    print('---------------- devEUI:[%s] rxpk info -------------------' % devEUI)

?    print('+\t applicationName:\t%s' % applicationName)

?    print('+\t applicationID:\t\t%s' % applicationID)

?    print('+\t deviceName:\t\t%s' % deviceName)

?    print('+\t datetime:\t\t%s' % str_local_time)

?    print('+\t fCnt:\t\t\t%d' % fCnt)

?    print('+\t fPort:\t\t\t%d' % fPort)

?    print('+\t data:\t\t\t%s' % data)

?    print('+\t data_hex:\t\t%s' % data_hex)

?    print('----------------------------------------------------------')

 

 

  except Exception as e:

?    print(e)

  finally:

?    pass

 

\# 訂閱到節(jié)點的數(shù)據(jù)之后,向節(jié)點發(fā)送“Hello rak”字符串

def on_print_rak_node_info(payload):

  json_str = payload.decode()

  try:

?    json_rx = json.loads(json_str)

?    on_print_node_rx_info(json_rx)

 

?    dev_eui = json_rx['devEUI']

?    app_id = json_rx['applicationID']

 

?    \# 商業(yè)網(wǎng)關默認的tx topic

?    tx_topic = 'application/%s/device/%s/tx' % (app_id, dev_eui)

?    str_hello = "Hello Rak"

 

?    tx_msg = '{"confirmed":true,"fPort":10,"data":"%s" }' % str(base64.b64encode(str_hello.encode("utf-8")), "utf-8")

 

?    \# 發(fā)布消息

?    mqttc.publish(tx_topic, tx_msg, qos=0, retain=False)

?    print('Send \'Hello rak\' to node %s' % dev_eui)

 

  except Exception as e:

?    raise e

  finally:

?    pass

 

mqttc = mqtt.Client()

mqttc.on_message = on_message

 

\# 如果沒有用戶名和密碼,請注釋改行

mqttc.username_pw_set(mqtt_username, password=mqtt_password)

 

\# 連接mqtt broker,心跳時間為60s

mqttc.connect(mqtt_ip, mqtt_port, 60)

 

mqttc.subscribe(mqtt_rx_topic, 0)

 

mqttc.loop_forever()
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 節(jié)點
    +關注

    關注

    0

    文章

    230

    瀏覽量

    25682
  • MQTT
    +關注

    關注

    5

    文章

    740

    瀏覽量

    25275
  • RAK
    RAK
    +關注

    關注

    0

    文章

    48

    瀏覽量

    2535
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    瑞芯微(EASY EAI)RV1126B mqtt

    1.MQTT簡介MQTT(MessageQueuingTelemetryTransport,消息隊列遙測傳輸協(xié)議),是一種基于發(fā)布/訂閱(publish/subscribe)模式的“輕量級”通訊協(xié)議
    的頭像 發(fā)表于 04-13 17:22 ?835次閱讀
    瑞芯微(EASY EAI)RV1126B <b class='flag-5'>mqtt</b>

    基于LuatOS的MQTT物聯(lián)網(wǎng)通信全解

    在構建物聯(lián)網(wǎng)終端設備時,通信協(xié)議的選擇直接決定系統(tǒng)的穩(wěn)定性與擴展性。LuatOS通過內置MQTT客戶端支持,使開發(fā)者能以極少代碼實現(xiàn)設備上云。本文將從協(xié)議原理到代碼實現(xiàn),全面解析基于LuatOS
    的頭像 發(fā)表于 01-29 19:42 ?342次閱讀
    基于LuatOS的<b class='flag-5'>MQTT</b>物聯(lián)網(wǎng)通信全解

    MQTT網(wǎng)關支持5G通信嗎

    MQTT網(wǎng)關可以支持5G通信 ,且在實際應用中,5G與MQTT協(xié)議的結合為物聯(lián)網(wǎng)領域帶來了顯著優(yōu)勢,以下為具體分析: 一、5G與MQTT協(xié)議的結合優(yōu)勢 高速數(shù)據(jù)傳輸 :5G網(wǎng)絡提供了極高的數(shù)據(jù)傳輸
    的頭像 發(fā)表于 12-08 11:13 ?1124次閱讀

    北向MQTT工業(yè)物聯(lián)網(wǎng)網(wǎng)關是什么

    北向MQTT工業(yè)網(wǎng)關是工業(yè)物聯(lián)網(wǎng)中連接底層設備與上層云平臺的核心設備,其核心功能是通過MQTT協(xié)議實現(xiàn)設備數(shù)據(jù)的高效、可靠上傳,并支持云端對設備的遠程監(jiān)控與管理。 以下從定義、功能、應用場
    的頭像 發(fā)表于 12-02 11:13 ?692次閱讀

    使用paho-mqtt里例程連接服務器失敗怎么解決?

    【rt-thread】【paho-mqtt】最近由于學習需要,了解了關于rt-thread軟件包paho-mqtt的使用,但是使用官方例程時,出現(xiàn)連接不上服務器的情況。具體報錯如下: msh
    發(fā)表于 09-18 06:38

    MQTT_協(xié)議中文資料

    電子發(fā)燒友網(wǎng)站提供《MQTT_協(xié)議中文資料.pdf》資料免費下載
    發(fā)表于 09-02 16:19 ?1次下載

    物聯(lián)網(wǎng)MQTT網(wǎng)關是什么

    物聯(lián)網(wǎng)MQTT網(wǎng)關是一種采用MQTT物聯(lián)網(wǎng)協(xié)議的智能設備或軟件組件,其核心功能是連接不同通信協(xié)議的物聯(lián)網(wǎng)設備與消息代理服務器,實現(xiàn)設備間的數(shù)據(jù)交換與集中管理,同時支持邊緣計算、安全防護和協(xié)議轉換
    的頭像 發(fā)表于 08-29 15:24 ?1308次閱讀

    完整指南:如何搭建樹莓派MQTT代理服務器?

    什么是MQTT(消息隊列遙測傳輸)?MQTT是一種輕量級的發(fā)布-訂閱消息協(xié)議,專為受限環(huán)境和不可靠網(wǎng)絡而設計。它最初由IBM在20世紀90年代末開發(fā),因其簡單性和在物聯(lián)網(wǎng)生態(tài)系統(tǒng)中的高效性而廣受歡迎
    的頭像 發(fā)表于 08-04 17:03 ?1088次閱讀
    完整<b class='flag-5'>指南</b>:如何搭建樹莓派<b class='flag-5'>MQTT</b>代理服務器?

    GraniStudio :MQTT 協(xié)議的深度剖析

    在工業(yè)物聯(lián)網(wǎng)(IIoT)的通信協(xié)議體系中,MQTT(Message Queuing Telemetry Transport)憑借其輕量級、發(fā)布 - 訂閱模式和低帶寬占用等特性,成為連接邊緣設備與云端
    的頭像 發(fā)表于 08-04 09:48 ?1197次閱讀
    GraniStudio :<b class='flag-5'>MQTT</b> 協(xié)議的深度剖析

    MQTT網(wǎng)關具備邊緣計算功能嗎?有什么功能?

    現(xiàn)代MQTT網(wǎng)關通常具備邊緣計算功能,尤其是為適應物聯(lián)網(wǎng)(IoT)場景中低延遲、高可靠、帶寬優(yōu)化等需求而設計的新一代網(wǎng)關。傳統(tǒng)MQTT網(wǎng)關的核心功能是協(xié)議轉換(如將Modbus、ZigBee等設備
    的頭像 發(fā)表于 07-15 15:01 ?1103次閱讀
    <b class='flag-5'>MQTT</b>網(wǎng)關具備邊緣計算功能嗎?有什么功能?

    MQTT介紹

    一、什么是MQTT 物聯(lián)網(wǎng)(IoT)發(fā)展迅猛,傳感器、網(wǎng)關、云平臺之間如何高效通信成了核心問題。MQTT(Message Queuing Telemetry Transport)作為一種輕量級
    的頭像 發(fā)表于 07-14 09:34 ?3850次閱讀
    <b class='flag-5'>MQTT</b>介紹

    精通 MQTT:消息隊列遙測傳輸指南

    引言MQTT(消息隊列遙測傳輸)是一種輕量級消息協(xié)議,專為低帶寬、高延遲和不可靠的網(wǎng)絡環(huán)境設計。它廣泛應用于物聯(lián)網(wǎng)(IoT)應用、消息系統(tǒng)以及實時數(shù)據(jù)通信領域。本指南深入探討了MQTT的工作原理
    的頭像 發(fā)表于 06-16 16:56 ?1147次閱讀
    精通 <b class='flag-5'>MQTT</b>:消息隊列遙測傳輸<b class='flag-5'>指南</b>!

    MQTT 回調處理程序中遇到了隨機 MQTT 斷開連接的問題,怎么解決?

    MCU:CYW55913。 MQTT Broker 端點:Amazon AWS 云。 保持活動超時:60 秒 ping 響應超時:5 秒 我們在 MQTT 回調處理程序中遇到了隨機 MQTT
    發(fā)表于 06-05 07:14

    如何在MQTT中發(fā)布和訂閱實體

    MQTT中發(fā)布和訂閱實體(主題)是MQTT通信的核心操作,下面將詳細介紹其原理、步驟以及示例代碼,幫助你全面理解這一過程。 一、MQTT發(fā)布與訂閱的基本概念 發(fā)布(Publish):客戶端將
    的頭像 發(fā)表于 05-20 17:21 ?1641次閱讀

    KaihongOS多實例MQTT接口

    @ohos.net.khMqttExt (KaihongOS多實例MQTT接口) KaihongOS的khNetStack模塊提供了MQTT協(xié)議的多實例使用接口,支持同時使用多個mqtt的實例
    發(fā)表于 05-08 06:58
    南宫市| 清丰县| 巴林左旗| 郴州市| 万载县| 封开县| 新昌县| 蒙城县| 平潭县| 屏东市| 通河县| 林周县| 建德市| 山东省| 会昌县| 淳化县| 朝阳市| 顺平县| 太原市| 花垣县| 宜兴市| 阳西县| 赫章县| 伊宁县| 霸州市| 卓资县| 宜兴市| 平阳县| 永嘉县| 扎鲁特旗| 阳山县| 永德县| 阿坝| 梁河县| 平江县| 闻喜县| 封丘县| 巢湖市| 襄垣县| 崇仁县| 峨眉山市|