使用 Amazon Web Services* (AWS*) 物联网和英特尔®物联网设备与网关

本文将提供有关将英特尔® 物联网 (IoT) 设备(即支持英特尔® Edison 开发板和英特尔® Curie™ 计算模块等英特尔微控制器的设备)和英特尔®网关连接至 Amazon Web Servives* (AWS*) 物联网平台的通用指南。 设备成功连接,设备数据可用于 AWS 物联网平台,加上使用 Amazon Web Services,将帮助您快速构建物联网应用,以实现您的物联网使用案例。

AWS* 物联网和 Amazon Web Services*

AWS* 物联网是一款可高度扩展的托管云平台,支持设备通过标准 MQTT、WebSocket 和 HTTP 连接安全连接并与 AWS 服务和其他设备交互。 AWS* 物联网有助于更加轻松地构建物联网应用,AWS 物联网平台支持您收集、保存、分析连接设备的海量数据流,并以此为依据采取行动。

AWS 物联网平台包括一套核心功能,如图 1 所示。

AWS Components

图 1. AWS* 物联网组件

 

该平台包含以下组件:

  • 设备网关 AWS 物联网设备网关是一项可高度扩展的托管服务,可支持设备与 AWS 物联网安全通信。 设备网关支持发布-订阅模式,并支持 MQTT、WebSocket 和 HTTP 1.1。 使用这种模式的主要优势是,它可以分离发送者和使用者,支持连接新设备并通过订阅相关主题来接收消息。

  • 设备注册表 设备注册表可保存有关设备的元数据,并用作设备身份存储。 设备注册表通过注册向每台设备分配一个唯一身份。

  • 设备影子 设备影子是 AWS 物联网平台的一项独特功能,可为包含最新状态的设备创建虚拟设备或影子设备。 即使实际物理设备处于离线状态,应用也可通过应用编程接口与影子设备通信。 实际设备联网后,AWS 物联网可自动同步状态,并根据虚拟设备上的变化将此变化推送至实际设备。

  • 规则引擎 AWS 物联网规则引擎是一款高度可扩展引擎,可根据您创建的业务规则将设备的入站消息传输并路由至 AWS 服务。 您可以使用结构化查询语言 (SQL)(比如语法)创建规则,并根据 MQTT 查询并从入站消息中提取所需的数据。 入站消息必须是 JavaScript* Object Notation (JSON) 格式。 如果配置的 AWS 服务正在使用输出,您可以根据类似 SQL 查询过滤消息。 AWS 物联网还可提供多个选项,确保设备与 AWS 物联网平台之间的安全通信。 设备连接可使用您选择的身份通过以下其中任意一种选项实现:数字 (X.509) 证书、通过用户名和密码的 AWS 验证或通过 Amazon Cognito 的设备身份提供商或第三方提供商,比如 Google 或 Facebook。 设备经过验证后,AWS 物联网通过策略处理授权,以支持您根据定义的许可执行设备操作(连接、发布、订阅、接收)。 获得授权后,您将可以执行特定操作。 该流程完成与 AWS 物联网平台的设备通信。 作为物联网应用的一部分,您将能够调用其他 AWS 服务,比如将设备数据从 MQTT 主题延续至 Amazon DynamoDB,或通过 Amazon Kinesis 实时处理大型数据流。 Amazon Kinesis 提供实时数据处理功能,支持应用捕捉设备和其他源的连续数据流,并在运行时对其进行分析,以生成实时仪表板或触发所需行动。 调用 Amazon Kinesis 流实例(或其他 AWS 服务)时,必须在 AWS Identity and Access Management 中定义策略,供规则实例用来支持 AWS 物联网实例安全访问 Amazon Kinesis 流实例。 这种集成可确保设备与 AWS 物联网平台之间以及从 AWS 物联网平台到其他 AWS 服务安全的端到端连接。

通信战略

AWS* 物联网平台支持 MQTT、WebSocket 和 HTTP。 英特尔设备(或其他物联网设备)与 AWS 物联网平台之间的所有通信必须通过这些支持的协议来进行。

