本文从物联网的核心要素、物联网的关键场景、微信硬件平台的通讯协议分析三个维度去分析基于微信硬件平台的物联网架构。相关的背景知识请阅读微信公众号:嵌入式企鹅圈发布的有关物联网和微信硬件专题文章。前端
1、 基于微信硬件平台的物联网架构图示web
上图涵盖如下信息:数据库
1. 基于微信硬件平台的物联网的架构组成,有微信公众平台/硬件平台、第三方厂商云后端、手机微信/公众号、微信硬件设备终端(Wifi和蓝牙BLE)。编程
2. 绿色表明腾讯向开发者和公众提供的基础平台和服务,并经过红色(airsync/airkiss)定义的硬件外设协议供硬件设备接入,红色(微信硬件平台接入协议,XML/JSON)供厂商云后端接入;蓝牙和紫色区域表明开发者所要完成的任务,其中蓝牙是嵌入式硬件设备终端的任务,紫色是第三方厂商云后端的任务。后端
3. 物联网各个组成部分之间的通讯协议标识。除了红色标识的协议是微信公众平台和硬件平台制定的协议必须遵循外,其余组成部分的协议都是自定义的协议。浏览器
4. Wifi模组的供应商提供的SDK通常都提供socket通讯接口,而云后端通常会使用JSP/PHP等web编程技术,所以wifi设备须要模拟HTTP协议跟云终端通讯。HTTP是一个标准的公共的通讯协议,应用层须要在HTTP之上创建自定义的应用协议来完成设备的控制和交互,而应用协议能够是XML/JSON等等。固然,若是云后端使用底层的socket编程,则wifi设备终端能够不须要模拟http。微信
5. 蓝牙经过airsync协议接入微信,该协议规定了设备发现、绑定、登录、初始化、接收用户指令、主动发送消息等过程。网络
. Airkiss是经过JSAPI的方式让用户能够在微信上输入路由器的用户名和密码,而后告知没有按键输入和屏幕显示的wifi设备,让该设备可以连上路由器进入网络在线状态。除此以外,Airkiss跟以后用户和厂商、设备的交互完成没有关系。本质上,Airkiss只是一个配置上网功能,跟物联网的控制和交互无关。架构
7. Wifi设备接入微信硬件平台是远场控制,设备只要处于联网在线状态,那手机用户不管在哪里,只要能上网均可以对设备进行控制,典型的例子是在公司上班能够经过手机控制家里的智能插座上电;蓝牙设备接入微信硬件平台必须依赖于手机,是近场控制,典型的场景是手机控制家里的灯和空调等。微信公众平台
2、物联网的核心要素
本文是从开发者的角度去分析整个微信硬件平台物联网,不去探讨物联网运营之类等领域。那么,从开发的角度,物联网的核心要素什么,微信平台又支持了什么?个人理解是:
1. 设备的合法性和惟一性
微信硬件平台在物联网领域作的事情其实很少,只要仔细想一想架构图中的这么多的紫色和蓝色都是留给开发者,并且都是要赤裸裸的编程。对于通常的设备商,他们想接入也是勉为其难啊。在这个体系架构中,微信硬件平台作的最重要的一件事情就是身份认证。
就像一我的出生后要办一张身份证(出生证实的号码也是身份证号码)同样,设备生产出来要想进入微信硬件领域,它就必须到微信硬件平台注册本身的身份,那它拿什么去注册呢,这个依据天然应该是独一无二的,就像每一个人的指纹,若是我国的小孩办身份证都以录指纹为依据,那就不会出现那么多拐卖儿童了。如今公安局的作法是什么,是硬生生地把一串身份证数字跟人名绑在一块儿,跟天然人的生物特征没有一丁点关系!!!设备的独一无二的依据就是48位的MAC地址(或者是MAC地址经过某种加密运算获得的结果)。
接着办身份证/出生证不是要给小孩起个名字吗,之后你们交流就叫名字了,公安局也是叫名字的嘛,不可能每次喊话都把指纹的二进制数字读出来的啊。嗯,那硬件设备注册时也要报备本身的名字,即设备ID。设备ID也应该在微信硬件平台惟一啊,否则会乱的。就像MAC地址同样,有一部分是表明一个设备提供商向世界IETF组织申请的企业识别字段,另外一部分是设备商内部的分配。或者像身份证那样,前面6个字段是表明一我的出生时的县区行政区划码,后面的数字才表明自身,但同时要保证在这个行政区里面的惟一性。那微信硬件平台怎么规范设备身份?设备身份包括两个部分,deviceType是设备商/销售商的微信公众号的原始ID,deviceID由设备商/销售商自定义,由设备商保证deviceID在其deviceType中的惟一性。
这就是设备的注册场景。设备注册了之后在微信硬件平台就具备合法性和惟一性了。
2. 设备被访问的合理性和正当性
设备最终是应该和人/手机用户交互的,不然就失去了物联的意义了。那么哪一个用户可以访问这个设备呢?
微信用户要关注设备商的微信公众号和绑定设备才能对设备进行访问。若是不绑定就能够访问,那就是全部用户都可以访问这个设备,这显然是不合理的。你买的智能插座放家里,另外一我的也能控制你的插座,多危险。
微信硬件平台确保设备的惟一性,微信公众平台确保微信用户的惟一性,二者经过关注和绑定这个流程创建起彻底权利的访问关系。
微信硬件平台是微信公众平台的一个子集,微信硬件平台会利用微信公众平台已有的功能来完成基础服务。
3. 设备和用户交互的消息触达能力
设备要成为物联网中的一员,必须可以联网,比如人体的神经元,具备可以和外界交流的能力。
微信硬件平台主要从云后端接入和硬件接入两方面做出努力。一是经过airsync协议让蓝牙设备和微信互通,airkiss协议让简单的没有按键和UI交互的wifi设备联网;二是经过制定云后端接入协议来接纳厂商云,经过消息接口和API接口使用户和设备的消息可以相互触达。即设备发出的消息通过微信平台发送到厂商云,厂商云的消息也能主动推送给设备,完成交互。
4. 效率
扫一扫功能对微信的影响是巨大的,加关注,好友,移动支付等等都经过二维码来完成,设备绑定是二维码。微信硬件平台和公众平台产生的二维码关联了用户、设备ID等信息,经过扫一扫功能能方便地进行绑定,接入进入公众号的消息界面。
物联网涉及到终端、前端和后端等等,是一个大工程,不管从开发的角度,仍是从用户使用的角度,都要始终强调便捷的效率,以让用户有足够好的体验,才能使得物联网得以壮大。
5. 消息处理能力—嵌入式系统
这一点并无在物联网架构的图示中出现。物联网决不只仅是一种控制,例如开灯和关灯之类,也不只仅是简单的经过各类传感器来进行数据采集,将来的物联网必定会让用户不断地提升用户体验,例如多媒体、虚拟与实现、数据决策等等,这部分是由高级的嵌入式系统来完成的。嵌入式系统才是设备的大脑,物联网应该更好地拥抱嵌入式系统。
3、物联网场景分析和通讯协议分析(近场蓝牙控制方案)
1.注册
上面已有说明
2.用户绑定
上面已有说明
3.链接
用户在绑定过程当中会自动完成对提供设备的厂商的微信公众号的关注。在之后每次进入公众号时,会自动经过手机蓝牙对蓝牙设备进行扫描链接。只有完成airsync协议的蓝牙设备才能连上微信。例如蓝牙设备广播的字段里面要声明本身的MAC地址,这样微信能识别到这个一个要接入微信的蓝牙设备,而后才会主动地链接它。
4.控制(菜单控制)
1)用户点击微信公众号提供的菜单,如开灯。
2)消息经过微信公众平台发送给厂商云后端。
3)云后端在本身的数据库内验证微信用户和设备的有效性后,将微信菜单的开灯消息转化为自定义协议的开灯消息(这个协议只有云后端和外设设备所认识),并根据airsync中的protobuf协议对消息体进行打包封装,最后经过调用微信硬件平台提供的API接口主动推送出去。
4)微信硬件平台收到信息后经过微信公众平台回传给微信用户所在的公众号。
5)微信将这个消息根据airsync协议经过手机蓝牙发送蓝牙外设。
6)蓝牙外设收到消息进行相应的处理。
从这个过程来看,直接的菜单控制走的流程太长了,影响效率。下面介绍的JSAPI控制就是直接控制,不须要再经过厂商云来发指令。
5. 控制(H5/JASPI控制)
1)用户点击微信公众号提供的H5网页连接
2)微信浏览器经过H5地址向厂商云后端请求响应,返回H5页面。
3)用户点击H5页面的开灯button
4)button经过JSAPI接口直接向蓝牙设备发出自定义的控制消息,JSAPI蓝牙接口已经封装好airsync协议。
5)蓝牙设备收到消息进行相应的处理。
4、物联网场景分析和通讯协议分析(远场wifi控制方案)
1.注册
上面已有说明
2.用户绑定
上面已有说明
3.链接
因为用户和wifi设备并不在一个区域,而是经过网络来链接,所以用户是不直接跟wifi设备打交道的,全部的交互都给经过wifi设备商的云后端进行间接交互。(以前已经说了airkiss只是微信提供的一个配置上网功能,wifi设备通过一次配置后,之后会记住这个路由器的ssid和pwd的,因此配置好一次后,airkiss跟物联网交互一点关系都没有,所以airkiss不该该算在物联网的消息触达协议内)。
用户进入wifi设备对应的公众号后,微信公众号会经过微信公众平台向厂商云订阅和咨询设备的在线状态。所以设备一上线时应该主动联系厂商云后端,告知本身上线了,并不时地发送心跳包维持链接。这样微信公众号一订阅请求,云就返回设备的状态给它。
假设设备在线,云后端返回在线状态,微信公众号就会显示设备链接上。
4. 控制(菜单控制)
1)用户点击微信公众号提供的菜单,如开灯。
2)消息经过微信公众平台发送给厂商云后端。
3)云后端在本身的数据库内验证微信用户和设备的有效性后,将微信菜单的开灯消息转化为自定义协议的开灯消息(这个协议只有云后端和外设设备所认识),而后直接经过网络发给wifi设备。
4)wifi外设收到消息进行相应的处理。
5. 控制(H5控制)
1)用户点击微信公众号提供的H5网页连接
2)微信浏览器经过H5地址向厂商云后端请求响应,返回H5页面。
3)用户点击H5页面的开灯button
4)button经过AJAX接口向厂商云后端发出自定义的控制消息。
5)厂商云接收到消息会转化硬件控制消息,直接经过网络发给wifi设备。
6)wifi设备收到消息进行相应的处理。
从这点来看,wifi设备接入微信硬件平台,微信硬件平台仅仅起到一个入口的做用,消息转发都不通过微信硬件平台了。
5、微信硬件平台的优与劣
回过头来想一想,国内这几年早已经有多家物联网平台,如机智云,yelink等等,它们除了充当公安局的角色确保设备的惟一性,还完成了后端的服务平台,甚至给用户提供物联设备模块,极大地简化了物联设备生产商的开发流程。在这样的基础上,微信硬件平台把那么多的任务丢给了开发者,但仍是不少厂商拥抱它,只能说微信是一个超级APP,是一个极佳的入口,掌握了全社会大部分用户的入口。在移动互联网领域,用户数量就是王道。
诚然,用户量巨大和腾讯体量庞大是微信硬件平台物联网的优点,但要想作得更好,是否是考虑给用户多作一些像机智云同样的工做?
呵呵,腾讯又想到了,QQ物联就是。
不过腾讯什么都作了,那方案开发公司怎么活啊:-)