本文将提供有关将英特尔物联网 (IoT) 设备(即支持英特尔® Edison 开发板和英特尔® Curie™ 计算模块等英特尔微控制器的设备)和英特尔® 物联网网关连接至 Microsoft Azure* 物联网套件的通用指南。 设备成功连接,设备数据可用于 Azure 物联网套件,加上 Microsoft 平台即服务(即 Microsoft Azure),将帮助您快速构建物联网应用,以实现您的物联网使用案例。
Azure* 物联网套件和 Microsoft Azure*
Azure* 是一款开放、灵活的企业级云计算平台 - 不断增长的集成服务集合(比如分析、数据库、移动、网络、存储和 Web,支持快速构建可扩展解决方案)。 Microsoft 提供 Azure 物联网套件以作为基于 Azure 平台构建的预配置物联网解决方案的一部分,并支持轻松安全地连接设备。 Azure 支持多种协议,Azure 物联网套件包含各种物联网服务(称为 Azure 物联网服务),以帮助快速构建物联网应用。 这些服务可帮助您手机设备数据、动态分析数据流、保存和查询大型数据集,并分析和查看实时数据和历史数据。 服务包括 Azure 物联网中枢、Azure 机器学习、Azure 流分析、Azure 通知中枢和 Microsoft Power BI。 您可以将这些服务与其他 Azure 服务结合使用,比如面向数据和存储的服务,以将设备数据保存在 Azure Blob 中或使用认知服务构建智能物联网应用。
Azure 物联网中枢是完全托管的双向设备至云连接总线,可提供设备管理、设备安全、身份和 MQ 遥测传输 (MQTT) 协议支持和 HTTP 与高级消息队列协议 (AMQP)。 Azure 物联网中枢通过其设备身份注册表提供完整的设备访问。 它按照设备提供验证,并保护设备与 Azure 物联网中枢之间的双向连接。 Azure 物联网中枢还可通过令牌服务与自定义设备注册表集成,以创建设备范围内的令牌,从而确保安全通信。 此外,Azure 物联网中枢还可提供本地消息存储和专用设备队列,以供各互连设备存储设备安全使用的消息,从而消除创建单独队列以将信息发回至设备所产生的开销。
Azure 机器学习支持您以可见的方式创建支持 R 和 Python* 自定义软件包的机器学习模型。 预构建的算法支持您通过根据要求添加自定义代码,从而构建自定义模型。 Azure 流分析支持每秒实时流处理数百万个事件,从而支持您对比并建立多个实时流的关系、使用熟悉的结构化查询语言 (SQL) 查询数据,并插件实时仪表板和告警。
Azure 通知中枢提供通用界面以便向移动设备发出推送通知。 Power BI 云服务支持您通过强大、灵活的仪表板查看和分析数据。 Azure 流分析可将实时数据馈送至 Power BI,您可以设计仪表板以使用该数据并在运行时进行更新。
通信战略
Azure 物联网中枢支持 HTTP、AMQP 和 MQTT。 英特尔设备(或其他物联网设备)与 Azure 物联网中枢之间的所有通信必须通过这些支持的协议来进行。
MQTT 是基于发布-订阅模式的轻量级面向消息中间件 (MOM)。 该协议经过专门设计,可用于涉及小数据空间的机器对机器通信。 发布-订阅模式包含消息代理,根据消息主题(称为逻辑通信渠道)传达相关客户端之间的交互。 客户端可作为订阅者,使用主题的消息;也可作为发布者,向相应主题发送消息。 在物联网环境下,物联网设备通过 TCT 连接至中央 MQTT 代理,以收发消息。 MQTT 协议广泛用于资源有限、可能遭遇高带宽问题的设备和网络。 更多有关 MQTT 协议的详情请参阅物联网网关协议对比: MQTT 和 Modbus。
AMQP 是另外一种常用的 MOM。 该协议支持基于查询和发送-订阅消息模式,而且可在交易环境下处理消息。 AMQP 通过 TCP 运行,并确保可靠的消息传递。 AMQP 也具备互操作性: 使用不同软件语言的不同客户端系统可与 AMQP 服务器互操作。 从物联网的角度看,传感器设备生成大量数据,它们(以原始数据或处理后数据的形式)被传输至 AMQP 服务器,然后被接收者用来执行监控和分析。
Azure 物联网中枢为 Linux*、Windows*等平台和实时操作系统提供设备软件开发套件 (SDK),有助于更加轻松地在任意设备上使用并连接至 Azure 物联网中枢。 该设备 SDK 是可选方案;设备厂商还可使用应用编程接口 (API) 快速入门或添加自己的设备连接代码,以快速连接至 Azure 平台,例如,使用面向英特尔® Edison 开发板的设备 API 或面向 Linux 设备优化的 C SDK。 GitHub*中提供了 Azure 物联网 SDK 以将设备连接至 Azure 物联网中枢。
图 1 演示了英特尔物联网设备如何与 Azure 物联网中枢通信。
![](http://software.intel.com//sites/default/files/managed/ea/5f/connecting-iot-devices-to-azure.jpg)
将英特尔® Edison 开发板连接至 Microsoft Azure* 物联网中枢
将英特尔® Edison 开发板连接至 Microsoft Azure* 物联网中枢时,可以选择使用 Azure 物联网 SDK 提供的 C、JavaScript* (Node.js*) 或 Java 库。 开发和调试设备代码时,可以根据编程环境下载所需的集成开发环境 (IDE)。 例如,您可以下载适用于 JavaScript 的英特尔® XDK IoT Edition、适用于 C 和 C++的英特尔® System Studio IoT Edition、适用于 Java 的英特尔 System Studio IoT Edition、或支持为英特尔® Edison 开发板和 Arduino 编程的 Arduino* IDE。 然后将所需的 Azure 物联网 SDK 导入到代码中,以连接至 Azure 物联网中枢并向其发送数据(即传感器数据)。
另外一种方案是通过将设备连接至 Azure 物联网中枢页面生成设备客户端连接代码: 然后完成以下步骤:
- 在 Select a Device下方单击 Intel Edison。
- 在 Select a Platform下方单击 Linux。
- 在 Select a language下方单击与您选择的编程语言(C、C#、JavaScript 或 Java)对应的选项卡。
结果代码中显示的 connectionString
值应指向您的 Azure 物联网中枢实例。 您可以找到 Azure 物联网中枢实例配置在 Azure 门户中详细介绍的 connectionString
的值。
英特尔提供 Libmraa* 库,以支持与设备开发板上的传感器和致动器进行交互。 该库可在支持的硬件顶部提供抽象层,以便您以标准的方式读取传感器和致动器的数据,然后创建可用于不同支持平台的便携式代码。
传感器数据读取后,将通过支持网络的 AQMP 或 MQTT 协议传输至 Azure 物联网中枢。 通常将数据转化为 JavaScript Object Notation 等格式,而不是使用 Azure 物联网中枢设备客户端库通过 AQMP 或 MQTT 发送该数据。 如果设备具备该功能,将能够直接连接至互联网、或通过 WiFi* 或以太网连接连接至 Azure 物联网中枢,或连接至连接 Azure 物联网中枢的英特尔网关。
将英特尔® Curie™ 计算模块连接至 Azure 物联网中枢
英特尔® Curie™ 计算模块采用英特尔® Quark™ 系统芯片。它能够为可穿戴设备,以及消费类和工业级前沿产品提供专门设计的完备的低功耗解决方案。 英特尔® Curie™ 模块配备了内置 6 轴组合传感器、蓝牙*低能耗(蓝牙 LE)无线电和低功耗使用模式,非常适合于构建健康和健身监控器等“始终在线”项目。
开始构建原型和开发应用时,您可以使用随英特尔® Curie™ 模块发运的 Arduino 开发板 — 亦称作 Genuino 101* 或 Arduino 101*。 开始开发应用时,您可以使用 Arduino IDE 并编写程序(在 Arduino 中称为 sketch)以读取传感器的数值。
然后使用支持的网络通过 AQMP 或 MQTT 将传感器数据传输至 Azure 物联网中枢。 英特尔® Curie™模块支持蓝牙低能耗。因此一种方案是通过蓝牙该模块连接至智能手机,并将智能手机的蜂窝或 Wi-Fi 连接用作中枢,以连接至互联网。 英特尔® Curie™ 计算模块提供专用蓝牙低能耗库,从而有助于更轻松与其他支持蓝牙的设备通信(阅读英特尔® Curie® 蓝牙低能耗库了解更多详情)。 另一种方案是通过蓝牙将英特尔® Curie™ 计算模块连接至英特尔网关;然后通过网关连接至 Azure 物联网中枢。 当然还有其他的方案,比如将 Wi-Fi 护罩用于 Arduino101 开发板以支持直接将该开发板连接至互联网。 网络战略的选择取决于您的使用案例和最终产品的用法。
注:请随时关注有关支持您在英特尔® Curie™ 模块上运行 RTOS 的软件开发套件 (SDK) 的最新信息。 注册以接收更多信息。
将英特尔网关连接至 Microsoft Azure* 物联网中枢
如果由于协议不兼容问题或要求通过中央实体传输设备的现有数据以满足不同需求(包括过滤边缘数据、将相关数据传输至 Azure 物联网中枢、执行本地分析以获取实时洞察,或确保网络安全与合规性),设备无法直接连接至 Azure* 物联网中枢,此时要求采用英特尔® 物联网网关。
协议不兼容问题常见于连接和集成传统工业设备的过程,或通常使用 ZigBee* 或 Z-Wave* 等协议的家庭自动化设备(比如智能建筑协议)。 采用英特尔网关设备可支持您将这些智能设备连接至英特尔网关,并使用这些工业级设备支持的协议收集数据。 然后通过英特尔网关使用云平台支持的协议将数据传输至云平台。
将英特网关设备连接至 Azure 物联网中枢时,可以选择使用 Azure 物联网 SDK 提供的 C、C++、Python*、JavaScript* 或 Java 库。 连接英特尔网关设备的步骤与将英特尔® Edison 开发板连接至 Azure 物联网中枢的步骤类似。
借助 Microsft Azure* 物联网中枢和 Azure 服务构建物联网应用
当设备数据可用于 Azure 物联网中枢时,您可以开始查看数据。 一般来说,其他 Azure 服务使用数据作进一步处理。 例如,您可以创建 Azure 流分析服务,以在设备消息到达 Azure 物联网中枢时调用。 该服务将使用规则通过类似 SQL 的队列过滤和处理输入设备数据,并将结果输出至存储(必须 Azure Blob)、Azure 事件中枢、甚至 Power BI 以使用灵活的仪表板实现可视化。 Azure 事件中枢相当于中央处理引擎,供多个事件处理程序使用 Azure 事件中枢的消息来执行所需的功能。 例如,事件处理程序可以调用 Azure 机器学习服务分析过滤数据并预测结果,而其他事件处理程序则可调用 Azure 通知中枢服务向移动设备发送通知。
总结
本文为您介绍了如何将英特尔物联网设备连接至 Microsoft Azure* 物联网中枢。 数据提供给 Azure 物联网中枢后,您可以通过编写相应的 Azure 服务使用该数据并快速构建物联网应用,从而实现您的物联网使用案例。