01 什么是物联网?

物联网(Internet of Things)这个概念读者应该不会陌生。物联网的概念最早于 1999 年被提出来,曾被称为继计算机、互联网之后,世界信息产业发展的第三次浪潮,到现在已经发展了 20 余年。

 

如今,在日常生活中,我们已经可以接触到非常多的物联网产品,例如各种智能家电、智能门锁等,这些都是物联网技术比较成熟的应用。

 

物联网最早的定义是:把所有物品通过射频识别等信息传感设备与互联网连接起来,实现智能化识别和管理。当然,物联网发展到今天,它的定义和范围已经有了扩展与变化,下面是现代物联网具有的特点。

 

1. 物联网也是互联网

物联网,即物的互联网,属于互联网的一部分。物联网将互联网的基础设施作为信息传递的载体,即现代的物联网产品一定是“物”通过某种方式接入了互联网,而“物”通过互联网上传 / 下载数据,以及与人进行交互。

 

举个通过手机 App 远程启动汽车的例子,当用户通过 App 完成启动操作时,指令从已接入互联网的手机发送到云端平台,云端平台找到已接入互联网的车端电脑,然后下发指令,车端电脑执行启动命令,并将执行的结果反馈到云端平台;同时,用户的这次操作被记录在云端,用户可以随时从 App 上查询远程开锁记录历史。

 

这就是一个典型的物联网场景,它是属于互联网应用的一种。“物”接入互联网,数据和信息通过互联网交互,同时数据和其他互联网应用一样汇聚到了云端。

 

2. 物联网的主体是“物”

前面说现代物联网应用是一种互联网应用,但是物联网应用和传统互联网应用又有一个很大的不同,那就是传统互联网生产和消费数据的主体是人,而现代物联网生产和消费数据的主体是物。

 

在现代物联网的应用场景下,数据的生产方是“物”,比如智能设备或者传感器,数据的消费者往往也是“物”。

 

在智慧农业的应用中,孵化室中的温度传感器将孵化室中的温度周期性地上传到控制中心。当温度低于一定阈值时,中心按照预设的规则远程打开加温设备。在这一场景中,数据的生产者是温度传感器,数据的消费者是加温设备,二者都是“物”,人并没有直接参与其中。

 

物联网和传统互联网最大的不同:数据的生产者和消费者主要是物,数据内容也是和“物”息息相关的。

 

3. 物联网和人工智能

人工智能可谓近年来 IT 领域最火的词语之一。纵观人工智能的发展路线,我们可以看到,人工智能的发展之所以能够突飞猛进,主要有以下两个原因。

 

硬件的发展使得深度学习神经网络的学习时间迅速缩短。


在大数据的时代,获取大量数据的成本变低。


事实上,第二个原因尤为重要,神经网络由于其特性,需要海量的数据进行学习,可供学习的有效数据量往往决定了最后训练出的神经网络的效果,甚至算法的重要性都可以排在数据量之后。

 

而物联网设备,比如智能家电、可穿戴设备等,每天都在产生海量的数据,这些数据经过处理和清洗后,都可以作为不错的训练数据反哺神经网络。同时,训练出来的神经网络又可以重新应用到物联网设备中,进而形成一个良性循环。

 

 

图 1-1 所示为物联网应用人工智能方法进行数据采集 - 迭代的循环。通过物联网设备采集并训练数据,在数据中心完成训练后,将模型应用到物联网设备,并评估效果进行下一次迭代。

 

物联网是人工智能落地的一个非常好的应用场景。随着人工智能的迅速发展,物联网这个同样在很多年前就提出的理论和技术,也会迎来新的春天。

 

目前,互联网数据入口渐渐朝几大巨头(例如阿里、腾讯)汇聚,规模较小的公司获取数据的代价越来越高,物联网这块还未完全开发的数据领域就显得尤为重要。

 

前端设备最终会趋于相同,出现同质化竞争,而如何采集和使用好设备产生的海量数据,才是你是否具有竞争优势的决定性因素。

 

