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

IoT 设备开发

此概述介绍有关开发连接到典型 Azure IoT 解决方案的设备的关键概念。 每个部分都包含指向提供进一步详细信息和指导的内容的链接。

下图显示了典型 IoT 解决方案中组件的高级视图。 本文重点介绍示意图中显示的设备和网关。

关系图显示了高级别 IoT 解决方案体系结构,其中突出显示了设备连接区域。

在 Azure IoT 中,设备开发人员编写代码以在解决方案中的设备上运行。 此代码通常:

  • 与云终结点建立安全连接。
  • 将从附加传感器收集的遥测数据发送到云。
  • 管理设备状态,并将该状态与云同步。
  • 响应从云发送的命令。
  • 启用从云安装软件更新。
  • 使设备在断开与云的连接时保持正常运行状态。

设备类型

IoT 设备可以分为两大类,即微控制器 (MCU) 和微处理器 (MPU):

  • 与 MPU 相比,MCU 成本更低,操作更简单。
  • MCU 包含许多功能,如内存、接口和芯片本身的 I/O。 MPU 将从支持芯片中的组件访问此功能。
  • MCU 通常使用实时操作系统 (RTOS) 或运行裸机(无操作系统),并提供对外部事件的实时响应和高度确定的反应。 MPU 通常运行常规用途操作系统(例如 Windows、Linux 或 macOS),并提供不确定的实时响应。 通常无法保证何时完成任务。

专用硬件和操作系统的示例包括:

Windows for IoT 是适用于 MPU 的 Windows 嵌入式版本,具有云连接,可让你创建安全的设备以及轻松预配和管理。

Eclipse ThreadX 是一个实时操作系统,适用于由 MCU 提供支持的 IoT 和边缘设备。 Eclipse ThreadX 旨在支持高度受限设备,这些设备由电池供电,并且闪存容量不到 64 KB。

Azure Sphere 是一个安全的高级应用程序平台,具有针对互连设备的内置通信和安全功能。 它包括一个安全的、连接的跨接 MCU、一个定制的基于 linux 的高级操作系统和一个基于云的安全服务(提供连续的可续订安全性)。

基元

Azure IoT 设备可以使用以下基元与云交互:

  • 设备到云消息,用于将时序遥测数据发送到云。 例如,从连接到设备的传感器收集的温度数据。
  • 媒体文件(如捕获的图像和视频)的文件上传。 间歇性连接的设备可以发送遥测批处理。 设备可以压缩上传以节省带宽。
  • 用于与云共享和同步状态数据的设备孪生。 例如,设备可以使用设备孪生来将它控制的阀门的当前状态报告给云,并从云中接收所需的目标温度。
  • 用于表示数字世界中设备的数字孪生体。 例如,数字孪生体可以表示设备的物理位置、功能以及与其他设备的关系。
  • 用于从云接收命令的直接方法。 直接方法可以具有参数并返回响应。 例如,云可以调用直接方法来请求设备在 30 秒内重启。
  • 用于从云接收单向通知的云到设备消息。 例如,更新已就绪,可以下载的通知。

若要了解详细信息,请参阅设备到云通信指南云到设备通信指南

设备 SDK

设备 SDK 提供高级抽象,使你无需了解基础通信协议即可使用基元。 设备 SDK 还处理与云建立安全连接和对设备进行身份验证的详细信息。

对于 MPU 设备,设备 SDK 适用于以下语言:

对于 MCU 设备,请参阅:

示例和指导

所有设备 SDK 都包含示例,这些示例演示如何使用 SDK 连接到云、发送遥测数据以及使用其他基元。

IoT 设备开发站点包括教程和操作指南,介绍如何为一系列设备类型和方案实施代码。

可以在代码示例浏览器中找到更多示例。

若要详细了解实现自动重新连接到终结点的过程,请参阅管理设备重新连接以创建可复原的应用程序

不使用设备 SDK 的设备开发

虽然建议你使用设备 SDK 之一,但在某些情况下,你可能不希望这样做。 在这些方案中,设备代码必须直接使用 IoT 中心和设备预配服务 (DPS) 支持的通信协议之一。

有关详细信息,请参阅:

设备建模

通过 IoT 即插即用,解决方案构建者无需进行任何手动配置即可将 IoT 设备集成到解决方案中。 IoT 即插即用的核心是设备模型,设备通过设备模型将其功能告知支持 IoT 即插即用的应用程序(如 IoT Central)。 该模型被构造为一组元素,这些元素定义以下内容:

  • 属性:表示设备或其他实体的只读或可写状态。 例如,设备序列号可能是只读属性,而恒温器上的目标温度可能是可写属性。
  • 遥测:设备发出的数据,包括常规的传感器读数流、偶发性错误或信息消息。
  • 命令:描述可在设备上执行的功能或操作。 例如,命令可以重新启动网关,或使用远程相机拍照。

你可以在接口中对这些元素进行分组,以在模型之间重复使用,从而使协作更加轻松并加快开发速度。

该模型是使用数字孪生定义语言 (DTDL) 指定的。

IoT 即插即用、建模和 DTDL 的使用是可选的。 无需使用 IoT 即插即用或建模即可使用 IoT 设备基元。 Azure 数字孪生服务还使用 DTDL 模型基于建筑物或工厂等环境的数字模型创建孪生图。

作为设备开发人员,在实施 IoT 即插即用设备时,需要遵循一组约定。 这些约定提供了使用设备 SDK 中可用的基元在代码中实施设备模型的标准方法。

若要了解更多信息,请参阅以下文章:

容器化设备代码

如果使用容器(如 Docker)运行设备代码,则可使用容器基础结构的功能将代码部署到设备。 容器还让你能够为代码定义安装了所有必需库和包版本的运行时环境。 使用容器可以更轻松地部署更新和管理 IoT 设备的生命周期。

Azure IoT Edge 在容器中运行设备代码。 可以使用 Azure IoT Edge 将代码模块部署到设备。 若要了解详细信息,请参阅开发自己的 IoT Edge 模块

提示

Azure IoT Edge 支持多种方案。 除了在容器中运行 IoT 设备代码外,还可以使用 Azure IoT Edge 在设备上运行 Azure 服务并实施现场网关。 有关详细信息,请参阅什么是 Azure IoT Edge?

开发工具

下表列出了一些可用的 IoT 开发工具:

工具 说明
Azure IoT 中心(VS Code 扩展) 使用此 VS Code 扩展,可以从 VS Code 中管理 IoT 中心资源和设备。
Azure IoT 资源管理器 借助此跨平台工具,可以从桌面应用程序管理 IoT 中心资源和设备。
适用于 Azure CLI 的 Azure IoT 扩展 此 CLI 扩展包括 az iot device simulateaz iot device c2d-messageaz iot hub monitor-events 等命令,可帮助你测试与设备的交互。

后续步骤

现在,你已了解 Azure IoT 解决方案中的设备开发概述,建议的后续步骤包括: