1.什么是物联网


 1.1活点定义:利用局部网络或互联网等通信技术把传感器、控制器、机器、人员和物等通过新的方式联在一起,形成人与物、物与物相联,实现信息化、远程管理控制和智能化的网络。物联网是互联网的延伸,它包括互联网及互联网上所有的资源,兼容互联网所有的应用,但物联网中所有的元素(所有的设备、资源及通信等)都是个性化和私有化。


1.2物联网本质:物联网是互联网的应用拓展,应用创新是物联网发展的核心,以用户体验为核心的创新2.0则是物联网发展的灵魂。物联网的本质概括起来主要体现在三个方面:一是互联网特征,即对需要联网的物一定要能够实现互联互通的互联网络;二是
识别 <https://baike.so.com/doc/5405547-5643324.html>与通信
<https://baike.so.com/doc/5725670-5938407.html>特征,即纳入物联网的“物”一定要具备自动识别与物物通信的功能;三是
智能化 <https://baike.so.com/doc/5414180-5652322.html>特征,即网络系统应具有自动化
<https://baike.so.com/doc/5405158-5642929.html>、自我反馈
<https://baike.so.com/doc/5384190-5620599.html>与智能控制的特点。

2.关键技术

传感器技术,RFID(射频识别)标签,嵌入式系统 <https://baike.so.com/doc/1201766-1271169.html>技术

3物联网实现

(1)对物体属性进行标识,属性包括静态和动态的属性,静态属性可以直接存储在标签中,动态属性需要先由传感器实时探测;

(2)需要识别设备完成对物体属性的读取,并将信息转换为适合网络传输的数据格式;

(3)将物体的信息通过网络传输到信息处理中心,由处理中心完成物体通信的相关计算。

4用途


物联网用途广泛,遍及智能交通、环境保护、政府工作、公共安全、平安家居、智能消防、工业监测、环境监测、老人护理、个人健康、花卉栽培、水系监测、食品溯源、敌情侦查和情报搜集等多个领域。

 

 

           阿里的物联网平台介绍


物联网平台是阿里云面向物联网领域开发人员推出的设备管理平台,旨在帮助开发者搭建数据通道,方便终端(如传感器、执行器、嵌入式设备、智能家电等)和云端进行双向通信。

1数据通道

为设备和物联网应用程序提供发布和接收消息的安全通道。数据通道目前支持CCP协议和MQTT协议。

   用户可以基于CCP协议实现Pub/Sub异步通信,也可以使用远程调用(RPC)的通信模式实现设备端与云端的通信。

   用户也可以基于开源协议MQTT协议连接阿里云IoT,实现Pub/Sub异步通信。

2安全认证&权限策略

为每个设备颁发阿里云IoT的凭证,依赖凭证才能连接阿里云IoT。

提供设备级的授权粒度,任何设备必须经过授权才能对某个Topic发布订阅消息

服务端也需要经过授权才能操作其他账号下的Topic

3设备共享平台

提供Topic跨账号的授权,帮助用户实现跨厂商的数据共享,进而实现更加丰富智能的场景。

4规则引擎

为用户提供类SQL语言的规则引擎,帮助用户过滤数据、处理数据,并能够发送数据到阿里云其他服务,例如RDS,OTS,ONS等等,也能够发送到数据到其他Topic


5设备快照(待上线)

保存设备的最新状态或者APP希望的最新状态在云端,然后当设备或APP连接上来时,同步状态给设备或APP。

6应用场景

设备端实时请求云端

物联网设备调用云端服务需要返回结果给设备,方便设备作相应处理。例如用户通过智能音箱调用云端语音解析服务,设备可以实时得到解析结果做处理。

云端实时请求设备端

开发者通过云端控制设备时,需要知道控制有没有成功,例如请求打开灯,用户需要得知灯是否打开,这就需要设备端返回结果给云端

设备端与云端的异步请求

有很多物联网设备之间有互联互通的需求。例如家里的门打开之后,灯和空调就打开。这种场景就可以基于阿里云物联网套件实现,将门的打开这个消息Pub到某个Topic
,然后灯以及空调Sub该Topic得到的门打开的消息作相应的处理。

