我有一个设备当前已配置并连接到 Azure IotHub(假设它是 iothub A)。现在我想断开它与iothub A的连接并连接到iothub B。我查看了
iotedge system
命令,它似乎没有断开连接选项。最接近的是 iotedge deprovision
但它似乎并没有清除现有的 iothub 连接。
我现在正在做的工作是删除 aziot 文件夹中的本地 iotedge 设置文件,并运行
iotedge config mp --connection-string xxxx
以建立新连接。不知道是否有更好的方法来清除当前连接?
以下是从当前 IoT 中心取消配置 IoT 边缘设备的步骤:
导航到 Azure 门户中当前连接 IoT Edge 设备的 IoT 中心。 转到IoT 设备下的设备。找到 IoT Edge 设备,然后禁用该设备以暂时撤销其访问权限,或删除该设备以将其从集线器中永久删除。
导航到链接到 IoT 中心的设备配置服务 (DPS) 实例。转到管理注册并检查设备是否有个人注册。如果是这样,请禁用或删除该条目。 另外,检查设备是否属于注册组。
为设备创建禁用的个人注册,或通过删除其注册记录将设备从注册组中删除。
导航至注册或组的注册状态选项卡。如果需要,请使用 Delete 选项或编程 API 手动删除设备的注册记录。
请参阅此 MSDOC 取消预配使用 Azure IoT 中心设备预配服务预配的设备
请参阅此 MSDOC 从 Azure IoT 中心设备预配服务中取消注册或撤销设备
重新连接设备有两种主要方法:手动配置或基于DPS的配置。
One way
是通过从 IoTHub B 检索 设备连接字符串来使用连接字符串进行手动配置。
导航到 IoTHub B > IoT 设备 > 添加设备(或使用现有设备条目)。 复制连接字符串并配置 IoT Edge 运行时以使用新的连接字符串:
sudo iotedge config mp --connection-string "HostName=<IoTHubB_Name>.azure-devices.net;DeviceId=<DeviceID>;SharedAccessKey=<Key>" --force
重新启动 IoT Edge 服务:
sudo systemctl restart iotedge
另一种方法是使用
DPS-Based Automatic Provisioning
打开 /etc/aziot/config.toml
文件并更新配置部分,如下所示:
[provisioning]
source = "dps"
global_endpoint = "https://global.azure-devices-provisioning.net"
id_scope = "<DPS ID Scope>"
registration_id = "<Device Registration ID>"
symmetric_key = "<Device Primary Key>"
使用此 GitHub
link中的示例
device_config.toml
。
然后运行以下命令以应用存储在
/etc/aziot/config.toml
文件中的更新后的 IoT Edge 配置:
sudo iotedge config apply -c '/etc/aziot/config.toml'
保存更改并重新启动 IoT Edge 服务:
sudo systemctl restart iotedge
检查 IoT Edge 服务状态:
sudo systemctl status iotedge
列出设备上运行的 IoT Edge 模块:
sudo iotedge list
输出:
sudo iotedge logs edgeAgent
配置 Azure IoT Edge 设备设置