4. 物联网的现状与前景

随着 5G 时代的来临,物联网的发展将会非常迅速。同时,物联网方向的新增融资也一直处于上升趋势。下面再从应用场景角度来谈一下物联网行业的发展前景。

 

物联网的应用场景非常广泛,包括:

智慧城市
智慧建筑
车联网
智慧社区
智能家居
智慧医疗
工业物联网

 

在不同的场景下,物联网应用的差异非常大,终端和网络架构的异构性强,这意味着在物联网行业存在足够多的细分市场,这就很难出现一家在市场份额上具有统治力的公司,同时由于市场够大,所以能够让足够多的公司存活。这种情况在互联网行业是不常见的,互联网行业的头部效应非常明显,市场绝大部分份额往往被头部的两三家公司占据。

 

物联网模式相对于互联网模式来说更“重”一些。物联网的应用总是伴随着前端设备,这也就意味着用户的切换成本相对较高,毕竟拆除设备、重新安装设备比动动手指重新下载一个应用要复杂不少。

 

这也就意味着,资本的推动力在物联网行业中相对更弱。如果你取得了先发优势,那么后来者想光靠资本的力量赶上或者将你挤出市场,那他付出的代价要比在互联网行业中大得多。

 

所以说,物联网行业目前仍然是一片蓝海,小规模公司在这个行业中也完全有能力和大规模公司同台竞争。在 AI 和区块链的热度冷却后,物联网很有可能会成为下一个风口。作为程序员,在风口来临之前,提前进行一些知识储备是非常有必要的。

 

02 常见的物联网协议

1. MQTT 协议

MQTT 协议(Message Queue Telemetry Transport,消息队列遥测传输协议)是 IBM 的 Andy Stanford-Clark 和 Arcom 的 Arlen Nipper 于 1999 年为了一个通过卫星网络连接输油管道的项目开发的。为了满足低电量消耗和低网络带宽的需求,MQTT 协议在设计之初就包含了以下几个特点:

 

实现简单
提供数据传输的 QoS
轻量、占用带宽低
可传输任意类型的数据
可保持的会话(Session)


随着多年的发展,MQTT 协议的重点不再只是嵌入式系统,而是更广泛的物联网世界。

 

简单来说,MQTT 协议有以下特性:

基于 TCP 协议的应用层协议
采用 C/S 架构
使用订阅 / 发布模式,将消息的发送方和接受方解耦
提供 3 种消息的 QoS(Quality of Service):至多一次、最少一次、只有一次
收发消息都是异步的,发送方不需要等待接收方应答


MQTT 协议的架构由 Broker 和连接到 Broker 的多个 Client 组成,如图 2-1 所示。

 

 

MQTT 协议可以为大量的低功率、工作网络环境不可靠的物联网设备提供通信保障。而它在移动互联网领域也大有作为,很多 Android App 的推送功能都是基于 MQTT 协议实现的,一些 IM 的实现也是基于 MQTT 协议的。

 

2. MQTT-SN 协议

MQTT-SN(MQTT for Sensor Network)协议是 MQTT 协议的传感器版本。MQTT 协议虽然是轻量的应用层协议,但是 MQTT 协议是运行于 TCP 协议栈之上的,TCP 协议对于某些计算能力和电量非常有限的设备来说,比如传感器,就不太适用了。

 

MQTT-SN 运行在 UDP 协议上,同时保留了 MQTT 协议的大部分信令和特性,如订阅和发布等。MQTT-SN 协议引入了 MQTT-SN 网关这一角色,网关负责把 MQTT-SN 协议转换为 MQTT 协议,并和远端的 MQTT Broker 进行通信。MQTT-SN 协议支持网关的自动发现。MQTT-SN 协议的通信模型如图 2-2 所示。

 

 

3. CoAP 协议

CoAP(Constrained Application Protocol)协议是一种运行在资源比较紧张的设备上的协议。CoAP 协议通常也是运行在 UDP 协议上的。

 

