獲取設備證書(ProductKey、DeviceName和DeviceSecret)后,即可通過MQTT協議將設備接?到物聯網平臺并上報數據。
操作步驟
- 在Windows系統或Linux系統下載并安裝Node.js。本文以Windows 10(64位)系統為例,下載安裝包node-v14.15.1-x64.msi。
- 安裝成功后,打開CMD窗口,通過以下命令查看node版本。
node --version
顯示如下版本號,表示安裝成功。v14.15.1
- 在本地計算機創建一個JavaScript文件(例如iot_device.js),用來存放Node.js示例代碼。Node.js示例代碼如下所示:
const mqtt = require('aliyun-iot-mqtt'); // 1. 設備身份信息 var options = { productKey: "g0d***", deviceName: "tracker0001", deviceSecret: "6b9fb***", host: "iothub-unit-***.mqtt.iothub.aliyuncs.com" }; // 2. 建立連接 const client = mqtt.getAliyunIotMqttClient(options); // 3. 監聽云端指令 client.subscribe(`/${options.productKey}/${options.deviceName}/user/config`) client.on('message', function(topic, message) { console.log("topic " + topic) console.log("message " + message) }) setInterval(function() { // 4.上報數據 client.publish(`/sys/${options.productKey}/${options.deviceName}/thing/event/property/post`, getPostData(), { qos: 0 }); }, 5 * 1000); function getPostData() { const payloadJson = { id: Date.now(), version: "1.0", params: { Temperature: Math.floor((Math.random() * 20) + 10), Humidity: Math.floor((Math.random() * 20) + 10), Speed: Math.floor((Math.random() * 20) + 30) }, method: "thing.event.property.post" } console.log("payloadJson " + JSON.stringify(payloadJson)) return JSON.stringify(payloadJson); }
參數 說明 productKey 設備證書信息。您可在物聯網平臺控制臺的設備詳情頁面查看。 deviceName deviceSecret host MQTT設備接入域名。查看方法,請參見查看實例終端節點。 client.publish() 配置設備上報數據。本示例代碼上報物模型數據,您也可修改 client.publish()
和getPostData()
代碼,上報自定義Topic數據。例如:setInterval(function() { // 4.上報數據 client.publish(`/${options.productKey}/${options.deviceName}/user/data/post`, getPostData(), { qos: 0 }); }, 5 * 1000); function getPostData() { const payloadJson = { id: Date.now(), version: "1.0", params: { Temperature: Math.floor((Math.random() * 20) + 10), Humidity: Math.floor((Math.random() * 20) + 10), Speed: Math.floor((Math.random() * 20) + 30) }, method: "user.data.post" } console.log("payloadJson " + JSON.stringify(payloadJson)) return JSON.stringify(payloadJson); }
getPostData() - 打開CMD窗口,使用
cd
命令找到iot_device.js文件所在路徑,在該路徑下使用npm
命令下載阿里云IoT的MQTT庫。下載后的MQTT庫文件如下圖所示。npm install aliyun-iot-mqtt -S
- MQTT庫下載完成后,在CMD窗口輸入如下命令,運行iot_device.js代碼,啟動設備。
node iot_device.js
返回如下信息,表示設備接入成功,并上報數據。- 上報物模型數據時,返回信息如下:
payloadJson {"id":161848***,"version":"1.0","params":{"temperature":16,"humidity":21},"method":"thing.event.property.post"} topic /sys/g18l***/Device1/thing/event/property/post_reply message {"code":200,"data":{},"id":"16184848***","message":"success","method":"thing.event.property.post","version":"1.0"}
- 上報自定義Topic數據時,返回信息如下:
payloadJson {"id":166****,"version":"1.0","params":{"Temperature":11,"Humidity":27,"Speed":34},"method":"user.data.post"}
- 上報物模型數據時,返回信息如下:
- iot_device.js代碼運行成功后,設備狀態顯示為在線。若上報物模型數據,在設備詳情頁面,選擇物模型數據頁簽,可看到新上報的屬性值。
- 在左側導航欄,單擊監控運維 > 日志服務,進入云端運行日志頁簽,查看設備上報數據的?志。
具體操作,請參見云端運行日志。