一种基于云服务及ZigBee技术的智能家居系统及其设计方法

文档序号:9600889阅读:310来源:国知局
一种基于云服务及ZigBee技术的智能家居系统及其设计方法
【专利说明】一种基于云服务及ZigBee技术的智能家居系统及其设计方法
技术领域
[0001]本发明涉及一种基于云服务及ZigBee技术的智能家居系统及其设计方法,属于计算机应用技术领域。
【背景技术】
[0002]目前,智能家居系统尚未走进千家万户,且现阶段真正采用的智能家居系统仍然是以总线布置的形式,对于已经装修完毕的用户来说,采用智能家居系统既浪费资源,又不方便用户的住宅使用,且大多数的无线系统均采用W1-Fi模式,对于网络及信道具有一定的干扰性。因而,在此基础上采用ZigBee (即:紫蜂协议)这样一个轻型的无线组网机制是非常之便携的,且其价格也十分低廉,即使是已经装修过的用户也完全可以承受地起。再者,现今的芯片技术发达,云服务遍地都是,这给了智能家居系统有了更广阔的空间,智能家居家庭网关核心芯片完全可以采用支持Android系统的芯片,为用户提供更好的交互。
[0003]现今ZigBee协议栈主要解决的是自动组网问题,只要几个ZigBee中有协调者、终端节点或者是路由节点,且所使用的信道相同,那么ZigBee就可以自动组网,然而这些个ZigBee仅仅是组成了一个网络,而真正想通过一个协调者去控制某一个节点,仍然存在着很大的问题。现今的智能家居大多仍然还是以本地操作为主,用户只要出了门,便不能进行控制。且家庭网关仅仅就只能用于控制智能家居系统,缺乏可拓展性,且用户的交互也不是非常理想,本发明的系统就是为了解决ZigBee不能定向控制节点,无法实现远程控制。而本发明能够很好地解决上面的问题。

【发明内容】

