浅谈 IOT 系统闭环架构

抛砖引玉:未来某一个周末下午2点,阳光明媚,从窗外照进来,微风拂面,我在客厅的沙发悠闲的躺下,叫唤:“小沙小沙,给我播放一首催眠的纯音乐,再给我的后背按摩,10分钟就好了”。沙发便照做了,除了按我说的做,它还通过接触我的皮肤分析我身体的健康状况,然后把信息告诉家里的空调,空调自动调节我最适合的湿度和温度。当我小睡一会,3点多醒来的时候,想冲个凉,于是告诉沙发,帮我加热水,当然沙发通过接触我的头发,分析发质,推荐我要用哪一种洗发水。冲完凉后我又想出门,于是又拜托家里的机器人佣人,帮我叫车… 整个生活,都很方便。

上述我所说的还没普及,但是已经有企业在做了。这种万物联网、万物智能的系统称为IOT(Internet of things),也可以叫物联网(包括智联网),现在随处可见的ofo小黄车也是一种IOT模式。那么,一个IOT系统的完全闭环是如何实现的呢?
其实实现原理不难,无非是硬件产品+软件控制+云端3部分组成,所谓闭环,就是说它们可以构成一个环,实现完整的生产产品链。这3部分的关系图如下所示:

这里写图片描述

上图揭示了两种IOT方式,一种是云端-硬件关方式,一种是云端-软件-硬件方式,现在常见的共享单车,属于云端-软件-硬件方式,软件部分便是app。那么,这3部分的具体细节是怎样的?作为一个后端的开发人员,我负责的自然是云端部分。云端也是IOT中心脏/大脑级别的角色,为了撑起一个IOT的调度,云端该如何设计?

这两个问题我没办法给出标准答案,因为我也在摸索中。在这里我给出一个云端的解决方案。至于硬件或者软件控制系统,对云端而言都是给出一个接口。云端的设计原理图如下:

这里写图片描述

基于上图的架构,每个部分的作用如下:

文件系统
1 存储第三方的资料信息,比如做一个智能机器人的产品,机器人的资料要实现收集,以便处理各种行为,给出指令
2 存储用户行为系统,注意在图中,有一条黑色实线,由硬件/软件指向文件存储,这部分是为用户行为分析设计的。传统的用户行为分析(例如友盟、阿里dataV)采用实时像服务器发送行为消息(埋点)的模式。可是我穷,买不起一个线上的服务器专门用于处理用户数据,因为这种服务器的配置要很高,成本太高!于是,我便将用户一天/一周/一个月的数据存储在本地,然后每隔一段时间直接上传到文件存储,文件存储可以是第三方的存储。然后我再用自己的电脑,在下班或者夜晚从文件存储下载数据到本地,跑大数据系统分析。具体的细节在大数据系统中会介绍。

数据库
1 mysql集群,存储逻辑数据,提供给各个系统使用。
2 数据库的设计要结合终端,尤其是硬件,例如,一个无人机产品,要把它表示出来,数据库的设计就得接近产品本身,其中的字段就包括:芯片(内存、cpu、电阻、电容)、外形、公模等等各个参数和指标,所以在设计数据库的时候要多跟硬件部门取经。

大数据系统
1 统计终端行为规律,IOT的服务对象是终端,所以对终端设备的统计和分析很有必要,统计使用数量,用户在全球的分布规律等等,以智能家居为例,如果可以统计出用户的使用习惯,空调的哪一个温度最多人使用,沙发的哪个位置最多人坐,用户的作息时间、健康状况等等,这些都有助于产品的设计,给运营、给为下一个版本的设计指明方向,还能顺便推荐其他关联产品等等。
2 发掘潜在的功能需求
3 给企业反馈,当一个企业接入一个IOT系统,自然希望看到真实的效果
4 关于我的设计,采用非实时的方式,在管理上很方便,我很明确自己想要哪些数据,不必全部分析。数据的组成要与终端的实际功能相结合,将终端的每个事件定义好,加上时间和gps,发送到文件存储系统,而区分不同的终端,只需要在文件上指明即可,这样做可以减少传输字数。这样统计出来的数据总会比现在要少一天/一周/一个月时间,但是成本大大降低了,因为它不需要一个线上的服务器,只需要一台本地电脑就好,我可以白天用自己的电脑工作,夜晚跑数据分析,0成本!!!

业务系统
1 这要结合具体业务,如果是面对硬件终端的,给终端发送指令、处理终端的指定,如果是软件控制的,就提供接口。
2 业务系统里面可不仅仅是业务这么简单,还包括nginx、缓存、数据层这样的应用,只是说它是直接面对终端、处理业务的。

后台管理系统
1 主要开放给企业用户,定像定制策略、管理终端、查看自己产品的用户行为规律,比如一个硬件终端各个指令对应什么功能,推荐其他产品、投放广告等等,这些由后台管理系统指定

安全系统
1 分为两部分,常规部分是传统的网络安全,获取用户token、数据过滤、加密等,主要应用在对后台管理系统和业务接口的传输上。
2 但是,对于直接面对硬件终端来说,指令的传输安全是特殊的,这个主要借鉴阿里IOT的ID^2 安全模型,就像智能家居,虽然看起来整个家居系统是统一的,其实它们的工作都是独立的,完全由云端控制,云端把它们连在一起,但是终端本身并不是联合的,所以每个终端是独立接收指令+传输加密。沙发将用户的身体信息发送给云端,云端处理,计算出空调应该调节的温度和湿度,将这个指令发送给空调,空调才会做出调整。

终端(硬件、软件)
1 如果是硬件直接连接云端,那么硬件就要提供联网模块
2 如果是走硬件-软件-云端,软件(一般是app)与硬件的连接部分,以wifi、或者蓝牙为载体,协议也要先定义好

上面列举的结构看起来好像挺简单的,可是一旦做起来,才知道好多要考虑的,比如硬件的声音控制,要做到区分不同人的声音,就要做声波过滤,说来惭愧,声波过滤用到的知识是《模拟电子电路》里面的,碰巧这是我大学挂的第一科, 大数据系统数据的提取要经过层层统计,设置一级数据、二级数据、三级数据,提取的依据是什么?怎么提取?,还有日志管理,报警系统,故障容错…一言难尽,总之,我也是在这条路上勤勤恳恳劳动的一只蚂蚁,共勉!

猜你喜欢

转载自blog.csdn.net/change_on/article/details/79436435
IOT