全部产品

服务端调用API开发

更新时间:2020-09-07 14:48:31

设备连接到物联网平台后,设备数据会保存在物联网平台的时序数据库中。您可以通过物联网平台提供的云端API获取设备数据,也可以通过服务端订阅或者规则引擎方式,将数据流转到服务端。

准备工作

调用API开发

下文以调用SetDeviceProperty接口为例。设备异步返回结果,您可以通过数据流转方式获取结果。

说明
  • 请将示例代码中的Your_AccessKey_IDYour_AccessKey_Secret的参数值替换为您自己的阿里云账号AccessKey ID和AccessKey Secret。

    将光标定位到您的账号头像上,选择AccessKey管理,进入安全信息管理页,可创建或查看您的AccessKey。

  • cn-shanghai替换为您物联网设备所属地域ID。地域ID说明请参见地域和可用区

String accessKey = " 
Your_AccessKey_ID 
";
String accessSecret = " 
Your_AccessKey_ 
Secret 
";
try {
    DefaultProfile.addEndpoint(" 
cn-shanghai 
", " 
cn-shanghai 
", "Iot", "iot. 
cn-shanghai 
.aliyuncs.com");
} catch (Exception e) {
    System.out.println("DefaultProfile exception");
}

IClientProfile profile = DefaultProfile.getProfile(" 
cn-shanghai 
", accessKey, accessSecret);
DefaultAcsClient defaultAcsClient = new DefaultAcsClient(profile);

SetDevicePropertyRequest setDevicePropertyRequest = new SetDevicePropertyRequest();
// 如果使用实例,此处传入真实实例id;如果公共实例,不需要设置。
//createProductRequest.setIotInstanceId("iothub-test-xxx");
setDevicePropertyRequest.setProductKey(pk);
setDevicePropertyRequest.setDeviceName(dn);

Map<String, Integer> properties = new HashMap<>();
// key为物模型中属性标识符"acOutMeterIty",value需要遵循属性值规范:int类型,取值范围在0~200之间;
properties.put("acOutMeterIty", 98);
setDevicePropertyRequest.setItems(JSON.toJSONString(properties));

SetDevicePropertyResponse response = null;
try {
    response = defaultAcsClient.getAcsResponse(setDevicePropertyRequest);
} catch (Exception e) {
    Log.error("执行失败:e:" + e.getMessage());
}

System.out.println("===============");
System.out.println("setDeviceProperty request : " + JSON.toJSONString(setDevicePropertyRequest));
System.out.println("setDeviceProperty response : " + JSON.toJSONString(response.getData()));
System.out.println("setDeviceProperty requestId : " + response.getRequestId());
System.out.println("===============");

响应消息如下所示。

调用API的response

后续步骤

设备运行时