本文简要介绍了产品物模型通信的使用方法,并提供了示例代码

物模型通信SDK使用示例

准备工作:

  1. 使用SDK中的AfuConfig配置类,进行 AfuConfig afuConfig = new AfuConfig();
  2. 调用afuConfig.setXXX方法设置准备参数,以下是配置类详解:

_/*
请登录安服优物联网云平台—>个人中心查看
*/
_private String userAccessKey = “xxxxxx”;
private String userSecret = “xxxxxx”;
private String version = “1.0”; //默认

_/*
连接安服优物联网云平台
*/
_private String mqttUrl = “tcp://mqtt.afuiot.com:1883”; //连接安服优物联网云平台MQTT服务器
private String mqttClientId = “xxxxxx”; //用于区分MQTT客户端,每个设备请设置唯一的ClientId

private String productKey = “XXXXXX”; //创建产品后,系统生成,在产品详情页查看
private String deviceName = “XXXXXX”; //创建设备设置的名称
private String deviceSecret = “XXXXXXXXX”; //创建设备后,系统生成,在设备详情页查看

  1. AfuConfig配置的信息设置完成,创建 AfuDeviceLinkMqtt 对象,把AfuConfig对象传递入参,如:

AfuDeviceLinkMqtt linkMqtt = new AfuDeviceLinkMqtt(afuConfig);

  1. 在创建 AfuThingModelKit 对象,把AfuDeviceLinkMqtt对象传递入参,如:

AfuThingModelKit thingModelKit = new AfuThingModelKit(linkMqtt);

物模型方法使用:
//属性上报:默认模块
JSONObject params = new JSONObject();
JSONObject switch1 = new JSONObject();
switch1.put(“value”,”true”); //上报状态值
switch1.put(“time”,System.currentTimeMillis());
params.put(“switch1”,switch1); //switch1为物模型定义的功能标示
thingModelKit.handlePropertySet(params);

//属性上报:自定义模块
JSONObject params = new JSONObject();
JSONObject switch1 = new JSONObject();
switch1.put(“value”,”false”);
switch1.put(“time”,System.currentTimeMillis());
params.put(“1:switch1”,switch1); //1为自定义模块标示,switch1为物模型定义的功能标示
thingModelKit.handlePropertySet(params);

//事件上报:默认模块
JSONObject outParams = new JSONObject(); //输出参数
JSONObject value = new JSONObject();
value.put(“Power”,”off”);
value.put(“WF”,”987654321”);
outParams.put(“value”,value);
outParams.put(“time”,System.currentTimeMillis());
thingModelKit.handleEventSet(null,”defaultTestEvent”,outParams); //defaultTestEvent为事件功能标示

//事件上报:自定义模块
JSONObject outParams = new JSONObject(); //输出参数
JSONObject value = new JSONObject();
value.put(“Power”,”on”);
value.put(“WF”,”123456789”);
outParams.put(“value”,value);
outParams.put(“time”,System.currentTimeMillis());
thingModelKit.handleEventSet(“testEventModel”,”testEvent”,outParams); //testEventModel表示自定义模块标示,testEvent为事件功能标示

//服务上报:默认模块
JSONObject params = new JSONObject();
params.put(“Power”,”on”);
params.put(“WF”,”123456789”);
thingModelKit.handleServiceSet(null,”defaultTestService”,params); //defaultTestService为服务功能标示

//服务上报:自定义模块
JSONObject params = new JSONObject();
params.put(“Power”,”on”);
params.put(“WF”,”123456789”);
thingModelKit.handleServiceSet(“testServiceModel”,”defaultTestService”,params); //testServiceModel为自定义的模块标示,defaultTestService为服务功能标示

完整demo如下:

  1. public static void main(String[] args) throws Exception {
  2. AfuConfig afuConfig = new AfuConfig();
  3. afuConfig.setMqttUrl("tcp://mqtt.afuiot.com:1883");
  4. afuConfig.setMqttClientId("7sgHseeoq5K/Pfp5sUpUqm8");
  5. afuConfig.setProductKey("Pfp5sUpUqm8");
  6. afuConfig.setDeviceName("7sgHseeoq5K");
  7. afuConfig.setDeviceSecret("1622519161821iyie1qRgbQhd");
  8. afuConfig.setUserAccessKey("d83ebdc3b89941ccb5521281105e6db9nXEgEkHR");
  9. afuConfig.setUserSecret("nsPrRO16Ti");
  10. AfuDeviceLinkMqtt linkMqtt = new AfuDeviceLinkMqtt(afuConfig);
  11. AfuThingModelKit thingModelKit = new AfuThingModelKit(linkMqtt);
  12. //影子文档修改和添加
  13. /*JSONObject params = new JSONObject();
  14. JSONObject attribute = new JSONObject();
  15. attribute.put("color","red");
  16. params.put("desired",attribute);
  17. params.put("version",1);
  18. thingModelKit.updateShadow(params);*/
  19. //属性上报:默认模块
  20. JSONObject params = new JSONObject();
  21. JSONObject switch1 = new JSONObject();
  22. switch1.put("value","true");
  23. switch1.put("time",System.currentTimeMillis());
  24. params.put("switch1",switch1);
  25. thingModelKit.handlePropertySet(params);
  26. //属性上报:自定义模块
  27. /*JSONObject params = new JSONObject();
  28. JSONObject switch1 = new JSONObject();
  29. switch1.put("value","false");
  30. switch1.put("time",System.currentTimeMillis());
  31. params.put("1:switch1",switch1); //1:表示自定义功能模块标示
  32. thingModelKit.handlePropertySet(params);*/
  33. //属性设置
  34. //事件上报:默认模块
  35. /*JSONObject outParams = new JSONObject(); //输出参数
  36. JSONObject value = new JSONObject();
  37. value.put("Power","off");
  38. value.put("WF","987654321");
  39. outParams.put("value",value);
  40. outParams.put("time",System.currentTimeMillis());
  41. thingModelKit.handleEventSet(null,"defaultTestEvent",outParams);*/
  42. //事件上报:自定义模块
  43. /*JSONObject outParams = new JSONObject(); //输出参数
  44. JSONObject value = new JSONObject();
  45. value.put("Power","on");
  46. value.put("WF","123456789");
  47. outParams.put("value",value);
  48. outParams.put("time",System.currentTimeMillis());
  49. thingModelKit.handleEventSet("testEventModel","testEvent",outParams);*/
  50. //服务上报:默认模块
  51. /*JSONObject params = new JSONObject();
  52. params.put("Power","on");
  53. params.put("WF","123456789");
  54. thingModelKit.handleServiceSet(null,"defaultTestService",params);*/
  55. //服务上报:自定义模块
  56. /*JSONObject params = new JSONObject();
  57. params.put("Power","on");
  58. params.put("WF","123456789");
  59. thingModelKit.handleServiceSet("testServiceModel","defaultTestService",params);*/
  60. //根据需求,是否关闭连接
  61. //linkMqtt.disconnect(afuConfig.getMqttClientId());
  62. }