设备上报消息后,您可以尝试从云端下发指令到设备端。本文介绍如何通过云端应用调用Pub接口,向温控器发送指令。
前提条件
操作步骤
说明 示例通过自定义Topic下发指令。您也可以通过物模型相关Topic,发送标准化的物模型数据,更多信息,请参见什么是物模型。
- 在本地计算机创建一个JavaScript文件(例如PubApi.js),用来存放Pub API调⽤的参考代码。Pub API调⽤的参考代码如下所示:本示例需修改以下参数的值。更多信息,请参见云端开发指南。
const Core = require('@alicloud/pop-core'); var client = new Core({ accessKeyId: 'LTAI4GFGQvKuqHJhFa******', accessKeySecret: 'iMS8ZhCDdfJbCMeA005sieKe******', endpoint: 'https://iot.cn-shanghai.aliyuncs.com', apiVersion: '2018-01-20' }); var params = { "RegionId": "cn-shanghai", "TopicFullName": "/g34q2******/Device1/user/get", "MessageContent": "d2FzaGluZ01vZGU6IDIsIHdhc2hpbmdUaW1lOiAzMA==", "ProductKey": "g34q2******", "IotInstanceId": "iot-cn-6ja1y******" } var requestOption = { method: 'POST' }; client.request('Pub', params, requestOption).then((result) => { console.log(JSON.stringify(result)); }, (ex) => { console.log(ex); })
说明 MessageContent是要发送的消息主体,通过将消息原文转换成二进制数据,并进行Base64编码生成。示例为消息“washingMode: 2, washingTime: 30”
编码后的值。参数 示例 说明 accessKeyID LTAI4GFGQvKuqHJhFa****** 您的阿里云账号的AccessKey ID。 登录物联网平台控制台,将鼠标移至账号头像上,然后单击AccessKey管理,获取AccessKey ID和AccessKey Secret。
说明 如果使用RAM用户,您需授予该RAM用户管理物联网平台的权限(AliyunIOTFullAccess),否则将连接失败。授权方法请参见授权RAM用户访问物联网平台。accessKeySecret iMS8ZhCDdfJbCMeA005sieKe****** TopicFullName /g34q2******/Device1/user/get 要发布消息的自定义Topic。 本示例使用物联网平台中的自定义Topic:
/${productKey}/${deviceName}/user/user/get
。其中
${productKey}
为产品家庭温控器的ProductKey值,${deviceName}
为设备Device1。更多信息,请参见使用自定义Topic进行通信。
ProductKey g34q2****** 家庭温控器的ProductKey值。 IotInstanceId iot-cn-6ja1y****** IoT测试环境的实例ID。 您可在控制台的实例概览页面查看。
- 打开CMD窗口,使用cd命令找到PubApi.js文件所在路径,在该路径下执行以下命令,安装@alicloud/pop-core模块。
npm install @alicloud/pop-core -S
返回类似信息,表示安装成功。
+ @alicloud/pop-core@1.7.10 updated 1 package and audited 24 packages in 1.653s found 0 vulnerabilities
- 继续在该路径下执行以下命令,安装co模块。
npm install co
返回类似信息,表示安装成功。
+ co@4.6.0 updated 1 package and audited 24 packages in 1.244s found 0 vulnerabilities
- 模块安装完成后,在CMD窗口输入如下命令,运行PubApi.js代码,从云端下发指令到设备端。
- PubApi.js代码运行成功后,在左侧导航栏,单击监控运维 > 日志服务,进入云端运行日志页签,查看设备API调用的⽇志。您也可以在设备端查看下发的MessageContent内容,如图所示。