Android Things(四)-通讯协议Weave

本篇文章主要介绍一下android things 谷歌物联网中通讯协议weave。


目录

  • 1. 什么是Weave
  • 2. Weave的整体架构
  • 3. WeaveCloud
  • 4. Weave API
  • 5. Schema
  • 6. Weave优缺点

1.什么是Weave

Google把Weave定位为物联网的一个通信层,但本质上,Weave应该属于物联网系统框架的范畴。因为它不依赖于任何底层的通信协议,它可以运行在任何常见的物联网通信协议之上,包括WiFi,BLE,Zigbee等等。Weave是Google推出的一整套通讯的解决方案,包含协议,实现,以及各个厂商的接入方案,Weave并没有在物联网设备之间新开发一些驱动及协议,而是针对已经存在的wifi、蓝牙等协议进行整合处理,形成针对物联网通讯使用的通讯解决方案。

Weave包含了设备端(LibWeave&uWeave)、智能客户端(Weave Client)、云平台(WeaveCloud)、通讯协议(WeaveAPI)。
其中的设备的是指的物联网设备的终端,例如要控制的灯,冰箱物联网设备,智能客户端是指的现在使用的android和ios手机,google已经开发了在手机端的APP,物联网接入方可以接入使用,云平台是指的物联网通讯协议的服务端,用APP控制家中的设备使用的互联网控制服务就是这个云平台,通讯协议是指的设备端和智能客户端、智能客户端和云平台,设备端和云平台相互通讯的协议。

这个是官方网站对Weave的介绍:Weave is a communications platform for Internet of Things (IoT) devices. Weave makes it easy to connect your devices。

2.Weave的整体架构

Weave包含三个大的功能组件: 智能客户端、设备端、云端。

物联网要考虑的事情就是三个端的情况,就不再是互联网的客户端和服务端两端的思维。其中比互联网的端,多了一个设备端,使用手机端通过云端控制设备端。
Weave提供了两类API WeaveCloud API和Weave Local API ,其中WeaveCloud API 是智能客户端和服务端的通讯协议,以及设备端和服务端的通讯协议,在智能客户端和设备端不在近距离的情况下,通过互联网操作及反馈的协议api,Weave Local API 是 智能客户端和设备端直接通讯的协议,在近距离可以直接连接的情况下,这时候就不需要通过互联网通讯及服务。
LibWeave&uWeave设备端组件 LibWeave,根据设备本身的用途及能力分为:适应于具备复杂计算能力的设备 uWeave则是运行在资源受限的嵌入式设备。

Android Things(四)-通讯协议Weave_第1张图片
Weave的整体架构

3.设备端:LibWeave&uWeave

设备端组件又根据不同的目标设备,分成了两个:一个叫做LibWeave,适应于具备复杂计算能力的设备,这类设备支持Linux或者其它功能丰富的操作系统内核,具有数十M以上的内存空间。另外一个叫做uWeave,指的是微小(Micro)的意思。顾名思义,uWeave则是运行在资源受限的嵌入式设备上。

4.智能手机客户端

Weave开发了针对Android和Appleios两种智能手机操作系统的客户端程序库和对应的API,这样智能手机程序员可以直接调用Weave Client的API,来开发客户体验良好的Weave应用程序,来操控基于Weave的物联网设备。比如某个智慧灯泡生产商,在其智能灯泡中嵌入Weave设备端代码(LibWeave或uWeave),然后开发针对智能手机的客户端来操控这些智能灯泡。

同时,Google也开发了缺省的智能手机APP,这个APP可以做基本的Weave设备管理和控制工作。比如,可以通过这个APP,扫描局域网或蓝牙网络上是否有Weave设备。如果有Weave设备,则启动配对程序,把Weave设备纳入APP中进行管理。这时候如果Weave设备是基于Google认证的标准Schema来操作的,那么用户就可以通过Google的APP,来管理和控制Weave设备,而不用关心Weave设备是由哪个厂商生产的。Weave设备的初始化配置,也是由智能手机APP进行的。

5.WeaveCloud

