非易失性网络节点数据存储方法与流程

文档序号:11327834阅读:447来源:国知局
非易失性网络节点数据存储方法与流程

本发明涉及领域智能家居领域,尤其涉及一种非易失性网络节点数据存储方法。



背景技术:

随着信息科技的快速发展,智能家居系统由于其便利性,其应用越来越普及。同时,物联网技术的兴起,带动了智能家居产业的飞速发展,随着zigbeealliance对zigbee协议的逐渐统一,zigbee技术越来越受到开发工程师的青睐。该技术以低功耗、自组织、自恢复,双向传输的优势在智能家居领域中得到广泛应用。智能家居设备和智能主机之间形成zigbee网络,通过智能主机来控制家庭中的硬件设备的状态。智能主机中嵌入控制芯片,利用协调器建立和恢复网络。协调器通过终端节点的网络地址,在zigbee网络中准确的找到对应的目标节点,发送数据信息给节点。

在现有的技术中,一般都是在协调器中建立一个绑定表,来存储节点的详细信息。整套智能家居控制系统中,手机客户端发送控制报文给智能主机,协调器从控制报文中拆分出自己需要的信息,再从绑定列表中去查询目标节点的网络地址,从而去控制智能家居设备。实际的安装使用中,难免会出现停电的情况,如果用户家里一旦出现停电,原先协调器中保存的节点信息就会丢失,再次通电的情况下,zigbee网络会恢复但是之前保存的节点信息会全部丢失,此时在手机端控制家里的设备时就会出现部分节点甚至所有的节点都无法控制的情况,这在实际的应用中是绝对不能够出现的。

分析了解zigbee协议栈的入网流程可知,无论是路由节点还是终端节点在每一次上电后都会重新加入zigbee网络,在zdo层调用zdo_startdevice()函数,它是终端节点设备开始启动入网流程的入口函数,节点从这里开始启动寻找网络,直到它找到父节点并成功加入zigbee网络为止,否则会重新开始入网搜索。如图2所示,终端节点在成功加入zigbee网络的过程中,需要提取自己的物理地址和网络地址发送给协调器,协调器在收到终端节点发送过来的消息数据中,提取终端节点的物理地址和网络地址,并且在绑定列表中存储起来,每一新加入的节点协调器都会根据对方的物理地址来判断该节点的信息是否已经在绑定列表中保存,如果之前就已经保存过,则更新改节点的网络地址,反之则插入新的节点信息。当协调中的绑定列表已经成功保存了终端节点的信息后,协调器就可以通过在绑定列表中查询节点的网络地址,发送对应的消息给节点。如果发生停电,终端节点会重新加入网络,重新在协调中注册自己的节点信息,该技术在终端节点重新加入网络时,加入ack认证,确认是否收到节点的信息,若未收到,则在该事件中再去执行一次入网的过程,直到节点收到协调器发送的ack认证报文,才停止加入网络的请求。

上述的基于终端节点ack认证的方式,在网络规模很大的情况下,一旦所有的终端节点同时上电,它们会在较短的时间内,同时给协调器发送端到端的确认消息,在这种情况下难免会产生网络风暴,导致部分节点发送的消息协调器无法接收到。同时,针对协调器而言,每次一断电就需要重新建立绑定列表,这对本身内存就很小的协调器来说是非常不利的,影响协调器的使用寿命。再者,如果仅仅是协调器断电,重启后绑定表将不存在,导致协调器无法和终端节点通信。



技术实现要素:

本发明实施例的目的在于提供一种非易失性网络节点数据存储方法,其能够提高网络稳定性,且在协调器断重启后能够及时恢复网络节信息,以解决上述技术问题。

一种非易失性网络节点数据存储方法,应用于智能家居系统的局域网中。所述局域网包括协调器及终端节点,所述协调器用于组建局域网,所述终端节点用于采集数据并加入所述局域网。所述非易失性网络节点数据存储方法包括步骤:使所述协调器启动并建立网络,将所述协调器及所述终端节点设置为采用非易失性存储器进行数据存储;初始化所述协调器,在所述非易失性存储器中分配需要的内存空间;使所述协调器将用于保存所述终端节点信息的绑定表存储在所述非易失性存储器中;以及,使所述协调器读取所述非易失性存储器中的绑定表信息,并查询是否存在所述终端节点的信息;若存在,则读取终端节点的信息,若不存在,则将所述终端节点的信息添加至绑定表中,并将更新后的绑定表信息存储至所述非易失性存储器中。

