平台定位

  • AWS IoT是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互。
  • AWS IoT可支持数十亿台设备和数万亿条消息,并且可以对这些消息进行处理并将其安全可靠地路由至 AWS 终端节点和其他设备。应用程序可以随时跟踪所有设备并与其通信,即使这些设备未处于连接状态也不例外。
  • 使用AWS Lambda、Amazon Kinesis、Amazon S3、Amazon Machine Learning、Amazon DynamoDB、Amazon CloudWatch、AWS CloudTrail 和内置 Kibana 集成的 Amazon Elasticsearch Service 等AWS服务来构建IoT应用程序,以便收集、处理和分析互连设备生成的数据并对其执行操作,且无需管理任何基础设施。

架构

与AWS IoT平台集成的AWS服务

  • Amazon DynamoDB—托管NoSQL数据库
  • Amazon Kinesis—大规模流式数据实时处理
  • AWS Lambda—EC2云虚拟机运行代码响应事件
  • Amazon Simple Storage Service(S3)—可扩展云存储
  • Amazon Simple Notification—推送通知服务
  • Amazon Simple Queue Service—消息队列服务

设备SDK

  • AWS IoT 设备 SDK 使用 MQTT、HTTP 或 WebSockets 协议将硬件设备连接到 AWS IoT,硬件设备无缝安全地与 AWS IoT 提供的设备网关和设备影子协作。
  • 设备 SDK 支持 C、JavaScript 、Arduino、Java和Python。
  • 设备 SDK 包含开源库、带有示例的开发人员指南和移植指南,用户根据硬件平台构建 IoT 产品或解决方案。

设备网关

  • AWS IoT 设备网关支持设备安全高效地与 AWS IoT 进行通信。设备网关可以使用发布/订阅模式交换消息,从而支持一对一和一对多的通信。凭借此一对多的通信模式,AWS IoT 将支持互连设备向多名给定主题的订阅者广播数据。
  • 设备网关支持 MQTT、WebSocket 和 HTTP 1.1 协议,也支持私有协议。
  • 设备网关可自动扩展,以支持 10 亿多台设备,而无需预配置基础设施。

认证和授权

  • AWS IoT 在所有连接点处提供相互身份验证和加密。AWS IoT 支持 AWS 身份验证方法(称为"SigV4")以及基于身份验证的 X.509 证书。使用 HTTP 的连接可以使用任一方法,使用 MQTT 的连接可以使用基于证书的身份验证,使用 WebSockets 的连接可以使用 SigV4。
  • 使用 AWS IoT 生成的证书以及由首选证书颁发机构 (CA) 签署的证书,将所选的角色和/或策略映射到每个证书,以便授予设备或应用程序访问权限,或撤消访问权限。
  • 通过控制台或使用 API 创建、部署并管理设备的证书和策略。这些设备证书可以预配置、激活和与使用 AWS IAM 配置的相关策略关联。
  • AWS IoT 还支持用户移动应用使用 Amazon Cognito 进行连接,Amazon Cognito 将负责执行必要的操作来为应用用户创建唯一标识符并获取临时的、权限受限的 AWS 凭证。

注册表

  • 注册表将创建设备标识并跟踪元数据,如设备的属性和功能。
  • 注册表向格式一致的每台设备分配唯一的标识,而不管设备的类型和连接方式为何。此外,它还支持描述设备功能的元数据,例如传感器是否报告温度,以及数据是华氏度还是摄氏度。
  • 注册表存储有关设备的元数据,无需支付额外费用;并且需要每隔 7 天至少访问或更新注册表条目一次,注册表中的元数据就不会过期。

以JSON格式存储的设备注册表信息