如果Weave设备和智能手机客户端在直接通信的范围之内,比如在同一个WiFi或蓝牙网络内,则可以通过智能手机客户端APP直接管理和操作Weave设备。但很多情况下,智能手机客户端与Weave设备并不在同一个局域网内,這时候就需要通过一个集中的后台来进行相互通信,这个集中的后台,就是Google的Weave云平台(Weave Cloud)。

首先,基于LibWeave的设备,在成功配置之后,会主动通过网络连接到Weave Cloud。同时,智能手机客户端APP也会主动连接到Weave Cloud。这两者都在同一个账号的约束范围之内,这个账号,就是客户的Google账号。

当进行远端控制的时候,智能手机客户端会首先把命令发给Weave Cloud,Weave Cloud再把命令转发给Weave设备。对于状态信息,则是由Weave设备先发送给Weave Cloud,然后中转到用户的智能手机客户端上。当然,这个过程中的所有通信数据,都是经过加密的。

除此之外,Weave Cloud还提供很多其它的辅助功能,比如可以为设备提供云端存储功能,设备的运行信息和中间产生的数据,可以同步到Weave Cloud中进行存储。根据Google的规划,将来还可能提供各种各样的大数据或人工智能功能,总之,Weave Cloud是整个Weave体系的核心。

目前来说,Google尚没有开源WeaveCloud的源代码的计划,所有的Weave客户端和Weave设备端,都需要连接到Google提供的Weave Cloud服务器上,因此这就要求,如果您希望基于Weave框架来开发物联网设备或解决方案,必须保证能够访问Google的服务器系统。

6.Weave API

Weave组件之间是通过WeaveAPI进行通信和交互的,Weave定义了两类API:Weave Cloud API和Weave Local API。智能手机客户端和LibWeave与Weave Cloud通信,必须使用Weave Cloud API。而智能手机客户端与LibWeave之间的通信,则基于Weave Local API。这两类API分别基于不同的传输层协议,完成通信功能。目前蓝牙的设备还连接不了weave cloud api,只能连接weave local api。

在通信安全的问题上,Weave CloudAPI与Weave Local API的需求是一样的,因此HTTPS协议也被Weave Cloud API所采用。但是Weave Cloud API的另外一个特征,是Weave Local API所不具备的,就是Weave Cloud API的星形通信模式。所谓星形通信,指的是所有的智能手机客户端,以及所有的Weave设备,都需要连接到Weave Cloud上,然后所有的通信,都必须经Weave Cloud转接,必须经过Weave Cloud这个“中心”。这样做的核心目的,是确保Weave Cloud能够掌控所有的通信内容,可以做到非常细粒度的权限管理。同时也可以确保Weave Cloud在整个Weave协同框架中的核心地位。而XMPP协议是天生支持星形通信的,该协议基于XML来描述通信的内容,然后通过加密的TCP连接,把通信内容传递给中心服务器(Weave Cloud)。中心服务器根据安全规则等做一番检查之后,再把相关内容转发给目标设备。因此,Weave Cloud API采用XMPP协议。

Android Things(四)-通讯协议Weave_第2张图片
Weave API

Schema :Google试图通过定义一种标准的操作模式,来打破这种“厂商隔离”的状态。其设想的目标就是,用户只需要安装一个智能手机客户端,就可以控制所有厂商的物联网设备,只要物联网设备的软件符合Google的标准。这套标准的操作模式,叫做Schema。智能手机APP与物联网设备之间,以及物联网设备与物联网设备之间,传递的数据无非分为两类:命令(command)和状态(state)。Google对这命令和状态进行了定义并给出了标准。

7.Weave优缺点

Weave是一个相对完整的物联网协同框架含有设备端、智能客户端、云端、通讯协议和通讯标准。使用Weave需要使用统一的google账号,设备商按照Weave的协议进行实现,可以不用花太大力气就可以加入物联网层,但是现在的大的设备厂商,更关心其中的数据和服务,现在Google在国内不同是很大问题,另外Weave Cloud 没有开源,并且目前也没有开源计划。

你可能感兴趣的:(Android Things(四)-通讯协议Weave)