使用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连接信息,并返回设备初始化的基本配置信息。 DPS
向Azure IoT Hub
同步设备初始化的配置信息。- 设备连接新的IoT Hub, 并开始重新配置和初始化。
这是一个新的设备通过DPS
向一个新的IoT Hub登记注册的过程,如果设备需要迁移呢?
设备迁移的话,需要根据DPS
定义的迁移规则来做出更多的动作:
Re-provision and Migrate Data
: 重新配置并迁移数据,这个是DPS
的默认选项,在这个选项下,DPS
会迁移旧的IoT Hub上设备相关的数据到新的IoT Hub上,成功之后,并删除旧Hub上的注册记录。Re-provision and reset to inital config
: 重新配置并初始化设备,这种模式下和新设备通过DPS
第一次连接IoT Hub上的流程是一致的,设备的当前状态数据会丢失。Never re-provision
: 设备不能被迁移,只能一直连接一个IoT Hub. 这个选项主要是为了兼容性而保留的选项,推荐不要选择该选项。
这些选项在创建一个单个设备登记或者分组登记的时候就可以选定规则,选定规则之后,无需用户担心,DPS
完成剩下的工作。
兼容性讨论
DPS
服务在2018年9月之前,分配设备是定死的,因此在这个之前创建的服务,如果需要重新初始化,设备会回到之前的IoT hub上。
考虑到兼容性,DPS
会使用如下的流程来进行判断:
针对于Device SDK,如下版本的SDK或者之前的版本均不支持重新初始化的功能:
REST API | C SDK | Python SDK | Node SDK | Java SDK | .NET SDK |
---|---|---|---|---|---|
2018-04-01 and earlier | 1.2.8 and earlier | 1.4.2 and earlier | 1.7.3 or earlier | 1.13.0 or earlier | 1.1.0 or earlier |