今天的物联网,主要向遥控遥感、智能互联、数据综合、高效安全方向发展。人们对未来的向往总会找到一些漂亮的词语去美化一下,如智能家居、智慧交通、智能医疗、智能电网、智能物流、智能农业、智能电力、智能安防、智慧城市、智能汽车、智能建筑、智能水务、智能工业、商业智能等等,似乎一切都已是人工智能,描绘着美丽的现在与未来!
这些名词相互覆盖、渗透、关联,单就这些词语只是概念而已。作为搞技术开发的我们,不能被这些概念(有商业炒作之嫌,并非指所有,仅代表个人观点)所迷惑,揪其与物联网实现相关的技术本质,都有着相同或极其相似的逻辑和角色。个人认为,如果一定要把“物联网”与“智能”拉上关系,那物联网也只是人工智能实现技术的一部分。不能说一个电器可以远程遥控就是智能设备了,我感觉这太贬低了智能的本意,更别说人工智能了。
下图是目前网络上大家经常可以看到的对物联网三层架构的架构图:
上图是对物联网架构的一个概括性描述,不够清晰,但比较容易理解,下面分别说明一下这三个层。
感知层
感知层是物联网获取基础数据的部分,这个层实际还包含执行功能,所以更准确的说法应该是感知执行层。利用各种传感器获取被监测环境的物理量、化学量、生物量等自然信息,得到模拟量或开关量、数字量信号,再转换成指定格式的数字信号经过网络层传输给应用层。应用层的下行指令动作信息也会经过网络层传输给这一层,进行最终的动作执行。这一层是在物联网三层架构中的最末端,多数是指一个终端设备,所以这一层也可以称作终端层。
网络层
网络层是物联网的数据传输层,属于物联网的中间环节。在三层架构的描述中,网络层是指物体与云端服务器之间的网络传输部分。各种电信数据网络是这个层的主角,包括2G/3G/4G/5G、NB-iot、WiFi、英特网、专用网络、宽带网络等等。
应用层
这一层内容很多,设备连接到网络之后,从建立连接开始,后面所有的云端业务和功能都是要在应用层实现。各种客户端也要基于这层数据及API建立交互。这一层与通常的互联网应用相差不大,只是多了一些相对陌生的知识点和业务逻辑及开发重点有所不同。
下面就从技术实现相关功能的角度,分析一下目前物联网中的各个角色的关系和任务(基于不同的视角)。
上图中如果是单体设备直接联网的,则省略掉“控制器”部分。
因本系列文章是针对之前从事互联网代码开发人员,想了解物联网代码开发的角度出发的,或者原来从事嵌入式开发人员想进入物联网项目开发的,所以上图紫色部分的不在我们讨论之列。图中蓝色部分,是云端代码开发的部分,也是与之前互联网开发人员从事的内容最接近的部分,但有些知识点需要扩充和重点不同,在后面会有介绍;图中绿色部分,是硬件设备中需要代码开发的部分,也就是嵌入式开发。之前的互联网代码开发人员其实也是可以转入这层进行开发,只是需要多掌握一些新的知识点,但难度不是很大。
下面逐一介绍一下各部分的作用和性质:
传感:温度、光照、气敏、重力、加速度、开关量等等的检测,包括设备的按键输入。
执行:开关量输出、模拟量输出、状态指示等,包括点阵显示屏及数码显示、声光输出等。
存储:采集数据、计算结果及各种逻辑运算需要的预设值等等的硬件端保存。
时钟:提供时间(万年历)基准的单元。
终端计算:对传感部分的数据进行处理发送,与预设值依据预设逻辑进行逻辑运算,决定是否需要输出执行;按收到的指令信息解析并去执行或输出。
自组网:通过485/CAN等有线方式或2.4G/433M等频率的无线方式,基于某种公共协议或自有协议将多个设备组建成一个网络,统一由控制器管理,进行设备间的数据传输。
自组网中继:当控制器与终端设备距离较远,有线或无线方式因距离原因不能维持信号的足够强度时,需要加入自组网中继设备以延长通信距离。
边缘计算:是控制器中的核心部分,也是在连接云端之前,各个硬件组合到一起的控制协调中心。在不连接云端的时候,也能按照预设的综合逻辑完成对所有终端的数据分析及调配控制。
联网模块:是设备与因特网连接的最后单元,如通常大家了解的WiFi模块、NB-iot模块等,负责将设备中的数据使用因特网标准协议转发到云端。
网关设备:如果设备间组网的协议标准与因特网不一致,那么想要连接因特网就需要一个网关设备,将非因特网标准协议的数据转换成因特网标准协议并连接到云端。
联网服务:是云端连接硬件设备最前面的一个单元,目前比较常用的是MQTT协议的代理服务和CoAP协议的服务端程序。
数据服务:接收处理来自联网服务的数据,进行保存和解析处理,根据信息情况作出相应的反应。数据是采用自定义的传输协议还是使用标准的JSON数据包格式,在后面会有专门讨论。作为物联网通信,自有协议的制定应该是一个重要的核心内容,会影响整个物联网系统的运算压力和接入能力。
逻辑处理:根据数据变化情况,按照预定逻辑和算法,作出相应的反应,并通过接口交互反馈给相应的单元。
信息处理:对数据变化反应的信息做再加工,按照预定算法形成新的数据链,供其它单元使用。
接口交互:前端页面或功能APP与数据和连接服务交互的唯一通道,前后端彻底分离,这与通常的互联网开发基本一样,只是交互的信息内容不同。
控制中心:硬件设备及行业、业务功能的管理中心,包括设备连接控制、用户权限控制等重要且必备的功能。针对不同的行业,业务功能会有所不同,页面展现也会有所不同,但是基本数据却是很相似的,所以一通百通。
巡检预警:为保证物联网设备的信息可靠即时,所以就要保证设备的联网可靠性,掉网通知的及时性以及设备运行是否正常的自检数据上报。这就需要有个单元来专门保障这些信息的获取,以知道设备的工作情况及异常通知。
APP操控:可以操作硬件设备工作状态和运行数据的APP端,与服务端交互原理与通常的APP无异,只是传输数据不同,并可采用新的数据格式降低服务端压力。
以上划分是根据实战操作中,按技术分配划分的,不区分行业领域,这些部分都是需要考虑和有人参与开发的,我们学的是代码技术开发,我们要掌握自己从事的工作在哪个环节,会与哪些地方产生直接关联、间接关联。
一个项目是否被市场接受,不仅仅是技术、理念掌握多少就可以,成本也是十分重要的因素。科技改变生活,但是如果成本远远高出了人们的接受能力,那么你的科技产品就改变不了生活。所以能用低成本方案实现的功能,就不要用高成本方案实现(特殊领域除外),因为只有这样才可以普及,否则就一直在炒作概念,实际意义不大。所以后面还会有因为成本而改变开发策略的诸多环节,目的就是为了项目可以真正落地,可以推广普及,惠及大众!
本节完,待续......