本文简要介绍了产品相关SDK的使用方法,并提供了示例代码。

产品的SDK示例

以下是查询产品数据示例
使用时请将如下示例中的userAccessKeyuserSecret分别替换成您的accessKey secret(您需在安服优物联云管理后台个人中心页面查看您的账号的accessKey和secret)。

  1. package com.afu.common.sdk.test;
  2. import com.afu.common.sdk.config.AfuOpenApiConfig;
  3. import com.afu.common.sdk.dataobject.ProductInfo;
  4. import com.afu.common.sdk.mqtt.AfuOpenApiBase;
  5. import com.afu.common.sdk.openapi.AfuOpenApi;
  6. public class TestOpenApi {
  7. public static void main(String[] args) throws Exception {
  8. //传入userAccessKey和userSecret
  9. AfuOpenApiConfig afuOpenApiConfig = new AfuOpenApiConfig();
  10. afuOpenApiConfig.setAccessKey("userAccessKey");
  11. afuOpenApiConfig.setSecret("userSecret");
  12. AfuOpenApiBase afuOpenApiBase = new AfuOpenApiBase(afuOpenApiConfig);
  13. //实例化AfuOpenApi,其中方法能直接进行相应操作
  14. AfuOpenApi afuOpenApi =new AfuOpenApi(afuOpenApiBase);
  15. ProductInfo productInfo=new ProductInfo();
  16. productInfo.setUserCode("userCode");
  17. String product = afuOpenApi.getProductList(productInfo);
  18. System.out.println("得到的返回数据:"+product);
  19. }
  20. }

在上述代码中的第18行中,开发者在实例化AfuOpenApi对象成功后,在该对象下有多种方法,以上是其中一种(查询产品列表),下面将对其中方法进行使用介绍:

返回数据介绍

名称 类型 示例值 描述
message String success 返回信息
model Object success 返回结果实体
status String 200 状态码,请参见 错误码文档

产品相关方法介绍:

查询产品列表:getProductList

请求参数:
该请求参数为实体类 ProductInfo 的属性,开发者只需实例化一个ProductInfo对象,并传入相应属性即可

名称 类型 是否必选 示例值 描述
userCode String “sahdajsedq” 用户编码

返回数据实体示例

  1. {
  2. "status":200,
  3. "message":"success",
  4. [
  5. {
  6. "userCode": "USERCODE", //用户编码
  7. "productCode": "PRODUCTCODE", //产品编码
  8. "name": "NAME", //产品名称
  9. "category": 1, //产品品类(1:标准品类 2:自定义)
  10. "nodeType": 1, //节点类型(1:节点直连 2:网关类型 3:网关子设备)
  11. "networkingMode": 1, //联网方式(1:WIFI 2:蜂窝 3:以太网 4:其他)
  12. "dataFormat": 2, //数据格式(1:自定义格式 2:标准JSON)
  13. "authMode": "1", //认证方式
  14. "productKey": "PRODUCTKEY", //系统生成开放产品key
  15. "productSecret": "PRODUCTSECRET", //系统生成开放产品密钥
  16. "remarks": "REMARKS", //产品描述
  17. "createTime": "2021-05-25T11:11:58.000+00:00"
  18. },
  19. {...}
  20. ]
  21. }

查询产品:getProduct

请求参数:
该请求参数为实体类 ProductInfo 的属性,开发者只需实例化一个ProductInfo对象,并传入相应属性即可

名称 类型 是否必选 示例值 描述
productCode String “sahdajsedq” 产品编码

返回数据实体示例

  1. {
  2. "status":200,
  3. "message":"success",
  4. "model":{
  5. "deviceSize": "0",
  6. "productInfo": {"userCode": "USERCODE", //用户编码
  7. "productCode": "PRODUCTCODE", //产品编码
  8. "name": "NAME", //产品名称
  9. "category": 1, //产品品类(1:标准品类 2:自定义)
  10. "nodeType": 1, //节点类型(1:节点直连 2:网关类型 3:网关子设备)
  11. "networkingMode": 1, //联网方式(1:WIFI 2:蜂窝 3:以太网 4:其他)
  12. "dataFormat": 2, //数据格式(1:自定义格式 2:标准JSON)
  13. "authMode": "1", //认证方式
  14. "productKey": "PRODUCTKEY", //系统生成开放产品key
  15. "productSecret": "PRODUCTSECRET", //系统生成开放产品密钥
  16. "remarks": "REMARKS", //产品描述
  17. "createTime": "2021-05-25T11:11:58.000+00:00"
  18. }
  19. }
  20. }

