65.9K
CodeProject 正在变化。 阅读更多。
Home

​将 Microsoft Azure IoT 套件与 Intel® IoT 设备和网关结合使用

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2016 年 6 月 20 日

CPOL

10分钟阅读

viewsIcon

11967

本文提供了将任何英特尔物联网 (IoT) 设备(即支持英特尔微控制器的设备,如英特尔® 爱迪生开发板和英特尔® Curie™ 计算模块)和英特尔® IoT 网关连接到 Microsoft Azure IoT 套件的通用指南。

获取新的 Intel® IoT 开发套件,这是一个完整的硬件和软件解决方案,允许开发人员使用 Intel® Galileo 和 Intel® Edison 开发板创建令人兴奋的新解决方案。访问英特尔® 物联网开发者专区

本文提供了将任何英特尔物联网 (IoT) 设备(即支持英特尔微控制器的设备,如英特尔® 爱迪生开发板和英特尔® Curie™ 计算模块)和英特尔® IoT 网关连接到 Microsoft Azure* IoT 套件的通用指南。当设备连接并设备数据可用于 Azure IoT 套件时,结合 Microsoft 的平台即服务(即 Microsoft Azure)产品,您可以快速构建 IoT 应用程序以实现您的 IoT 用例。

Azure* IoT 套件和 Microsoft Azure*

Azure* 是一个开放、灵活的企业级云计算平台——一个不断增长的集成服务集合,例如分析、数据库、移动、网络、存储和 Web,用于快速构建可扩展的解决方案。Microsoft 提供 Azure IoT 套件作为其基于 Azure 平台构建的预配置 IoT 解决方案的一部分,并使其易于安全地连接设备。Azure 支持广泛的协议,Azure IoT 套件由一组 IoT 服务(称为 Azure IoT 服务)组成,以帮助快速构建 IoT 应用程序。这些服务使您能够从设备收集数据、分析运动中的数据流、存储和查询大数据集以及分析和可视化实时和历史数据。服务包括 Azure IoT Hub、Azure Machine Learning、Azure Stream Analytics、Azure Notification Hubs 和 Microsoft Power BI。您可以将这些服务与其他 Azure 服务(例如数据和存储服务)结合使用,将设备数据存储在 Azure Blob 中或使用认知服务构建智能 IoT 应用程序。

Azure IoT Hub 是一个完全托管的双向设备到云连接总线,提供设备管理、设备安全、身份和 MQ 遥测传输 (MQTT) 协议支持以及 HTTP 和高级消息队列协议 (AMQP)。Azure IoT Hub 通过其设备身份注册表提供完整的设备访问。它提供每个设备的身份验证以及设备与 Azure IoT Hub 之间的安全双向连接。Azure IoT Hub 还可以通过令牌服务与您的自定义设备注册表集成,以创建设备范围的令牌以进行安全通信。此外,Azure IoT Hub 提供消息的本地存储和每个连接设备的专用设备队列,用于存储设备安全消费的设备消息,从而消除了为将消息发送回设备而创建单独队列的开销。

Azure Machine Learning 为您提供了一种可视化的方式来构建支持 R 和 Python* 自定义包的机器学习模型。预构建的算法使您能够通过根据您的要求添加自定义代码来构建自定义模型。Azure Stream Analytics 提供每秒数百万事件的实时流处理,使您能够比较和关联多个实时流,使用熟悉的结构化查询语言 (SQL) 查询数据,并创建实时仪表板和警报。

Azure Notification Hubs 提供了一个通用界面,用于向移动设备发送推送通知。Power BI 云服务允许您在强大灵活的仪表板中可视化和分析数据。Azure Stream Analytics 可以将实时数据事件馈送到 Power BI,您可以设计使用数据的仪表板,并可以在运行时更新。

通信策略

Azure IoT Hub 支持 HTTP、AMQP 和 MQTT。英特尔设备(或任何其他 IoT 设备)与 Azure IoT Hub 之间的所有通信都必须通过这些受支持的协议进行。

