伟大的凡人头像

AWS IoT Core 设备影子(Device Shadow)深度应用:实现物模型属性与事件上报的2种架构

AWS IoT Core 设备影子深度应用:实现物模型属性与事件上报的两种架构设计

1. 设备影子核心机制解析

AWS IoT Core 的设备影子(Device Shadow)服务本质上是一个JSON文档存储系统,专门为物联网设备状态管理而设计。每个设备影子由三部分组成:

  • reported state :设备最后一次上报的状态
  • desired state :应用期望设备达到的状态
  • delta state :前两者的差异状态

影子文档采用版本控制机制,每次更新都会生成新的版本号(version),同时保留时间戳(timestamp)。这种设计带来了几个关键特性:

{
  "state": {
    "reported": {
      "temperature": 25.3,
      "humidity": 60
    },
    "desired": {
      "temperature": 22.0
    },
    "delta": {
      "temperature": -3.3
    }
  },
  "metadata": {
    "reported": {
      "temperature": {
        "timestamp": 1620000000
      },
      "humidity": {
        "timestamp": 1620000000
      }
    },
    "desired": {
      "temperature": {
        "timestamp": 1620000100
      }
    }
  },
  "version": 42,
  "timestamp": 1620000100
}

关键机制 :当设备重新上线时,系统会自动比较reported和desired状态的差异,并通过预定义的MQTT主题( $aws/things/thingName/shadow/update/delta )推送delta消息,触发设备状态同步。

2. 基于规则引擎的物模型架构

2.1 架构拓扑与数据流

[设备] --MQTT--> [AWS IoT Core] --规则引擎--> [Kinesis] --> [Lambda] --> [DynamoDB]
                     ↑
                     |--影子服务

核心组件配置 :

  1. 规则引擎SQL语句示例 :
SELECT 
    state.reported.temperature as temp,
    state.reported.humidity as humi,
    timestamp() as server_ts 
FROM 
    '$aws/things/+/shadow/update/accepted'
WHERE 
    state.reported.temperature > 0
  1. Kinesis数据流配置 :
aws kinesis create-stream \
    --stream-name DeviceTelemetryStream \
    --shard-count 2
  1. Lambda处理函数关键代码 :
def lambda

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/weixin_29179311/article/details/162773991

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--