智能家居协议实现V10全解讲解学习.docx

上传人:b****5 文档编号:6516262 上传时间:2023-01-07 格式:DOCX 页数:18 大小:82.57KB
下载 相关 举报
智能家居协议实现V10全解讲解学习.docx_第1页
第1页 / 共18页
智能家居协议实现V10全解讲解学习.docx_第2页
第2页 / 共18页
智能家居协议实现V10全解讲解学习.docx_第3页
第3页 / 共18页
智能家居协议实现V10全解讲解学习.docx_第4页
第4页 / 共18页
智能家居协议实现V10全解讲解学习.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

智能家居协议实现V10全解讲解学习.docx

《智能家居协议实现V10全解讲解学习.docx》由会员分享,可在线阅读,更多相关《智能家居协议实现V10全解讲解学习.docx(18页珍藏版)》请在冰豆网上搜索。

智能家居协议实现V10全解讲解学习.docx

智能家居协议实现V10全解讲解学习

智能家居协议实现方案V1.0

1.协议概述

智能家居协议运行在网关、手机、服务器三个地方,交互方式为两两交互,即网关—手机端、网关—云端、手机端—云端之间的相互通信。

协议整体分为三层:

网络层,安全层,设备管理层。

(说明:

协议分层是逻辑上的分层,并不是各层次之间相互封装的关系,逻辑上包含关系从外到内为:

安全层—网络层—管理层。

分层是为了功能之间的独立)

1网络层

网络层的主要功能为建立连接、注册和登录,建立连接分为:

手机—网关建立连接,网关—服务器建立连接,,手机—服务器建立连接。

手机和网关在无线局域网环境和互联网环境均可连接网关,互联网环境下首先从服务器获取网关IP,然后通过IP和网关连接。

网关和服务器也需要建立连接,首先通过TCP/IP三次握手保证链路畅通,其次网关要在服务器端注册自己的IP地址和ID号,最后,网关要定时向服务器发送心跳包,维护自己的IP地址,保证手机能随时发现网关。

2安全层

安全层完成加密和认证的功能。

3设备管理层

设备管理层完成设备的控制,查询,设备增删改。

协议层次如图所示:

图0协议架构图

协议封装格式如图所示:

图1协议层次图

2.协议分层实现

2.1网络层

网络层的主要功能为建立连接和注册登录,建立连接分为:

手机—网关建立连接,网关—服务器建立连接,手机—服务器建立连接。

网络层字段表:

含义

说明

Layer

Network

表明是网络层数据包

协议三层分别为:

Network

Security

Manage

Source

App,

Server,

Gateway

发送数据包的源设备

App端

服务器

网关

Destination

App,

Server,

Gateway

接收数据包的目的设备

App端

服务器

网关

UserID

XXXXXXXXXX

用户ID

唯一标示

GetawayID

XXXXXXXXXX

网关ID

唯一标示

Type

HeartBeat

Declare

Login

LoginACK

Register

RegisterACK

Query

QueryResult

CheckStatus

Error

数据包类型

心跳

宣告

登录

登录确认

注册

注册确认

查询网关IP

返回结果

查看状态

错误返回

Time

年-月-日-时-分-秒

时间

如2014-11-30T18:

30:

00

MacroStatus

XXX,XXX

宏观状态

用两个值表示

Status

1XX

2XX

3XX

4XX

5XX

结果状态

1XX信息收到,继续处理,

2XX成功类状态信息

3XX客户端错误

4XX网关错误

5XX服务器端错误

Value

可以为数值,也可以为字符串

2.2安全层

2.2.1方案一

加入可选的安全机制,在HTTP请求头部添加加密选项参数,安全级别分为以下几种:

1、不设防级,系统开发初期,先把系统调通,不加密,全部内容用明文。

2、初级,假设攻击者能够拿到自己的账号和密码,模拟各种操作,获取其中的通信报文,并分析出每个字段的含义。

但是攻击者不能拿到其它用户的账号和密码,也不能监听到其它用户的通信过程。

这种情况下,用会话ID进行用户认证,保证每个用户只能按系统给予的权限访问自己的家居设备。

3、中级,假设攻击者在初级的能力上,还能够监听到其它用户的临时会话ID,但是不能反编译客户端,不能拿到集成在客户端中的加密方法和秘钥。

这种情况下,用APP中保存的唯一的秘钥,动态加密会话内容。

4、高级,假设攻击者无法接收客户端手机短信,则用手机短信通道动态下发临时密码,对会话ID就行动态加密。

HTTP头部不填写安全参数即表示不设防,填写某种我们约定的名称,就表示对应到某种加密方式。

系统稳定以后,云端和网关端拒绝不设防通道即可