跨厂商设备互联互通

不同厂商的设备具有互联互通的需求,例如A厂商的手环通过检测用户的身体状态来控制B厂商的空气净化器以及C厂商的空调。

7功能

设备接入

快速接入:提供设备端SDK,方便客户快速连接阿里云IoT数据通道

安全接入:提供设备端安全的认证方法,确保设备在云端的安全以及合法性

云端服务

消息转发:消息路由转发,实现M2M、端到云、云到端等多样化消息互通场景

设备授权:提供设备级的权限粒度,保证消息的安全性

规则引擎:提供规则引擎,与其它阿里云产品无缝衔接,快捷的构建IoT应用

互联互通

提供Topic跨账号的授权,帮助厂商实现与不同厂商的设备互联互通,开发丰富多彩的IoT应用

8名词解释


概念

描述


产品

同类设备的集合,方便管理设备


AppKey

阿里云IoT为产品颁发的唯一标识


AppSecret

阿里云IoT为产品颁发的产品密钥,和AppKey成对出现


设备ID

对应的英文名称:DeviceId。阿里云IoT为设备颁发的唯一标识


设备秘钥

对应的英文名称:DeviceSecret。阿里云IoT为设备颁发的设备秘钥,和设备ID成对出现


RPC

设备端向云端发送数据协议,这只适用CCP协议接入的设备


RRPC

由云端发起,但是期望设备端响应的数据交互协议,这只适用CCP协议接入的设备


Topic

用作消息的路由转发,例如设备A将消息发布到Topic:123中,设备B可以订阅Topic:123得到消息。CCP协议和MQT协议都支持


发布

对应的英文名称:Pub。设备端的发布协议,操作Topic的权限,意思是具有往Topic中发布消息的权限


订阅

对应的英文名称:Sub。设备端的订阅协议,操作Topic的权限,意思是具有从Topic中订阅消息的权限

9阿里云物联网套件限制


限制类别

描述


产品个数

目前限制产品个数上限是10个


添加设备

目前只能在控制台上添加设备,而且单次操作添加不能5万,单个产品不能超过1亿


设备数据上报地址

目前只能支持本账号下的ECS或SLB的IP地址访问以及ACE的域名访问


Topic的长度

不能超过128字节


CCP协议包大小

不能超过256K


MQTT协议包大小

不能超过256K


设备授权操作

不能超过50个


授权操作

1.单个设备端不能对带有通配符的Topic进行发布或者订阅消息;2.服务端不能对带有通配符的Topic进行发布消息


规则引擎

同一个账号不超过100个规则


规则引擎

数据格式必须是JSON才能使用规则引擎


规则引擎

一条规则中转发数据的操作不能超过10个

 

10设备接入云端的协议

基于CCP接入(MQTT协议的精简版)

协议本身具备安全算法,不依赖TLS算法

协议大小更精简,包头,payload占用字节更少。例如header只有1个字节

协议支持多种通信模式,相对于MQTT,不仅支持Pub/Sub,还支持RPC/RRPC

基于MQTT接入

被广泛用在嵌入式设备的消息传输上

COAP(待上线)

CoAP是一种软件协议旨在用于非常简单的电子设备,让他们通过互联网交互通信。详情请访问COAP

HTTP(待上线)

数据通道支持设备通过HTTP协议用REST API的方式连接阿里云IoT。设备可以通过POST方式实现Pub消息到某个Topic。

11

全链路加密

整个通信链锯以RSA,AES加密,保证数据传输的安全。

消息实时到达

当设备与阿里云IoT建立数据通道后,阿里云IoT会与设备保持长连接,减少握手时间,保证消息的实时到达。

支持数据透传

设备数据可以基于数据通道以二进制方式透传的方式传到自己的服务器上(只支持在阿里云上购买的产品),阿里云IoT
不会保存设备业务数据,从而保证用户对数据的安全可控性。

支持多种通信模式

数据通道支持RPC/RRPC以及Pub/Sub两种通信模式,满足用户不同的应用场景。