删除产品:deleteProduct

请求参数:
该请求参数为实体类 ProductInfo 的属性,开发者只需实例化一个ProductInfo对象,并传入相应属性即可

名称 类型 是否必选 示例值 描述
productCode String “sahdajsedq” 产品编码

返回数据实体示例

  1. {
  2. "status":200,
  3. "message":"success"
  4. }

修改产品:updateProduct

请求参数:
该请求参数为实体类 ProductInfo 的属性,开发者只需实例化一个ProductInfo对象,并传入相应属性即可

名称 类型 是否必选 示例值 描述
productCode String “sasdada” 产品编码
userCode String “sahdajsedq” 用户编码
name String 智能灯 产品名称
remarks String 智能灯真好看 描述

返回数据实体示例

  1. {
  2. "status":200,
  3. "message":"success"
  4. }

创建产品:saveProduct

请求参数:
该请求参数为实体类 ProductInfo 的属性,开发者只需实例化一个ProductInfo对象,并传入相应属性即可

名称 类型 是否必选 示例值 描述
userCode String “sahdajsedq” 用户编码
name String 智能灯 产品名称
category Integer 1 产品品类(1:标准品类 2:自定义)
nodeType Integer 1 节点类型(1:节点直连 2:网关类型 3:网关子设备)
networkingMode Integer 1 联网方式(1:WIFI 2:蜂窝 3:以太网 4:其他)
dataFormat Integer 1 数据格式(1:自定义格式 2:标准JSON)
authMode String 1 认证方式
remarks String 智能灯真好看 描述

返回数据实体示例

  1. {
  2. "status":200,
  3. "message":"success",
  4. "model":{
  5. "userCode": "USERCODE", //用户编码
  6. "productCode": "PRODUCTCODE", //产品编码
  7. "name": "NAME", //产品名称
  8. "category": 1, //产品品类(1:标准品类 2:自定义)
  9. "nodeType": 1, //节点类型(1:节点直连 2:网关类型 3:网关子设备)
  10. "networkingMode": 1, //联网方式(1:WIFI 2:蜂窝 3:以太网 4:其他)
  11. "dataFormat": 2, //数据格式(1:自定义格式 2:标准JSON)
  12. "authMode": "1", //认证方式
  13. "productKey": "PRODUCTKEY", //系统生成开放产品key
  14. "productSecret": "PRODUCTSECRET", //系统生成开放产品密钥
  15. "remarks": "REMARKS", //产品描述
  16. "createTime": "2021-05-25T11:11:58.000+00:00"
  17. }
  18. }

设备的SDK示例

以下是设备分页列表数据示例
使用时请将如下示例中的userAccessKeyuserSecret分别替换成您的accessKey secret(您需在安服优物联云管理后台个人中心页面查看您的账号的accessKey和secret)。

  1. package com.afu.common.sdk.test;
  2. import com.afu.common.sdk.config.AfuOpenApiConfig;
  3. import com.afu.common.sdk.dataobject.DeviceInfo;
  4. import com.afu.common.sdk.dataobject.PageInfo;
  5. import com.afu.common.sdk.mqtt.AfuOpenApiBase;
  6. import com.afu.common.sdk.openapi.AfuOpenApi;
  7. import net.sf.json.JSONObject;
  8. public class TestOpenApi {
  9. public static void main(String[] args) throws Exception {
  10. //传入userAccessKey和userSecret
  11. AfuOpenApiConfig afuOpenApiConfig = new AfuOpenApiConfig();
  12. afuOpenApiConfig.setAccessKey("userAccessKey");
  13. afuOpenApiConfig.setSecret("userSecret");
  14. AfuOpenApiBase afuOpenApiBase = new AfuOpenApiBase(afuOpenApiConfig);
  15. //实例化AfuOpenApi,其中方法能直接进行相应操作
  16. AfuOpenApi afuOpenApi =new AfuOpenApi(afuOpenApiBase);
  17. DeviceInfo deviceInfo = new DeviceInfo();
  18. deviceInfo.setUserCode("usercode");
  19. PageInfo pageInfo=new PageInfo();
  20. pageInfo.setPageNum("1");
  21. pageInfo.setPageSize("2");
  22. String deviceList = afuOpenApi.getDeviceList(deviceInfo, pageInfo);
  23. System.out.println("得到的返回数据:"+deviceList);
  24. }
  25. }

