一张图读懂基于微信硬件平台的物联网架构

本文从物联网的核心要素、物联网的关键场景、微信硬件平台的通信协议分析三个维度去分析基于微信硬件平台的物联网架构。相关的背景知识请阅读微信公众号:嵌入式企鹅圈发布的有关物联网和微信硬件专题文章。

一、 基于微信硬件平台的物联网架构图示

上图涵盖以下信息:

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协议接入微信,该协议规定了设备发现、绑定、登陆、初始化、接收用户指令、主动发送消息等过程。

6. Airkiss是通过JSAPI的方式让用户可以在微信上输入路由器的用户名和密码,然后告知没有按键输入和屏幕显示的wifi设备,让该设备能够连上路由器进入网络在线状态。除此之外,Airkiss跟之后用户和厂商、设备的交互完成没有关系。本质上,Airkiss只是一个配置上网功能,跟物联网的控制和交互无关。

7. Wifi设备接入微信硬件平台是远场控制,设备只要处于联网在线状态,那手机用户无论在哪里,只要能上网都可以对设备进行控制,典型的例子是在公司上班可以通过手机控制家里的智能插座上电;蓝牙设备接入微信硬件平台必须依赖于手机,是近场控制,典型的场景是手机控制家里的灯和空调等。

二、物联网的核心要素

本文是从开发者的角度去分析整个微信硬件平台物联网,不去探讨物联网运营之类等领域。那么,从开发的角度,物联网的核心要素什么,微信平台又支持了什么?我的理解是:

1. 设备的合法性和唯一性

微信硬件平台在物联网领域做的事情其实不多,只要仔细想想架构图中的这么多的紫色和蓝色都是留给开发者,而且都是要赤裸裸的编程。对于一般的设备商,他们想接入也是勉为其难啊。在这个体系架构中,微信硬件平台做的最重要的一件事情就是身份认证。

就像一个人出生后要办一张身份证(出生证明的号码也是身份证号码)一样,设备生产出来要想进入微信硬件领域,它就必须到微信硬件平台注册自己的身份,那它拿什么去注册呢,这个依据自然应该是独一无二的,就像每个人的指纹,如果我国的小孩办身份证都以录指纹为依据,那就不会出现那么多拐卖儿童了。现在公安局的做法是什么,是硬生生地把一串身份证数字跟人名绑在一起,跟自然人的生物特征没有一丁点关系!!!设备的独一无二的依据就是48位的MAC地址(或者是MAC地址通过某种加密运算得到的结果)。

接着办身份证/出生证不是要给小孩起个名字吗,以后大家交流就叫名字了,公安局也是叫名字的嘛,不可能每次喊话都把指纹的二进制数字读出来的啊。嗯,那硬件设备注册时也要报备自己的名字,即设备ID。设备ID也应该在微信硬件平台唯一啊,不然会乱的。就像MAC地址一样,有一部分是代表一个设备提供商向世界IETF组织申请的企业识别字段,另一部分是设备商内部的分配。或者像身份证那样,前面6个字段是代表一个人出生时的县区行政区划码,后面的数字才代表自身,但同时要保证在这个行政区里面的唯一性。那微信硬件平台怎么规范设备身份?设备身份包括两个部分,deviceType是设备商/销售商的微信公众号的原始ID,deviceID由设备商/销售商自定义,由设备商保证deviceID在其deviceType中的唯一性。

这就是设备的注册场景。设备注册了以后在微信硬件平台就具有合法性和唯一性了。

2. 设备被访问的合理性和正当性

设备最终是应该和人/手机用户交互的,否则就失去了物联的意义了。那么哪个用户能够访问这个设备呢?

微信用户要关注设备商的微信公众号和绑定设备才能对设备进行访问。如果不绑定就可以访问,那就是所有用户都能够访问这个设备,这显然是不合理的。你买的智能插座放家里,另一个人也能控制你的插座,多危险。

微信硬件平台确保设备的唯一性,微信公众平台确保微信用户的唯一性,两者通过关注和绑定这个流程建立起完全权利的访问关系。

微信硬件平台是微信公众平台的一个子集,微信硬件平台会利用微信公众平台已有的功能来完成基础服务。

