你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn 。
IoT 资产和设备开发
本文内容
此概述介绍有关开发连接到典型 Azure IoT 解决方案的资产与设备的关键概念。 每个部分都包含指向提供进一步详细信息和指导的内容的链接。 通常,设备直接连接到基于云的服务(例如 IoT 中心),而资产则连接到环境中基于边缘的服务,例如 Azure IoT 操作。 本文包含有关资产和设备的信息。
下图显示了典型基于边缘的 IoT 解决方案中组件的高级别视图。 本文重点介绍关系图中显示的资产和连接器:
资产通常具有实现标准协议的内置固件。 例如,机器人臂可能是 OPC UA 客户端,安全视频摄像头可能实现 ONVIF。 Azure IoT 操作包括各种连接器,这些连接器可以使用这些协议与资产通信,并将来自资产的消息转换为 MQTT 消息。 一些资产可以接收支持你对其执行操作的消息,例如:
平移或倾斜安全摄像头。
更改机器人臂上的日志记录级别。
启动固件更新。
可以创建自己的自定义连接器,以连接到使用 Azure IoT 操作本机不支持的协议的资产。
下图显示了典型基于云的 IoT 解决方案中组件的高级别视图。 本文重点介绍关系图中显示的设备和网关:
在 Azure IoT 中,设备开发人员编写代码以在解决方案中的设备上运行。 此代码通常:
与云终结点建立安全连接。
将从附加传感器收集的遥测数据发送到云。
管理设备状态,并将该状态与云同步。
响应从云发送的命令。
启用从云安装软件更新。
使设备在断开与云的连接时保持正常运行状态。
资产和设备类型
IoT 解决方案可以包含许多类型的资产 和设备 。 你通常会在基于云的解决方案找到设备,并在基于边缘的解决方案中找到资产。 也有可能存在同时包含设备和资产的混合解决方案。
基于边缘的解决方案中的示例资产包括:
机器人臂、传送带和电梯。
工业 CNC 机器、车床、锯子和钻头。
医疗诊断成像机。
安保视频摄像机。
软件或软件组件
可编程逻辑控制器。
这些资产通常具有实现标准协议的内置固件。 例如,机器人臂可能是 OPC UA 客户端,安全摄像机可能实现 ONVIF 协议。 在基于边缘的解决方案中,可使用专用连接器连接到这些资产,并将来自它的的消息转换为通用格式。
对于资产,不存在直接等效于设备开发人员角色的角色。 相反,操作员可以将连接器配置为连接到资产。 但你可能需要开发自定义连接器,以连接到使用基于边缘的解决方案本机不支持的协议的资产。
基于云的解决方案中的示例设备包括:
远程油泵上的压力传感器。
空调设备中的温度和湿度传感器。
电梯中的加速计。
房间中的感测器。
这些设备通常是使用微控制器 (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。
FreeRTOS 是用于嵌入式设备的实时操作系统。 可以将 FreeRTOS 与适用于 FreeRTOS 的 Azure IoT 中间件配合使用,以将设备连接到 Azure IoT。 有关用于设备开发的 RTOS 选项的概述,请参阅 C SDK 和嵌入式 C SDK 使用方案 。
Azure Sphere(集成) 是一个安全的高级应用程序平台,具有面向已连接 Internet 的设备的内置通信和安全功能。 它包括一个安全的、连接的跨接 MCU、一个定制的基于 linux 的高级操作系统和一个基于云的安全服务(提供连续的可续订安全性)。
设备基元
设备开发人员通常在设备代码中实现以下基元以与云交互:
设备到云 消息,用于将时序遥测数据发送到云。 例如,从连接到设备的传感器收集的温度数据。
媒体文件(如捕获的图像和视频)的文件上传 。 间歇性连接的设备可以发送遥测批处理。 设备可以压缩上传以节省带宽。
用于与云共享和同步状态数据的设备孪生 。 例如,设备可以使用设备孪生来将它控制的阀门的当前状态报告给云,并从云中接收所需的目标温度。
用于表示数字世界中设备的数字孪生体 。 例如,数字孪生体可以表示设备的物理位置、功能以及与其他设备的关系。
用于从云接收命令的直接方法 。 直接方法可以具有参数并返回响应。 例如,云可以调用直接方法来请求设备在 30 秒内重启。
用于从云接收单向通知的云到设备 消息。 例如,更新已就绪,可以下载的通知。
若要了解详细信息,请参阅设备到云通信指南 和云到设备通信指南 。
SDK 和库
设备 SDK 提供高级抽象,使你无需了解基础通信协议即可使用基元。 设备 SDK 还处理与云建立安全连接和对设备进行身份验证的详细信息。
对于 MPU 设备,设备 SDK 适用于以下语言:
对于 MCU 设备,请参阅:
示例和指导
所有设备 SDK 都包含示例,这些示例演示如何使用 SDK 连接到云、发送遥测数据以及使用其他基元。
IoT 设备开发 站点包括教程和操作指南,介绍如何为一系列设备类型和方案实施代码。
可以在代码示例浏览器 中找到更多示例。
不使用设备 SDK 的设备开发
虽然建议你使用设备 SDK 之一,但在某些情况下,你可能不希望这样做。 在这些方案中,设备代码必须直接使用 IoT 中心和设备预配服务 (DPS) 支持的通信协议之一。
有关详细信息,请参阅:
建模和架构
设备和资产模型定义了设备和资产与云交换的数据。 模型支持一系列低代码或无代码方案,以便将设备和资产与 IoT 解决方案集成。
在基于边缘的解决方案中,操作员可将连接器配置为连接到资产。 此配置包括资产数据和云架构之间的映射。 例如,使用 OPC UA 连接器,操作员可将 OPC UA 节点 ID 映射到与 MQTT 代理交换的 JSON 消息中的标记和事件。 以下屏幕截图显示了数字操作体验 Web UI 中的一个示例,它定义了资产的两个此类映射:
在解决方案的其他位置,操作员可以直接引用“温度” 和“标记 10” 标记,而无需知道 OPC UA 节点 ID 的详细信息。
在基于云的解决方案中,借助 IoT 即插即用,解决方案构建者无需进行任何手动配置即可将 IoT 设备与其解决方案相集成。 IoT 即插即用的核心是设备模型,设备通过设备模型将其功能告知支持 IoT 即插即用的应用程序(如 IoT Central)。 该模型被构造为一组元素,这些元素定义以下内容:
属性 :表示设备或其他实体的只读或可写状态。 例如,设备序列号可能是只读属性,而恒温器上的目标温度可能是可写属性。
遥测 :设备发出的数据,包括常规的传感器读数流、偶发性错误或信息消息。
命令 :描述可在设备上执行的功能或操作。 例如,命令可以重新启动网关,或使用远程相机拍照。
你可以在接口中对这些元素进行分组,以在模型之间重复使用,从而使协作更加轻松并加快开发速度。
该模型是使用数字孪生定义语言 (DTDL) 指定的。
IoT 即插即用、建模和 DTDL 的使用是可选的。 无需使用 IoT 即插即用或建模即可使用 IoT 设备基元。 Azure 数字孪生 服务还使用 DTDL 模型基于建筑物或工厂等环境的数字模型创建孪生图。
作为设备开发人员,在实施 IoT 即插即用设备时,需要遵循一组约定。 这些约定提供了使用设备 SDK 中可用的基元在代码中实施设备模型的标准方法。
若要了解更多信息,请参阅以下文章:
容器化
容器化是在轻型隔离环境中打包和运行代码的方法。 容器是可移植的,并且可在支持容器运行时的任何平台上运行。 容器是打包和部署代码的良好方法,因为它们为代码提供了一致的运行时环境。 运行时环境通常包括代码运行所需的服务、库和包。
Azure IoT 操作会容器化其在边缘上运行的所有连接器、代理和其他组件。 Azure IoT 操可部署到 Kubernetes 群集,它是容器业务流程平台。 将创建的任何自定义连接器或其他组件部署到 Kubernetes 群集。
如果解决方案使用 Azure IoT Edge 作为 IoT 中心的基于边缘的网关,则可将其视为一种混含解决方案,其中同时包含了基于边缘和基于云的解决方案的元素。
如果使用容器(如 Docker)运行设备代码,则可使用容器基础结构的功能将代码部署到设备。 容器还让你能够为代码定义安装了所有必需库和包版本的运行时环境。 使用容器可以更轻松地部署更新和管理 IoT 设备的生命周期。
Azure IoT Edge 在容器中运行设备代码。 可以使用 Azure IoT Edge 将代码模块部署到设备。 若要了解详细信息,请参阅开发自己的 IoT Edge 模块 。
提示
Azure IoT Edge 支持多种方案。 除了在容器中运行 IoT 设备代码外,还可以使用 Azure IoT Edge 在设备上运行 Azure 服务并实施现场网关 。 有关详细信息,请参阅什么是 Azure IoT Edge?
下表列出了一些可用的 IoT 设备开发工具: