微信硬件平台的基础接入和硬件云标准接入分析

本文分析基于微信硬件平台的物联网架构,将从物联网的核心要素、物联网的关键场景、微信硬件平台的通信协议分析三个维度去分析。更多的微信硬件平台开发的深度技术原创分享请订阅微信公众号:嵌入式企鹅圈。

微信硬件平台包括基础接入方案与微信硬件云标准接入方案。前者是在应用端和设备端都完全由厂商开发,微信硬件平台只负责用户管理、设备管理和透明的消息推送;后者是在前者的基础上,给设备端提供了直连SDK(可以适配linux/Android等平台)、提供设备API给第三方硬件平台接入,甚至在应用端根据各种家电场景定义了标准协议和标准应用界面,简化了厂商的开发流程。

最近的一年里,微信硬件和阿里小智、京东智能、机智云、庆科云都得到快速的发展,要么是在云端有深厚积累的企业通过合作眼神到设备端,要么是设备模组商扩展到云端,目标都是形成物联生态圈。而物联的产品应用形态基本上都是从单个APP走向超级APP,从技术上就是从C/S模式走向B/S模式。对技术人员的要求也是不一样的。例如,微信、阿里小智等都是内置了浏览器的,那么应用就要求web开发技术,而C/S方式的物联单品,自然是android/iOS开发。但是各个平台都有自己的优点和缺点,体验也有差异,有些体验还是致命的硬伤。嵌入式企鹅圈将会专门写一篇针对国内物联网平台发展的技术分析和比较文章。本文先分析微信接入方案。

一、 微信硬件平台基础接入架构

微信硬件平台包括近场蓝牙控制接入和远场wifi控制接入两种场景。对于蓝牙接入,其需要通过微信定义的airsync协议跟手机的微信通信,接入微信硬件平台,蓝牙设备和厂商服务器的通信都需要经过微信服务器的推送。而wifi接入的设备是可以直接跟自己的厂商服务器直接通信的。在基础接入方案中,wifi设备是通过厂商服务器给微信用户提供服务的。在第二种微信硬件云接入中,设备端可以通过直连SDK与微信服务器通信,给微信用户提供服务。

二、微信硬件平台硬件云标准接入方案

硬件云标准接入方案是针对wifi接入,其有两种形式。

1.第一种形式:设备可以通过微信提供的直连SDK直接与微信硬件云通信,并实现微信标准场景的协议即可,不需要另加厂商服务器。阿里小智也是类似这种方式。

2.第二种形式:微信通过HTTP提供设备端的API,由设备的厂商服务器负责接入。即设备先接入到设备厂商服务器,并由厂商服务器接入微信硬件平台。例如机智云的设备可以通过设备端API接入微信。但是这种方式要求设备厂商的开发能力足够强。

接下来,我们着重分析基础接入的架构分析,微信硬件云标准接入方案以后再分析。

三、微信硬件平台的基础接入架构分析

上图涵盖以下信息:

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.   消息处理能力—嵌入式系统

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

五、基于远场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设备接入微信硬件平台,微信硬件平台仅仅起到一个入口的作用,消息转发都不经过微信硬件平台了。

六、基于近场蓝牙控制的微信物联方案

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

时间: 2024-11-23 08:58:36

微信硬件平台的基础接入和硬件云标准接入分析的相关文章

微信硬件平台

调用openApi 微信硬件平台是微信推出连接物与人,物与物的IOT解决方案.也就是说可以通过微信控制各种智能设备.比如一些蓝牙设备.空调.电视等等. 我本身不懂硬件(虽然是电子信息专业),硬件是北航的两个研究生在弄,小团队里我负责开发H5自定义面板,刚开始看官方文档各种迷糊,对于jssdk.jsapi.Airkiss.openApi.直连SDK都不知道该用哪个做,官方论坛问问题基本上没结果,加了几个微信硬件群问问题,发现好些开发者和我一样,同一个问题,发到几个群里问,画面好心酸.给wxthin

微信Wifi物联架构---机智云/云智易如何接入微信硬件平台

本文由嵌入式企鹅圈原创团队成员-华南师范大学物联网创新中心黄鑫执笔. 嵌入式企鹅圈已经就微信蓝牙物联架构做过很多次的分析了,这里就不再啰嗦了.这里主要分析物联网远场控制场景,就是wifi物联,当然也包括GPRS.3G.4G等等. 一.微信wifi物联的使命 基于Wifi物联网平台很早就有了,远在微信硬件平台出现之前,所以在wifi物联方面,微信除了抱着一个极大的流量入口,其他方面并不具有什么优势.马化腾说过微信硬件是要连接一切嘛,那微信硬件自然要去适配已经存在的平台和设备.而已有的wifi物联平

