Azure IoT Central 设备开发指南
本文适用于设备开发人员。
IoT Central 应用程序使你可以在设备整个生命周期内监视和管理数百万台设备。 本指南适用于要执行以下操作的设备开发人员:实现代码以在连接到 IoT Central 的设备上运行。
设备使用以下基元与 IoT Central 应用程序进行交互:
“遥测”是设备发送给 IoT Central 的数据。 例如,来自内载传感器的温度值流。
“属性”是设备报告给 IoT Central 的状态值。 例如,设备的当前固件版本。 你还可以拥有 IoT Central 可以在设备上更新的可写属性,例如目标温度。
“命令”由 IoT Central 进行调用以控制设备的行为。 例如,IoT Central 应用程序可能会调用命令来重启设备。
解决方案生成器负责在 IoT Central Web UI 中配置仪表板和视图,以直观呈现遥测、管理属性和调用命令。
设备类型
以下部分介绍了可连接到 IoT Central 应用程序的设备的主要类型:
独立设备
独立设备可直接连接到 IoT Central。 独立设备通常会将遥测从其内载或联网的传感器发送到 IoT Central 应用程序, 并且还可以报告属性值、接收可写属性值以及响应命令。
网关设备
网关设备管理连接到 IoT Central 应用程序的一个或多个下游设备。 可使用 IoT Central 配置下游设备与网关设备之间的关系。 若要了解详细信息,请参阅在 Azure IoT Central 应用程序中定义新的 IoT 网关设备类型。
边缘设备
边缘设备直接连接到 IoT Central,但充当其他设备(称为“叶设备”)的中介。 边缘设备通常位于叶设备(边缘设备充当其中介)附近。 使用边缘设备的场景包括:
使无法直接连接到 IoT Central 的设备能够通过边缘设备连接。 例如,叶设备可能使用蓝牙连接到边缘设备,后者随后通过 Internet 连接到 IoT Central。
在将遥测发送到 IoT Central 之前,对其进行聚合。 此方法有助于降低向 IoT Central 发送数据的成本。
本地控制叶设备,避免与通过 Internet 连接到 IoT Central 相关的延迟。
边缘设备还可以发送自己的遥测,报告其属性,并响应可写的属性更新和命令。
IoT Central 仅可看到边缘设备,看不到连接到边缘设备的叶设备。
若要了解详细信息,请参阅将 Azure IoT Edge 设备添加到 Azure IoT Central 应用程序。
连接一个设备
Azure IoT Central 使用 Azure IoT 中心设备预配服务 (DPS) 来管理所有设备注册和连接。
使用 DPS:
可让 IoT Central 支持大规模的设备加入和连接。
可让你离线生成设备凭据并配置设备,而无需通过 IoT Central UI 注册设备。
可让你使用自己的设备 ID 在 IoT Central 中注册设备。 使用自己的设备 ID 可以简化与现有后端办公系统的集成。
可以通过一致的单一方式将设备连接到 IoT Central。
若要了解详细信息,请参阅连接到 Azure IoT Central 和最佳做法。
安全性
设备与 IoT Central 应用程序之间的连接使用共享访问签名或行业标准 X.509 证书来得到保护。
通信协议
设备可用于连接到 IoT Central 的通信协议包括 MQTT、AMQP 和 HTTPS。 在内部,IoT Central 使用 IoT 中心来启用设备连接。 有关 IoT 中心针对设备连接支持的通信协议的详细信息,请参阅选择通信协议。
实现设备
IoT Central 设备模板包括一个模型,用于指定该类型的设备应实现的行为。 行为包括遥测、属性和命令。
提示
可以将模型作为数字孪生定义语言 (DTDL) v2 JSON 文件从 IoT Central 导出。
每个模型都具有唯一的设备孪生模型标识符 (DTMI),如 dtmi:com:example:Thermostat;1
。 当设备连接到 IoT Central 时,它会发送其实现的模型的 DTMI。 然后 IoT Central 可以将正确的设备模板与设备相关联。
IoT 即插即用定义设备在实现 DTDL 模型时应遵循的一组约定。
Azure IoT 设备 SDK 包括对 IoT 即插即用约定的支持。
设备型号
设备模型是使用 DTDL 定义的。 此语言可让你定义:
设备发送的遥测。 定义包括遥测的名称和数据类型。 例如,设备以双精度形式发送温度遥测。
设备报告给 IoT Central 的属性。 属性定义包括其名称和数据类型。 例如,设备将阀门的状态报告为布尔值。
设备可从 IoT Central 接收的属性。 还可以选择将属性标记为可写。 例如,IoT Central 将目标温度以双精度值将发送到设备。
设备响应的命令。 定义包含命令的名称,以及任何参数的名称和数据类型。 例如,设备响应一个指定在重新启动之前要等待的秒数的重新启动命令。
DTDL 模型可以是非组件或多组件模型 :
非组件模型:简单的模型不使用嵌入或级联的组件。 所有遥测、属性和命令都定义为单个默认组件。 有关示例,请参阅恒温器模型。
多组件模型。 包含两个或以上组件的更为复杂的模型。 这些组件包括单个默认组件以及一个或多个附加嵌套组件。 有关示例,请参阅温度控制器模型。
若要了解详细信息,请参阅 IoT 即插即用建模指南
约定
设备在与 IoT Central 交换数据时,应遵循 IoT 即插即用约定。 约定包括:
当 DTMI 连接到 IoT Central 时发送 DTMI。
将格式正确的 JSON 有效负载和元数据发送到 IoT Central。
正确响应 IoT Central 中的可写属性和命令。
遵循组件命令的命名约定。
备注
目前 IoT Central 不完全支持 DTDL“Array”和“Geospatial”数据类型 。
若要了解有关设备与 IoT Central 交换的 JSON 消息格式的详细信息,请参阅遥测、属性和命令有效负载。
若要了解有关 IoT 即插即用约定的详细信息,请参阅 IoT 即插即用约定。
设备 SDK
使用 Azure IoT 设备 SDK 中的一个来实现设备行为。 代码应做到以下几点:
将设备注册到 DPS,并使用 DPS 中的信息连接到 IoT Central 应用程序中的内部 IoT 中心。
公布设备实现的模型的 DTMI。
以设备模型指定的格式发送遥测。 IoT Central 使用设备模板中的模型来确定如何使用遥测,以便实现可视化效果和分析。
同步设备和 IoT Central 之间的属性值。 模型指定属性名称和数据类型,以便 IoT Central 可以显示信息。
为模型中指定的命令实现命令处理程序。 模型指定设备应使用的命令名称和参数。
有关设备模板的角色的详细信息,请参阅什么是设备模板?。
有关一些示例代码,请参阅创建和连接客户端应用程序。
语言和 SDK
有关支持的语言和 SDK 的详细信息,请参阅了解和使用 Azure IoT 中心设备 SDK。