在上述代码中的第20行中,开发者在实例化AfuOpenApi对象成功后,在该对象下有多种方法,以上是其中一种(查询设备分页列表),下面将对其中方法进行使用介绍:

返回数据介绍

名称 类型 示例值 描述
message String success 返回信息
model Object success 返回结果实体
status String 200 状态码,请参见 错误码文档

设备相关方法介绍:

查询分页设备列表:getDeviceList

请求参数1:
该请求参数为实体类 DeviceInfo 的属性,开发者只需实例化一个DeviceInfo 对象,并传入相应属性即可

名称 类型 是否必选 示例值 描述
userCode String “sahdajsedq” 用户编码
productCode String “sahdajsedq” 产品编码
deviceName String 智能灯 设备名称
remarksName String “好看” 描述备注

请求参数2:
该请求参数为实体类 PageInfo 的属性,开发者只需实例化一个PageInfo 对象,并传入相应属性即可

名称 类型 是否必选 示例值 描述
pageNum String “1” 当前页码
pageSize String “2” 页量

返回数据实体示例

  1. {
  2. "status":200,
  3. "message":"success",
  4. "model":{
  5. "list": [ //设备数据列表
  6. {
  7. "userCode": "USERCODE", //用户编码
  8. "deviceCode": "DEVICECODE", //设备编码
  9. "productCode": "PRODUCTCODE", //IOT产品编码
  10. "deviceName": "DEVICENAME", //设备名称
  11. "status": 0, //设备状态(0:未激活 1:在线 2:离线 )
  12. "deviceSecret": "DEVICESECRET", //系统生成开放设备密钥
  13. "remarks": "REMARKS", //描述备注
  14. "createTime": "2021-05-22T03:51:57.000+00:00" //创建时间
  15. },
  16. {......}
  17. ],
  18. "totalCount": 16, //总记录数
  19. "pageNum": 1, //当前页码
  20. "totalPage": 8 //总页数
  21. }
  22. }

查询设备:getDevice

请求参数:
该请求参数为实体类 DeviceInfo 的属性,开发者只需实例化一个DeviceInfo 对象,并传入相应属性即可

名称 类型 是否必选 示例值 描述
deviceCode String “sahdajsedq” 设备编码

返回数据实体示例

  1. {
  2. "status":200,
  3. "message":"success",
  4. "model":{
  5. "deviceInfo": { //设备信息实体类
  6. "userCode": "USERCODE", //用户编码
  7. "deviceCode": "DEVICECODE", //设备编码
  8. "productCode": "PRODUCTCODE", //IOT产品编码
  9. "deviceName": "DEVICENAME", //设备名称
  10. "status": 0, //设备状态(0:未激活 1:在线 2:离线 )
  11. "deviceSecret": "DEVICESECRET", //系统生成开放设备密钥
  12. "remarks": "REMARKS", //描述备注
  13. "createTime": "2021-05-25T03:51:57.000+00:00" //创建时间
  14. }
  15. }
  16. }

删除设备:deleteDevice

请求参数:
该请求参数为实体类 DeviceInfo 的属性,开发者只需实例化一个DeviceInfo 对象,并传入相应属性即可

