版权声明:本文为博主原创文章,未经博主容许不得转载。php
微信公众号(嵌入式企鹅圈)将新开辟专栏撰写物联网完整解决方案的相关技术,包括物联网架构、云服务、微信接口开发、智能设备开发等。鉴于本人研发的进展和须要时间进行原创总结,物联网专栏更新会比较慢,近期嵌入式企鹅圈仍以嵌入式Linux技术开发经验分享为主。web
本文从场景和技术的角度去理解物联网技术和方案的演进,纯粹是我的观点,可能与主流定义稍有误差。浏览器
1、物联网与物联设备
本人对物联网的理解是物联设备组成的网络,所以物联网须要两个要素,一是设备可以互联,另外一个是可以组网。物联网每每又跟智能硬件概念相结合,当今物联网产品形态每每又带有无线链接的特色(有线最主要的弊端就是布线麻烦)。所以可以支持互联、组网、无线三个特色的物联设备技术就是常见的蓝牙和wifi了。蓝牙是近距离通讯,穿墙能力差;而wifi距离远,可穿墙,可是功耗比较高。ZigBee其实通讯距离比蓝牙远,功耗也比wifi低,看起来是比较理想的物联技术,可是ZigBee的组网能力比较差,带宽低,传输慢。ZigBee更多用在工业控制领域。安全
手机是现代社会每一个人不可或缺的产品,蓝牙和wifi是手机的必备模块,因此手机是最大的物联智能设备。另外,因为人是物联网的直接使用者,所以几乎全部的物联解决方案都是围绕手机用户展开。服务器
2、物联场景演进
1.手机直接控制物联设备架构微信
下图是wifi物联架构示意图:网络
手机链接并控制物联设备是物联技术的基础,第一种方式是手机和硬件控制设备都以client的方式链接路由器,这样手机和硬件控制设备都能得到一个动态的IP,这样手机能够经过socket通讯方式来控制硬件控制设备。第二种方式是硬件控制设备带有wifi AP热点功能,手机以wifi client链接上AP,AP的IP是固定的,所以手机也可以对硬件控制设备进行控制。微信开发
这种物联方式通常只是演示的模型,实际应用不多。由于它的缺点显而易见,咱们都知道socket通讯须要知道通讯对方的IP,所以手机上的APP控制硬件设备时须要填入设备的IP。第一种方式的IP是动态的,须要经过路由器的web控制页面(通常电脑链接后浏览器输入192.168.1.1)得到,这在商用应用中不可能存在。第二种方式也须要手机APP输入固定的IP,控制不一样的设备就得输入不一样的IP,用户体验很差。并且这种物联跟遥控没有本质的区别,不利于获取用户的信息。而获取用户的信息并提供优质服务才是物联网的核心要素。架构
2.基于独立后台服务的物联架构微信公众平台
下图是wifi物联架构示意图:
这种物联架构中的独立服务器是以域名的方式存在,这样能够直接解决动态IP不固定的问题。另外,这种物联架构中手机和硬件控制都须要以用户名注册和登录的方式来访问独立服务器,并由服务器经过心跳技术来确认手机和硬件控制设备的在线状态。手机和硬件控制在服务器看来都是普通的物联设备,它们在服务器看来都具备惟一的用户ID,物联设备登录服务器时服务器会获取到用户ID所在设备的IP地址。而手机APP控制硬件设备是以用户ID为依据进行控制,其先将用户ID送往服务器便可获取到对应的IP地址。后续控制能够经过服务器,也能够绕过服务器直接进行。
相似web互联架构在互联网应用普遍存在,如QQ。每台手机都以QQ帐号和密码进行登陆,登陆后,QQ后台服务器会获知每一个用户所在手机的IP地址。两个QQ用户通讯时会先经过帐号来获取对方的IP,并进行下一步通讯。这些访问细节都已经封装在QQ客户端程序中,QQ使用者并不须要理会。用户间的通讯可能会通过QQ服务器,也可能绕过服务器进行。如文字信息通常会送往QQ服务器进行信息过滤再送到对方,而QQ视频应该是双方直接经过IP进行通讯。
这种架构在物联领域曾经是主流的架构,可是其固有的缺点也约束了它的发展壮大。这种架构中,独立服务器通常是由硬件控制设备的销售厂商开发维护的,另外其还须要向购买硬件设备的用户提供手机APP,以让用户可以进行远端的硬件控制。如小孩监护摄像头,厂商须要开发手机监护APP给用户安装使用。能够想到,用户每购买一种物联设备,都须要安装一个不一样的APP。这直接影响了用户体验。用户通常是不情愿安装不少的手机APP的,不只安全没法保障,手机布满控制APP时,要找到哪款设备对应的APP还要花时间。另外,独立服务器的厂商受限于本身的技术储备和运维能力,难以兼容支持第三方厂商的物联设备。
3.基于统一后台服务的物联架构
由第2点,咱们天然能够想到,若是有一家实力超雄的厂商可以提供统一的后台服务,并被广大手机用户使用者承认愿意使用,而物联设备厂商按照统一后台服务拟定的协议进行设备生产并接入到统一的后台服务,那大一统的物联网大平台将成为可能。
微信公众号和微信硬件平台得益于腾讯QQ的超大用户量,很天然就承载了这种平台的实现。彻底能够预见,微信将是将来物联网的重要支撑平台之一,而小米在手机、智能家居和相关行业的布局也是物联网重要支撑平台的竞争者。微信拟定统一开发的协议,让社会上不一样的第三方硬件设备公司接入并得到惟一的用户ID,而小米不只是统一后台的开发维护者,也是小米不一样硬件设备的生产者,二者走的路并不一致。但二者的共同点是后台服务是统一的,二者的隶属公司都是超大致量型企业。
在移动互联网领域,用户基础是很是核心的要素,涉及平台相关的服务,没有超大型体量的企业很难快速构建,顶多只能在垂直领域有所做为。事实上,在微信智能硬件平台出现以前,也有一些企业构建了统一的后台服务,让第三方设备厂商接入。但受限于用户的支持,这些平台都未能为人熟知(也许是我涉猎这方面知识较少,以前有了解过一个平台,后来忘记了)。
这种架构的示意图以下,以微信和蓝牙设备控制为例:
微信公众平台的最核心做用就是给各类不一样的外设提供接入并分配惟一的设备ID。微信智能硬件平台的设备ID分配策略包括外设厂商编码和设备编码两个部分。设备编码在统一厂商里面是惟一的。
手机须要关注外设厂商运维的微信公众号,才能经过该公众号的页面发出设备控制指令消息。控制消息会经过微信公众号服务器发往外设厂商独立运维的后台服务器,并由后台服务器做出处理后向外设发出控制消息,该消息会经过微信公众号服务器到手机的微信客户端,而微信控制端调用蓝牙JSAPI来控制蓝牙外设。手机微信要控制外设须要先开启蓝牙并链接上蓝牙外设。链接协议由微信硬件平台制定,称为airsys协议。
微信公众平台是开放平台,支持第三方服务接入,同时提供微信支付、客户接口、用户管理等九大接口供第三方服务调用。微信公众号支持开发者模式,开启后便可以接入第三方的服务。所谓微信开发便是在调用微信提供的接口的基础上完成业务逻辑开发,支持的语言是php,asp等等。如何构建第三方服务器和如何进行微信接口开发另文再述。蓝牙和wifi因为功耗的差别,其互联微信的架构也有差别,在往后的技术实现分享中会详细进行比较。
3、native APP & light APP
在第2种架构,手机要控制外设须要安装外设厂商开发的APP,是原生APP(native APP);而在第3种架构,手机控制外设只须要关注外设厂商运维的微信公众号,微信是手机的原生APP,而每一个外设厂商经过微信公众号提供的服务称为轻应用(light APP)。微信是智能手机的首选APP,用户量超大,所以基于微信统一后台服务的物联平台是将来物联网的重要支撑。