MQTT 是一种基于发布-订阅模型的轻量级消息导向中间件 (MOM)。该协议旨在用于涉及小数据足迹的机器到机器通信。发布-订阅模型由一个消息代理组成,该代理根据消息的主题(用于通信的命名逻辑通道)协调感兴趣客户端之间的交互。客户端可以充当订阅者以从主题消费消息,或充当发布者以将消息发布到相应的主题。在 IoT 的上下文中,IoT 设备通过 TCP 连接到中央 MQTT 代理以发送或接收消息。MQTT 协议广泛用于资源受限的设备和网络,其中高带宽是一个问题。有关 MQTT 协议的详细信息,请查看IoT 网关协议比较:MQTT 和 Modbus

AMQP 是另一种流行的 MOM。该协议支持基于队列和发布-订阅消息模型,并且可以在事务上下文中处理消息。AMQP 通过 TCP 运行并确保可靠的消息传递。AMQP 还具有互操作性:具有不同软件语言的不同客户端系统可以与 AMQP 服务器互操作。从 IoT 的角度来看,生成大量数据的传感器设备流式传输到 AMQP 服务器(无论是原始形式还是处理形式),然后由接收器消费以执行监控和分析。

Azure IoT Hub 为 Linux*、Windows* 和实时操作系统等平台提供了设备软件开发套件 (SDK),这使得在任何设备上开始并连接到 Azure IoT Hub 变得更加容易。设备 SDK 是可选的;设备制造商也可以使用应用程序编程接口 (API) 快速入门或添加自己的设备连接代码以连接到 Azure 平台——例如,为 Intel® Edison 开发板使用 JavaScript* 设备 API,或为 Linux 设备使用优化的 C SDK。Azure IoT SDK 可在 GitHub* 中找到,用于将设备连接到 Azure IoT Hub。

图 1 说明了英特尔 IoT 设备如何与 Azure IoT Hub 通信。

图 1. 通过高级消息队列协议或 MQ 遥测传输将 Intel® 物联网设备连接到 Azure* IoT Hub

将 Intel® Edison 开发板连接到 Microsoft Azure* IoT Hub

要将 Intel® Edison 设备连接到 Microsoft Azure* IoT Hub,您可以选择 Azure IoT SDK 提供的 C、JavaScript* (Node.js*) 或 Java* 库。为了开发和调试设备代码,您可以根据编程环境下载所需的集成开发环境 (IDE)。例如,您可以下载 Intel® XDK IoT Edition 用于 JavaScript,Intel® System Studio IoT Edition 用于 C 和 C++,Intel System Studio IoT Edition 用于 Java,或 Arduino* IDE 用于使用 Arduino 编程 Intel® Edison 开发板。然后,您可以将所需的 Azure IoT SDK 导入您的代码以连接到 Azure IoT Hub 并发送数据(即传感器数据)到 Azure IoT Hub。