2.2.2方案二

采用认证方式,发送认证数据包。

安全层字段表:

含义

备注

Layer

Security

表明是安全层数据包

Source

App,

Server,

Gateway

发送数据包的源设备

App端

服务器

网关

Destination

App,

Server,

Gateway

接收数据包的目的设备

App端

服务器

网关

Type

Authentication,AuthenticationACK

Error

数据包类型

认证

认证确认

错误返回

Time

年月日时分秒

时间

Content

不同数据包内容不同

数据包内容

Status

1XX

2XX

3XX

结果状态

1XX信息收到,继续处理,

2XX成功

3XX验证失败

 

2.3设备管理层

设备管理层主要负责手机—网关之间设备信息的交互,主要有设备请求,设备响应,设备控制。

设备管理层数据格式基本相同,控制包最终都是向网关发送。

注:

设备管理层最大限度的保留原有格式和操作,只是将登录和心跳包移到了网络层。

设备管理层字段表:

含义

备注

Layer

Manage

表明是管理层数据包

Source

App,

Server,

Gateway

发送数据包的源设备

可以为手机,服务器,网关

Destination

App,

Server,

Gateway

接收数据包的目的设备

可以为手机,服务器,网关

Type

Query

QueryResult

Control

ControlResult

Update

Add

Delete

Error

数据包类型

查询请求,

查询结果,

控制请求,

控制结果,

设备状态更新

设备添加

设备删除

错误返回

Object

Gateway

Ad-hoc

Sensor

请求对象

网关,

无线传感器网络,

传感器/万能遥控器

NodeID

XXXX

无线传感器节点ID

在一个无线传感器网络中,每个节点的ID是唯一的

Node

Coordinator

Router

terminal

无线传感器节点类型

协调器,

路由节点,

终端节点

Category:

Security

Monitor

Controller

设备类型

家居安防,

家居环境监测,

家居环境控制

SensorType

SoundLightAlarm

SmokeSensor

HumiditySensor……

传感器类型

声光报警器

烟雾传感器

湿度传感器……

Status

1XX

2XX

3XX

4XX

5XX

6XX

请求执行结果

1XX信息收到,继续处理,

2XX成功

3XX客户端错误

4XX网关错误

5XX服务器错误

6XX智能家居设备错误

Time

年-月-日-时-分-秒

时间

数据包发送的时间

Value

一个数组

需要传递的参数值

FuncID

功能ID

要开启的设备功能

3协议实现的功能

3.1建立连接与登录

3.1.1手机与网关建立连接

手机与网关通信前首先要判断自己是什么状态,如果只打开了移动网络,则直接与服务器通信;如果打开了WIFI,则先判断自己是否在智能网关无限覆盖区域内如果不是,则通过WIFI连接服务器。

手机与网关建立连接的状态分为三种:

网关局域网状态,互联网状态,连接失败状态,手机首先会优先判断是否在网关局域网环境,其次是判断互联网环境,如果都不满足,则连接失败。

手机判断是否在网关局域网的环境方式是:

其原理是通过一个共同约定的广播地址作为互相通信的接口,当设备刚加入网络时向该广播地址发送设备宣告消息,宣告本设备的基本信息(主要是IP地址信息),满足要求后会给出单播响应。

当手机端收到该单播响后,通过网关响应中指定的IP地址和端口与网关进行通信。

手机建立连接过程如图:

向广播地址发送宣告

等待响应

Wifi打开

移动网络打开

图2手机建立连接过程

手机与网关通信时(局域网),首先要建立连接,然后对双方的身份进行确认,确认成功后,双方才能进行通信。

手机通过指定IP和端口与网关建立连接。

建立连接过程如图所示:

手机

网关

向广播地址发送宣告

单播响应

请求响应

登录信息

登录确认

请求

 

图3手机与网关交互过程

网关建立连接流程:

 

图4智能网关服务流程

手机端建立连接流程

发送身份信息

等待确认

发送请求

等待响应

收到?

收到?

处理响应

 

图5手机端建立连接流程

2.1.2网关与服务器建立连接

网关通过指定IP和端口同服务器建立连接,网关接入互联网时,会向服务器发送自己的ID号和IP地址,以及身份认证信息,完成在云端的注册。

 

图6网关云端建立连接过程

服务器等待网关注册流程:

图7服务器端注册流程

网关在服务器注册流程:

图8网关注册流程

2.1.3服务器与手机建立连接

手机与服务器建立连接,手机端登录云端属于APP端内容,协议部分暂时不考虑。

用户验证合法后就可以登录并进入网关控制设备。

图10手机端注册登录过程

3.2用户注册

用户在网关注册时,发送注册信息包,包括用户名,密码。