微信硬件平台(六) 设备直连微信云

微信硬件开发文档 智能硬件厂家的痛点 微信硬件平台是基于微信公众号体系的智能硬件平台,在公众号的技术架构里,设备厂商必须要有自己的服务器.厂商服务器主要完成两部分工作: 1.管理设备的连接登录.鉴权.状态上报.命令发送.固件更新等基础网络功能: 2.通过H5页面或者微信公众平台消息接口,接收设备用户的操作命令,处理设备业务逻辑,展示设备状态给微信用户. 这两部分工作相对独立. 对于硬件设备厂家来说,服务器第一项工作受到各种因素限制,实现起来相对困难,增加了研发投入时间.精力.资金成本. 同时各个

微信硬件平台框架说明及接入流程

微信硬件平台框架说明及接入流程1 / 15 硬件平台框架说明及接入流程 V0.5 Tencent Confidential 硬件平台框架说明及接入流程 2 / 15 文档变更日志 部门 微信事业群\开放平台创新部\创新二组 版本 描述 撰写人员 更新日期 V0.1 初稿 jeffqi.genewu 2014/07/8 V0.2 加入Q&A jeffqi.genewu 2014/07/8 V0.3 针对常见问题,增加说明.流程图优化. jeffqi.genewu 2014/07/9 V0.4 添加

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

本文从物联网的核心要素.物联网的关键场景.微信硬件平台的通信协议分析三个维度去分析基于微信硬件平台的物联网架构.相关的背景知识请阅读微信公众号:嵌入式企鹅圈发布的有关物联网和微信硬件专题文章. 一. 基于微信硬件平台的物联网架构图示 上图涵盖以下信息: 1.   基于微信硬件平台的物联网的架构组成,有微信公众平台/硬件平台.第三方厂商云后端.手机微信/公众号.微信硬件设备终端(Wifi和蓝牙BLE). 2.   绿色代表腾讯向开发者和公众提供的基础平台和服务,并通过红色(airsync/airk

微信硬件平台 (1) 总说明

微信硬件平台 本文目的,使用微信公众号控制ESP8266的LED开和关.进一步使用微信当遥控器(避免写APP或者IOS或者小程序),控制一切设备.给两个关键的总教程参考. 官网教程  微信硬件平台 微信控制arduino点亮LED教程 目前整体测试效果 打开微信,关注自己的公众号 功能结构图 1 公众号注册 1.申请认证公众号&开通设备功能 1.1公众号申请: https://mp.weixin.qq.com 个人订阅号    功能有限,不能有设备管理模块功能,本教程系列使用的是订阅号,做一个测

微信硬件平台(二) 企业服务号号设备注册和绑定

该教程目的:在教程1里,完成了微信服务器向自己的服务器转发公众号收到的数据.但是缺少用户认证,设备注册,设备绑定等功能.这里使用调试助手模拟一个实际的设备(空调,灯),直接向微信硬件云注册和授权,绑定个人的微信账号.这里暂时没有用的自己的服务器. 微信教程 网友调试过程    微信硬件平台下设备与微信通信 需要: 1 申请一个服务号(必须有企业组织代码,法人等信息). 没有公司的开通一个测试账号.这里使用的是一个公司注册后的服务号. 2 在公众号-设备功能-添加几个设备 (图标随便上传的) 因为

云平台接入第三方服务的实践总结

前言 今年,我的任务是为公司的私有云平台( PaaS )开发对应的云服务平台(我们称之为插件平台),这个云服务平台的主要任务,是为云平台接入一些服务,服务包括但不限于mysql.redis.cdn等存储服务,天气预报等http服务.这个系列文章,希望总结本人在开发这个平台时的得与失. 下面将云服务平台简称为平台(插件平台),所接入的服务,简称为第三方服务(插件) 为什么需要统一接入方案 统一接入方案,是指可以帮助插件平台更快接入第三方服务的一种统一方案 首先要回答的第一个问题,是为什么需要插件平

微信小程序开发(二)-----云开发

1.概念 微信小程序的云开发是腾讯云与微信团队深度合作推出的一个全新的小程序的解决方案,它提供了云函数.云数据库与云存储这三大基础能力支持,随着云开发的出现,小程序的开发者可以将服务端的部署和运营的环节进行服务端的托管,让腾讯云去管理,而不需要在运维和管理方面投入太多的精力. 2.传统小程序开发与云开发的区别 小程序传统开发模式:(开发效率低.运维成本高) 对于小程序传统的开发模式而言,我们需要一个客户端(也就是前端页面),而前端页面展示的数据大多来自于数据库,因此我们还需要一个服务端,把后端的