全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
阿里云物联网套件

设备影子JSON详解

更新时间:2017-06-07 13:26:11

设备影子JSON格式:

  1. {
  2. "state": {
  3. "desired": {
  4. "attribute1": integer2,
  5. "attribute2": "string2",
  6. ...
  7. "attributeN": boolean2
  8. },
  9. "reported": {
  10. "attribute1": integer1,
  11. "attribute2": "string1",
  12. ...
  13. "attributeN": boolean1
  14. }
  15. },
  16. "metadata": {
  17. "desired": {
  18. "attribute1": {
  19. "timestamp": timestamp
  20. },
  21. "attribute2": {
  22. "timestamp": timestamp
  23. },
  24. ...
  25. "attributeN": {
  26. "timestamp": timestamp
  27. }
  28. },
  29. "reported": {
  30. "attribute1": {
  31. "timestamp": timestamp
  32. },
  33. "attribute2": {
  34. "timestamp": timestamp
  35. },
  36. ...
  37. "attributeN": {
  38. "timestamp": timestamp
  39. }
  40. }
  41. },
  42. "timestamp": timestamp,
  43. "version": version
  44. }

JSON属性描述:

属性 描述
desired 设备的预期状态。应用程序可以向本文档desired部分写入数据来更新事物的状态,且无需直接连接到该设备
reported 设备的报告状态。设备可以向本文档reported部分写入数据,报告其最新状态。应用程序可以读取本文档部分,获取设备的状态
metadata 这部分当用户更新State文档,设备影子服务会自动更新,不需要用户更新。文档 state 部分的元数据的信息,其中包括 state 部分中每个属性的时间戳(以 Epoch 时间表示),让您能够确定它们的更新时间
timestamp 影子文档的最新更新时间
version 用户主动更新version,那设备影子会检查请求中的version是否大于当前版本,如果大于的话,则更新设备影子,并将version更新到请求的版本,反之拒绝更新设备影子。文档每次更新时,此版本号都会递增,用于确保正在更新的文档为最新版本

示例影子JSON:

  1. {
  2. "state" : {
  3. "desired" : {
  4. "color" : "RED",
  5. "sequence" : [ "RED", "GREEN", "BLUE" ]
  6. },
  7. "reported" : {
  8. "color" : "GREEN"
  9. }
  10. },
  11. "metadata" : {
  12. "desired" : {
  13. "color" : {
  14. "timestamp" : 1469564492
  15. },
  16. "sequence" : {
  17. "timestamp" : 1469564492
  18. }
  19. },
  20. "reported" : {
  21. "color" : {
  22. "timestamp" : 1469564492
  23. }
  24. }
  25. },
  26. "timestamp" : 1469564492,
  27. "version" : 1
  28. }

空白部分:

  • 仅当设备影子文档具有预期状态时,它才包含“desired”部分。例如以下没有“desired”部分的文档同样为有效影子JSON文档:
  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. }
  • “reported”部分也可以为空,例如以下没有”reported”部分的文档同样为有效影子JSON文档
  1. {
  2. "state" : {
  3. "desired" : {
  4. "color" : "red",
  5. }
  6. },
  7. "metadata" : {
  8. "desired" : {
  9. "color" : {
  10. "timestamp" : 1469564492
  11. }
  12. }
  13. },
  14. "timestamp" : 1469564492,
  15. "version" : 1
  16. }

数组:

  • 设备影子支持数组,但将其视为正常值进行处理,因为对数组的更新将替换整个数组。无法更新数组的某个部分。
  • 初始状态:
  1. {
  2. "reported" : { "colors" : ["RED", "GREEN", "BLUE" ] }
  3. }
  • 更新:
  1. {
  2. "reported" : { "colors" : ["RED"] }
  3. }

最终状态:

  1. {
  2. "reported" : { "colors" : ["RED"] }
  3. }
本文导读目录