獲取設備證書(ProductKey、DeviceName和DeviceSecret)后,即可通過MQTT協議將設備接?到物聯網平臺并上報數據。

操作步驟

  1. 在Windows系統或Linux系統下載并安裝Node.js。本文以Windows 10(64位)系統為例,下載安裝包node-v14.15.1-x64.msi。
  2. 安裝成功后,打開CMD窗口,通過以下命令查看node版本。
    node --version
    顯示如下版本號,表示安裝成功。
    v14.15.1
  3. 在本地計算機創建一個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()
  4. 打開CMD窗口,使用cd命令找到iot_device.js文件所在路徑,在該路徑下使用npm命令下載阿里云IoT的MQTT庫。下載后的MQTT庫文件如下圖所示。
    npm install aliyun-iot-mqtt -SMQTT庫
  5. 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"}
  6. iot_device.js代碼運行成功后,設備狀態顯示為在線。若上報物模型數據,在設備詳情頁面,選擇物模型數據頁簽,可看到新上報的屬性值。
    設備在線
  7. 在左側導航欄,單擊監控運維 > 日志服務,進入云端運行日志頁簽,查看設備上報數據的?志。

    具體操作,請參見云端運行日志

    日志信息

后續步驟

服務端訂閱設備消息