更新时间:2023-11-23 GMT+08:00

设备孪生工作原理

边缘节点纳管后,会在边缘节点上安装Edge Agent,其中终端设备管理相关组件如下所示。

  • EdgeHub:WebSocket客户端,包括同步云端资源更新、报告边缘节点和终端设备信息到云端等功能。
  • DeviceTwin:设备孪生,负责存储终端设备状态并将设备状态同步到云端。
  • EventBus:与MQTT服务器交互的客户端,为其他组件提供订阅和发布消息的功能。
  • MQTT broker:MQTT服务器。
图1 终端设备管理

终端设备、边缘节点、IEF通信的过程中,设备孪生(DeviceTwin)起到了一个非常重要的作用,设备孪生保持设备的动态数据,包括特定背景下的设备专有实时数据,例如灯的开、关状态。

设备孪生具有与物理设备相同的特性,便于终端设备与应用之间进行更好地通信。应用发送的命令首先到达设备孪生,设备孪生根据应用设置的Expected State(期望的状态)进行状态更新,此外终端设备实时反馈自身的Actual State(真实的状态),设备孪生同时记录设备的Actual State和Expected State。这种方式也使终端设备在离线状况下再次上线时,终端设备的状态也能得到同步。

设备孪生的参考示例如下。

{
    "device": {
        "id": "989e4fc8-9f24-44d7-9f9c-a0bd3bfb1949",
        "description": "my home light",
        "name": "light",
        "state": "online",
        "twin": {
            "powerstatus": {
                "expected": {
                    "value": "ON"
                },
                "actual": {
                    "value": "OFF"
                },
                "metadata": {
                    "type": "string"
                }
            }
        }
    }
}

这个名为“light”的设备定义一个名为“powerstatus”的孪生属性,期望值(expected)是ON,而实际值(actual)是OFF。

下面看下这个终端设备与边缘节点和IEF通信的过程。

终端设备上报实际状态到云端

终端设备上报实际状态到云端的过程如图2所示。

图2 设备上报状态
  1. 终端设备将实际状态(Actual State)实时上报给MQTT broker。
  2. EventBus从MQTT broker收到订阅消息,消息内容包含终端设备的实际状态。
  3. EventBus把终端设备实际状态发送给DeviceTwin,DeviceTwin在边缘节点存储终端设备实际状态。
  4. DeviceTwin同步实际状态给WebSocket客户端EdgeHub。
  5. EdgeHub发送消息给IEF。

云端修改孪生属性控制终端设备状态

图3 修改终端设备状态
  1. 在IEF中修改终端设备的孪生属性,IEF将终端设备期望状态(Expected State)发送给边缘节点的EdgeHub。
  2. EdgeHub发送终端设备期望状态消息到DeviceTwin,DeviceTwin在边缘节点存储终端设备期望状态。
  3. 终端设备实时发消息给MQTT broker查询终端设备期望状态。
  4. EventBus接收到从MQTT broker发过来的消息。
  5. EventBus根据消息去查询终端设备期望状态。
  6. DeviceTwin反馈当前终端设备期望状态给EventBus。
  7. EventBus发送设终端备期望状态的结果给MQTT broker。
  8. 终端设备从MQTT broker收到订阅消息,根据期望状态调整实际状态。