名称 类型 是否必选 示例值 描述
deviceCode String “sahdajsedq” 设备编码

返回数据实体示例

  1. {
  2. "status":200,
  3. "message":"success"
  4. }

修改设备:updateDevice

请求参数:
该请求参数为实体类 DeviceInfo 的属性,开发者只需实例化一个DeviceInfo 对象,并传入相应属性即可

名称 类型 是否必选 示例值 描述
deviceCode String “sahdajsedq” 设备编码
remarksName String “sahdajsedq” 设备备注
deviceConnection String “sahdajsedq” 外接设备码

返回数据实体示例

  1. {
  2. "status":200,
  3. "message":"success"
  4. }

创建设备:saveDevice

请求参数:
该请求参数为实体类 DeviceInfo 的属性,开发者只需实例化一个DeviceInfo 对象,并传入相应属性即可

名称 类型 是否必选 示例值 描述
userCode String “sahdajsedq” 用户编码
productCode String “sahdajsedq” 产品编码
productKey String “hjsdksah” 系统生成开放产品key
deviceName String 智能灯 设备名称
remarksName String “好看” 描述备注

返回数据实体示例

  1. {
  2. "status":200,
  3. "message":"success",
  4. "model"[{ //设备信息实体类
  5. "userCode": "USERCODE", //用户编码
  6. "deviceCode": "DEVICECODE", //设备编码
  7. "productCode": "PRODUCTCODE", //IOT产品编码
  8. "deviceName": "DEVICENAME", //设备名称
  9. "status": 0, //设备状态(0:未激活 1:在线 2:离线 )
  10. "deviceSecret": "DEVICESECRET", //系统生成开放设备密钥
  11. "remarks": "REMARKS", //描述备注
  12. "createTime": "2021-05-25T03:51:57.000+00:00" //创建时间
  13. }]
  14. }

批量创建设备:saveBatchDevice

请求参数1:
该请求参数为实体类 DeviceInfo 的属性,开发者只需实例化一个DeviceInfo 对象,并传入相应属性即可

名称 类型 是否必选 示例值 描述
userCode String “sahdajsedq” 用户编码
productCode String “sahdajsedq” 产品编码
productKey String “hjsdksah” 系统生成开放产品key
deviceName String 智能灯 设备名称
remarksName String “好看” 描述备注

请求参数2:
该请求参数为String类型,表示需要批量创建的数量,开发者只需传入要批量创建的数量即可

名称 类型 是否必选 示例值 描述
batchNum String “11” 批量创建的数量

返回数据实体示例

  1. {
  2. "status":200,
  3. "message":"success",
  4. "model"[{ //设备信息实体类
  5. "userCode": "USERCODE", //用户编码
  6. "deviceCode": "DEVICECODE", //设备编码
  7. "productCode": "PRODUCTCODE", //IOT产品编码
  8. "deviceName": "DEVICENAME", //设备名称
  9. "status": 0, //设备状态(0:未激活 1:在线 2:离线 )
  10. "deviceSecret": "DEVICESECRET", //系统生成开放设备密钥
  11. "remarks": "REMARKS", //描述备注
  12. "createTime": "2021-05-25T03:51:57.000+00:00" //创建时间
  13. },{......}]
  14. }

Topic的SDK示例

