设备成功上报消息后,您可以尝试从云端下发指令到设备端。

  1. 在IntelliJ IDEA中的Amqp工程的pom.xml文件中,添加Maven项目依赖。
    • 最新版IoT Java SDK的Maven依赖坐标:
      <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-iot -->
      <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>aliyun-java-sdk-iot</artifactId>
          <version>7.17.0</version>
      </dependency>
    • 阿里云Java SDK公共包Maven依赖坐标:
      <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>aliyun-java-sdk-core</artifactId>
          <version>4.5.6</version>
      </dependency>
    • 程序的Maven依赖:
      <dependency>
          <groupId>com.google.code.gson</groupId>
          <artifactId>gson</artifactId>
          <version>2.1</version>
      </dependency>
  2. 在Amqp工程的路径Amqp\src\main\java下,创建Java类。例如InstancePubClient,输入以下代码。

    Pub API调⽤的参考代码如下所示:

    import com.aliyuncs.DefaultAcsClient;
    
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.iot.model.v20180120.PubRequest;
    import com.aliyuncs.iot.model.v20180120.PubResponse;
    import com.aliyuncs.profile.DefaultProfile;
    import com.aliyuncs.profile.IClientProfile;
    import com.google.gson.Gson;
    
    public class InstancePubClient {
    
        private static String accessKey = "LTAI***"; //您阿里云账号的AccessKey。
        private static String accessKeySecret = "iMS8***"; //您阿里云账号的AccessKey Secret。
        private static String iotInstanceId = "iothub-unit-***"; //您企业版实例的实例ID。
        public static void main(String[] args)  {
    
            IClientProfile profile = DefaultProfile.getProfile("cn-shenzhen", accessKey, accessKeySecret); //cn-shenzhen为实例所属地域,需修改为您实例的所属地域。
            DefaultAcsClient client = new DefaultAcsClient(profile);
    
            PubRequest request = new PubRequest();
            request.setSysEndpoint("iot.cn-shenzhen.aliyuncs.com"); //您实例所属地域的API服务端地址。
            request.setTopicFullName("/g0d***/tracker0001/user/config"); //发布消息的Topic。
            request.setMessageContent("Q01ELDgyOTIzLGFkMzIyCiA=");//原始报文 : CMD,82923,ad322。
            request.setProductKey("g0***"); //产品的ProductKey。
            request.setIotInstanceId(iotInstanceId);
            request.setQos(1);
            try {
                PubResponse response = client.getAcsResponse(request);
                System.out.println(new Gson().toJson(response));
            } catch (ClientException e) {
                System.out.println("ErrCode:" + e.getErrCode());
                System.out.println("ErrMsg:" + e.getErrMsg());
                System.out.println("RequestId:" + e.getRequestId());
            }
    
        }
    }
    参数 说明
    accessKey 您的阿里云账号的AccessKey。

    登录物联网平台控制台,将鼠标移至账号头像上,然后单击AccessKey管理,获取AccessKey。

    说明 如果使用RAM用户AccessKey ID,您需要给该RAM用户授予管理物联网平台的权限(AliyunIOTFullAccess),否则将会连接失败。授权方法请参见授权RAM用户访问物联网平台
    accessKeySecret 您的阿里云账号的AccessKey Secret。

    登录物联网平台控制台,将鼠标移至账号头像上,然后单击AccessKey管理,获取AccessKey Secret。

    endpoint Endpoint是阿里云服务的API服务端地址。Endpoint中,地域需与物联网平台产品地域保持一致。

    本示例中,地域为华东2(cn-shanghai),EndpointAPI服务端地址为:https://iot.cn-shanghai.aliyuncs.com。

    TopicFullName 设置发布消息的Topic。

    使用自定义Topic通信的示例,具体操作,请参见使用自定义Topic进行通信

    ProductKey 设备所属产品Key。可在控制台设备详情页查看。
    IotInstanceId 实例ID。仅您购买的企业版实例需要传入。
  3. 运行InstancePubClient程序,从云端下发指令到设备端。

    执行结果如下图所示。

    运行结果
  4. 在启动设备的CMD窗口,显示接收到的云端指令。
    显示结果
  5. 在左侧导航栏,单击监控运维 > 日志服务,进入云端运行日志页签,查看设备API调用的⽇志。
    API调用日志
    序号 描述
    调用物联网平台云端API,向设备下发指令。
    物联网平台向设备发送指令。
    设备成功响应物联网平台的指令。