最大的问题是沟通,沟通也分为人和物沟通与物和物之间沟通,就是互相明白对方在说什么。让“物体”说同样的话,互相听懂,这是最困难也最缺乏标准也是不可能有标准的。如果是物与人之间沟通,就好办多了,举个例子吧,一个智能温控器,显示一个按钮,无论在按钮上显示向上箭头,还是三角符号,或者英文“up”,或者中文“上”,人一看,都能知道这是控制温度上升用的。但机器不行,你必须转化为编码,像“03”表示温度上升,“04”表示下降,其他厂家生产的主控设备,如何知道“03”而不是“08”表示上升,如何让所有厂家生产的温控器也用“03”表示温度上升,“04”表示下降,这就有很大的问题。能够用标准去统一千万种物联网节点输出的数据和接受的控制信息格式呢吗?你能穷举物联网中数以千万计的物体所需要输出的数据和接受的控制命令,一一予以编号么?即使现有的物体都编号了,新冒出来的物种如何及时编号呢?即使解决了编号问题,还有传输顺序呢?数据包里面如果有温度,有湿度,也有告警信息,这些东西在数据包里面怎么排列,都能搞出无数种组合出来。所以,根本不可能有标准去规范物联网中万千种物体的状态、测量、控制命令的格式,各智能硬件的生产厂家,一定是自由飞翔的。事实上,也确实有通过穷举网络中所有需要传输的信息的规范,例如CANOPEN的“对象字典”,每一个CANopen设备里,都存储了一部字典,其主要构成部分是通用字典,这样的话设备与设备之间就能直接进行对话了。ZigBee协议通过profile和cluster ID编码,来列举部分ZigBee设备常“说”的话,使ZigBee设备之间互相听懂。但这两协议,都没有局限于穷举,都是开放的,CANOPEN允许在通用字典外,定义个性化字典,ZigBee也没有允许使用非标准定义的profile和cluster。无论是对象字典,还是profile,都只是在极小的一个领域中穷举,它所规范的信息,与物联网中的信息相比,沧海一栗而已啊。而且标准其实是很不靠谱的,所有标准,都是围绕一个非常小的领域进行,尚且无法避免人们阅读标准后的不同理解,不同理解导致的是不同的执行结果。变电站自动化,这么小的一个领域,有严谨规范的协议,全国只有几十个厂家,而且在国家电网的强力推动下,花了不下几十亿,几年时间,做过无数次互操作测试,才基本统一了设备间传输的信息格式,设备之间才勉强可以对话。
如果能解决设备识别和设备间“沟通”问题,那么智能设备间的互操作就水到渠成了,由于在“识别”和“沟通”方面,无法形成一个开放的、广泛适用的标准,许多物联网系统就另辟蹊径,尽可能绕过标准问题。同时提供智能硬件开发平台以及通用操作系统的中间件,或者开发一个跨界系统,使物联网中不同设备上使用相同的开发工具,例如liteOS,就提供了iOS和Android上的中间件,我则直接把操作系统设计成既适用于通用设备,又可以在智能硬件上跑。人与物之间的操作问题,可以通过远程终端的方案,完美地解决。传统的非智能设备,人和物直接的操作,是通过文字、图形、按键、触屏这些介质来完成的,在物联网世界里,无非是操作介质和执行操作的智能硬件之间,隔了个空间距离而已。手持的操作界面,就是一个显示和操作终端而已,所有操作,对于设备来说,就像在设备上直接操作一样,这样才能规避没有标准的实事。例如空调的控制命令,你就告诉空调,用户按了向下的箭头就好了,空调自己知道那是要降温。但如果手机把遥控命令翻译成命令码下发的话,因为没有标准,每家的命令码都不一样,怎么办?这不是踏进没有标准的泥潭了么?下面我们来谈一种不靠谱但广泛使用的方案,和两种比较靠谱的方案。
先谈谈不靠谱的方案,现在有些智能硬件厂家,开发专门的APP让用户操作智能硬件,这是死路一条,为什么呢?就以智能家居为例吧,假设家里安装了海尔的智能冰箱,美的的智能微波炉,西门子的智能热水器,创维的智能电视,格力的智能空调,还有各种智能开关,温度、湿度传感器等等。你的手机要为每个智能设备安装一个APP,密密麻麻摆满你的手机,那些密集恐惧症的患者,非跳楼不可。所以,需要安装厂家专门开发的APP才能操作的物联网方案,都是不靠谱的。