使用 Amazon Web Services (AWS) IoT 与 Intel® IoT 设备和网关
本文提供了将任何Intel®物联网(IoT)设备(即支持Intel微控制器(例如Intel®Edison开发板和Intel®Curie™计算模块)的设备)和Intel网关连接到Amazon Web Services (AWS) IoT平台的通用指南。
获取全新的Intel® IoT开发套件,这是一个完整的硬件和软件解决方案,允许开发人员使用Intel® Galileo和Intel® Edison开发板创建令人兴奋的新解决方案。访问Intel®物联网开发者专区。
本文提供了将任何Intel®物联网(IoT)设备(即支持Intel微控制器(例如Intel®Edison开发板和Intel®Curie™计算模块)的设备)和Intel网关连接到Amazon Web Services* (AWS*) IoT平台的通用指南。当设备连接并从设备获取数据到AWS IoT平台后,结合Amazon Web Services,您可以快速构建IoT应用程序以实现您的IoT用例。
AWS* IoT和Amazon Web Services*
AWS* IoT是一个高度可扩展、托管的云平台,允许设备通过标准化的MQTT、WebSocket和HTTP连接安全地连接并与AWS服务和其他设备进行交互。AWS IoT使得构建IoT应用程序更加容易,并且AWS IoT平台允许您收集、存储、分析和对来自连接设备的大量数据流采取行动。
AWS IoT平台由一组核心功能组成,如图1所示。
该平台包括以下组件
-
设备网关 – AWS IoT设备网关是一个高度可扩展的托管服务,使设备能够安全地与AWS IoT通信。设备网关支持发布-订阅模型,并提供对MQTT、WebSocket和HTTP 1.1的支持。使用这种模式的主要优点是它将发送方和消费者解耦,从而允许新设备通过订阅相关主题来连接并开始接收消息。
-
设备注册表 – 设备注册表存储设备的元数据,并充当设备的身份存储。设备注册表在注册期间为每个设备分配一个唯一的身份。
-
设备影子 – 设备影子是AWS IoT平台提供的一项独特功能,它创建一个虚拟设备(或影子),其中包含设备的最新状态。即使实际物理设备处于离线状态,应用程序也可以通过应用程序编程接口与影子设备通信。当实际设备连接时,AWS IoT会自动同步状态并根据虚拟设备上的更改将更改推送到实际设备。
-
规则引擎 – AWS IoT规则引擎是一个高度可扩展的引擎,可根据您创建的业务规则将来自设备的传入消息转换并路由到AWS服务。您可以使用类似结构化查询语言(SQL)的语法创建这些规则,并对MQTT主题进行查询以从传入消息中提取所需数据。传入消息必须是JavaScript*对象表示法(JSON)格式。您可以根据类似SQL的查询过滤消息,由配置的AWS服务使用输出。AWS IoT还提供了设备与AWS IoT平台之间安全通信的各种选项。设备通过三种选项之一使用您选择的身份进行连接:数字(X.509)证书、通过用户名和密码进行的AWS身份验证,或者通过Amazon Cognito使用设备的身份提供商或第三方提供商(如Google或Facebook)。当设备通过身份验证后,AWS IoT通过策略处理授权,这些策略允许您根据定义的权限执行设备操作(连接、发布、订阅、接收)。获得授权后,您可以执行特定操作。此过程完成设备与AWS IoT平台的通信。作为您的IoT应用程序的一部分,您可能会调用其他AWS服务,例如将MQTT主题中的设备数据持久化到Amazon DynamoDB,或通过Amazon Kinesis实时处理大数据流。Amazon Kinesis提供实时数据处理,使应用程序能够捕获来自设备和其他来源的连续数据流,在运行时分析它们以生成实时仪表板或触发所需操作。要调用Amazon Kinesis流实例(或任何其他AWS服务),您必须在AWS Identity and Access Management中定义一个策略,规则实例将使用该策略允许您的AWS IoT实例安全地访问Amazon Kinesis流实例。这种集成确保了设备与AWS IoT平台之间以及AWS IoT平台与您的其余AWS服务之间的端到端安全连接。
通信策略
AWS* IoT平台支持MQTT、WebSocket和HTTP。Intel设备(或任何IoT设备)与AWS IoT平台之间的所有通信都必须通过支持的协议进行。
MQTT是一种基于发布-订阅模型的轻量级面向消息的中间件。该协议设计用于涉及小数据足迹的机器到机器通信。发布-订阅模型由一个消息代理组成,该代理根据消息的主题(用于通信的命名逻辑通道)协调感兴趣客户端之间的交互。客户端可以作为订阅者从主题消费消息,也可以作为发布者将消息发布到相应的主题。在IoT的背景下,IoT设备通过TCP连接到中央MQTT代理以发送或接收消息。MQTT协议广泛用于资源受限的设备和高带宽受限的网络。有关MQTT协议的详细信息,请查看物联网网关协议比较:MQTT和Modbus
WebSocket协议通过单个TCP连接支持客户端和服务器之间的持久连接。WebSocket促进了近实时通信和数据传输到和从服务器,而无需客户端或服务器轮询数据更新,并在客户端和服务器之间没有明确请求的情况下传输相关更新。AWS IoT通过MQTT支持WebSocket。
AWS IoT设备SDK简化了通过MQTT、WebSocket和HTTP将设备安全连接到AWS IoT平台的过程。该软件开发工具包(SDK)目前支持用于Linux*的C SDK、用于Arduino*平台的库和Node.js*库。了解有关AWS IoT设备SDK的更多信息。
图2说明了Intel IoT设备如何与AWS IoT平台通信。
将Intel® Edison开发板连接到AWS IoT
要将Intel® Edison开发板连接到AWS* IoT平台,您可以选择AWS IoT设备SDK提供的C、Arduino*或JavaScript*库。对于开发和调试设备代码,您可以根据编程环境下载所需的集成开发环境(IDE)。例如,您可以下载Intel® XDK IoT Edition用于JavaScript,Intel® System Studio IoT Edition用于C和C++,或Arduino IDE用Arduino编程Intel® Edison开发板。然后,您可以将所需的AWS IoT设备SDK库导入到代码中,以连接到AWS IoT平台并向AWS IoT平台发送数据(即传感器数据)。
为了与设备板上的传感器和执行器交互,Intel提供了libmraa库。此库在支持的硬件之上提供了一个抽象层,以便您可以以标准方式从传感器和执行器读取数据,然后创建可在支持平台之间移植的代码。
读取传感器数据后,它将通过MQTT(或WebSocket)通过支持的网络传输到AWS IoT平台。您通常会将数据转换为JSON等格式,并使用AWS IoT设备SDK库通过MQTT(或WebSocket)发送。如果设备具有此功能,它可以通过Wi-Fi或以太网连接直接连接到互联网和AWS IoT平台,或者连接到连接到AWS IoT平台的Intel网关。通常,数据将在每X个间隔后读取并发布到AWS IoT平台中所需的主题。
要连接到AWS IoT平台,您必须在注册表中注册设备,创建证书,分配策略,并使用相关的SDK。以下高级步骤适用于将任何类型的设备(例如,Intel® Edison开发板、Intel® Curie™模块、网关)注册到AWS IoT平台
-
在事物注册表中创建设备。
-
为安全通信创建证书和策略。
-
将证书附加到设备。
-
生成SDK。
对于这些步骤,您可以使用AWS管理控制台或AWS命令行界面命令。有关如何注册设备的详细说明,请参阅在事物注册表中创建设备。
注意:要开始将Intel IoT设备连接到AWS IoT平台,您还可以购买由AWS提供支持的Intel® Edison开发板和Grove*室内环境套件,并快速开始构建云连接项目。
将Intel® Curie™计算模块连接到AWS* IoT平台
Intel® Curie™模块采用Intel® Quark™片上系统,为可穿戴设备、消费和工业边缘产品提供完整的低功耗解决方案。Intel® Curie™模块内置六轴组合传感器、蓝牙*低功耗无线电和低功耗,使其成为构建“始终在线”项目(如健康和健身监测器)的完美开发板。
要开始原型设计和开发应用程序,您可以使用Arduino*开发板(也称为Genuino 101*或Arduino 101*),它与Intel® Curie™模块一同出货。要开始开发,您可以使用Arduino IDE编写程序(在Arduino中称为草图),该程序读取传感器值。
然后,传感器数据通过MQTT使用支持的网络传输到AWS*IoT平台。Intel® Curie™模块支持蓝牙低功耗,因此一个选项是将模块通过蓝牙连接到智能手机,并使用智能手机的蜂窝或Wi-Fi连接作为集线器连接到互联网。Intel® Curie™模块提供专用的蓝牙低功耗库,这使得与其他支持蓝牙的设备进行通信变得更加容易(有关详细信息,请参阅Intel® Curie®蓝牙LE库)。另一个选项是将Intel® Curie™模块通过蓝牙连接到Intel网关,然后Intel网关连接到AWS IoT平台。还有其他选项,例如使用Wi-Fi扩展板与Arduino 101开发板连接,使开发板能够直接连接到互联网。您的网络策略选择取决于用例和最终产品的使用方式。
注意:请继续关注将允许您在Intel® Curie模块上运行RTOS的软件开发工具包(SDK)。请访问https://software.intel.com/en-us/iot/hardware/curie注册以获取更多信息。
将Intel网关连接到AWS* IoT平台
当设备因协议不兼容问题无法直接连接到AWS* IoT平台时,或者现有设备数据需要通过中央实体进行各种要求(例如在边缘过滤数据并将相关数据传输到AWS IoT平台,执行本地分析以获取实时洞察,或确保网络安全和合规性)时,主要需要Intel® IoT网关技术。
协议不兼容问题在连接和集成传统工业设备或家庭自动化设备(例如智能建筑解决方案)时尤为常见,这些设备通常采用ZigBee*或Z-Wave*等协议。采用Intel网关设备使您可以选择将这些设备连接到Intel网关,并使用这些工业设备支持的协议收集数据。然后,数据通过云平台支持的协议从Intel网关传输到云平台。
为了将Intel网关设备连接到AWS IoT平台,您可以选择AWS IoT设备SDK提供的C、Python*、JavaScript*库。连接Intel网关设备所需的步骤与将Intel® Edison开发板连接到AWS IoT平台的步骤类似。
使用AWS* IoT平台和AWS服务构建IoT应用程序
当设备数据可用于AWS* IoT平台时,您可以开始对其进行可视化。通常,其他AWS服务将消耗数据以进行进一步处理,因此您首先使用规则引擎服务创建规则,将传入数据路由到一个或多个AWS服务进行处理。您可以创建多个规则——例如,一个规则可以将消息路由到Amazon Kinesis流实例进行实时处理,而另一个规则可以直接将传入数据插入Amazon DynamoDB表进行历史和离线分析。
多个应用程序可以接收Amazon Kinesis数据流并并行工作。来自Amazon Kinesis流实例的数据可以发送到AWS Lambda,这是一个计算服务,它提供了在AWS基础设施中运行自定义代码的能力。您可以根据您的IoT应用程序添加自定义代码。例如,您可以调用Amazon机器学习服务来预测结果,执行您自己的专有代码,或使用Amazon推送通知服务向移动设备发送通知。
摘要
本文向您展示了如何将Intel IoT设备连接到AWS* IoT平台。当您的数据可用于AWS IoT平台时,您可以通过组合相应的AWS服务来使用它并快速构建IoT应用程序,以实现您的IoT用例。