怎麼用NodeRed實現樹莓派與阿里雲物聯網平臺通訊?

2020-09-24 17:00:32

Node-RED是構建物聯網(IoT)應用程式的強大工具,它使用視覺化的程式設計方法,允許開發人員將預定義的程式碼塊(稱為「節點」)連線在一起以執行任務。

當預定義的程式碼塊連線在一起時,通常由輸入節點,處理節點和輸出節點組成的連線節點構成一個「流」。

RevPi Core模組已經內建Node-RED執行環境,本文將介紹基於Node-RED如何實現RevPi Core模組與阿里雲物聯網平臺的通訊。

01 啟動Node-RED

RevPi Core模組已經搭建好了Node-RED執行環境,並且額外包含適用於RevPi裝置的節點,無需額外安裝軟體,直接啟動執行即可。

首先通過putty遠端連線RevPi,輸入以下命令以啟動Node-RED:sudo node-red-start。

等待Node-RED啟動後,通過在瀏覽器中輸入 RevPi的IP:1880進入Node-RED介面。
在這裡插入圖片描述
可以通過命令sudo systemctl enable nodered.service設定Node-RED的開機自啟動。

02 設定阿里雲物聯網平臺

在物聯網平臺控制檯點選裝置管理->產品->建立產品:
在這裡插入圖片描述
安裝下圖所示設定產品:
在這裡插入圖片描述
點選儲存,並前往新增裝置:
在這裡插入圖片描述
輸入裝置名稱,可以自行選擇,這裡設定的是RevPi:
在這裡插入圖片描述
點選確認,並前往檢視裝置資訊:
在這裡插入圖片描述
暫時不要關閉此裝置資訊頁面,稍後還需要此頁面的相關資訊。

03 建立Node-RED流

這裡將採用MQTT通訊方式與阿里雲物聯網平臺進行通訊。首先建立如下圖所示流:
在這裡插入圖片描述
時間戳(即inject節點)在這裡僅起到觸發作用,無需設定。

exec節點可執行系統命令,本文藉助exec節點採集RevPi的CPU溫度,並將其上傳到雲平臺。對exec節點進行如下圖所屬設定。

其中命令框中輸入:/usr/bin/vcgencmd measure_temp。
在這裡插入圖片描述

04 mqtt out節點引數設定

mqtt out節點設定可以參考阿里雲物聯網平臺檔案「使用MQTT.fx接入物聯網平臺」,檔案中採用的是MQTT.fx軟體,但設定引數基本相同。

點選新增新的mqtt-broker節點,節點名稱自行設定,本例設為AliIOT。
在這裡插入圖片描述
需要設定的引數包括連線和屬性兩種,下面依次看一下:
在這裡插入圖片描述
在這裡插入圖片描述
伺服器端
根據官方檔案,Broker的地址格式為:
${YourProductKey}.iot-as-mqtt. ${YourRegionId}.aliyuncs.com

上面的ProductKey可以在裝置資訊中找到,RegionId可以參考網址:https://help.aliyun.com/document_detail/40654.html?spm=a2c4g.11186623.2.19.3d1b5800pRBtd2#concept-h4v-j5k-xdb
完整範例:
a1A96I6bXvh.iot-as-mqtt.cn-shanghai.aliyuncs.com,
埠選擇1883即可。

使用者端ID
使用者端ID的格式為:
${clientId}|securemode=3,signmethod=hmacsha1| 。

  • clientId使用者可以自行設定,長度在64字元以內。本例中設定為RevPiNodeRED。
  • securemode為安全模式,TCP直連模式設定為securemode=3,TLS直連為securemode=2。本例選擇安全模式為3。
  • signmethod為演演算法型別,支援hmacmd5和hmacsha1。本例選擇hmacsha1。
    完整範例:
    RevPiNodeRED|securemode=3,signmethod=hmacsha1|

使用者名稱及密碼
使用者名稱的格式為:
${YourDeviceName}& ${YourProductKey} 。
DeviceName和ProductKey均可在裝置資訊處找到,請自行對應填寫。
完整範例:
RevPi&a1A96I6bXvh
密碼需要根據裝置資訊進行加密運算生成。可以藉助password生成小工具,下載地址:
https://files.alicdn.com/tpsservice/88413c66e471bec826257781969d1bc7.zip?spm=a2c4g.11186623.2.21.3d1b5800pRBtd2&file=88413c66e471bec826257781969d1bc7.zip
下載後解壓,雙擊sign檔案即可執行。
如下圖所示,如實填寫相關資訊,時 間戳可省略,點選generate即可生成密碼。
在這裡插入圖片描述
另外還可以以手動方法生成密碼,詳細可參考阿里雲物聯網平臺官方檔案。

主題
將以上Broker相關資訊填寫完成後點選新增即可:
在這裡插入圖片描述
主題可以在產品->Test->Topic類列表->自定義Topic中選擇具有釋出許可權的Topic,並根據裝置名稱進行更改:
在這裡插入圖片描述
當然,也可以自定義具有釋出許可權的主題。本例採用的主題為:
/a1A96I6bXvh/RevPi/user/update
mqtt out節點的QoS和保留選項設定可自行選擇,設定完成後點選「完成」即可。然後點選「部署」按鈕,將此流程部署到裝置並執行。

05 通訊測試

部署完成後,正常情況下mqtt out節點應顯示「已連線」,若「未連線」或者一直在「連線中」,請檢查相關設定是否有錯。
在這裡插入圖片描述
點選時間戳,觸發流程,即可將溫度資訊上傳到雲平臺。
可以在阿里雲物聯網平臺控制檯的監控運維->紀錄檔服務下,選擇Test產品即可在雲端執行紀錄檔下檢視到接收到的溫度資訊。
在這裡插入圖片描述
在這裡插入圖片描述
當然,也可以通過具有訂閱許可權的主題實現從雲平臺將資訊傳送到RevPi,如果您對這方面感興趣,可以根據官方手冊自行探索實現方式。

hongke_iiot 工業樹莓派達人 物聯網技術專家
虹科是一家在工業物聯網IIoT行業經驗超過3年的高科技公司,虹科與世界領域頂級公司包括EXOR、Eurotech、Unitronics、Matrikon、KUNBUS等合作,提供先進的高階工業4.0 工業觸控式螢幕、高階邊緣計算機、IoT開發框架、PLC與HMI一體機、OPC UA、工業級樹莓派等解決方案。物聯網事業部所有成員都受過專業培訓,並獲得專業資格認證,平均3年+的技術經驗和水平一致贏得客戶極好口碑。我們積极參與行業協會的工作,為推廣先進技術的普及做出了重要貢獻。