在其中一种实施方式中,初始化所述协调器后,判断是否已存在非易失性存储空间,若不存在,则重新初始化所述协调器,直到存在非易失性存储空间。

在其中一种实施方式中,判断绑定表中是否存在终端节点信息时,先从非易失性存储器读取已存在的终端节点数,若终端节点数的返回值大于零,再从非易失性存储器中读取绑定表的信息。

在其中一种实施方式中,从非易失性存储器读取已存在的终端节点数时,若终端节点数的返回值为零,则将所述终端节点的信息添加至绑定表中。

在其中一种实施方式中,添加新的终端节点信息时,执行以下步骤:使所述终端节点上电,开启入网流程并加入网络;所述终端节点向所述协调器发送报文,以传送终端节点的信息;以及,所述协调器根据所述终端节点的物理地址,在绑定表中查询是否存在所述终端节点的信息,若存在,则更新所述终端节点的信息,若不存在,则在绑定表中添加所述终端节点的信息。

在其中一种实施方式中,若所述协调器从终端节点发送的报文中判断该报文内容为删除终端节点信息时,根据该终端节点的物理地址,在绑定表中查询该终端节点的信息,并删除该信息,再将更新后的绑定表信息写入非易失性存储器并存储。

在其中一种实施方式中,所述协调器建立的局域网为应用于智能家居系统的基于zigbee协议的网络。

相对于现有技术,本发明实施例提供的非易失性网络节点数据存储方法利用非易失性存储器的非易失性,使所述协调器将用于保存终端节点信息的绑定表存储在非易失性存储器中,当所述智能家居系统断电重启时能够及时恢复所有终端节点的信息,且局域网不会发生变化,网络稳定性较好。

附图说明

为了更清楚地说明本发明的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供非易失性网络节点数据存储方法的流程示意图;

图2是本发明背景技术的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1,本发明实施例提供一种非易失性网络节点数据存储方法,所述方法应用于智能家居系统中,将智能家居网络中的节点信息存储入非易失性存储器中,使智能家居系统中的硬件设备之间能够便捷、快速地建立网络连接。

所述智能家居系统包括控制终端、远程服务器、智能主机以及硬件设备,所述控制终端用于接收用户的操作指令,并用于将所述控制指令发送至所述远程服务器;所述远程服务器用于与所述智能主机交互,并用于将所述控制指令发送至所述智能主机;所述智能主机用于与所述硬件设备交互,并根据所述控制指令控制所述硬件设备工作。其中,所述硬件设备为智能家居设备,包括但不限于为灯光、窗帘、窗户、插座、电视、空调等家电设备。

在本实施方式中,所述智能主机与所述硬件设备之间、多个所述硬件设备之间的通信基于zigbee协议。应当理解的是,zigbee是一种低速短距离传输的无线网络协议,zigbee协议从下到上分别为物理层(phy)、媒体访问控制层(mac)、传输层(tl)、网络层(nwk)、应用层(apl)等。在本说明书中,基于zigbee协议建立的网络称为zigbee网络。

本发明实施例提供的非易失性网络节点数据存储方法,应用于上述的智能家居系统。在本实施方式中,所述局域网为zigbee网络。所述局域网包括协调器、路由节点及终端节点。所述协调器用于选择相对空闲的信道以及个域网络标识符(panid)启动局域网,以协助建立局域网络中的安全层以及处理应用层的绑定。所述路由节点用于允许其他网络节点关联并加入所述协调器建立的网络,还用于转发其他网络节点的消息,以扩展信号的传输范围。在本实施方式中,所述路由节点设在所述智能家居系统的硬件设备中。所述终端节点为所述网络中具体执行数据采集的设备。在本实施方式中,所述终端节点为所述智能家居系统的硬件设备。所述非易失性网络节点数据存储方法包括步骤:

步骤一:使所述协调器及所述终端节点上电,所述协调器启动并建立网络,并将所述协调器及所述终端节点设置为采用非易失性存储器(nv)进行数据存储,使所述协调器能够将用于保存终端节点信息的绑定表存储在非易失性存储器中。具体地,在所述协调器和所述终端节点中添加编译选项nv_init、nv_restore,以保证所述协调器和所述终端节点在断电重启后,能够恢复到断电之前的局域网。在本实施方式中,所述协调器建立的网络为zigbee网络。

