IoT

背景

对IoT(Internet of Things, 物联网)平台进行调研,调研对象有:亚马逊的AWS IoT阿里智能

AWS IoT

主页: https://aws.amazon.com/cn/iot/
相关报道: http://news.3snews.net/2015/1009/39528.html

AWS IoT 是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互。AWS IoT 可支持数十亿台设备和数万亿条消息,并且可以对这些消息进行处理并将其安全可靠地路由至 AWS 终端节点和其他设备。借助 AWS IoT,您的应用程序可以随时跟踪所有设备并与其通信,即使这些设备未处于连接状态也不例外。

借助 AWS IoT,您可以轻松使用 AWS Lambda、Amazon Kinesis、Amazon S3、Amazon Machine Learning、Amazon DynamoDB、Amazon CloudWatch、AWS CloudTrail 和内置 Kibana 集成的 Amazon Elasticsearch Service 等 AWS 服务来构建 IoT 应用程序,以便收集、处理和分析互连设备生成的数据并对其执行操作,且无需管理任何基础设施。

入门

https://aws.amazon.com/cn/iot/getting-started/

  • AWS 管理控制台: 提供了基于Web的界面用,于管理IoT资源。
  • AWS CLI 和 AWS SDK :用于实现对 AWS IoT 的编程访问。以帮助您轻松快速地连接硬件设备或移动应用程序。利用 AWS IoT 设备 SDK,您的设备可以使用 MQTT、HTTP 或 WebSockets 协议连接和验证 AWS IoT 并与之交换消息。设备 SDK 支持 C、JavaScript 和 Arduino,并且包含客户端库、开发人员指南和制造商移植指南。此外,您还可以使用开源替代资源或自行编写 SDK。

要了解更多信息,请阅读 AWS IoT 设备 SDK 文档或下载 SDK 并开始使用。

How AWS IoT Works

http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/what-is-aws-iot.html

这里写图片描述

由哪些部分构成

Things

智能设备(使用Thing SDK开发)

Message broker

为智能设备和IoT应用程序提供了安全的发布/订阅message的机制(负责收发消息,例如使用MQTT协议)

Rules engine(规则引擎)

进行消息处理,并与其它AWS服务进行整合。可以对message进行查询、处理、发送给其它服务(如:Amazon S3, Amazon DynamoDB, and AWS Lambda.)。也可以让MessageBroker将该message再次发布给订阅者。

Thing registry(注册表)

存储了设备的属性、功能和用于保护通信安全的设备证书。

Thing shadow(设备影子)

存储设备当前状态信息(JSON格式),因此应用程序或其他设备可以读取消息并与此设备进行交互。设备影子保留每台设备的最后报告状态和期望的未来状态,即便设备处于离线状态。您可以通过 API 或使用规则引擎,获取设备的最后报告状态或设置期望的未来状态。

设备影子提供始终可用的 REST API,使得构建与您的设备进行交互的应用程序更加轻松。此外,应用程序可以设置设备的期望未来状态,而无需说明设备的当前状态。AWS IoT 将比较期望未来状态和最后报告状态之间的差异,并命令设备“弥补差异”(通知设备更新状态)。

Device gateway(设备网关)

保证设备安全、高效的与AWS IoT进行交互。

Security and Identity service(身份验证和授权)

提供安全的消息传送和认证服务
AWS IoT 在所有连接点处提供相互身份验证和加密,因此,绝不会在无可靠身份的设备和 AWS IoT 之间交换数据。AWS IoT 支持 AWS 身份验证方法(称为“SigV4”)以及基于身份验证的 X.509 证书。使用 HTTP 的连接可以使用任一方法,使用 MQTT 的连接可以使用基于证书的身份验证,使用 WebSockets 的连接可以使用 SigV4。借助 AWS IoT,您可以使用 AWS IoT 生成的证书以及由您的首选证书颁发机构 (CA) 签署的证书。您可以将所选的角色和/或策略映射到每个证书,以便授予设备或应用程序访问权限,或在改变主意时撤消访问权限(甚至都不需触碰设备)。

可以通过控制台或使用 API 创建、部署并管理设备的证书和策略。这些设备证书可以预配置、激活和与使用 AWS IAM 配置的相关策略关联。如果您选择执行此操作,则会立即撤消单个设备的访问权限。

