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

影子文档的SDK示例

以下是添加和修改影子文档示例
使用时请将如下示例中的userAccessKey、userSecret、ProductKey、DeviceName、DeviceSecret分别替换成您的accessKey secret、productKey、deviceName、DeviceSecret(您需在安服优物联云管理后台个人中心页面查看您的账号的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. //设置mqtt服务的连接参数
  9. AfuConfig afuConfig = new AfuConfig();
  10. String mqttUrl = "tcp://mqtt.afuiot.com:1883"; //连接安服优物联网云平台MQTT服务器
  11. afuConfig.setMqttUrl(MqttUrl);
  12. afuConfig.setMqttClientId("ClientId");//用于区分MQTT客户端,每个设备请设置唯一的ClientId
  13. afuConfig.setProductKey("productKey");
  14. afuConfig.setDeviceName("deviceName");
  15. afuConfig.setDeviceSecret("deviceSecret");
  16. afuConfig.setUserAccessKey("UserAccessKey");
  17. afuConfig.setUserSecret("UserSecret");
  18. AfuDeviceLinkMqtt linkMqtt = new AfuDeviceLinkMqtt(afuConfig);
  19. //实例化中方法能直接进行相应操作
  20. AfuThingShadowKit thingModelKit = new AfuThingShadowKit(linkMqtt);
  21. //设置参数
  22. JSONObject params = new JSONObject();
  23. JSONObject state = new JSONObject();
  24. JSONObject attribute = new JSONObject();
  25. attribute.put("color","red");
  26. state.put("reported",attribute);
  27. params.put("state",state);
  28. params.put("version",1);
  29. thingModelKit.updateShadow(params);
  30. }
  31. }

在上述代码中的第24行中,开发者在实例化AfuThingShadowKit对象成功后,在该对象下有多种方法,以上是其中一种(添加和修改影子文档),下面将对其中方法进行使用介绍:

影子文档相关方法介绍:

添加和修改影子文档:updateShadow

1、设备主动上报状态时,调用updateShadow方法,如灯泡(设备)使用Topic /shadow/update/a1PbRCF**/bulb**上报最新状态到影子,请求参数如下格式:

  1. {
  2. "state": {
  3. "reported": {
  4. "color": "red"
  5. }
  6. },
  7. "version": 1
  8. }

上报参数说明

state 表示设备发送给设备影子的状态信息。reported为必填字段,状态信息会同步更新到设备影子的reported部分。
version 表示设备影子检查请求中的版本信息。

设备影子接收到灯泡上报的状态数据后,更新影子文档。

  1. {
  2. "state": {
  3. "reported": {
  4. "color": "red"
  5. }
  6. },
  7. "metadata": {
  8. "reported": {
  9. "color": {
  10. "timestamp": 1469564492
  11. }
  12. }
  13. },
  14. "timestamp": 1469564492,
  15. "version": 1
  16. }

2、应用程序通过调用updateShadow方法下发期望状态给设备影子,设备影子再将文件下发给设备端。设备根据影子更新状态,并上报最新状态至影子,期望参数如下格式:

  1. {
  2. "state": {
  3. "desired": {
  4. "color": "green"
  5. }
  6. },
  7. "version": 2
  8. }

设备影子接收到更新请求,更新其影子文档为:

  1. {
  2. "state": {
  3. "reported": {
  4. "color": "red"
  5. },
  6. "desired": {
  7. "color": "green"
  8. }
  9. },
  10. "metadata": {
  11. "reported": {
  12. "color": {
  13. "timestamp": 1469564492
  14. }
  15. },
  16. "desired": {
  17. "color": {
  18. "timestamp": 1469564576
  19. }
  20. }
  21. },
  22. "timestamp": 1469564576,
  23. "version": 2
  24. }

设备影子更新完成后,发送返回结果到Topic/shadow/get/a1PbRCF**/bulb中。返回结果信息构成由设备影子决定。以灯泡设备为例:
如果设备灯泡在线,并且订阅了
Topic/shadow/get/a1PbRCF**/bulb,则会立即收到消息。收到消息后,根据请求文档中desired的值,将灯泡颜色变成绿色。灯泡更新完状态后,上报最新状态到物联网平台。

  1. {
  2. "state": {
  3. "reported": {
  4. "color": "green"
  5. }
  6. },
  7. "version": 3
  8. }

获取影子文档:getShadow

以下是获取影子文档示例
使用时请将如下示例中的userAccessKey、userSecret、ProductKey、DeviceName、DeviceSecret分别替换成您的accessKey secret、productKey、deviceName、DeviceSecret(您需在安服优物联云管理后台个人中心页面查看您的账号的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. //设置mqtt服务的连接参数
  9. AfuConfig afuConfig = new AfuConfig();
  10. afuConfig.setMqttUrl("MqttUrl");
  11. afuConfig.setMqttClientId("ClientId");
  12. afuConfig.setProductKey("productKey");
  13. afuConfig.setDeviceName("deviceName");
  14. afuConfig.setDeviceSecret("deviceSecret");
  15. afuConfig.setUserAccessKey("UserAccessKey");
  16. afuConfig.setUserSecret("UserSecret");
  17. AfuDeviceLinkMqtt linkMqtt = new AfuDeviceLinkMqtt(afuConfig);
  18. //实例化中方法能直接进行相应操作
  19. AfuThingShadowKit thingModelKit = new AfuThingShadowKit(linkMqtt);
  20. //调用获取影子文档方法
  21. thingModelKit.getShadow();
  22. }
  23. }

在上述代码中的第24行中,开发者在实例化AfuThingShadowKit对象成功后,在该对象下有多种方法,以上是其中一种(添加和修改影子文档),下面将对其中方法进行使用介绍:

1、设备主动获取状态时,调用getShadow方法,发送最新状态到Topic/shadow/get/a1PbRCF**/bulb,如灯泡(设备)通过订阅该Topic**获取最新状态。消息内容如下:

  1. {
  2. "method": "reply",
  3. "payload": {
  4. "status": "success",
  5. "state": {
  6. "reported": {
  7. "color": "red"
  8. },
  9. "desired": {
  10. "color": "green"
  11. }
  12. },
  13. "metadata": {
  14. "reported": {
  15. "color": {
  16. "timestamp": 1469564492
  17. }
  18. },
  19. "desired": {
  20. "color": {
  21. "timestamp": 1469564492
  22. }
  23. }
  24. }
  25. },
  26. "version": 2,
  27. "timestamp": 1469564576
  28. }