MQTT 是基于发布-订阅模式的轻量级面向消息中间件。 该协议经过专门设计,可用于涉及小数据空间的机器对机器通信。 发布-订阅模式包含消息代理,根据消息主题(称为逻辑通信渠道)传达相关客户端之间的交互。 客户端可作为订阅者,使用主题的消息;也可作为发布者,向相应主题发送消息。 在物联网环境下,物联网设备通过 TCT 连接至中央 MQTT 代理,以收发消息。 MQTT 协议广泛用于资源有限、可能遭遇高带宽问题的设备和网络。 更多有关 MQTT 协议的详情请参阅物联网网关协议对比: MQTT 和 Modbus

WebSocket 协议通过单一 TCP 连接支持客户端和服务器保持持续连接。 WebSocket 有助于实现服务器之间的近实时通信和数据传输(无需客户端或服务器进行轮询以支持数据更新),以及在客户端和服务器之间没有显式请求的情况下传输相关更新。 AWS 物联网通过 MQTT 支持 WebSocket

AWS IoT Device SDK 有助于更轻松地通过 MQTT、WebSocket 和 HTTP 将设备安全连接至 AWS 物联网平台。 软件开发套件 (SDK) 目前支持面向 Linux* 的 C SDK、面向 Arduino* 平台的库和 Node.js* 库。 了解更多有关 AWS IoT Device SDK 的信息

图 2 演示了英特尔物联网设备如何与 AWS 物联网平台通信。

IoT Over MQTT

 

图 2. 通过 MQTT 将英特尔® 物联网设备连接至 AWS* 物联网平台

 

将英特尔® Edison 开发板连接至 AWS 物联网

将英特尔® Edison 开发板连接至 AWS* 物联网平台,可以选择使用 AWS 物联网设备 SDK 提供的 C 或 JavaScript* 库。 开发和调试设备代码时,可以根据编程环境下载所需的集成开发环境 (IDE)。 例如,您可以下载适用于 JavaScript 的英特尔® XDK IoT Edition、适用于 C 和 C++的英特尔® System Studio IoT Edition、或支持为英特尔® Edison 开发板和 Arduino 编程的 Arduino IDE。 然后将所需的 AWS 物联网设备 SDK 库导入到代码中,以连接至 AWS 物联网平台并向其发送数据(即传感器数据)。

英特尔提供 libmraa 库,以支持与设备开发板上的传感器和致动器进行交互。 该库可在支持的硬件顶部提供抽象层,以便您以标准的方式读取传感器和致动器的数据,然后创建可用于不同支持平台的便携式代码。

传感器数据读取后,将通过支持网络的 MQTT(或 WebSocket)传输至 AWS 物联网平台。 通常将数据转化为 JSON 等格式,并通过 MQTT(或 WebSocket)使用 AWS 物联网设备 SDK 库发送该数据。 如果设备具备该功能,将能够直接连接至互联网、或通过 Wi­Fi 或以太网连接连接至 AWS 物联网平台,或连接至连接 AWS 物联网平台的英特尔网关。 通常在每个 X 间隔后读取数据,并发布至 AWS 物联网平台中所需的主题。

连接 AWS 物联网平台时,必须在注册表中注册设备、创建证书、分配策略并使用相关 SDK。 以下高级步骤适用于注册任何类型带有 AWS 物联网平台的设备(比如英特尔® Edison 开发板、英特尔® Curie™ 模块、网关):

  1. 在 Thing Registry 中创建设备。

  2. 创建证书和策略以支持安全通信。

  3. 连接证书和设备。

  4. 生成 SDK。

关于这些步骤,您可以使用 AWS 管理控制台或 AWS 命令行界面命令。 如欲了解有关如何注册设备的详细说明,请参阅在 Thing Registry 中创建设备

注: 开始将英特尔物联网设备连接至 AWS 物联网平台时,您可以购买英特尔® Edison 开发板和 Grove* 室内环境套件,通过 AWS 供电,并开始快速某件连接至云环境的项目。

将英特尔® Curie™ 计算模块连接至 AWS* 物联网平台