3. 设备和用户交互的消息触达能力

设备要成为物联网中的一员,必须能够联网,好比人体的神经元,具有能够和外界交流的能力。

微信硬件平台主要从云后端接入和硬件接入两方面作出努力。一是通过airsync协议让蓝牙设备和微信互通,airkiss协议让简单的没有按键和UI交互的wifi设备联网;二是通过制定云后端接入协议来接纳厂商云,通过消息接口和API接口使用户和设备的消息能够相互触达。即设备发出的消息经过微信平台发送到厂商云,厂商云的消息也能主动推送给设备,完成交互。

4. 效率

扫一扫功能对微信的影响是巨大的,加关注,好友,移动支付等等都通过二维码来完成,设备绑定是二维码。微信硬件平台和公众平台产生的二维码关联了用户、设备ID等信息,通过扫一扫功能能方便地进行绑定,接入进入公众号的消息界面。

物联网涉及到终端、前端和后端等等,是一个大工程,无论从开发的角度,还是从用户使用的角度,都要始终强调便捷的效率,以让用户有足够好的体验,才能使得物联网得以壮大。

5. 消息处理能力—嵌入式系统

这一点并没有在物联网架构的图示中出现。物联网决不仅仅是一种控制,例如开灯和关灯之类,也不仅仅是简单的通过各种传感器来进行数据采集,未来的物联网一定会让用户不断地提高用户体验,例如多媒体、虚拟与实现、数据决策等等,这部分是由高级的嵌入式系统来完成的。嵌入式系统才是设备的大脑,物联网应该更好地拥抱嵌入式系统。

三、物联网场景分析和通信协议分析(近场蓝牙控制方案)

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)蓝牙设备收到消息进行相应的处理。

四、物联网场景分析和通信协议分析(远场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设备接入微信硬件平台,微信硬件平台仅仅起到一个入口的作用,消息转发都不经过微信硬件平台了。

五、微信硬件平台的优与劣

回过头来想想,国内这几年早已经有多家物联网平台,如机智云,yelink等等,它们除了充当公安局的角色确保设备的唯一性,还完成了后端的服务平台,甚至给用户提供物联设备模块,极大地简化了物联设备生产商的开发流程。在这样的基础上,微信硬件平台把那么多的任务丢给了开发者,但还是很多厂商拥抱它,只能说微信是一个超级APP,是一个极佳的入口,掌握了全社会大部分用户的入口。在移动互联网领域,用户数量就是王道。

诚然,用户量巨大和腾讯体量庞大是微信硬件平台物联网的优势,但要想做得更好,是不是考虑给用户多做一些像机智云一样的工作?

呵呵,腾讯又想到了,QQ物联就是。

不过腾讯什么都做了,那方案开发公司怎么活啊:-)

作者:yueqian_scut

来源:51CTO

时间: 2024-10-30 21:00:45

一张图读懂基于微信硬件平台的物联网架构的相关文章

一张图读懂阿里巴巴收购的背后逻辑

阿里巴巴即将在美上市,之前频繁传出的各种资本动作似乎也接近了尾声,而此时各种关于"商业道德"."缄默期"主题的讨论充斥在各种媒体,仿佛这个世界进入了一个翻家底的阶段,只是这种动作有些让人感觉怪怪的. 如今趁着难得的寂静期,宏观上总结下阿里巴巴过往一段时间眼花缭乱资本收购的背后逻辑,看看素有商业哲学家称号的马先生到底在下一盘什么棋?说实话道哥还真不擅长这么高大上的活儿,不过也硬着头皮上了. 一张图读懂阿里巴巴的战略逻辑 电商业务是阿里巴巴的核心主业,也是其发家的起点,

一张图读懂Linux on Power的六大优势

文章讲的是一张图读懂Linux on Power的六大优势,在方兴未艾的云计算和大数据领域,IBM的Linux on Power正带给我们一种全新的思路和选择.一方面是IBM开始走开放路线,通过推出PowerLinux服务器及OpenPOWER生态联盟,支持Linux.Hadoop.KVM.OpenStack.NoSQL等主流开源技术;另一方面,则是将POWER架构的性能与可靠性优势,与开源技术相结合,推出了一系列让人耳目一新的云和大数据解决方案. 比如,CAPI+Flash+Redis的NoS

