本文提供Node.js语言的示例代码,介绍设备通过MQTT-WebSocket通道接入物联网平台。
前提条件
已在物联网平台控制台对应实例下,创建产品和设备(例如device2),并获取设备证书信息(ProductKey、DeviceName和DeviceSecret)。具体操作,请参见:
背景信息
使用WebSocket方式接入设备的详细说明,请参见MQTT-WebSocket连接通信。本示例使用物联网平台提供的设备端Link SDK,模拟设备接入和上下行通信过程。
说明 设备端Link SDK已配置TLS加密,您无需自行配置。
操作步骤
- 在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 iot = require('alibabacloud-iot-device-sdk'); // 设备证书信息。 const productKey = 'a1W***'; const deviceName = 'device2'; const deviceSecret = 'ff01e59d1a***'; // 新版公共实例和企业版实例,必须填写实例ID,旧版公实例无需填写。 const instanceId = ''; // 当前产品和设备所属地域的ID。 const region = 'cn-shanghai'; const brokerUrl = instanceId ? `wss://${instanceId}.mqtt.iothub.aliyuncs.com:443` : `wss://${productKey}.iot-as-mqtt.${region}.aliyuncs.com:443`; const device = iot.device({ productKey: `${productKey}`, deviceName: `${deviceName}`, deviceSecret: `${deviceSecret}`, brokerUrl, tls: true, }); // 监听connect事件:建立MQTT连接,订阅自定义Topic,通过自定义Topic向物联网平台发送消息。 device.on('connect', () => { device.subscribe(`/${productKey}/${deviceName}/user/get`); console.log('connect successfully!'); device.publish(`/${productKey}/${deviceName}/user/update`, 'hello world!'); }); // 监听message事件。 device.on('message', (topic, payload) => { console.log(topic, payload.toString()); }); // 监听error事件。 device.on('error', (error) => { console.error(error); }); // 如果您希望主动断开与物联网平台的连接,可以删除下一行注释符号,调用end函数断开与物联网平台的连接。 //device.end();
您需参照下表,替换对应参数的值为实际场景中设备的信息。
参数 示例 说明 productKey a1W*** 您添加设备后,保存的设备证书信息,请参见获取设备证书。 您也可在控制台中设备device2的设备详情页面查看。
deviceName device2 deviceSecret ff01e59d1a*** instanceId '' 实例ID。您可在物联网平台控制台的实例概览页面,查看当前实例的ID。 - 若有ID值,必须传入该ID值。
- 若无实例概览页面或ID值,传入空值,即
iotInstanceId = ''
。
实例的详细说明,请参见实例概述。
region cn-shanghai 您物联网平台设备所在地域的代码。地域代码表达方法,请参见地域列表。 - 打开CMD窗口,使用cd命令找到iot_device.js文件所在路径,在该路径下使用npm命令下载阿里云IoT的Link SDK库。下载后的库文件如下图所示。
npm install alibabacloud-iot-device-sdk --save
- 在CMD窗口输入如下命令,运行iot_device.js代码,启动设备。
node iot_device.js
返回如下信息,表示设备接入成功,并成功发布消息。
查看运行日志和测试下行通信
- 登录物联网平台控制台。
- 在控制台左上方,选择物联网平台设备所在地域,然后在实例概览页面,单击目标实例。说明 若无实例概览页面,会直接进入物联网平台功能页面。
- 在左侧导航栏,选择 。在设备列表页签,可查看设备device2的状态为在线。
- 单击设备device2对应操作栏的查看,在设备详情页面,单击日志服务,然后单击前往查看。在云端运行日志页签,查看日志消息。
- 在日志列表,找到设备到云消息,单击查看,查看设备上报到物联网平台的信息。
- 测试下行通信:从物联网平台向设备发送消息。
- 返回 页面,在设备列表页签,单击设备device2操作栏的查看。
- 在设备详情页面,单击Topic列表页签,找到已订阅的Topic:
/a1W***/device2/user/get
,单击发布消息。 - 输入消息内容,单击确认。
- 返回设备运行窗口,查看设备能接收消息,表示通信正常。
您也可返回云端运行日志页签,查看详细的通信日志。