IoT技术选型及模型设计的思考
IoT是Internet of Things的缩写,对应的中文就是“物联网”。在近几年随着大型物联平台的出现和智能设备数量和种类,不断增长,芯片厂商不断的技术突破,新的使用领域和互联场景不断出现,IoT进入到一个快速增长和爆发的时代。(本文被收录在程序员杂志2017年4月刊)
一:IoT时代的无线通讯技术
世界最遥远的具体就是没有网络,网络通讯技术是IoT的基础,常见的无线网络通讯有:WIFI,NFC,Zigbee,Bluetooth, Wireless Wide Area Network(包括等等GPRS,3G/4G/5G,后面简称为WWAN),NB-IoT,Sub1GHZ等等。它们由于组网,功耗,通讯距离,安全性等区别,使他们各种拥有不同的适用场景。 WIFI、Bluetooth、WWAN是现阶段物联网的主力,占了95%以上,ZigBee主要用在全屋智能领域,NB-IoT是下一代针对IoT设计的网络。
那么如何在众多无线通讯技术中找到适合自己的呢?根据我的经验做一下简单的总结,供大家参考。
1.1为什么选WIFI
WIFI最大的优点是连接快速持久稳定,它是解决IoT设备端连接的首选方案,唯一需要考虑的是smart devices对WIFI覆盖范围的依赖导致smart devices的活动范围比较小,不适合随时携带和户外场景。
举例:各种智能家电可以通过WIFI被远程控制。
1.2为什么选Bluetooth
Bluetooth最大的优点就是不依赖于外部网络,便携,低功耗。只要有手机和smart devices,就能保持稳定的连接,走到哪连到哪。所以大部分运动的智能设备和户外使用的设备都会优先考虑Bluetooth。它的主要不足是1:不能直接连接云端 2:传输速度比较慢 3:组网能力比较弱
举例:智能手环,共享单车的智能蓝牙锁,IBeacon定位
1.3 为什么选WWAN:
WIFI的不足是smart devices移动范围小,蓝牙的短板是设备不能直连云端和组网能力弱。而WWAN既可以随时移动,也可以随时联网,看似好像完满弥补了WIFI和Bluetooth的不足,实际上它也主要存在二个短板,1:它在使用的过程中会产生费用,2:网络状况不稳定,常常遇到无网或弱网的环境。
举例:车载智能设备,政府的城市公共自行车
1.4 无线模块选项分析
前面介绍了主流的三种无线技术占到了所有IoT使用场景的99% ,剩下的是一些特殊场景用到的无线技术选型。
ZigBee的使用:
例如在全屋智能(精装修智能房屋)的场景中,从交付开始,家中就已存在大量IoT设备,如果使用WIFI方案,每个设备配网会非常麻烦,并且WIFI每次做移动,修改密码,智能设备都要相应的做调整。如果使用蓝牙方案,已目前的BLE4.2标准,蓝牙的组网智能一个central连接7个外设(部分芯片会有能力扩充,这里因为比较少见,所以忽略),蓝牙组网能力弱,也满足不了需求。所以在全屋智能的场景,经常会使用ZigBee+WIFI的二合一网关。ZigBee和蓝牙一样都是近距离低功耗的通讯技术,但它对比蓝牙有个最大的优势,就是强大的组网能力,在全屋场景,家中的IoT设备多达几十个,蓝牙配网模式满足不了需求,所以一般会使用搭配ZigBee和wifi的二合一网关,通过ZigBee连接IoT设备,通过WIFI将数据同步到云端。
Sub1GHZ的使用:
再如飞行器的使用场景,飞行器一般都在没有WIFI的环境使用,所以WIFI不满足,飞行器常常有较远的飞行距离,所以Bluetooth和ZigBee也不满足,飞行器常常在海边,山上等GPRS无信号或弱网的环境使用,所以WWAN也不适用。这样看来单一的无线模块都不能很好的解决飞行器的通讯需求,所以飞行器需要用的是多种无线模块的组合使用。通过Bluetooth让遥控器和手机连接,通过Sub1Ghz处理长距离的时飞行器和遥控器的通讯,通过其他波长处理中距离或短距离飞行中的数据通信。这种组合既能满足手机操控,又能在中距离有高质量的图像数据,在远距离还能继续控制。
同样功能的设备不一定选相同的通讯模块:
例如补水仪,统一的功能,都是从设备喷出水汽到皮肤,给皮肤补水,但有便携式和固定式样两种,便携式体积小,便于携带,随时使用,那一定会选蓝牙。固定式功能更多,可以冷热交替补水,所以一般在家中使用,选wifi没错。
1.5 总结和整理
对前面介绍的无线通讯技术做个总结,方便大家找到其中的差别,选到适合自己的方案。
展望未来 Bluetooth5和NB-IoT都是需要密切关注的无线通讯技术,Bluetooth50相比蓝牙4.2,在组网和传输距离上有了很大提升,连接范围扩大了4呗,速度提高了2倍,无连接数据广播能力提高了8倍。和Ti,nordic工程师有聊到过,设备厂商的蓝牙5芯片都已经开发完成,等待生产。蓝牙5.0的mesh规格书下半年公版,如果mesh能力出众很可能会对ZigBee有很大的冲击。而NB-IoT目前的提出就是针对IoT的使用场景,其中最大的特色是覆盖面广,价格便宜。NB-IoT现在联盟的力量很强大,大部分芯片商,通讯商,电信运营商都参与其中,都在积极的推进NB-IoT的公共网络建设,预计就在这一年两内NB-IoT的网络会覆盖国内很多地区,未来潜力非常值得关注。
二:IoT物联模型
应用侧的架构,根据接入设备的种类和数量,复杂度会相差很大。其中物联平台的架构最为复杂,例如 阿里智能,微信物联,米家,百度物联这类平台级的系统。不过能做平台级的物联系统的公司还很少,而大部分还是针对特定设备类型或共同特征的智能设备的载体,它们的结构相对简单些,也是本文重点会去介绍的部分。
它们通常的场景就是智能手机,智能设备,智能云三者交互。手机可以直接操作的无线技术主要是WIFI ,WWAN,Bluetooth,WIFI和WWAN的场景几乎一致,Bluetooth架构多一次媒介层,本文主要介绍这三种场景。
WWAN/WIFI和Bluetooth在应用架构设计上最重要的的区别是WWAN的智能设备可以直接和云端交互,而Bluetooth智能设备都需要一个中转媒介,大部分的时候,这个媒介指的是智能手机,偶尔也可以是其他的形态,就我见过的来说,它还有可能是个蓝牙网关,或是一台装有操作系统的智能冰箱。
WWAN和WIFI物联模型的主要区别在于WWAN设备只要插上手机卡,就可以上网,而WIFI设备需要多一步配网的过程。
WIFI在设备初次使用的时候,首先需要配网操作,通过手机和WIFIsmart device通过WIFI建立点对点连接,通过手机把WIFI连接的SSID和密码传递到WIFI smart device,然后在断开手机与WIFI smart devices的直连,把WIFI smart devices连接的WIFI网络切换用于连接的WIFI设备(在家的场景,通常指的是家中的路由器)。WIFI smart device在联网成功后,会向云端发送设备激活的消息,此后设备端和云端就建立了一个稳定,长期的连接,保证了数据上行和命令下发。剩下的产品形态的功能定义和实现了。
蓝牙设备一般都作为外设,和smartphone建立一对一的连接,通过smartphone作为媒介,间距与云端进行数据同步。通常情况,ble smart device和smartphone的通讯非常重要(通道1),设备操控和数据同步都是通过这层连接完成,相比之下云端通道(通道2)经常只是smartphone的普通api请求,用做Bluetooth smart devices的数据持久层使用。
三:IoT模型优化
上一节介绍了WWAN和蓝牙的物联模型,IoT模型在设计的时候,有很多需要考虑的地方,常见的有:通道的安全、物联协议、动态化等等
3.1 通道的安全
通道安全往往是通过对连接通道认证和数据对称/非对称加密这两件事情解决的。 对于安全性较高的设备,一定要在建立连接通道时,确保通道的安全性,在数据和命令上下行时,尽可能不要使用明文传输。安全通道的建立可以使用一些成熟的方案或者和成熟的加密算法去实现,选择算法时主要要考虑到设备端的计算能力,设备端因为成本和体积,计算能力较弱,如果算法过于复杂会严重影响到设备端的处理能力和稳定性。
3.2 物联协议
物联协议是大型IoT平台必须考虑的问题,因为接入的设备类型多,很多场景需要多个设备互联互动,良好的物联协议设计会减低设备接入的成本,提高稳定性和处理能力。现在每个物联平台都有自己的物联协议。
物联协议在细分可以分为通用协议和领域定制协议。通用协议可以做物联通道的兜底方案,对设备有一个统一的收口,而具体领域定制协议可以根据品类和业务深入定制出行业解决方案,可以优化领域和领域设备的接入速度,优化业务流程和场景质量。一个优秀的领域协议需要综合平台,方案商,设备制造商多方经验才能制定,忌讳由平台制定后强推。
用蓝牙来举例说明一下平台的物联协议和业务协议。
微信物联的蓝牙协议:要求广播包中包含ServiceUUID:FEE7作为统一标识,FEA1为数据出口,FEA2为数据入口,把蓝牙协议扁平化形成一种请求,相应的数据模式。这是一个通道的固定,并没有涉及业务。 业务的协议举例:蓝牙体重秤,协议如图
业务协议根据具体的通道,规定了二进制流中每一位数据的含义,数据长度,单位,大小端模式等。业务协议和智能设备具体的功能和要做的业务紧密相关。
3.3 动态化
物联平台因为接入的设备各种各样,各种芯片有各种不同的方案,如果兼容这么多设备和方案,就必须要求这个架构有着非常好的灵活性,而动态化可以极大提高灵活性。
客户端通过通过h5,react-native等动态化渲染技术,解决业务层的动态化,数据协议的动态化可以放在客户端或者服务端,通过动态化脚本方案实现。设备端的动态化可以考虑OTA固件升级实现。
上面只是动态化的一些具体实现方向,对于大型的物联平台,往往是通过有一整套架构和模型去解决的,阿里IoT平台就有自己的一整套解决方案,因为会涉及到一些商业机密,这里不再详述。
四:总结
本文和大家浅尝辄止的一览了IoT方向的一些无线通信技术和IoT模型选择的一些思考,欢迎大家入坑。这些方案是近年来的主流方案,而随着IoT在这几年的飞速发展,也许几年后就可能出现一些杀手级的方案完全改变IoT的现状和格局。也有许多已知技术领域正在孕育当中,比如通讯技术中的NB-IoT,Bluetooth5.0,还有些AR/VR ,语音,区块链,人工智能这些领域技术突破并和IoT相结合能产生怎样的火花?未来值得我们所期待