[0004]本发明目的在于提供了一种基于云服务及ZigBee技术的智能家居系统及其设计方法,该系统主要以Apache云服务为数据中心,家庭网关控制或接收来自ZigBee协调者的命令,并通过解析命令将设备状态记录后,发送至云服务器上,手机客户端获取HTTP请求后得到家庭网关的状态,客户端也可以发送相关命令到云服务器上,家庭网关做相应解析进行ZigBee节点控制的智能家居系统,该系统解决了 ZigBee定点控制,远程控制等问题。
[0005]本发明解决其技术问题所采取的技术方案是:一种基于云服务及ZigBee技术的智能家居系统,该系统包括家庭网关模块、服务器模块和手机客户端模块。数据是通过W1-Fi无线网进行传输,而其相关的协议均是采用http协议。
[0006]家庭网关模块的功能是:采集设备的所有信息,其中包含:温度检测模块、光强检测模块、继电器控制模块,智能插座模块,而这些模块统一在ZigBee终端上,然后会将这些模块上测得的数据通过ZigBee协议栈发送给ZigBee协调者;所述的ZigBee终端有多个,然后ZigBee协调者通过串口与S5PV210处理器进行数据解析得到相应的状态,显示在家庭网关的界面上,最后通过W1-Fi无线网将数据发送到服务器;
[0007]服务器模块的功能是:获取家庭网关模块的所有的状态信息,并将其保存;
[0008]手机客户端模块的功能是:获取上述模块的相关数据,即:包含服务器模块中所有的信息,点击登陆,输入正确密码即可进入控制界面。
[0009]本发明还提供了一种基于云服务及ZigBee技术的智能家居系统的设计方法,该方法建立ZigBee网络映射表,云服务监听及NDK监听,包括如下步骤:
[0010]步骤1:配置ZigBee的网络传输模式,ZigBee协调者中建立一个空的网络映射表即一个数组用于存放ZigBee节点所发送的网络地址信息;
[0011]步骤2:节点发送自身短地址与协调者进行绑定返回相关应答这样一个网络映射表建立完成;
[0012]步骤3:建立ZigBee的命令体系,发送相关命令即可对相关节点及硬件控制;
[0013]步骤4:为了 ZigBee协调者与家庭网关进行数据通讯,需要使用NDK进行通讯与监听ZigBee协调者回传的数据与发送相关数据;
[0014]步骤5:为了建立远程连接,必须建立一个Web服务器,通过这个Web服务器与家庭网关、手机客户端进行相关的数据传递,通过HTTP请求传递数据以实现数据同步与状态同步,当然手机客户端也可以与服务器通信,远程控制家庭网关,然后通过家庭网关来控制相关的节点;
[0015]步骤6:手机客户端创建,然后其与服务器上的所有数据进行全面的同步。手机可以发送相关的命令到服务器上,家庭网关在监听串口上的ZigBee上,同时监听服务器的命令,该命令来自步骤5中的命令发送接口。至此该系统搭建完毕。
[0016]进一步的,上述本发明的步骤1包括:
[0017]步骤1-1,在TI所提供的ZigBee协议桟的SampleApp.c文件中找到结构体afAddrType_t,并申明一个点对点发送的结构体,设置其发送的目标为SAMPLEAPP_ENDPOINT,即发送给终端,同时设置发送目标地址为Oxffff,即发送给所有的终端节点。
[0018]步骤1-2,建立映射表
[0019]通过在SampleApp.c文件中新建一个二维数组,该数组第一维代表房间号,第二维代表节点设备号,其具体的格式如下:
[0020]uintl6Routing_Table[R00M_C0UNT][DEV_C0UNT] = {0};
[0021]所述的R00M_C0UNT表示房间数量,即ZigBee的个数;DEV_C0UNT房间中有多少设备控制。
[0022]进一步的,上述本发明的步骤2包括:
[0023]步骤2-1,发送本地节点短地址给协调者,首先建立一个4字节大小的数组,终端节点会将’ m’,房间号(R00M_NUM),设备号(DEV_NUM),’ g’这4个数据存入该数组中,设置网络发送目标地址0x0000,即只发送给协调者,将这个数组通过AF_DataReqUeSt的函数进行传递,在AF_DataRequest函数中传入步骤1中申明的结构体名,添加网络的轮回任务号,该数组的大小4以及该数组的数组名,让AF_DataRequest函数能够准确传达相关信息。
[0024]步骤2-2,协调者回应网络应答,申明一个int型的变量,当协调者接收到来自终端节点的数据后,首先会进行解析判断,分析接收到的数据第一个是否为’ m’,最后一个是否为’ g’以及发送的源地址是否为空,如果判断不正确,节点自带的LED1会熄灭,如果判断正确,节点自带的LED1会亮,然后将发送的源地址赋值到变量中,在步骤1中映射表中将第一维定义为步骤2-1中的房间号(R00M_NUM),即接收数据的第二位,将第二维定义为步骤2-1中的设备号(DEV_NUM),即接收数据的第三位,然后将该变量存入在这个位置的数组,这样映射表已经建立起来了,当然为了更加准确地进行组网,协调者仍然需要告诉终端,入网成功。因此,协调者会将’ r’,0,0,’ a’这4个数据存入步骤2-1申明的数组中,并将设置网络发送的短地址为上面所提变量,使用步骤2-1中的方法发送给相关的终端节点。
[0025]步骤2-3,终端处理入网应答,当终端节点接收到来自协调者的数据后,首先会进行解析判断,分析接收到的数据第一个是否为’ r’,最后一个是否为’ a’以及发送的源地址是否为0x0000 (协调者地址),如果判断不正确,节点自带的LED1会熄灭,如果判断正确,节点自带的LED1会亮,这样节点也知道了自己是否入了网。
[0026]进一步的,上述本发明的步骤3包括:在ZigBee上面制定好所有命令体系,提供相关命令发送接收机制与命令的解析机制。通过这些相关的命令达到协调者与节点的查询、控制等功能。该命令的模型包含帧头、命令类型、命令控制的类型、命令值、房间号、设备类型、设备号。而进行控制和查询的操作需要对设备进行I/O初始操作、定义动作、设置状态机。
[0027]进一步的,上述本发明步骤3实现包括以下步骤:
[0028]步骤3-1,建立ZigBee的命令体系,首先建立一个命令体系框架,这个框架分别是CmdFlag,CmdType,CmdCtrlType, CmdCtrlValue, CmdRoomld, CmdDevType, CmdDevId 这 7 个16进制的数,这些16进制数分别代表:帧头,命令类型,命令控制的类型,命令值,房间号,设备类型,设备号。这个框架是协调者针对不同控制命令出发不同功能的整体框架,而其中帧头为0X7f,如果帧头错误代表无法识别,该条命令失效,而命令类型有:断开连接0x00,查询请求0x01,查询应答0x02,控制请求0x03,控制应带0x04,当需要断开对设备的链接就在命令类型输入0x00,而当发送查询请求时,如果查询成功,节点发送的命令在命令类型中会指定为查询应当,如果查询失败,节点发送的命令在命令类型上会直接发送0x6f,代表查询失败;而命令操作类型有:打开0x00,关闭0x01,写0x02,读0x03,当需要对相关的设备进行操作的时候就需要知道设备需要做什么工作,命令操作类型就是指定设备需要执行什么动作,比如在读取温度传感器的温度的时候,就需要才用读操作,因此在命令操作类型需使用0x03 ;而房间号有:客厅0x00,卧室0x01,厨房0x02,注意在这里并不一定只要这三个房间,针对于不同情况可以添加和删减相关的房间号,这些房间号有助于协调者能够迅速找到设备节点;而设备类型有:灯0x00,窗帘0x01,温度0x02,光线强度0x03,烟雾0x04,输出预留0x07,输入预留0x08,这个设备类型的定义保证了一个终端节点可以控制或者读取多个外设的设备,通过设备类型能够让协调者去调动相关的设备类型;而设备号明确了设备类型中的具体哪个设备,这样可以使节点控制更多的外设
[0029]步骤3-2,对设备进行I/O初始化,在cc2530芯片需要对相关的端口进行设置,这样才能使相应的I/O 口具备输出或者输入,在此列举输出与输入的配置,输出配置,如设置P0.0,P0.1,P0.4为输出时,首先需要配置P0SEL为Oxec,即设置相应的寄存器位为0,然后P0DIR需要设置为0x13,即设置相应的寄存器位为1,最后设置相关I/O 口为P0_0,P0_1,P0_4均为0即可,而输入设置,以P1.2为例,首先需要配置P1SEL为Oxfb,即设置相应的寄存器位为0,然后P1DIR需要设置为Oxfb,即设置相应的寄存器位为0,这样输入功能就配置完成了。而且在每一个1/0配置上,设置宏定义,在宏定义判断过程中,所有的功能都是可以定制。在IAR Embedded Workbench中选择EndDeviceEB模式,在菜单栏中选择Project下的Opt1ns,对话框中选择C/C++Compiler,在Defined symbols将宏定义加入即可定制设备I/O。
[0030]步骤3-3,定义相关的动作,通过命令分析,在状态机中调用相关的动作,即可完成对终端节点的控制,定义相关的动作均都通过相应的宏定义来实现,以灯为例,灯设备的1号灯的开启宏定义为DEV_LIGHT1_0PEN(),其宏定义的内容“为do{P0_0 = 1 ;}while (0); ”,该内容表示将在步骤3-2中设置好的I/O 口 P0_0端口置为1,这样就形成了输出高电平点亮小灯的作用信号,而同样的,灯设备的1号灯的关闭宏定义为DEV_LIGHT1_CLOSE (),其宏定义的内容为“do {P0_0 = 0 ;} while (0); ”,该内容表示将在步骤3_2中设置好的1/0 口 P0_0端口置为0,这样就形成了输出低电平熄灭小灯的作用信号,当然在此过程需要进行查询的功能,因此需要直接对P0_0进行查询,那么就需要定义灯1的1/0 口,SP宏定义为DEV_LIGHT1_BIT,该宏定义内容为“(P0_0) ”。同理其他所有外设的动作均可采用灯1的模式,只不过是相应的1/0 口
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1