本教程详细介绍如何使用Alibaba Cloud SDK for Java查询IOT设备的运行状态、影子信息。

前提条件

在使用本教程前,请确保已完成以下操作:

  • 使用Alibaba Cloud SDK for Java,您需要一个阿里云账号和访问密钥(AccessKey)。 请在阿里云控制台中的AccessKey管理页面上创建和查看您的AccessKey。
  • 确保您已经安装了Alibaba Cloud SDK for Java,准确的SDK版本号,请参见 阿里云开发工具包(SDK)
     <dependencies>     <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-core --&gt;     <dependency&gt;          <groupId>com.aliyun</groupId>          <artifactId>aliyun-java-sdk-core</artifactId>          <version>4.4.3</version>      </dependency>      <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-iot -->      <dependency>          <groupId>com.aliyun</groupId>          <artifactId>aliyun-java-sdk-iot</artifactId>          <version>7.0.1</version>      </dependency>  </dependencies>

代码示例

本文操作示例主要以代码形式体现,具体代码如下:

import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.iot.model.v20180120.*; import com.aliyuncs.profile.DefaultProfile; import com.google.gson.Gson; import java.util.List;  /**  * GetDeviceStatus    查看指定设备的运行状态  * QueryDevice    查询产品的设备列表  * GetDeviceShadow    查询设备影子  */ public class Demo {      // 产品Key     private static String productKey = "*****";      public static void main(String[] args) {         Gson gson = new Gson();         IAcsClient client = initialization();         try {             // 查询产品的设备列表             QueryDeviceResponse queryDeviceResponse = queryDevice(client, productKey);             // 获取返回设备信息列表             List<QueryDeviceResponse.DeviceInfo> data = queryDeviceResponse.getData();             // 获取返回设备             QueryDeviceResponse.DeviceInfo deviceInfo = data.get(0);             // 获取设备的唯一标识符             String iotId = deviceInfo.getIotId();             // 获取设备名称             String deviceName = deviceInfo.getDeviceName();             System.out.println(gson.toJson(queryDeviceResponse));             // 查看指定设备的运行状态             GetDeviceStatusResponse deviceStatusResponse = getDeviceStatus(client, iotId);             System.out.println(gson.toJson(deviceStatusResponse));             // 查询设备影子             GetDeviceShadowResponse deviceShadowResponse = getDeviceShadow(client, deviceName, productKey);             System.out.println(gson.toJson(deviceShadowResponse));         } catch (ServerException e) {             e.printStackTrace();         } catch (ClientException e) {             System.out.println("ErrCode:" + e.getErrCode());             System.out.println("ErrMsg:" + e.getErrMsg());             System.out.println("RequestId:" + e.getRequestId());         }     }      /**      * GetDeviceShadow    查询设备影子      */     private static GetDeviceShadowResponse getDeviceShadow(IAcsClient client, String deviceName, String productKey) throws ClientException {         GetDeviceShadowRequest request = new GetDeviceShadowRequest();         System.out.println("------------------getDeviceShadow-------------------");         // 要查询的设备所隶属的产品Key         request.setProductKey(productKey);         // 要查询的设备名称         request.setDeviceName(deviceName);         GetDeviceShadowResponse response = client.getAcsResponse(request);         return response;     }      /**      * GetDeviceStatus    查看指定设备的运行状态      */     private static GetDeviceStatusResponse getDeviceStatus(IAcsClient client, String iotId) throws ClientException {         GetDeviceStatusRequest request = new GetDeviceStatusRequest();         System.out.println("------------------getDeviceStatus-------------------");         // 要查看运行状态的设备ID         request.setIotId(iotId);         GetDeviceStatusResponse response = client.getAcsResponse(request);         return response;     }      /**      * QueryDevice    查询产品的设备列表      */     private static QueryDeviceResponse queryDevice(IAcsClient client, String productKey) throws ClientException {         QueryDeviceRequest request = new QueryDeviceRequest();         System.out.println("------------------queryDevice-------------------");         // 要查询的设备所隶属的产品Key         request.setProductKey(productKey);         // 分页条件         request.setCurrentPage(1);         request.setPageSize(20);         QueryDeviceResponse response = client.getAcsResponse(request);         return response;     }      /**      * Initialization  初始化公共请求参数      */     private static IAcsClient initialization() {         // 初始化请求参数         DefaultProfile profile = DefaultProfile.getProfile(                 "<your-region-id>", // 您的可用区ID                 "<your-access-key-id>", // 您的AccessKey ID                 "<your-access-key-secret>"); // 您的AccessKey Secret         return new DefaultAcsClient(profile);     } }

执行结果

正确的执行结果类似如下:

------------------queryDevice------------------- {   "requestId": "E85B8ACE-321A-4C72-BC9B-432CDB1D0970",   "success": true,   "total": 1,   "pageSize": 20,   "pageCount": 1,   "page": 1,   "data": [     {       "deviceId": "Dzw9Is9******XPab0",       "deviceSecret": "mBsRW3***Erw",       "productKey": "a***Pr",       "deviceStatus": "UNACTIVE",       "deviceName": "Test_Doc",       "gmtCreate": "Fri, 11-Oct-2019 11:25:25 GMT",       "gmtModified": "Fri, 11-Oct-2019 11:25:25 GMT",       "utcCreate": "2019-10-11T11:25:25.000Z",       "utcModified": "2019-10-11T11:25:25.000Z",       "iotId": "Dzw9I****0",       "nickname": "文档测试"     }   ] } ------------------getDeviceStatus------------------- {   "requestId": "2F723888-2379-45F7-A989-B10CE6F37293",   "success": true,   "data": {     "status": "UNACTIVE"   } } ------------------getDeviceShadow------------------- {   "RequestId": "BB71E443-4447-4024-A000-EDE09922891E",   "Success": true,   "ShadowMessage": {     "method": "update",     "state": {       "desired": {         "color": "green"       },       "reported": ""     }     "version": 1   } }