一张图读懂在线教育!

一张图读懂在线教育! 作者:黄嘉榔,微信公号:hjialang

谷歌开源 Python Fire;一张图读懂 Python、R 的大数据应用等 | AI 开发者头条

▲ 内容预览: 谷歌开源 Python Fire NASA 发布 2017-2018 软件目录,供开发者免费使用 一张图看懂大数据中 R 语言的应用 一张图看懂大数据中 Python 的应用 每日推荐阅读 谷歌搜索技术分析,如何一步步实现"不止于关键词"? █ 谷歌开源 Python Fire 昨晚谷歌公布了新的 Python 工具包--Python Fire.它的功能很简单:能从任何 Python 代码生成命令行接口(CLI).开发者面对任意一个 Python 程序,仅需调用 Pyt

7张图读懂2015年放假安排有亮点

今天下午,国务院办公厅正式公布了2015年的节假日安排,最大的惊喜莫过于除夕又重新回归国家法定假节日行列.1.元旦1月1日-3日放假调休,4日(星期日)上班:2.春节:2月18日(除夕)-24日放假调休:3.清明节:4月5日放假,6日(星期一)补休 :4.劳动节:5月1日放假,与周末连休:5.端午节:6月20日-22日放假:6.中秋节:9月27日放假:7.国庆节:10月1日-7日放假,10月10日(星期六)上班.不过,面对这一天调休,那一天放假的安排是否觉得很难记住?中国新闻网独家制作了7图,让

马云说中国是在互联网上的国家 一张图读懂中国到底有多强

近年来,中国互联网行业以一系列具有关键里程碑意义的现象,吸引了全球关注的目光.马云如此表述:"如果美国是在车轮上的国家,那么今日的中国是在互联网上.移动端上的国家." 近日,波士顿咨询(BCG)与阿里巴巴.百度和滴滴将共同发布<解读中国互联网特色>.(敬请期待!) 报告认为,中国互联网规模大.增速高.潜力足,互联网化程度名列世界前茅.从影响力看,相当数量的中国互联网巨头和初创企业已登上国际舞台.从结构上看,中国互联网市场呈现鲜明的中国特色,电子商务和互联网金融板块尤为发达.

一张图读懂Java多线程

1.带着疑问看图 1)竞争对象的锁和竞争CPU资源以及竞争被唤醒 2)何种情况下获取到了锁,何种情况下会释放锁 2.还是那张图 3.详细图解 1)Thread t = new Thread(),初始化一个线程,实际上就是一个普通对象,此时他的状态为New 2)t.start(); 线程处于就绪状态(可运行状态),也就是随时等待着运行, 不要小看这个start,这个start决定了他是否是一个真正的线程实例,因为start为其准备了线程环境,你若只是普通调用run方法,那么这就是 一个普通的方法.

信息图:一张图读懂什么是“开放数据”

2009年,开放数据运动席卷全球.随后几年,中国跟进. 现在,已有不少国家和地区正努力开放政府乃至企业的数据,以实现其经济和社会价值. 但直到现在,这还是一个极远又极近的话题. 对大多数人来说,"开放数据"带有某种极客色彩,一时无法与"油盐酱醋"的普通生活关联,但其实它无处不在,比如空气的味道,食物的温度,浩瀚的星空,更美好的生活. 现在,用一张图了解开放数据. End. 本文作者:佚名 来源:51CTO

九张图读懂大数据医疗

人们都想选择个性化的健康医疗,为了实现这个目标,我们必须让大数据参与到破译和分析个人的所思.所需中.除了作为一个行业的流行语以外,大数据可以为医疗保健工作者和消费者带来怎样的成功呢? 下面的信息图是由Evariant公司建立的,这些图阐述了当大数据被有效地管理时将会带来的趋势和利益(Evariant是一家领先的为医院提供大数据服务的公司). 大数据为医疗保健行业带来了巨大的进步.在过去的几十年中,大数据已经深深地影响了每一个企业,包括医疗保健行业.如今,大量的数据可以让医疗保健更加高效,更加个性