以下是查询Topic列表数据示例
使用时请将如下示例中的userAccessKeyuserSecret分别替换成您的accessKey secret(您需在安服优物联云管理后台个人中心页面查看您的账号的accessKey和secret)。

  1. package com.afu.common.sdk.test;
  2. import com.afu.common.sdk.config.AfuOpenApiConfig;
  3. import com.afu.common.sdk.dataobject.ProductTopicInfo;
  4. import com.afu.common.sdk.mqtt.AfuOpenApiBase;
  5. import com.afu.common.sdk.openapi.AfuOpenApi;
  6. import net.sf.json.JSONObject;
  7. public class TestOpenApi {
  8. public static void main(String[] args) throws Exception {
  9. //传入userAccessKey和userSecret
  10. AfuOpenApiConfig afuOpenApiConfig = new AfuOpenApiConfig();
  11. afuOpenApiConfig.setAccessKey("userAccessKey");
  12. afuOpenApiConfig.setSecret("userSecret");
  13. AfuOpenApiBase afuOpenApiBase = new AfuOpenApiBase(afuOpenApiConfig);
  14. //实例化AfuOpenApi,其中方法能直接进行相应操作
  15. AfuOpenApi afuOpenApi =new AfuOpenApi(afuOpenApiBase);
  16. ProductTopicInfo productTopicInfo=new ProductTopicInfo();
  17. productTopicInfo.setProductCode("df23bf853ddf4e5e90fd335cf1e44c41");
  18. String topicList = afuOpenApi.getTopicList(productTopicInfo);
  19. System.out.println("得到的返回数据:"+topicList);
  20. }
  21. }

在上述代码中的第20行中,开发者在实例化AfuOpenApi对象成功后,在该对象下有多种方法,以上是其中一种(查询Topic列表),下面将对其中方法进行使用介绍:

返回数据介绍

名称 类型 示例值 描述
message String success 返回信息
model Object success 返回结果实体
status String 200 状态码,请参见 错误码文档

Topic相关方法介绍:

查询Topic列表:getTopicList

请求参数:
该请求参数为实体类 ProductTopicInfo的属性,开发者只需实例化一个ProductTopicInfo对象,并传入相应属性即可

名称 类型 是否必选 示例值 描述
productCode String “sahdajsedq” 产品编码

返回数据实体示例

  1. {
  2. "status":200,
  3. "message":"success",
  4. "model":[{
  5. "topicCode": "TOPICCODE", //产品topic编码
  6. "productCode": "PRODUCTCODE", //IOT产品编码
  7. "topicType": 1, //topic类型(1:基础通信 2:物模型通信 3:自定义)
  8. "functionType": 1, //功能类型(1:OTA升级 2:设备标签 3:时钟同步 4:设备影子 5:配置更新
  9. //6:广播 7:属性上报 8:属性设置 9:事件上报 10:服务调用
  10. //注意:如果topicType为3自定义,则没有此字段值)
  11. "topicName": "TOPICNAME", //产品topic类名称
  12. "authorityType": 1, //权限类型(1:发布 2:订阅 3:发布与订阅)
  13. "remarks": "REMARKS", //描述
  14. "createTime": "2021-05-25T11:11:58.000+00:00" //创建时间
  15. },
  16. { ...... }
  17. ]
  18. }

删除Topic:deleteTopic

请求参数:
该请求参数为实体类 ProductTopicInfo的属性,开发者只需实例化一个ProductTopicInfo对象,并传入相应属性即可

名称 类型 是否必选 示例值 描述
topicCode String “sahdajsedq” 产品topic编码

返回数据实体示例

  1. {
  2. "status":200,
  3. "message":"success"
  4. }

修改Topic:updateTopic

请求参数:
该请求参数为实体类 ProductTopicInfo的属性,开发者只需实例化一个ProductTopicInfo对象,并传入相应属性即可

名称 类型 是否必选 示例值 描述
topicCode String “sahdajsedq” 产品topic编码
topicName String “sahdajsedq” 产品topic类名称
authorityType Integer 1 权限类型(1:发布 2:订阅 3:发布与订阅)
remarks String “好看” 描述

返回数据实体示例

  1. {
  2. "status":200,
  3. "message":"success"
  4. }

创建Topic:saveTopic

请求参数:
该请求参数为实体类 ProductTopicInfo的属性,开发者只需实例化一个ProductTopicInfo对象,并传入相应属性即可

名称 类型 是否必选 示例值 描述
topicCode String “sahdajsedq” 产品topic编码
topicName String “sahdajsedq” 产品topic类名称
authorityType Integer 1 权限类型(1:发布 2:订阅 3:发布与订阅)
remarks String “好看” 描述