另一种选择是从将您的设备连接到 Azure IoT Hub 页面生成设备客户端连接代码。然后,完成以下步骤:

  1. 选择设备下,单击Intel Edison
  2. 选择平台下,单击Linux
  3. 选择语言下,单击与您选择的编程语言(C、C#、JavaScript 或 Java)对应的选项卡。

结果代码中出现的 connectionString 值应指向您的 Azure IoT Hub 实例。您可以在 Azure 门户中的 Azure IoT Hub 实例配置详细信息中找到 connectionString 的值。

为了与设备板上的传感器和执行器交互,英特尔提供了 Libmraa* 库。该库在支持的硬件之上提供了一个抽象层,以便您可以以标准方式从传感器和执行器读取数据,然后创建可在支持的平台之间移植的代码。

读取传感器数据后,它将通过 AQMP 或 MQTT 通过支持的网络传输到 Azure IoT Hub。您通常会将数据转换为 JavaScript 对象表示法等格式,并使用 Azure IoT Hub 设备客户端库通过 AQMP 或 MQTT 发送。如果设备具备能力,它可以直接通过 Wi-Fi* 或以太网连接到 Internet 和 Azure IoT Hub,或者连接到连接到 Azure IoT Hub 的英特尔网关。

将 Intel® Curie™ 计算模块连接到 Azure IoT Hub

Intel® Curie™ 模块使用 Intel® Quark™ 片上系统,为可穿戴设备以及消费和工业边缘产品提供完整的低功耗解决方案。Intel® Curie™ 模块内置六轴组合传感器、蓝牙* 低功耗无线电和低功耗使用,使其成为构建“始终在线”项目(如健康和健身监测器)的完美开发板。

要开始原型设计和开发应用程序,您可以使用 Arduino* 开发板——也称为 Genuino 101* 或 Arduino 101*——它随附 Intel® Curie™ 模块。要开始开发,您可以使用 Arduino IDE 并编写程序(在 Arduino 中称为草图)来读取传感器值。

然后,传感器数据通过支持的网络,使用 AQMP 或 MQTT 传输到 Azure IoT Hub。Intel® Curie™ 模块支持蓝牙低功耗,因此一个选项是将模块通过蓝牙连接到智能手机,并使用智能手机的蜂窝网络或 Wi-Fi 连接作为集线器连接到 Internet。Intel® Curie™ 模块提供专用的蓝牙低功耗库,这使得与其他支持蓝牙的设备通信变得更加容易(有关详细信息,请参阅Intel® Curie™ 蓝牙低功耗库)。另一个选项是将 Intel® Curie™ 模块通过蓝牙连接到 Intel 网关,然后 Intel 网关连接到 Azure IoT Hub。还有其他选项可用,例如使用带有 Arduino 101 开发板的 Wi-Fi 扩展板,使开发板能够直接连接到 Internet。您的网络策略选择取决于用例和最终产品的使用方式。

注意:请继续关注软件开发套件 (SDK),它将允许您在 Intel® Curie™ 模块上运行 RTOS。注册以接收更多信息

将英特尔网关连接到 Microsoft Azure* IoT Hub

Intel® IoT 网关技术主要在以下情况下需要:设备由于协议不兼容问题而无法直接连接到 Azure* IoT Hub,或者现有设备数据需要通过中央实体进行各种要求,例如在边缘过滤数据并将相关数据传输到 Azure IoT Hub,执行本地分析以获取实时洞察,或确保网络安全和合规性。

协议不兼容问题在连接和集成旧版工业设备或家庭自动化设备(例如智能建筑解决方案)时尤为常见,这些设备通常采用 ZigBee* 或 Z-Wave* 等协议。使用英特尔网关设备,您可以选择将这些设备连接到英特尔网关,并使用这些工业设备支持的协议收集数据。然后,数据通过云平台支持的协议从英特尔网关传输到云平台。

要将英特尔网关设备连接到 Azure IoT Hub,您可以选择 Azure IoT SDK 提供的 C 或 C++、Python*、JavaScript* 或 Java* 库。连接英特尔网关设备所需的步骤与将 Intel® Edison 开发板连接到 Azure IoT Hub 的步骤类似。

使用 Microsoft Azure* IoT Hub 和 Azure 服务构建 IoT 应用程序

当设备数据可用于 Azure* IoT Hub 时,您可以开始将其可视化。通常,其他 Azure 服务会消费数据以进行进一步处理。例如,您可以创建 Azure Stream Analytics 服务,该服务在设备数据到达 Azure IoT Hub 后调用。该服务将使用规则通过类似 SQL 的查询过滤和处理输入设备数据,并将结果输出到存储(如 Azure Blob)、Azure Event Hubs,甚至 Power BI 以使用灵活的仪表板进行可视化。Azure Event Hubs 充当中央处理引擎,多个事件处理程序可以从 Azure Event Hubs 消费消息以执行所需的功能。例如,事件处理程序可以调用 Azure Machine Learning 服务来分析过滤后的数据并预测结果,而另一个事件处理程序可以调用 Azure Notification Hub 服务来向移动设备发送通知。

摘要

本文向您展示了如何将 Intel IoT 设备连接到 Microsoft Azure* IoT Hub。当您的数据可用于 Azure IoT Hub 时,您可以消费它并组合相应的 Azure 服务以快速构建 IoT 应用程序,从而实现您的 IoT 用例。

© . All rights reserved.