设备影子(Shadow)

  • 设备影子保留每台设备的最后报告状态和期望的未来状态,即便设备处于离线状态。
  • 通过 API 或使用规则引擎,获取设备的最后报告状态或设置期望的未来状态。
  • 应用程序可以设置设备的期望未来状态,而无需说明设备的当前状态。AWS IoT 将比较期望未来状态和最后报告状态之间的差异,并命令设备"弥补差异"。
  • 设备 SDK 能够轻松地同步其状态及其影子,并响应通过影子设置的期望的未来状态。
  • 设备影子免费存储设备状态多达一年。如果至少每年更新一次状态,则设备影子将永久保留状态;否则状态将过期。

设备影子(Shadow)流程

设备影子(Shadow)格式

设备影子(Shadow)服务

设备影子服务使用MQTT话题,便于应用和设备之间的通信,下面是相关的MQTT QoS 1话题:

$aws/things/{thingName}/shadow/update

$aws/things/{thingName}/shadow/get

$aws/things/{thingName}/shadow/delete

$aws/things/{thingName}/shadow/update/accepted

$aws/things/{thingName}/shadow/update/rejected

$aws/things/{thingName}/shadow/update/delta

$aws/things/{thingName}/shadow/get/accepted

$aws/things/{thingName}/shadow/get/rejected

$aws/things/{thingName}/shadow/delete/accepted

$aws/things/{thingName}/shadow/delete/rejected

设备SDK(C-SDK、JS-SDK)将影子功能内置在设备中,能够使设备与影子服务之间自动同步状态。

规则引擎

  • 规则引擎验证发布到 AWS IoT 的入站消息,并根据定义的业务规则转换这些消息并将它们传输到另一台设备或云服务。规则可以应用至一台或多台设备中的数据,并且它可以并行执行一个或多 个操作。
  • 规则引擎还可以将消息路由到 AWS 终端节点,包括 AWS Lambda、Amazon Kinesis、Amazon S3、Amazon Machine Learning、Amazon DynamoDB、Amazon CloudWatch 和内置 Kibana 集成的 Amazon Elasticsearch Service。外部终端节点可以使用 AWS Lambda、Amazon Kinesis 和 Amazon Simple Notification Service (SNS) 进行连接。
  • 使用类似 SQL 的语句编写规则。例如:如果温度读数超出特定阈值,则它可以触发规则以便将数据传输到 AWS Lambda;如果此温度超出其他 5 台设备的平均值 15%,则应采取措施。
  • 规则引擎将提供数十个可用于转换数据的可用功能,并且可以通过 AWS Lambda 创建无限个功能。例如,如果正在处理各种不同的数值,则可以取传入数字的平均值。规则还会触发在 AWS Lambda 中执行 Java、Node.js 或 Python 代码,从而提供最高灵活度以及处理设备数据的能力。

规则引擎集成其它云服务

规则引擎验证发布至AWS IoT的消息请求,基于业务规则转换消息请求并发布至其它服务,例如:

  • 富集化或过滤从设备收集的数据
  • 将设备数据写入一个亚马逊DynamoDBm数据库
  • 保存文件至亚马逊S3
  • 发送一个推送通知到所有亚马逊SNS用户
  • 向亚马逊SQS队列发布数据
  • 调用Lambda函数抽取数据
  • 使用亚马逊Kinesis处理大量的设备消息数据
  • 发送数据至亚马逊Elasticsearch服务
  • 捕获一条CloudWatch测量数据
  • 更新一条CloudWatch告警
  • 把一条MQTT消息数据发送至亚马逊机器学习服务,基于亚马逊机器学习模型进行预测

规则引擎&实时流式数据处理

N:1 入站的传感器流式数据(数据降噪)

规则引擎过滤、转换、汇总传感器数据后,发送至亚马逊Kinesis处理实时流式数据

Kinesis流式数据共享至其它业务系统

将流式数据的实时处理结果导入至数据库、应用或其它亚马逊服务

规则引擎&推送通知服务

推送通知

支持苹果APNS推送通知服务、谷歌GCM云消息服务、亚马逊ADM设备消息服务,微软WNS推送服务

亚马逊SNS推送通知服务->HTTP协议终端(短信、邮件)

通过亚马逊SNS推送通知服务,调用第三方HTTP协议终端,支持订阅和重试