英特尔® Curie™ 计算模块采用英特尔® Quark™ 系统芯片。它能够为可穿戴设备,以及消费类和工业级前沿产品提供专门设计的完备的低功耗解决方案。 英特尔® Curie™ 模块配备了内置 6 轴组合传感器、蓝牙*低能耗(蓝牙 LE)无线电和低功耗使用模式,非常适合于构建健康和健身监控器等“始终在线”项目。

开始构建原型和开发应用时,您可以使用随英特尔® Curie™ 模块发运的 Arduino 开发板 — 亦称作 Genuino 101* 或 Arduino 101*。 开始开发应用时,您可以使用 Arduino IDE 并编写程序(在 Arduino 中称为 sketch)以读取传感器的数值。

然后使用支持的网络通过 MQTT 将传感器数据传输至 AWS* 物联网平台。 英特尔® Curie™ 模块支持蓝牙低能耗。因此一种方案是通过蓝牙该模块连接至智能手机,并将智能手机的蜂窝或 Wi-Fi 连接用作中枢,以连接至互联网。 英特尔® Curie™ 计算模块提供专用蓝牙低能耗库,从而有助于更轻松与其他支持蓝牙的设备通信(阅读英特尔® Curie® 蓝牙低能耗库了解更多详情)。 另一种方案是通过蓝牙将英特尔® Curie™ 计算模块连接至英特尔网关;然后通过网关连接至 AWS* 物联网平台。 当然还有其他的方案,比如将 Wi-Fi 护罩用于 Arduino101 开发板以支持直接将该开发板连接至互联网。 网络战略的选择取决于您的使用案例和最终产品的用法。

注: 注:请随时关注有关支持您在英特尔® Curie 模块上运行 RTOS 的软件开发套件 (SDK) 的最新信息。 注册以接收更多信息:https://software.intel.com/zh-cn/iot/hardware/curie

将英特尔网关连接至 AWS* 物联网平台

如果由于协议不兼容问题或要求通过中央实体传输设备的现有数据以满足不同需求(包括过滤边缘数据、将相关数据传输至 AWS* 物联网平台、执行本地分析以获取实时洞察,或确保网络安全与合规性),设备无法直接连接至 AWS 物联网平台,此时要求采用英特尔® 物联网网关。

协议不兼容问题常见于连接和集成传统工业设备的过程,或通常使用 ZigBee* 或 Z-Wave* 等协议的家庭自动化设备(比如智能建筑协议)。 采用英特尔网关设备可支持您将这些智能设备连接至英特尔网关,并使用这些工业级设备支持的协议收集数据。 然后通过英特尔网关使用云平台支持的协议将数据传输至云平台。

将英特网关设备连接至 AWS 物联网平台时,可以选择使用 AWS 物联网设备 SDK 提供的 C、Python* 或 JavaScript* 库。 连接英特尔网关设备的步骤与将英特尔® Edison 开发板连接至 AWS 物联网平台的步骤类似。

借助 AWS 物联网平台和 AWS 服务构建物联网应用

当设备数据可用于 AWS* good IoT 平台时,您可以开始查看数据。 一般来说,其他 AWS 服务使用数据作进一步处理。因此您可以借助规则引擎服务创建规则,以将入站数据路由至一项或多项 AWS 服务以作进一步处理。 您可以创建多项规则,例如,将消息路由至 Amazon Kinesis 流实例以供实时处理的规则,或直接将入站数据插入 Amazon DynamoDB 表格以作历史分析和离线分析的规则。

多个应用可并行接收和处理 Amazon Kinesis 数据流。 Amazon Kinesis 流实例的数据可传输至 AWS Lambda(支持在 AWS 架构中运行自定义代码的计算服务)。 您还可以根据物联网应用添加自定义代码。 例如,您可以调用 Amazon 机器学习服务预测结果、执行您自己的专用代码,或使用 Amazon 推送通知中枢服务向移动设备发送通知。

总结

本文为您介绍了如何将英特尔物联网设备连接至 AWS* 物联网平台。 数据提供给 AWS 物联网平台后,您可以通过编写相应的 AWS 服务使用该数据并快速构建物联网应用,从而实现您的物联网使用案例。

Для получения подробной информации о возможностях оптимизации компилятора обратитесь к нашему Уведомлению об оптимизации.
Возможность комментирования русскоязычного контента была отключена. Узнать подробнее.