返回数据实体示例

  1. {
  2. "status": 200,
  3. "message": "success",
  4. "model": {
  5. "topicCode": "TOPICCODE", //产品topic编码
  6. "productCode": "PRODUCTCODE", //IOT产品编码
  7. "topicType": 1, //topic类型(1:基础通信 2:物模型通信 3:自定义)
  8. "functionType": 1, //功能类型(1:OTA升级 2:设备标签 3:时钟同步 4:设备影子 5:配置更新
  9. //6:广播 7:属性上报 8:属性设置 9:事件上报 10:服务调用
  10. //注意:如果topicType为3自定义,则没有此字段值)
  11. "topicName": "TOPICNAME", //产品topic类名称
  12. "authorityType": 1, //权限类型(1:发布 2:订阅 3:发布与订阅)
  13. "remarks": "REMARKS", //描述
  14. "createTime": "2021-05-25T11:11:58.000+00:00" //创建时间
  15. }
  16. }

发布消息的SDK示例

以下是发布消息示例
使用时请将如下示例中的userAccessKeyuserSecret分别替换成您的accessKey secret(您需在安服优物联云管理后台个人中心页面查看您的账号的accessKey和secret)。

  1. package com.afu.common.sdk.test;
  2. import com.afu.common.sdk.config.AfuOpenApiConfig;
  3. import com.afu.common.sdk.dataobject.TopicNewInfo;
  4. import com.afu.common.sdk.mqtt.AfuOpenApiBase;
  5. import com.afu.common.sdk.openapi.AfuOpenApi;
  6. import net.sf.json.JSONObject;
  7. public class TestOpenApi {
  8. public static void main(String[] args) throws Exception {
  9. //传入userAccessKey和userSecret
  10. AfuOpenApiConfig afuOpenApiConfig = new AfuOpenApiConfig();
  11. afuOpenApiConfig.setAccessKey("userAccessKey"); //userAccessKey
  12. afuOpenApiConfig.setSecret("userSecret"); //userSecret
  13. AfuOpenApiBase afuOpenApiBase = new AfuOpenApiBase(afuOpenApiConfig);
  14. //实例化AfuOpenApi,其中方法能直接进行相应操作
  15. AfuOpenApi afuOpenApi =new AfuOpenApi(afuOpenApiBase);
  16. TopicNewInfo topicNewInfo =new TopicNewInfo();
  17. topicNewInfo.setContent("sdkTest");
  18. topicNewInfo.setProductKey("Pfp5sUpUqm8");
  19. topicNewInfo.setQos(0);
  20. topicNewInfo.setTopic("/sdkTest/Test");
  21. DeviceInfo deviceInfo = new DeviceInfo();
  22. deviceInfo.setDeviceName("deviceName");
  23. deviceInfo.setDeviceSecret("deviceSecret");
  24. String jsonObject = afuOpenApi.ReleaseNews(topicNewInfo,deviceInfo);
  25. System.out.println("得到的返回数据:"+jsonObject);
  26. }
  27. }

在上述代码中的第20行中,开发者在实例化AfuOpenApi对象成功后,在该对象下有多种方法,以上是其中一种(发布消息),下面将对其中方法进行使用介绍:

返回数据介绍

名称 类型 示例值 描述
message String success 返回信息
model Object success 返回结果实体
status String 200 状态码,请参见 错误码文档

发布消息:ReleaseNews

请求参数1:
该请求参数为实体类 TopicNewInfo的属性,开发者只需实例化一个TopicNewInfo对象,并传入相应属性即可

名称 类型 是否必选 示例值 描述
productKey String DGHHddC554 为产品Key值,在物联网后台产品管理中获取
topic String “topic1/topic2” topic权限须为订阅或发布和订阅
qos Integer 0 qos值0,1,未开通2
content String “test” 消息内容

请求参数2:
该请求参数为实体类 DeviceInfo的属性,开发者只需实例化一个DeviceInfo对象,并传入相应属性即可

名称 类型 是否必选 示例值 描述
deviceSecret String DGHHddC554 设备系统生成开放设备密钥
deviceName String 智能灯 设备名称

返回数据实体示例

  1. {
  2. "status":200,
  3. "message":"success"
  4. }