感知层的主要功能就是采集物理世界的数据,其是人类世界跟物理世界进行交流的关键桥梁。
感知层的数据来源主要有两种:
一种就是主动采集生成信息,比如传感器、多媒体信息采集、GPS等,这种方式都需要主动去记录或跟目标物体进行交互才能拿到数据,存在一个采集数据的过程,且信息实时性高。
比如在智能喝水领域会采用一种流量传感器,只要用户喝水,流量传感器就会立即采集到本次的喝水量是多少,这就存在一个长期交互采集数据的过程。
另一种是接受外部指令被动保存信息,比如射频识别(RFID)、IC卡识别技术、条形码、二维码技术等,这种方式一般都是通过事先将信息保存起来,等待被直接读取。
比如现在有的小区用的门禁卡就是用了IC卡识别技术,先将用户信息录入中央处理系统,然后用户每次进门的时候直接刷卡就行。
网络层主要功能就是传输信息,将感知层获得的数据传送至指定目的地。
在物联网领域,嵌入式程序相当于人的大脑,在信息采集完成之后,大脑就会给通讯模块发布指令说把这个信息传给某某某,网络层会涉及到你选用什么样的通讯网络以及采用什么样的通讯机制来传送你的信息。
物联网中的“网”字其实包含了2个部分:接入网络、互联网。
以前的互联网只是打通了人与人之间的信息交互,但是没有打通人与物或物与物之间的交互,因为物本身不具有联网能力。
后来发展出将物连接入网的技术,我们称其为设备接入网,通过这一网络可以将物与互联网打通,实现人与物和物与物之间的信息交互,大大增加了信息互通的边界,更有利于通过大数据、云计算、AI智能等先进技术的应用来增加物理和人类世界的丰富度。
那目前主要有两种方式的接入网,一种是有线网络接入,一种是无线网络接入。
图2:物联网网络结构
有线主要包括以太网、串行通信(RS-232、RS485等)和USB等。
无线又分为近距离无线、短距离无线和长距离无线通讯。近距离无线通讯主要包括NFC、RFID 、IC等,短距离无线通讯主要包括Wifi、ZigBee、蓝牙等,长距离无线通讯主要包括GSM(2G、3G、4G、5G等)、eMTS、Lora、NB-IoT等。
面对众多的入网方式,我们需要考虑应用场景以及设备本身的特征来选择合适的接入方式,各种接入网的特征详见下表。
选好了适合使用的网络,相当于数据传输的物理承载道路打通了,现在就需要确定以什么样的机制来传递信息,这就涉及到通讯协议。
从本质上来说,通讯协议就是一套数据传输规范,就跟我们接触的英语、德语、中文等类似的语言一样,是通过一定规则组成的,易于物与物之间进行交流沟通。
物联网设备端资源受限,比如处理能力差、存储能力小、网络传输量小、网络不稳定等,很明显物联网和互联网在设备端提供的资源环境存在很大的差别。
所以为了更好地为物联网服务,对互联网的通讯协议进行了优化,发展出了目前被广泛使用的MQTT(Message Queuing Telemetry Transport)和CoAP(Constrained Application Protocal )两种物联网通讯协议。
MQTT协议是基于TCP协议的,可以确定接收方一定会受到设备端发出的信息。MQTT协议可以保持长连接,这可以使得设备端和云端进行实时通讯,所以其更适合实时控制交互的场景。
由于是基于TCP协议的,其通讯协议比较复杂,设备端要运行复杂机制的话,对性能就需要有一定的要求,比如存储、计算、网络质量等。
CoAP协议是基于UDP协议的,有两种数据传输机制:一种是接收方一定会收到设备端发送的数据,另一种是不管接收方有没有收到,设备只发送1次数据就结束了。
设备端在完成数据发送之后就进入休眠状态,所以低功耗是CoAP协议最大的特点,其也更适合数据采集的场合,比如抄送电表、水表的数据。
由于是基于UDP协议的,其通讯协议复杂性想对简单一些,自然对设备端的性能要求会低一些。
物联网平台可为设备提供安全可靠的连接通信能力,向下连接海量设备,支撑数据上报至云端,向上提供云端API,服务端通过调用云端API将指令下发至设备端,实现远程控制。
物联网平台主要包含设备接入、设备管理、安全管理、消息通信、监控运维以及数据应用等。
图3:物联网管理平台基本架构
设备接入主要是指设备端如何跟物联网平台进行连接通信,主要表现在:
主要包含设备创建、维护、数据转换、数据同步、设备分布等内容,具体表现在:
1)物模型管理
物联网中的物是物理世界的实体,如果我们想开发一套数字化系统,那这个实体肯定不能缺席,这个时候就会涉及到一个问题:如何把线下的实体变成线上的呢?
而这正是物模型的价值。物模型通俗的解释就是用数字世界的方式将物理世界的物体表征出来,用数字世界的规则来描述这个物体是什么、它有什么作用,这也就是我们经常听到的产品的功能。
物联网平台都会提供多种物模型的建立方式,我们可以根据不同的需求来选择合适的模型。
2)设备生命周期管理
主要涉及创建设备、设备上下线、禁用/启用、删除设备等。物模型建立好之后,相当于定义好了产品的母版,这时候我们可以在该产品下面创建设备,该设备也会具有该产品的功能。
3)数据解析
对于低配置且资源受限或者对网络流量有要求的设备,不适合构造JSON格式与物联网平台通信,这时候可以将原数据透传到物联网平台,物联网平台再根据原数据转化的脚本规则,将其转换为JSON格式。
4)设备影子
物联网中联网是一个很重要的环节,如果设备不联网的话,则设备端和服务端处于通讯中断的状态,双方无法交互信息。为了解决这种常态的困境,给每个设备在物联网平台都建立1个影子,其有2个主要作用:
换句话说在某种程度上设备影子可以使得设备端和服务端保持相对及时的交互通信,最起码服务端从设备端可以拿到相对来说最新的数据以及服务端可以相对及时的告诉设备端需要执行哪些指令。
5)设备拓扑
物联网平台支持设备直连,也支持设备挂载在网关上,作为网关的子设备,由网关直连。
网关直连的场景主要有子设备不能直连或者需要拓扑关系管理的场景,比如WI-FI 网关、ZigBee 网关、以及蓝牙网关等。设备拓扑管理可以帮助管理子设备、子设备与网关的拓扑关系、对子设备进行监控运维等,同时服务端可以直接面向子设备收发消息。
主要是从设备安全认证和通信安全两个方面来保证物联网数据传输的安全性。
1)设备安全认证
设备接入物联网平台之前,需要通过身份认证,来保证设备的安全性。
目前,物联网平台支持使用设备密钥、ID²和X.509证书等方式进行身份认证,在此仅以设备密钥为例来简要说明设备身份认证的实现方式(生成、获取、使用)。
在物联网平台创建设备的时候会给设备颁发密钥,密钥的种类有多样,比如一机一密、一型一密等,密钥生成之后,有2种方式可以将密钥放到设备端:
一种是事先将密钥烧录在设备端程序里面,另一种是当设备首次联网时向物联网平台请求设备密钥,这时如果该设备有注册过则会把相应的密钥传给设备。在设备都有密钥之后就相当于拿到了通行证,可以和物联网平台进行正常的通信。
2)通信安全
主要是指数据传输层面的的安全管理,支持MQTT、HTTPS、CoAP数据传输通道,保证数据的机密和完整性,支持设备权限管理机制,保障设备与云端安全通信;支持设备级别的通信资源(Topic等)隔离,防止设备越权等问题。
主要包括设备端发送数据到物联网平台,物联网平台将数据流转到服务端/其他云产品,服务端远程控制设备这3种消息传送方式。
设备管理主要定义了设备是什么,那消息通信主要解决的就是信息传输机制:怎样将物联网平台配置的设备信息与设备端、服务端、其他云产品进行传递。这机制里面涉及的一个很重要的概念就是Topic,通过对Topic的定义和使用来进行信息传输。
1)基于Topic的上下行通信可以将设备端数据发送至物联网平台或实现服务端远程控制设备
设备端跟物联网平台通信是用的MQTT协议,该协议是基于主题的发布和订阅机制,其所有的信息传递都是通过主题这一中介来完成。
设备可以发布某一主题也可以订阅某一主题,设备发布的话其实就是设备发送数据的消息模式,设备订阅的话其实就是设备接收数据的消息模式,对于物联网设备来说上报和接收是两个基本且重要的消息交互模式,那怎样来定义主题呢?
主题的定义有两种方式:一种是自定义数据模式,一种是利用物模型建立的标准化的数据模式。
主题的定义是基于产品功能的,当产品功能确定好之后,那怎样将这些功能跟设备通信进行关联是一个很重要的问题。
这个时候就需要对产品进行主题的设置。选定产品功能之后,可以根据需要来设置不同的主题比如上报、接收、更新、删除等。在产品层面定义好主题类之后,该产品下的所有设备都会具备该主题的特性,设备就可以利用主题来进行上下行通信。
2)基于服务端订阅、云产品流转的将物联网平台数据传输至服务端/其他云产品的传输模式
服务端可以直接订阅产品下多种类型的消息:设备上报消息、设备状态变化通知、设备生命周期变更、设备拓扑关系变更等。
配置服务端订阅之后,物联网平台就会将产品下所有设备的已订阅的消息转发至服务器。使用物联网平台的数据流转功能,可将Topic中的数据消息转发至其他云产品中进行存储或处理,这就是所谓的云产品流转。
主要涉及到设备监控和运维两个部分。
主要涉及数据的存储、分析和应用。
应用层是物联网的最终目的,其主要是将设备端收集来的数据进行处理,从而给不同的行业提供智能服务。
目前物联网涉及的行业众多,比如电力、物流、环保、农业、工业、城市管理、家居生活等,但本质上采用的物联网服务类型主要有4类:
图4:物联网应用层结构
应用层架构主要有3个组成部分:业务处理,数据库和客户端。
物联网业务处理较为复杂,因为其会涉及到海量数据的整合,这对不同行业终端应用者来说具有很大的挑战,所以目前市场上有专门提供的中间件比如云计算、数据挖掘、人工智能、信息融合等可以供行业者使用,这也在一定程度上激发了物联网应用行业的繁荣。
数据库主要用来存储设备、用户、业务以及其他相关的数据。应用层会接触到终端用户,所以会涉及到客户端的开发,在此就不赘述。
物联网涉及到的关键技术主要有云计算、数据挖掘、人工智能,在此作简要介绍:
写这篇文章的目的一个是自己对物联网领域产品的知识总结,另一个最重要的目的就是希望能给对物联网产品设计有兴趣的人建立一个物联网产品设计以及实现的整体把握,可以了解物联网各个组成部分以及相应的关键节点的主要内容。