12 基于CCP接入云端,主要包含两大流程:

设备的认证

设备接入数据通道

A:设备使用控制台申请的密钥进行签名请求授权,签名使用 hmacmd5算法(可选 hmacsha1),签名内容=devieceid+appkey,使用
key=appSecret+deviceSecret

B:服务器验证签名合法,并返回pubkey证书

C:设备生成随机密钥seedkey,使用pubkey RSA加密传输给服务器

D:服务器确认返回令牌 sid ,同时返回签名sign,签名内容=sid,签名的key=appSecret+deviceSecret,
同时返回动态负载的接入服务器ip供设备连接

E:客户端使用私钥seedkey解密令牌,进行数据通信,客户端可选协议模式支持ccp\mqtt\coap...

13基于MQTT接入云端,主要包含两大流程:

设备获取证书

设备接入数据通道

A:设备使用控制台申请的密钥进行签名请求授权,签名使用 hmacmd5算法(可选 hmacsha1、md5),签名内容=devieceid+appkey,使用
key=appSecret+deviceSecret

B:服务器验证签名合法,并返回pubkey证书(X.509格式base64)

C:设备使用pubkey证书TLS协议连接MQTT

 

14通信模式

IoT Hub支持两种通信模式: 

14.1通信模式 - RPC/Revert-RPC

RPC/Revert-RPC(CCP协议具有的通信模式)

RPC是将用户的设备数据通过阿里云转发到用户自己的业务系统,比如可以用户可以将自己设备上报的服务注册到阿里云IoT
上,然后设备直接可以调用该服务,完成数据上报;

R-RPC是用户的业务系统远程调用客户端并等待客户端得到一个回执结果,比如远程调用开关并得到开关的状态信息。



14.2通信模式 - Pub/Sub

Pub/Sub(CCP协议和MQTT都支持)

Pub/Sub是基于Topic进行消息的路由转发,让设备端或者服务端可以发布订阅消息,实现异步的通信。适用的场景有M2M
(设备与设备间通信),也可以实现设备端与云端的异步通信。

IoT Hub维护所有Topic的发布订阅用户列表。当消息发送到Topic,IoT Hub会检查该Topic的所有订阅用户,然后将消息转发给所有具有订阅该
Topic权限的客户端或者服务端。



15身份和安全

每个设备需要具备阿里云IoT颁发的凭证才能连接阿里云IoT;

设备与云端通信采用AES、RSA算法加密,从而保证数据传输安全;

为了安全地基于数据通道传输数据,设备有责任保持他们的凭证安全;

数据到达阿里云IoT之后,阿里云IoT通过权限机制保障数据安全转发到其他阿里云服务或者其他设备。

16设备身份

为设备颁发凭证,包括产品证书和设备证书,设备证书与设备是一对一的关系,确保设备的唯一合法性。设备通过CCP协议或者MQTT
协议接入数据通道之前,都需要进行设备认证,设备认证需要携带产品证书和设备证书进行认证。

17通信安全

采用RSA-512bit、AES算法来保证数据通道的传输安全。

18授权

提供设备级的授权粒度。

对于设备端,设备必须具有权限,才可以往某个Topic发布订阅消息,这让用户可以完全控制Topic的消息转发,帮助用户控制数据的安全性;

对于服务端,服务端基于阿里云AK默认具有该账号下Topic的操作权限,但是如果想要操作其他账号下的Topic需要相应的权限。

 

19规则引擎

SQL表达式:把一条规则抽象为一条sql表达



例子:

SELECT crypto(userId,'SHA1') md2, (a+1) al, color c, config.flag flag,
deviceId(),CASE col.a WHEN 1 THEN 'Y' ELSE 'N' END flagFROM"/12345/#"WHEREc is
not null and b<0

select参数和where条件可以使用消息的payload属性作为列,不支持子查询。

20规则引擎

1 - FROM "topic"

当有符合topic规则的消息到达时,消息的payload数据以json形式被上下文环境使用(如果消息格式不合法,将忽略此消息),您可以使用topic()
函数引用具体的topic值。

2- SELECT

