Updated on 2022-08-11 GMT+08:00

Device Twin Working Principles

After an edge node is managed, Edge Agent is installed on the edge node. Edge Agent provides the following components for end device management:

  • EdgeHub: a WebSocket client, which provides functions such as synchronizing cloud resource updates and reporting edge node and end device data to the cloud.
  • DeviceTwin: stores end device status and synchronizes the end device status to the cloud.
  • EventBus: a client that interacts with the MQTT server and provides the functions of subscribing to and publishing messages for other components.
  • MQTT broker: an MQTT server.
Figure 1 End device management

DeviceTwin plays an important role during the communication among end devices, edge nodes, and IEF. It maintains the dynamic device data, including the dedicated real-time data of devices in a specific scenario, such as the on/off status of lights.

DeviceTwin has the same features as physical devices and facilitates better communication between end devices and applications. The commands sent by an application reach DeviceTwin. Then, DeviceTwin updates the device status according to Expected State set by the application. In addition, the end device reports its Actual State in real time. DeviceTwin records both Actual State and Expected State of the end device. In this way, the status of an offline device can be synchronized when it comes back online.

The following is an example of a device twin:

{
    "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"
                }
            }
        }
    }
}

In this example, a twin property powerstatus is defined for the device named light, in which the expected value is ON and the actual value is OFF.

The following describes how this end device communicates with the edge node and IEF.

Reporting the Actual Device Status to the Cloud

Figure 2 shows the process for an end device to report its actual status to the cloud.

Figure 2 Reporting the device status
  1. The end device reports its actual status to the MQTT broker in real time.
  2. EventBus receives a subscription message from the MQTT broker. The message contains the actual status of the end device.
  3. EventBus sends the actual device status to DeviceTwin. Then, DeviceTwin stores the actual device status on the edge node.
  4. DeviceTwin synchronizes the actual status to EdgeHub (a WebSocket client).
  5. EdgeHub sends a message to IEF.

Modifying Twin Properties in the Cloud to Control Device Status

Figure 3 Modifying the device status
  1. Modify the twin properties of the end device on IEF. Then, IEF sends the expected status of the end device to EdgeHub on the edge node.
  2. EdgeHub sends a message containing the expected device status to DeviceTwin. Then, DeviceTwin stores the expected device status on the edge node.
  3. The end device sends a message to the MQTT broker in real time to query the expected device status.
  4. EventBus receives the message from the MQTT broker.
  5. EventBus queries the expected device status based on the message.
  6. DeviceTwin sends the expected device status to EventBus.
  7. EventBus sends the expected device status to the MQTT broker.
  8. The end device receives a subscription message from the MQTT broker and adjusts its status to the expected status.