规则引擎示例 – 使用机器学习预测函数

{ "sql":

"SELECT *

FROM 'iot/test'

where

machinelearning_predict('my-model', 'arn:aws:iam::123456789012:role/my-iot-aml-role', *).predictedLabel=1",

"ruleDisabled": false,

"awsIotSqlVersion": "2016-03-23-beta",

"actions":

[{ "republish":

{ "roleArn": "arn:aws:iam::123456789012:role/my-iot-role",                 "topic": "my-mqtt-topic" }

}]

}

上面是使用亚马逊机器学习预测函数machinelearning_predict 的规则示例,其含义是:

如果机器学习预测函数处理MQTT消息后的结果是分类1,那么重新将此消息发布至一个话题。

设备管理

  • 支持全球或部分地区的固件升级
  • 规则引擎在DynamoDBm数据库跟踪升级状态和进度
  • 注册表存储设备的固件版本

S3管理固件分发版本

在S3中组织和保障和固件二进制文件

消息代理使用话题模式通知设备分组

通知设备分组固件更新信息,包括S3中的固件二进制文件URL地址

AWS IoT平台接口

  • AWS Command Line Interface (AWS CLI)
    • 在Windows、Mac和Linux执行AWS IoT命令
  • AWS SDKs
    • 使用特定语言API开发IoT应用
  • AWS IoT API
    • 使用HTTP或者HTTPS请求开发IoT应用
  • AWS IoT Thing SDK for C
    • 在资源受限的设备上开发IoT应用,如MCU

AWS IoT监控工具

自动化监控工具

  • Amazon CloudWatch Alarms
  • Amazon CloudWatch Logs
  • Amazon CloudWatch Events
  • AWS CloudTrail Log Monitoring

手工监控工具

  • AWS IoT 仪表盘
    • 证书
    • 策略
    • 规则
    • 设备
  • CloudWatch首页
    • 当前告警和状态
    • 告警和资源图表
    • 服务健康度
  • CloudWatch
  • 自定义仪表盘
  • 自定义图表进行排障和监控趋势
  • 搜索所有AWS资源指标
  • 创建和修改告警参数

AWS IoT 初学者工具包

  • AWS IoT 初学者工具包旨在帮助进行原型开发和安全地连接 AWS IoT。
  • 工具包内含开发微控制器开发板、传感器和执行器、AWS IoT 设备 SDK 以及入门指南。

AWS IoT 初学者工具包 - 支持的平台

AWS IoT生态

开发示例 - AWS IoT 按钮

创建设备

设备属性

创建证书

激活证书

创建策略

绑定证书与策略

绑定证书与设备

配置设备

使用MQTT客户端订阅设备消息

使用MQTT客户端查看设备消息

创建短信推送话题并订阅此话题

创建规则

创建规则的行为

测试订阅是否成功

