你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

编辑设备模板

设备模板包含一个模型,用于描述设备如何与 IoT Central 交互。 此模型定义设备的功能以及如何与 IoT Central 交互。 设备可以将遥测和属性值发送到 IoT Central,IoT Central 可以将属性更新和命令发送到设备。 IoT Central 还使用模型来定义与 IoT Central 功能的交互,例如作业、规则和导出。

更改设备模板中的模型可能会影响整个应用程序,包括任何连接的设备。 对规则、导出、设备组或作业使用的功能的更改可能会导致它们的行为出人意料或根本不起作用。 例如,如果从模板中删除遥测定义:

  • IoT Central 不再能够解释该值。 IoT Central 在设备的“原始数据”页上将无法解释的设备数据显示为“未建模数据”。
  • IoT Central 不再在任何数据导出中包含这个值。

为了帮助你避免由于编辑设备模板而导致的任何意外后果,本文提供基于你当前开发生命周期阶段的建议。 一般情况下,在开发生命周期中较早时,可以更宽容地更改设备模板。

若要了解有关设备模板以及如何创建设备模板的详细信息,请参阅 什么是设备模板? 并在 Azure IoT Central 应用程序中创建设备模板

若要了解如何使用 IoT Central REST API 管理设备模板,请参阅 如何使用 IoT Central REST API 管理设备模板。

修改设备模板

累加性更改(例如向模型添加功能或接口)是非中断性变更。 可以在开发生命周期的任何阶段对模型进行累加更改。

中断性变更包括删除模型的各个部分,或更改功能名称或架构类型。 这些更改可能导致应用程序功能(如规则、导出或仪表板)显示错误消息并停止工作。

在早期设备开发阶段,虽然仍在设计和测试模型,但对直接更改设备模型具有更大的容忍度。 将生产设备连接到设备模板之前,可以直接编辑设备模板。 发布设备模板时,IoT Central 会自动将这些更改应用于设备。

将生产设备附加到设备模板后,在编辑设备模板之前评估任何更改的影响。 不应对生产中的设备模板进行重大更改。 若要进行此类更改,请创建设备模板的新版本。 测试新设备模板,然后在计划停机时将生产设备迁移到新模板。

更新 IoT Edge 设备模板

对于 IoT Edge 设备,模型按与设备上运行的 IoT Edge 模块对应的模块对功能进行分组。 部署清单是一个单独的 JSON 文档,它告知 IoT Edge 设备要安装的模块、如何配置模块以及模块具有哪些属性。 如果修改部署清单,可以更新设备模板以包括清单中定义的模块和属性:

  1. 导航到设备模板中的 “模块 ”节点。
  2. 在“ 模块摘要 ”页上,选择 “从清单导入模块”。
  3. 选择相应的部署清单,然后选择“ 导入”。

若要了解详细信息,请参阅 IoT Edge 设备和 IoT Central

编辑和发布动作

编辑设备模板时,以下操作非常有用。

  • 保存。 更改设备模板的一部分时,保存更改将创建可返回的草稿。 这些更改尚不会影响连接的设备。 从此模板创建的任何设备在发布之前不会有保存的更改。
  • 发布。 发布设备模板时,它将任何保存的更改应用于现有设备实例。 新建的设备实例始终使用最新的已发布模板。
  • 为模板创建一个版本。 对设备模板进行版本管理时,会创建一个包含所有最新保存更改的新版模板。 对新版本所做的更改不会影响现有设备实例。 若要了解详细信息,请参阅 设备模板版本
  • 对接口进行版本控制。 当您为接口创建版本时,它会生成一个包含所有最新保存功能特性的全新接口。 可以在模板中的多个位置重复使用接口。 正是由于这种重用,对一个接口引用的更改会更改模板中使用该接口的所有位置。 对接口进行版本控制时,此行为会发生变化,因为新版本现在是一个单独的接口。 若要了解详细信息,请参阅 版本化接口
  • 迁移设备。 迁移设备时,设备实例将从一个设备模板交换到另一个设备模板。 IoT Central 处理更改时,设备迁移可能会导致短暂的延迟。 若要了解详细信息,请参阅 跨版本迁移设备

版本号

设备模型和接口都有版本号。 不同的版本号允许模型或接口共享值 @id ,同时提供更新历史记录。 仅当选择对模板或接口进行版本控制或故意更改版本号时,版本号才会递增。 对模板或接口进行重大更改时,应更改版本号。

以下代码片段显示了恒温器设备的设备模型。 设备模型具有单个接口。 可以在@id字段末尾1看到版本号。

{
  "@context": "dtmi:dtdl:context;2",
  "@id": "dtmi:com:example:Thermostat;1",
  "@type": "Interface",
  "displayName": "Thermostat",
  "description": "Reports current temperature and provides desired temperature control.",
  "contents": [
    // ...
  ]
}

若要在 IoT Central UI 中查看此信息,请在设备模板编辑器中选择 “编辑标识 ”:

显示如何查看接口标识以查看版本号的屏幕截图。

对设备模板进行版本控制

为设备模板创建版本:

  1. 转到 “设备模板 ”页。
  2. 选择要版本的设备模板。
  3. 选择页面顶部的“版本”,并为模板设定一个新名称。 IoT Central 建议一个新名称,你可以对其进行编辑。
  4. 选择 创建

现在,你已经创建了一个具有独特标识的新模板,该标识没有附加到任何现有设备上。

对接口进行版本控制

将接口进行版本化:

  1. 转到 “设备模板 ”页。
  2. 选择处于草稿模式的设备模板。
  3. 选择要进行版本编辑的已发布接口。
  4. 选择接口页面顶部的“版本”
  5. 选择 创建

现在,您已创建一个具有唯一标识符的新接口,该接口未与之前的接口版本同步。

在不同版本之间迁移设备

可以创建多个版本的设备模板。 随着时间的推移,通过使用这些设备模板,你将拥有多个连接的设备。 可以将设备从设备模板的一个版本迁移到另一个版本。 以下步骤介绍如何迁移设备:

  1. 转到 “设备” 页。

  2. 选择要迁移到其他版本的设备。

  3. 选择 “迁移”

    显示如何选择开始迁移设备的选项的屏幕截图。

  4. 选择要将设备迁移到的版本的设备模板,然后选择“ 迁移”。

小窍门

您可以使用一个任务将设备组中的所有设备同时迁移至新的设备模板。