IoT, Internet of Things,物联网,顾名思义,是物物相连。而要实现“物物相连”,一共有3个阶段性任务,而这3个阶段性任务,也伴随着巨大的挑战:
阶段一:让“物”说话。
正如婴儿要融入世界,需要会说话一样,我们的“物”也需要能够与外界交流。感知物理世界,变成数字信号:让万物可以感知温度、空间、五觉,并且将自己感知到的进行数据化。在这数据化的过程中,我们发现如下挑战:
- 大量现存设备未被数字化;
- 多样化设备、各种行业协议、各种通信网络;
- 设备要求低功耗、低成本;
- 设备安全问题突出
婴儿光会说话是不行的,要能够和外界交流,还需要和外界使用共同的语言。对于“物”也是一样,我们需要将数变成Online,提供标准化数据,让外部能够理解“物”说的话。而这就需要有广联接和多协议接入,并且数据标准化,统一物模型。可是,现状却是:
- 百万中数据元素,缺乏标准和规范;
- 多样化数据格式
- 各厂商烟囱式发展,数据孤岛林立,数据互通困难
在可以用同一种语言沟通的基础上,我们还需要让婴儿说有价值的话,才能够实现高效沟通。对于“物”而言,亦是如此。尤其是在“物”的世界,我们需要解决海量数据处理和分析,因此对算力的要求极高,并且要求实时性。最终的结果就是行业数字化、数字化行业。但是,正如前面说到的:
- 海量数据带来算力、存储问题;
- 实时流、时序、离线、多维分析复杂;
- 行业应用场景的复杂性;
- 商业闭环、价值变形和分配问题
我们来回顾一下路灯的发展史:
从五六十年代的时间控制器+本地回路控制,定时开关,最简单的逻辑处理关系;到70年代,加上光电控制器,稍微“聪明”了一些,能够感知周围的光感强度,从而调节开关,但是此时还只是在本地回路控制;而到了90年代,已经可以基于无线专网的三遥监控系统,实现远程回路控制;最后再到现在,基于物联网技术的智能化系统,实现信息融合、智能场景和应用拓展,从而实现智慧照明场景(如上图)。
可以看到,智慧场景下的智慧路灯,搭载了许多智能设备,诸如监控组件、LED屏幕、集中控制器、电动汽车充电桩等等,让一盏路灯实现一个路面能实现的基本功能。
以上,就是一盏灯的智慧之路,在这个过程中,物联网技术发挥了极大的作用,让一个单定时控制的路灯,一步步具有多场景、多应用的功能,最后演变为智慧路灯。
而华为云IoT设备接入管理服务,正是基于此技术。
华为云IoT设备接入管理服务介绍首先,我们对物联网要有一个正确的认知:物联网是由多个服务组成的,而非单一的服务。下图是一个整体的物联网解决方案。
在图左侧,是设备,体现的是我们前面说到的:让设备说话、让设备时候同一种话、让设备有说价值的话。那么,我们首先要让这些设备能够“被”感知到,在这个过程中,我们通过物联网操作系统(LiteOS)或者SDK使能,使其智能化;然后感知到的东西以数据的形式通过网关、边缘网关或者直连的方式上传。具体要上传到哪里呢?
考虑到设备的海量问题,我们需要有一个物联网平台。数据通过前面所说的方式上传至物联网平台中的设备接入服务。在设备接入服务,可以实现多网络接入、多协议接入、设备影子等等多种功能;而在整体物联网平台上,还包括全球SIM连接、设备发放、数据分析等等服务。
在图右侧,更能对接华为云的其他产品,诸如DIS/DCS/OBS等等,帮助客户快速构筑满足客户要求的物联网应用,如智慧城市、智慧园区、车联网等等。
回归到技术本身。我们前面聊到,不同的设备,都可以通过华为云设备接入服务接入,但实际上,他们的接入方式和接入协议都是不一样的,那么华为云设备接入服务又是怎么屏蔽底端差异,实现设备接入的呢?
我们首先来看下面这张图:
**通讯模型:**在华为云设备接入服务里,定义了“通讯模型”。同样以我们之前说的婴儿说话为例。人与人之间的沟通,虽然语言有很多种,但是表达的方式还是主要以声音(说话)或者视觉(手语)为主。而物与物之间,同样的,主要的内容也主要是几类:命令下发、命令相应、属性设备等等。
**设备影子:**而在此基础之上,我们还有“设备影子”这一概念。物联网平台支持创建设备的“影子”。设备影子是一个JSON文件,用于存储设备的在线状态、设备最近一次上报的设备属性值、应用服务器期望下发的配置。每个设备有且只有一个设备影子,设备可以获取和设置设备影子以此来同步设备属性值,这个同步可以是影子同步给设备,也可以是设备同步给影子。
**通用协议接入层:**在具备“通讯模型”以后,我们需要把设备数据和通讯模型进行关联,而进行关联的就是“通用协议接入层”。通过通讯协议接入层,我们可以将不同的协议类型(如MQTT/CoAP/TCP等等)上的不同数据转化到通讯模型上。
**编解码处理:**一款产品的设备上报数据时,如果“数据格式”为“二进制码流”,则该产品需要进行编解码插件开发;如果“数据格式”为“JSON”,则该产品下不需要进行编解码插件开发。
以NB-IoT场景为例,NB-IoT设备和物联网平台之间采用CoAP协议通讯,CoAP消息的payload为应用层数据,应用层数据的格式由设备自行定义。由于NB-IoT设备一般对省电要求较高,所以应用层数据一般不采用流行的JSON格式,而是采用二进制格式。但是,物联网平台与应用侧使用JSON格式进行通信。因此,需要开发编码插件,供物联网平台调用,以完成二进制格式和JSON格式的转换。
华为云IoT设备接入管理服务云化架构解读IoT设备接入管理服务架构
在讲解整个框架之前,我们首先要明确的是,华为云IoT设备接入服务内部,实际上是基于Cloud Native(云原生)的微服务的一个架构。里面所有业务相关的服务,都是无状态的。无状态的服务就意味着可以随时被创建,也可以随时被kill掉。
也就是说,即使任何一个服务实例出现问题,都可以通过创建服务来保证业务的无损。同时在海量并发的情况下,通过弹性的缩、扩容,能够使服务满足对应业务量的需求。
在基于无状态服务的框架下,除了负载均衡层(目的是为了让海量的设备能够接入到服务中),上面可以分为两层:
一层是CIG云通讯网关层,这一层实际上是将各种各样的设备的不同的协议和不同的数据格式转换成统一的模型;
另一层是连接&管理业务服务:数据和协议转换成统一的模型,流转到这一层后,由业务服务来做处理,比如说消息流转推送、设备影子、规则引擎服务,以及任务管理服务等等。
更上层是公有云支撑管理服务:通过公有云的支撑服务,像CBC/IAM/SMN等等来整体构建设备接入管理服务。
以上就是设备技术管理服务的一个大致的框架。通过此框架可以了解内部的业务处理逻辑,有助于大家理解后续我们的沙箱实验体验。
产品模型(Profile)-统一的数据&通讯模型产品模型,也就是常说的Profile,简单来说也就是通信模型的映射。
上图是如何将不同类型的数据映射到通讯模型上面的实例。
在图左侧,有3个不同的表计。虽然它们都是水表,但是它们是由不同的厂家生产的,因此数据格式和协议也是不一样的,那么我们该如何采集它们的数据形成统一的格式呢?
**答案就是产品模型。**通过产品模型里面不同的插件,可以将这些不同数据转换成相同格式的数据。对设备厂商来说,无需修改设备代码,通过插件即可适配不同企业的诉求,降低设备厂家的维护复杂度。而对上层应用来说,降低了上层应用对设备管理复杂度,通过在平台规整不同厂家的数据,形成统一的Profile,上层应用无需感知不同设备的差异
**接下来再看规则引擎。**规则引擎是华为云IoT设备接入服务特有的能力,通过规则引擎可以实现数据流转和设备联动。无缝与公有云其他服务对接,实现设备数据按需流转和处理;
而设备联动,也是基于规则引擎来实现的,由条件触发,基于预置规则,引发多设备协同反应,如提醒、告警、状态报告等等。
华为云IoT智慧路灯沙箱实验演示在介绍完华为云IoT设备接入管理服务之后,接下来然后就带大家了解一下相关的沙箱实验。
沙箱实验介绍
智慧路灯沙箱实验组网结构如上。为了方便大家在线完成路等试验,我们需要有一个虚拟设备,在此我们使用的是设备模拟器。设备接入平台,上报属性,然后接收平台下发的命令。而在平台上层,有一个基于华为云软开云的应用层的实现。大致步骤如下:
1、通过华为云软件开发平台构建一个路灯的模拟应用(真实的应用可以参考其构建的方法);
2、申请ECS云服务,将构建的应用部署于ECS上,通过EIP对接IoT设备接入服务,并进行订阅通知;
3、在实验桌面运行MQTT模拟器,模拟路灯设备的行为
设备模拟器在正式开始之前,我们先看一下设备模拟器(如下图)。
连接参数配置区:
设备模拟器打开之后,打开“MQTT设备模拟器”页签。在“连接参数配置区”需要指定进入平台的地址信息,拿到“注册设备成功”或者设备ID和设备密钥,并与平台建立连接;
消息上报区:
与平台建立连接之后,设备上报数据到平台。下面有“消息上报区”,可以在指定设备上报属性的topic之后,在下面将jason格式数据粘贴进来,并进行上报;
日志打印区:
右侧是一个类似消息跟踪的日志打印区域,在此可以看到消息上报的消息记录,包括平台的下发的命令,也会在这里做一个打印跟踪。
Topic订阅区:
Topic订阅区是另一个页签。设备需要订阅平台下发命令的相关topic的时候,就可以在这里指定topic进行订阅。
作者:华为云开发者社区