CoAP 协议设计得非常小巧,最小的数据包只有 4 个字节。CoAP 协议采用 C/S 架构,使用类似于 HTTP 协议的请求 - 响应的交互模式。设备可以通过类似于 coap://192.168.1.150:5683/2ndfloor/temperature 的 URL 来标识一个实体,并使用类似于 HTTP 的 PUT、GET、POST、DELET 请求指令来获取或者修改这个实体的状态。

 

同时,CoAP 提供一种观察模式,观察者可以通过 OBSERVE 指令向 CoAP 服务器指明观察的实体对象。当实体对象的状态发生变化时,观察者就可以收到实体对象的最新状态,类似于 MQTT 协议中的订阅功能。CoAP 协议的通信模型如图 2-3 所示。 

 

 

4. LwM2M 协议

LwM2M( Lightweight Machine-To-Machine )协议是由 Open Mobile Alliance(OMA)定义的一套适用于物联网的轻量级协议。它使用 RESTful 接口,提供设备的接入、管理和通信功能,也适用于资源比较紧张的设备。LwM2M 协议的架构如图 2-4 所示。

 

 

LwM2M 协议底层使用 CoAP 协议传输数据和信令。而在 LwM2M 协议的架构中,CoAP 协议可以运行在 UDP 或者 SMS(短信)之上,通过 DTLS(数据报传输层安全)来实现数据的安全传输。

 

LwM2M 协议架构主要包含 3 种实体——LwM2M Bootstrap Server、LwM2M Server 和 LwM2M Client。

 

LwM2M Bootstrap Server 负责引导 LwM2M Client 注册并接入 LwM2M Server,之后 LwM2M Server 和 LwM2M Client 就可以通过协议指定的接口进行交互了。

 

5. HTTP 协议

正如我们之前所讲,物联网也是互联网,HTTP 这个在互联网中广泛应用的协议,在合适的环境下也可以应用到物联网中。

 

在一些计算和硬件资源比较充沛的设备上,比如运行安卓操作系统的设备,完全可以使用 HTTP 协议上传和下载数据,就好像在开发移动应用一样。设备也可以使用运行在 HTTP 协议上的 WebSocket 主动接收来自服务器的数据。

 

6. LoRaWAN 协议

LoRaWAN 协议是由 LoRa 联盟提出并推动的一种低功率广域网协议,它和我们之前介绍的几种协议有所不同。MQTT 协议、CoAP 协议都是运行在应用层,底层使用 TCP 协议或者 UDP 协议进行数据传输,整个协议栈运行在 IP 网络上。而 LoRaWAN 协议则是物理层 / 数据链路层协议,它解决的是设备如何接入互联网的问题,并不运行在 IP 网络上。

 

LoRa(Long Range)是一种无线通信技术,它具有使用距离远、功耗低的特点。在上面的场景下,用户就可以使用 LoRaWAN 技术进行组网,在工程设备上安装支持 LoRa 的模块。

 

通过 LoRa 的中继设备将数据发往位于隧道外部的、有互联网接入的 LoRa 网关,LoRa 网关再将数据封装成可以在 IP 网络中通过 TCP 协议或者 UDP 协议传输的数据协议包(比如 MQTT 协议),然后发往云端的数据中心。

 

7. NB-IoT 协议

NB-IoT(Narrow Band Internet of Things)协议和 LoRaWAN 协议一样,是将设备接入互联网的物理层 / 数据链路层的协议。

 

与 LoRA 不同的是,NB-IoT 协议构建和运行在蜂窝网络上,消耗的带宽较低,可以直接部署到现有的 GSM 网络或者 LTE 网络。设备安装支持 NB-IoT 的芯片和相应的物联网卡,然后连接到 NB-IoT 基站就可以接入互联网。而且 NB-IoT 协议不像 LoRaWAN 协议那样需要网关进行协议转换,接入的设备可以直接使用 IP 网络进行数据传输。

 

NB-IoT 协议相比传统的基站,增益提高了约 20dB,可以覆盖到地下车库、管道、地下室等之前信号难以覆盖的地方。