获取设备证书(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. 在左侧导航栏,单击监控运维 > 日志服务,进入云端运行日志页签,查看设备上报数据的⽇志。

    具体操作,请参见云端运行日志

    日志信息

后续步骤

服务端订阅设备消息