zoukankan      html  css  js  c++  java
  • 微信硬件平台(0) 流程介绍

    https://blog.csdn.net/yueqian_scut/article/details/51513605

    四、物联网的核心要素

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

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


    业务咨询请发邮件yqwucheng@163.com
    ---------------------
    作者:吴跃前
    来源:CSDN
    原文:https://blog.csdn.net/yueqian_scut/article/details/51513605
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    OSCP Learning Notes Buffer Overflows(3)
    OSCP Learning Notes Buffer Overflows(5)
    OSCP Learning Notes Exploit(3)
    OSCP Learning Notes Exploit(4)
    OSCP Learning Notes Exploit(1)
    OSCP Learning Notes Netcat
    OSCP Learning Notes Buffer Overflows(4)
    OSCP Learning Notes Buffer Overflows(1)
    OSCP Learning Notes Exploit(2)
    C++格式化输出 Learner
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/10192913.html
Copyright © 2011-2022 走看看