风起云涌的物联网,随着国内外大公司的入局,形式也逐渐明朗起来。物联网不仅仅是硬件接入的一个网,还是接入后,大数据的存储、分析和呈现,以及人工智能技术的深度介入,对各类企业的生产、运维、管理带来的改变。本篇文章以微软的Azure云、百度的物接入及物解析云平台、阿里的物联网开发套件为切入点,深入介绍相关物联网平台的技术特色,技术路线。希望能给物联网从业者一些参考和启示。
云山雾罩的物联网随着国内外一些大公司的大力推进,面目日渐清晰。今年年初笔者因项目的关系深入了解了当前主流的物联网云平台,又有了不同的感悟。在细说这几个物联网云平台之前,笔者先简单介绍一下如今的物联网。
现在的物联网,必不可少的三要素分别是:云、手机和智能硬件。例如,当前现象级应用摩拜单车就是一个典型案例。
智能硬件的作用:一是控制车锁的开启;二是获取当前GPS坐标;三是和云端通信,发送位置、车锁状态信息和接收云端指令;
手机就是实现用户管理、扫码和位置呈现等功能;
云的主要作用是数据接入,指令发出。另外一个重要功能也许是大数据分析,比如车共享频次,故障收集分析等等。
以上结构可以称之为是当前一个典型物联网应用,是智能硬件和云结合的一个最佳范例。产品功能简单明确,利于复制数量。有了量,也便于大数据分析。智能家居一些应用,其实也可以按这种类似的模式去经营实现。如小米不到千元的智能家居套件,在我亲身试用的大半年里,整体感觉还是非常不错的。
在前几年,智能硬件比较火的时候,第三方云平台,也可以说是智能硬件云平台也是非常热络的,比如Yeelink、机智云等。不过去年年底咨询Yeelink创始人姜兆宁的时候,姜总表示这种模式已经很难持续,目前是专注做Yeelight。机智云是国内比较有影响的第三方物联网云平台,我也曾和北京的团队有过深入的交流,对于物联网云平台对接第三方硬件,发展的并不是如想象的那么顺利。
从摩拜单车、小米智能家居到Yeelink、Yeelight和机智云,似乎隐约告诉我们,智能硬件和云平台紧密结合,做成一个封闭的私有的体系,才更有价值。
那问题来了,微软云、百度云、阿里云做公共物联网云平台,其价值点又在哪里?和以前出现的物联网云平台有什么异同?
都说2016年是物联网元年,在这个年头的三月份,微软Azure平台的IoT Hub开始支持MQTT,百度差不多也是在这个时候推出了基于MQTT的物联网平台,阿里是在下半年推出了基于MQTT协议的物联网开发套件(亚马逊、华为、腾讯也各有很好的物联网云平台,在此就不一一展开说明)。
这里不得不提一下MQTT(Message Queuing Telemetry Transport,消息队列遥测传输),是IBM公司1999年开发出来的通信技术。最大的特点是消息质量可以分三种:最多一次,最少一次和仅有一次(本文中所述的三种物联网平台,第三种消息质量“仅有一次”当前是不支持的)。另外MQTT不仅可以构建在TCP/IP协议栈之上,目前百度和阿里云的物联网平台也支持基于Web Socket之上的构建。
以前的物联网云平台在笔者眼中更像一个大应用平台,而不是一个基础平台,类似工控中的组态软件,把物理上的一个个参数,抽象为一个个IO变量,比如布尔型的开关、浮点型的温湿度、整型的灯光亮度、当然还包括一些二进制数据的摄像头数据。这种架构,其实比较适合参变量相对少的智能家居及智能硬件。但是对比较复杂的工控类应用来说,如果每种数据都抽象为一个IO点,那么都需要配置,适用性就不那么强了。现如今的三大物联网平台,就是把硬件和云端通信进行了简化,即数据上传和下发。正是因为这种机制,反而通用性更强了。
换而言之,以前的物联网云平台更在意接入环节,重在通道。而现在的物联网云平台,接入仅仅只是其中的一环而已。
数据采集环节支持三种方式,Event Hubs、Service Bus和IoT Hub。其中IoT Hub支持三种通信协议HTTPS、AMQP和MQTT,对Azure云来说,三种协议不需要预先在云中设定,自适应。从应用的角度来看,HTTPS、AMQP和MQTT三种协议没有太大的区别,同时微软也是刻意隐藏了三种通信的区别,总体来说就是数据上传和数据下发。不过这里需要指出的是,针对数据下发而言HTTPS的代价还是比较高的,需要不断请求服务器,以获取数据下发的内容。
微软云平台的接入仅仅是其中一个环节。更为重要的是数据的存储、分析,还有展现。特别是数据和分析部分,是大数据的基础,后续所谓的人工智能会基于这些环节发挥重要作用。
百度物联网云平台
百度物联网云平台分为物接入IoT Hub、物解析IoT Parser和物管理IoT Device等。事实上,百度物联网云平台和微软类似,其重点也并非接入环节,而是其重金下注的人工智能部分。
从上图可以看出数据采集后的存储、处理、分析环节也是百度的一个重点,在这个环节,百度的一些人工智能,深度学习的技术可以融入进来。
百度物联网平台虽然和微软一样,也支持MQTT,但是与微软的不同之处在于,百度号称支持原生MQTT。即MQTT协议不仅仅是一个通信信道了,而是充分发挥了MQTT本身的优势,比如信息的发布/订阅(微软的信息发布和订阅是固定的,单一的)。但是这种灵活性,个人认为有些粗糙了。这对基于该平台开发的用户来说,需要比较强的规划能力,否则很容易造成信息风暴。
此外值得一提的是,微软的云必须是SSL加密才能运行云和端通信,但是百度物联网云并不强制用户一定加密。
阿里的物联网开发套件
阿里似乎比较低调,其物联网平台称之为物联网套件IoT Kit。和微软、百度物联网平台一样,也是支持MQTT通信协议。不过相对于微软的封装和百度的完全开放不同,阿里的物联网套件平台做了半封装,比如发布和订阅和微软一样,预先定义了一些关键字,并且除此之外还可以自定义。可以说是介于微软和百度之间的一种模式。并且其通信加密要求是最高的,SSL的版本必须是TLSV1.1或TLSV1.2 版本。
和微软及百度相比,阿里的物联网平台稍有一些简单,其重点一是接入,二是数据导出。提供了相对丰富的API对外接口,对有些智能硬件厂商来说,是一个好消息,相当于阿里提供了一个云端API接口,方便和第三方合作方进行系统级别的开发合作。
三大平台对比
从开发的角度来看,微软的物联网云平台SDK最丰富完善,提供了各种示例,有设备端的、有网关、有云端等等。百度相对小气,其MQTT的SDK就是百度物联网平台的SDK了。阿里的物联网平台也是介于二者之间,特别是在设备端提供了一些基于芯片层面的接入源码,另外API接口部分也提供不少示例。
通过以上种种的介绍,我们之前提到的另外一个问题的答案就昭然若揭了。
微软云、百度云和阿里云等公司做公共物联网云平台,其价值点在于数据采集后的价值,及基于大数据分析下的各种衍生价值。换句话说未来大数据的“金矿”的价值,在于如何挖掘和利用。基于这一点,微软和百度似乎走在了前列。
谈及此处,笔者个人一直秉持的理念也逐渐清晰起来,做有影响力的云平台,还是要靠大公司,而不是自己再去造轮子。在PC时代无论是谷歌、百度还是腾讯等巨头,也是基于Windows等操作系统成就了自己。同样在物联网时代,基于这些大公司的物联网平台,站在巨人肩上,去成就另外一个层面的伟大。
所以在物联网飞速发展的时代,我的重点放在了设备端。从2001就开始从事工控领域的我,绝不会把物联网云平台下的端,仅仅抽象为一个设备,一个网关,其中个人认为这只是冰山一角而已,会有更为广阔的操作空间。
物联网时代已经来临,云端有云端的机会,大数据挖掘有大数据挖掘的机会,设备端也有设备端的机会,就看如何去迎接这个新时代的到来了。