这里写图片描述

交互流程

Things(智能设备)通过发送message来报告自己的状态信息。
发送的message基于MQTT协议,一个message是与某个topic相关的。(比如:Sensor/temp/room1)
消息内容的格式为JSON格式。

message被Message Broker接收,并将该Message发送给所有订阅了该topic的client。

Things(智能设备)和AWS IoT通信是通过X.509 certificates进行保护的。可以使用AWS生成的证书或自己的证书,但是必须在AWS进行注册,并且将证书放到智能设备上

此外,可以创建rules(规则)来过滤message,以及消息符合规则时对应的action(行为,比如对数据库进行查询、更新等操作)。
rules可以使用过滤表达式来过滤message。
当rule匹配到一个message,rule engine将调用相应的action。

很直观的一个Example
https://ap-southeast-1.console.aws.amazon.com/iot/home?region=ap-southeast-1#/tutorial/help

如何将设备接入到AWS IoT

  1. 登录到AWS IoT控制台
  2. 注册设备信息
  3. 生成设备证书、私钥
  4. 创建一个AWS IoT policy(用于认证)
  5. 将证书、私钥拷贝到设备上
  6. 设备发送消息

MQTT协议

官网: http://mqtt.org/
协议规范:https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/01-Introduction.html (中文)
协议介绍:http://www.cnblogs.com/caca/p/mqtt.html
通过Python使用MQTT: http://my.oschina.net/u/2306127/blog/370059

MQTT是“Message Queuing Telemetry Transport”的英文缩写意思是“消息队列遥测传输”是IBM开发的一个即时通讯协议。它是一种轻量级的、基于代理的“发布/订阅”模式的消息传输协议。其具有协议简洁、小巧、可扩展性强、省流量、省电等优点,而且已经有PHP,JAVA,Python,C,C#等多个语言版本,基本可以使用在任何平台上,几乎可以把所有联网物品和外部连接起来,所以特别适合用来当做物联网的通信协议。

  • 轻量级的 machine-to-machine 通信协议。
  • publish/subscribe模式。
  • 基于TCP/IP: 主流的MQTT是基于TCP连接进行数据推送的,但是同样有基于UDP的版本,叫做MQTT-SN。这两种版本由于基于不同的连接方式,优缺点自然也就各有不同了。
  • 支持QoS。
  • 适合于低带宽、不可靠连接、嵌入式设备、CPU内存资源紧张。
  • 是一种比较不错的Android消息推送方案。
  • FacebookMessenger采用了MQTT。
  • MQTT有可能成为物联网的重要协议。

Topic Name,订阅消息标识,MQTT是基于订阅/发布的消息,那么这个就是消息订阅的标识,像新闻客户端里的订阅不同的栏目一样。用于区别消息的推送类别。

发布/订阅

  发布/订阅,通常也被成为 pub-sub 模式是 MQTT 的核心。
  客户端可以发布或订阅特定的主题(topic),根据使用它们的消息代理来决定谁会收到信息。MQTT 的主题有特定的语法,使用斜杠(/)作为分隔符,整体呈层次结构,非常类似 URL 中的路径格式,因此厨房中的温度传感器也许会发布到类似“sensors/temperature/uk/london/baker_street” 这样的主题。
  这里写图片描述

安全性

  涉及两个主要的安全性功能:身份验证与加密。
  身份验证是通过在 MQTT 连接包中发送用户名与密码来实现,几乎所有消息代理与客户端在实现时都支持这一功能。但由于信息太容易被拦截,为了避免,应当尽可能地使用安全传输层协议(TLS)。
  协议本身未提供加密功能,但由于 MQTT 是在 TCP 上层运行的,我们可以很容易地利用 TLS 来提供加密连接。但这确实增加了发送与接收信息的计算复杂性,不但在约束系统中会造成问题,还会影响消息代理的性能。稍后我们会就这个问题进行更多讨论。

其他参考:
Connec tRaspberry Pi to AWS IoT using IoT device sdk for c
http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/iot-device-sdk-c.html
sdk: https://github.com/aws/aws-iot-device-sdk-embedded-C
http://www.chinacloud.cn/show.aspx?id=23456&cid=16

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值