Skip to main content

使用DPS服务对设备重新初始化

分类:  Azure物联网 标签:  #Azure #Azure IoT Device Provisioning Service # 发布于: 2023-06-14 20:13:27

对于连接到Azure IoT Hub的设备,在很多场景下会存在设备从一个Hub迁移到另外一个Hub的场景,在设备的迁移过程中,会有不少的设备相关的数据也需要进行迁移,以及设备迁移到新的Hub上,设备还需要重新完成初始化和之前的设备数据的同步,如果没有DPS服务,用户需要手动完成这种任务,在存在大量设备的情况下,这几乎不可能完成,借助DPS服务,不可能变为可能。

设备状态数据

在设备迁移的过程中,主要涉及的设备数据包括如下几个部分:

  • Device Twin
  • 设备功能性数据

这些数据存储在DPS实例上和迁移之前的IoT Hub上。

当一个设备通过DPS进行初始化的时候,需要经历如下的一些过程。

  • 设备向DPS发送初始化请求,DPS认证该设备,认证成功后,向设备返回新的IoT Hub连接信息,并返回设备初始化的基本配置信息。
  • DPSAzure IoT Hub同步设备初始化的配置信息。
  • 设备连接新的IoT Hub, 并开始重新配置和初始化。

这是一个新的设备通过DPS向一个新的IoT Hub登记注册的过程,如果设备需要迁移呢?

设备迁移的话,需要根据DPS定义的迁移规则来做出更多的动作:

  1. Re-provision and Migrate Data: 重新配置并迁移数据,这个是DPS的默认选项,在这个选项下,DPS会迁移旧的IoT Hub上设备相关的数据到新的IoT Hub上,成功之后,并删除旧Hub上的注册记录。
  2. Re-provision and reset to inital config: 重新配置并初始化设备,这种模式下和新设备通过DPS第一次连接IoT Hub上的流程是一致的,设备的当前状态数据会丢失。
  3. Never re-provision: 设备不能被迁移,只能一直连接一个IoT Hub. 这个选项主要是为了兼容性而保留的选项,推荐不要选择该选项。

这些选项在创建一个单个设备登记或者分组登记的时候就可以选定规则,选定规则之后,无需用户担心,DPS完成剩下的工作。

兼容性讨论

DPS服务在2018年9月之前,分配设备是定死的,因此在这个之前创建的服务,如果需要重新初始化,设备会回到之前的IoT hub上。
考虑到兼容性,DPS会使用如下的流程来进行判断:


针对于Device SDK,如下版本的SDK或者之前的版本均不支持重新初始化的功能:

REST APIC SDKPython SDKNode SDKJava SDK.NET SDK
2018-04-01 and earlier1.2.8 and earlier1.4.2 and earlier1.7.3 or earlier1.13.0 or earlier1.1.0 or earlier