国外物联网平台初探(一) ——亚马逊AWS IoT的更多相关文章

  1. 国外物联网平台(1):亚马逊AWS IoT

    国外物联网平台(1)——亚马逊AWS IoT 马智 平台定位 AWS IoT是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互. AWS IoT可支持数十亿台设备和数万亿条消息,并 ...

  2. 国外物联网平台初探(三) ——IBM Watson IoT

    平台定位 提供全面管理的云托管服务,旨在简化并从 IoT 设备中获得价值. Watson IoT Platform 提供对 IoT 设备和数据的强大应用程序访问,可快速编写分析应用程序.可视化仪表板和 ...

  3. 国外物联网平台初探(二) ——微软Azure IoT

    平台定位 连接设备.其它 M2M 资产和人员,以便在业务和操作中更好地利用数据. 连接 IoT 设备 将所有设备连接到云,从这些设备接收大规模数据,以及管理这些设备的授权和限制. 在将设备连接到云和处 ...

  4. 亚马逊AWS在线系列讲座——基于AWS云平台的高可用应用设计

    设计高可用的应用是架构师的一个重要目标,可是基于云计算平台设计高可用应用与基于传统平台的设计有很多不同.云计算在给架构师带来了很多新的设计挑战的时候,也给带来了很多新的设计理念和可用的服务.怎样在设计 ...

  5. 直压到亚马逊AWS平台,阿里云OSS平台或者腾讯云COS平台

    GTX Compressor (直压上云技术预览版) Powered by GTXLab of Genetalks. 技术预览版本下载地址: https://github.com/Genetalks/ ...

  6. 微软Azure、谷歌GAE、亚马逊AWS比較

       谷歌Google App Engine 亚马逊AWS 微软Microsoft Azure 提供服 务类型 PaaS, SaaS Iaas, PaaS IaaS, PaaS, SaaS 服务间 ...

  7. 亚马逊AWS服务器CentOS/Linux系统Shell安装Nginx及配置自启动

    领了一个亚马逊的1年免费服务器,今天尝试安装 Nginx 服务器,使用原生的 Shell 方法. 为了方便以后查看,就把过程记录一下. 注意:亚马逊(AWS)服务器默认只能用 user-ec2 账户进 ...

  8. 亚马逊AWS EC2云实例AMI安装LNMP环境(3)——Mysql5.5

    概括:这里选择亚马逊EC2的Linux AMI实例,该Linux服务器是亚马逊预配置的Linux环境,内置多个YUM源,属于亚马逊首推的稳定Linux服务器.默认登录用户名为ec2-user,执行ro ...

  9. 亚马逊AWS EC2云实例AMI安装LNMP环境(2)——PHP5.6

    概括:这里选择亚马逊EC2的Linux AMI实例,该Linux服务器是亚马逊预配置的Linux环境,内置多个YUM源,属于亚马逊首推的稳定Linux服务器.默认登录用户名为ec2-user,执行ro ...

随机推荐

  1. Eclipse 每次ctrl-c ctrl-v 就变慢?

    继续闲着,所以继续写 大小: 60.7 KB 查看图片附件

  2. iis 7.5 ftp site用户名不能是 'ftp'?

    在windows server 2008 r2上配置一个iis ftp site,创建了一个名为 ftp 的账号,并添加到允许规则中,可总是出现: Connected to ***.***.***.* ...

  3. Delphi 不用标题栏移动窗体

    procedure TxxxxForm.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: I ...

  4. https 认证总结

    https 握手阶段 服务器会下发一个证书链: 客户端默认的处理是使用系统的根证书对这个证书链进行合法性认证: 自签名证书,则需要自己完成证书链认证: 其他附属信息认证: 说白了就是一个数据检查的过程 ...

  5. Java 将要上传的文件上传至指定路径代码实现

    代码: /** * 上传文件到指定路径 * @param mFile 要上传的文件 * @param path 指定路径 */ public static void uploadFile(Multip ...

  6. ivew使用星星评分

    这组件好像有问题,不知道是我们项目环境造成的还是什么,初始化半星不能正常显示,显示的全星. 1.template <div style="display:inline-block;ma ...

  7. eas之设置单元格可编辑

    for(int i=0;i<kdtEntrys.getRowCount();i++){    kdtEntrys.getRow(i).getCell("orgUnit").g ...

  8. DOM学习之图片库切换效果

    addloadevent(prepareplaceholder()) addloadevent(prepareGallery()) //页面加载完时执行函数 function addloadevent ...

  9. POJ2431-Expedition【优先队列+贪心】

    题目大意:卡车每走一公里就消耗一单位的汽油,初始时给你p单位油,你要到达l距离的终点.其中路上有n个补给点可以加油,并且油箱容量无限大,问你最少可以停车几次. 思路:因为油箱无限大,所以我们可以这么认 ...

  10. 在LINUX系统上通过LINUX命令安装mysql数据库和JDK环境

    此示例通过Winscp工具和Xshell已验证通过 安装示例1: 在Centos6.5上安装JDK-10.0.2版本 检查LINUX系统是否有自带或者安装过的JDK版本:Java -version 查 ...