步骤二:初始化所述协调器,在非易失性存储器中分配需要的内存空间,所述协调器将用于保存终端节点信息的绑定表存储在非易失性存储器中。具体地,初始化所述协调器时,调用zigbee网络应用层的函数initnvbinditem()来分配内存空间。

步骤三:判断是否已存在非易失性存储空间,若不存在,则需要重新初始化所述协调器,直到存在非易失性存储空间。具体地,在本实施方式中,采用osal_nv_item_init(uint16id,uint16len,void*buf)函数接口判断是否已经存在非易失性存储空间,如果不存在,就需要重新开辟并且初始化,以为后期的存储做准备。

步骤四:从非易失性存储器中读取绑定表的信息,并判断绑定表中是否存在终端节点信息,若存在,则提取已存在的终端节点的信息。具体地,采用函数restorebinditemfromnv()读取绑定表的信息,在本实施方式中,首先利用osal_nv_read(zcd_nv_mac_nwk_bind,0,(uint16)(sizeof(nvnodenum)),&nvnodenum)函数从非易失性存储器读取已存在的终端节点数,若终端节点数的返回值大于零,再从非易失性存储器中读取绑定表的信息,这样就不必重复添加终端节点的信息,精简了处理步骤。若终端节点数的返回值为零,则将所述终端节点的信息添加至绑定表中。

步骤五:若判断绑定表中不存在终端节点信息,则需要在非易失性存储器中添加新的终端节点信息,以防止所述协调器断电重启后信息数据的丢失。具体而言,在本实施方式中,若绑定表中不存在终端节点信息,则认为该zigbee网络中添加了新的底层设备,即添加了新的终端节点,则需要执行以下步骤添加终端节点信息:

步骤s101:使所述终端节点上电,开启入网流程并加入网络。

步骤s102:所述终端节点向所述协调器发送报文,以传送终端节点的信息,该信息包括所述终端节点的物理地址。

步骤s103:所述协调器根据所述终端节点的物理地址,在绑定表中查询是否存在所述终端节点的信息,若存在,则更新所述终端节点的信息,若不存在,则在绑定表中添加所述终端节点的信息。具体在本实施方式中,采用函updatebinditem(afincomingmsgpacket_t*pkt)数实现该步骤。

步骤s104:将更新后的绑定表信息写入非易失性存储器并存储,以便在智能家居系统断电重启后能够恢复所有终端节点的信息。

进一步地,若所述协调器从其接收的报文中判断该报文内容为删除终端节点信息,则根据该终端节点的物理地址,在绑定表中查询该终端节点的信息,并删除该信息后清理该信息所占用的存储空间,再将更新后的绑定表信息写入非易失性存储器并存储。通过该步骤,能够及时清除绑定表中不需要的终端节点信息,给非易失性存储器腾出存储空间,避免自然的浪费。

本发明提供的非易失性网络节点数据存储方法应用在智能家居系统中,其在zigbee协议栈中采用非易失性存储器存储网络的配置参数(如网络地址),使数据在断电后也不会丢失。当智能家居系统断电后,只需要等待恢复通电就可以恢复原来的网络,终端节点的网络地址就不会发生变化,能够维护网络的稳定性,无论是终端节点还是协调器都可以恢复到之前的zigbee网络,避免了重新组网入网的繁琐程序。另外,通过上述的方法构建的绑定表有增删查改的功能,在实际应用中方便维护终端节点设备,且能够有效地保护终端节点的重要信息,利于zigbee网络的通信和维护。

因此,上述的非易失性网络节点数据存储方法利用非易失性存储器的非易失性,使所述协调器将用于保存终端节点信息的绑定表存储在非易失性存储器中,当所述智能家居系统断电重启时能够及时恢复所有终端节点的信息,且zigbee网络不会发生变化,网络稳定性较好。当用户在控制端(如手机端等)控制底层设备时,所述协调器就可以根据绑定表中的信息准确、快速地定位到底层设备,并将信息准确发送至用户的控制端,让用户体验达到精简极致。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1