3.3设备添加、删除与更换

1.设备添加

需要添加设备先使用网关发现设备,发现设备后通过手机端将设备信息添加到网关数据库。

2.设备删除

发送设备删除数据包,将设备从网关数据库删除。

3.设备更换

如果有设备需要更换,先使用设备删除数据包,将设备从网关数据库删除,然后更换新设备,更换后发送设备添加数据包,实现设备更换

3.4设备查询/控制

设备查询/控制遵循网关控制设备的控制方式,手机端构造数据包,网关进行解析。

3.5心跳包

网关不仅要要与服务器建立连接,同时还要定时向服务器发送心跳包,维护服务器端的IP地址表和网关状态,确保服务器可以随时找到网关。

心跳包时间间隔为5秒。

心跳包交互过程如图:

 

图9心跳包通信过程

3.7查看状态

查看状态主要目的为查看网关状态,网关状态可以为在线和离线两种状态,在线状态可以远程控制家中设备,离线状态则不能。

查看状态在网络层实现。

3.8错误返回

错误返回状态主要有六种:

1XX信息响应类,表示接收到请求并且继续处理。

2XX处理成功响应类,表示动作被成功接收、理解和接受。

3XX客户端错误,客户请求包含语法错误或者是不能正确执

4XX网关错误,网关不能正确执行一个正确的请求。

5XX服务端错误,服务器不能正确执行一个正确的请求。

6XX智能家居设备错误,智能家居设备不能正确执行一个正确的请求。

3.9设备状态更新

当智能设备状态有更新时(如温度变化),网关收到传感器信息,保存在数据库,同时向手机端发送更新信息包

3.10宏观控制

4数据包示例

1手机在网关登录

1.1手机发送宣告信息

{

"Request":

{

“Layer”:

”Network”,

“Source”:

”App”,

“Destination”:

”Gateway”,

“Type”:

Declare,

“Time”:

"2014-11-30T18:

30:

00",

"Value":

[192.168.0.1]

}

}

1.2网关给出响应

{

"Response":

{

“Layer”:

”Network”,

“Source”:

”Gateway”,

“Destination”:

”App”,

“Type”:

”Declare”,

“Time”:

"2014-11-30T18:

30:

10",

"Value":

[192.168.0.2]

}

}

1.3手机发送登录信息

{

"Request":

{

“Layer”:

”Network”,

“Source”:

”App”,

“Destination”:

”Gateway”,

“Type”:

”Login”,

“Time”:

"2014-11-30T18:

30:

20",

"Value":

[“user1”,”123456”]

}

}

1.4网关给出响应

{

"Response":

{

“Layer”:

”Network”,

“Source”:

”Gateway”,

“Destination”:

”App”,

“Type”:

”LoginACK”,(登录失败为”Error”)

“Time”:

"2014-11-30T18:

30:

30",

"Status":

[200]

}

}

2设备状态更新

{

"Response":

{

“Layer”:

”Manage”,

“Source”:

”Gateway”,

“Destination”:

”Server”,

“Object”:

”Ad-hoc”,

“Type”:

”Update”,

“Category”:

”Monitor”,

“SensorType”:

”Temperaturesensor”,

“NodeID”:

1234

“Time”:

"2014-11-30T18:

30:

00",

"Value":

[31.1]

}

}

3设备控制

对普通灯泡进行控制,有开和关两种控制请求。

Value字段取值的含义如下:

Value

操作

open

close

1手机控制开灯

{

"Response":

{

“Layer”:

”Manage”,

“Source”:

”App”,

“Destination”:

”Gateway”,

“UserID”:

”123456789”

“Object”:

”Sensor”,

“Type”:

”Control”,

“Category”:

”Controller”,

“SensorType”:

”Bulb”,

“NodeID”:

1235

“Time”:

"2014-11-30T18:

30:

00",

"Content":

{

"Value":

[“open”]

}

}

}

2开灯结果

{

"Response":

{

"Layer”:

”Manage”,

“Source”:

”Gateway”,

“Destination”:

”App”,

“GetwayID”:

”987654321”

“Object”:

”Sensor”,

“Type”:

”ControlResult”,

“Category”:

”Controller”,

“SensorType”:

”Bulb”,

“NodeID”:

1235

“Time”:

"2014-11-30T18:

30:

10",

"Content”:

{

"Status":

[200]

}

}

}

4心跳包

{

"Request":

{

“Layer”:

”Network”,

“Source”:

”Gateway”,

“Destination”:

”Server”,

“Type”:

”HeartBeat”;

“GetawayID”:

”123456789”,

“Time”:

"2014-11-30T18:

30:

00",

"Content":

{

"Value":

[192.168.0.1]

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1