select的属性来源于消息的payload,可以使用json表达式形式引用,也可以来源于函数比如deviceId()。

3- WHERE

规则触发条件,条件表达式。当符合topic的消息到达时,这条消息触发规则的条件。

4- json表达式

select和where可以直接使用json表达式。 json表达式支持属性,也支持数组。如果payload数据解析出错将会导致规则运行失败。 转发数据
action中的表达式需要使用 ${表达式} 来使用。

              物联网的实现

1创建产品与设备

使用物联网平台的第一步,是在控制台上添加产品和设备,并获取设备认证三元组与Topic信息。物联网平台传输数据时,依靠三元组信息识别设备,基于Topic
实现数据在设备端与云端的传输。

操作步骤

1.1.使用您的阿里云账号登录物联网平台控制台 <https://iot.console.aliyun.com/>。首次使用需申请开通该服务。

  1.2.创建产品。产品泛指一批具有相同功能的设备,创建产品是为了便于批量管理设备。

在产品管理页面,单击创建产品,选择基础版。

填写产品名称,选择节点类型。

产品名称:用于辨识产品,产品名需在账号内保持唯一。此例中,我们填入一个模拟的产品型号。

节点类型:此例中我们选择设备,表明该产品下的设备可以直连IoT Hub。

设备:不能挂载子设备,可以直连IoT Hub,也可以作为网关的子设备连接IoT Hub。

网关:可以挂载子设备。网关具有子设备管理模块,维持子设备的拓扑关系,并且可以将拓扑关系同步到云端。

1.3.在该产品的消息通信页,单击定义Topic类,创建一个新的Topic类,用于传输设备上传的信息。

1.4.单击设备管理进入设备管理页面,添加设备。选中上一步中创建的产品。在该产品类目下,单击添加设备,添加一台设备。

设备添加完成后,界面弹出设备三元组,包含:ProductKey、DeviceName和DeviceSecret
。您可以一键复制,存储这些信息,用于后续的认证设备。此例中的三元组信息为:
ProductKey:a1wmrZPO8o9 DeviceName:cbgiotkJ4O4WW59ivysa DeviceSecret:H3cI7
***********************ZeSU
单击查看刚刚添加的设备,单击Topic列表,可以查看设备具有在哪些Topic上发布或订阅消息的权限。

2建立设备与平台的连接

阿里云物联网平台提供设备端SDK,设备使用SDK与平台建立通信。

2.1确定您的开发环境,并根据环境选择相应SDK。

2.2下载设备端SDK,将已获得的设备三元组信息填入。

2.3如果在控制台上看到相应设备上线,则数据开始上传平台。

3服务端订阅设备消息

设备连接物联网平台后,数据将直接上报至平台,平台上的数据可以通过HTTP/2通道流转至您的服务器。这一步中,我们将配置HTTP/2服务端订阅功能,并设置
HTTP/2 SDK。您的服务器可以通过接入HTTP/2 SDK,接收设备数据。



3.1在物联网平台控制台
<https://iot.console.aliyun.com/product/region/cn-shanghai?spm=a2c4g.11186623.2.9.6b50515fVsNH7a>
中,为产品配置服务端订阅。

在产品管理页面,单击已创建产品对应的查看按钮。

在具体产品页,单击服务端订阅,单击设置,为产品配置服务端订阅功能。

单击勾选服务器(HTTP/2 SDK)要订阅的消息类型,然后单击保存。

设备上报消息:指产品下设备的 Topic 列表中,设备具有的权限为发布的Topic。

设备状态变化通知:指当产品下设备的状态发生变化时,系统发出的通知消息。例如,设备上下线消息。控制台订阅配置完成大约1分钟后功能生效。

3.2. 接入HTTP/2 SDK。

3.3 基于您的阿里云账号AccessKey进行身份认证,建立SDK与平台的连接。

4设备接收云端指令

这一步中,我们将实现云端应用调用Pub接口向该Topic发送信息,设备通过订阅该Topic,获得云端指令。

4.1通过修改设备端SDK,为设备订阅Topic。

4.2云端应用向设备下发指令。