一种Event-Action冲突解决方法及装置
技术领域
本发明涉及通讯领域,特别是涉及一种Event-Action(事件-设备行为)冲突解决方法及装置。
背景技术
Alljoyn是一种基于C/S架构的设备之间点对点通信框架。Alljoyn由Bus Daemon和终端节点组成。Bus Daemon负责终端节点之间的消息路由,服务发现等功能。终端节点是指基于Alljoyn的应用程序,启动后需要连接到Bus Daemon上,终端节点如果提供服务,则向Bus Daemon注册一个服务名称,由Bus Daemon广播出去。如果作为客户端,那么可以通过服务名称来查找服务,并通过远程调用或信号来完成指定功能。
在相关技术中,对于设备控制方面,设备动作的触发有三种情况,一是用户手动触发,二是用户通过控制终端触发,三是利用Event-Action模型中对应的Event触发。
Alljoyn支持Event-Action模型。Event-Action模型,即由事件Event(signal)和设备行为Action(method)配对,当Event发生时,设备执行指定的Action,这样的配对为一条rule,所有rule的集合构成rule engine。
Event指的是通知触发事件的signal,Action指的是应对特定的signal所采取的操作,即method。设备自身有哪些Event和Action是暴露的,其它设备可以通过相应接口获知。在有中心节点的场景中,通过Event触发设备的Action和通过控制终端调用设备的操作,都属于method call,对于设备来讲是一样的。
现有的rule engine处理Event的操作比较简单,接收到Event后即调用相应的Action。下面举例说明。
现有方案1:用户定义了两组Event-Action,一组为电视开-客厅灯灭,即Event(TvOn)—Action(LightOff),另一组为门打开-客厅灯亮,即Event(DoorOpen)—Action(LightOn)。两个Action为相反操作。
(1)家中一名成员从外归来,打开门,此时门发出Event(DoorOpen)信号,ruleengine根据配对情况调用客厅灯触发Action(LightOn),然后客厅灯打开。
(2)同时,另一名成员打开电视,于是电视发送Event(TvOn)信号,rule engine根据配对情况调用客厅灯触发Action(LightOff),然后客厅灯关闭。
现有方案2:用户定义了两组Event-Action,一组为室温30度-窗户半开,即Event(30oC)—Action(WindowHalfOpen),另一组为室内煤气含量超标-窗户全开,即Event(Gas)—Action(WindowAllOpen)。两个Action为相近操作。
(1)某一日煤气泄漏,传感器发出Event(Gas)信号,窗户执行Action(WindowAllOpen),全部打开。
(2)同时,室温达到30度,传感器发出Event(30℃)信号,窗户执行Action(WindowHalfOpen),窗户半开。
对于家电控制的上述两个现有方案,其缺点如下:
现有方案1:在同一时间,不同的Event发生导致了相同设备的相反的Action,此时设备要么无法操作,要么按照Event到来的时间先后顺序执行,根据场景中的情况,用户开门后,客厅的灯先开后闭,会给用户带来极坏的体验,甚至会有安全隐患。
现有方案2:在同一时间,不同的Event发生导致了相同设备的相近的Action,此时,设备将按照Event到来的时间先后顺序执行,根据场景中的情况,窗户先打开全部,后又变成半开,不利于煤气的疏散,可能导致严重的安全问题。
针对Event-Action模型,由于用户使用习惯和应用场景的不同,不同的触发原因以及不同的Event可能对应到同一设备的相反或相近Action,若这样的Event同时发生,则会导致Action执行的冲突,给用户带来不好的体验,甚至可能带来安全隐患。比如电视开(Event-TvOn),对应客厅灯灭(Action-LightOff);门打开(Event-DoorOn),对应客厅灯亮(Action-LightOn)。此时,若电视和门同时打开,则会引起灯的冲突Action。
针对相关技术中Event-Action的冲突操作使得用户体验不佳的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中Event-Action的冲突操作使得用户体验不佳的问题,本发明提供了一种Event-Action冲突解决方法及装置,用以解决上述技术问题。
根据本发明的一个方面,本发明提供了一种Event-Action冲突解决方法,其中,该方法包括:在事件Event被触发时,确定所述Event所匹配的设备行为Action;获取所述Action对应的当前正在被执行的冲突操作的类型;其中,所述冲突操作的类型包括人为触发和Event触发;对于不同类型,采取不同方式执行所述Action。
优选地,对于不同类型,采取不同方式执行所述Action包括:如果所述当前正在被执行的冲突操作的类型是人为触发,则直接执行所述Action;如果所述当前正在被执行的冲突操作的类型是Event触发,则根据预设的各个Event的优先级从高到低的顺序,按序执行各个Event所匹配的Action;其中,所述各个Event包括:被触发的Event,以及所述当前正在被执行的冲突操作所对应的Event。
优选地,在获取所述Action对应的当前正在被执行的冲突操作的类型之前,所述方法还包括:在冲突操作库中查找是否存在与所述Action对应的冲突操作;其中,冲突操作库中记录有各个Action对应的冲突操作,其由设备出厂时定义的基本冲突库构成、或者由用户自定义的自定义冲突库构成、或者由设备出厂时定义的基本冲突库及用户自定义的自定义冲突库合并构成。
优选地,获取所述Action对应的当前正在被执行的冲突操作的类型包括:基于实时操作集,确定在所述冲突操作库中查找到的所述Action对应的冲突操作是否正在被执行;如果正在被执行,则确定所述当前正在被执行的冲突操作的类型;其中,所述实时操作集用于按照类型,实时存储人为触发的冲突操作,和Event触发的冲突操作。
优选地,所述根据预设的各个Event的优先级从高到低的顺序,按序执行各个Event所匹配的Action,包括:执行最高优先级的Event所匹配的Action,将其他Event暂存在缓冲池中;在最高优先级的Event所匹配的Action执行完成后,从缓冲池中按照优先级从高到低的顺序依次调出Event,执行其所匹配的Action。
根据本发明的另一方面,本发明还提供了一种Event-Action冲突解决装置,其中,该装置包括:匹配查找模块,用于在事件Event被触发时,确定所述Event所匹配的设备行为Action;类型获取模块,用于获取所述Action对应的当前正在被执行的冲突操作的类型;其中,所述冲突操作的类型包括人为触发和Event触发;行为执行模块,用于对于不同类型,采取不同方式执行所述Action。
优选地,所述行为执行模块包括:人为触发执行模块,用于在所述当前正在被执行的冲突操作的类型是人为触发的情况下,直接执行所述Action;Event触发执行模块,用于在所述当前正在被执行的冲突操作的类型是Event触发的情况下,根据预设的各个Event的优先级从高到低的顺序,按序执行各个Event所匹配的Action;其中,所述各个Event包括:被触发的Event,以及所述当前正在被执行的冲突操作所对应的Event。
优选地,所述装置还包括:查找模块,用于在获取所述Action对应的当前正在被执行的冲突操作的类型之前,在冲突操作库中查找是否存在与所述Action对应的冲突操作;其中,冲突操作库中记录有各个Action对应的冲突操作,其由设备出厂时定义的基本冲突库构成、或者由用户自定义的自定义冲突库构成、或者由设备出厂时定义的基本冲突库及用户自定义的自定义冲突库合并构成。
优选地,所述类型获取模块,还用于基于实时操作集,确定在所述冲突操作库中查找到的所述Action对应的冲突操作是否正在被执行;如果正在被执行,则确定所述当前正在被执行的冲突操作的类型;其中,所述实时操作集用于按照类型,实时存储人为触发的冲突操作,和Event触发的冲突操作。
优选地,所述Event触发执行模块包括:第一执行单元,用于执行最高优先级的Event所匹配的Action,将其他Event暂存在缓冲池中;第二执行单元,用于在最高优先级的Event所匹配的Action执行完成后,从缓冲池中按照优先级从高到低的顺序依次调出Event,执行其所匹配的Action。
本发明有益效果如下:
本发明提出了一种基于Alljoyn的Event-Action模型的冲突解决方案,首先对触发设备动作的操作进行分类辨别,主要分为人为操作和Event触发。对于Event-Action模型,对每一个Event添加类型位设置优先级,将Event分类型管理。避免Event-Action模型中不同Event导致的相近或相反Action的冲突。提高了家电设备的智能性,提升了用户体验,同时设备操作更加安全。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
图1是根据本发明实施例一的Event-Action冲突解决方法的流程图;
图2是根据本发明实施例二的有中心节点的智能家居系统的冲突解决方法流程图;
图3是根据本发明实施例二的有中心节点的智能家居系统的结构示意图;
图4是根据本发明实施例四的Event-Action冲突解决装置的结构框图。
具体实施方式
为了解决现有技术中Event-Action的冲突操作使得用户体验不佳的问题,本发明提供了一种Event-Action冲突解决方法及装置,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
实施例一
图1是根据本发明实施例一的Event-Action冲突解决方法的流程图,如图1所示,包括(步骤S102-步骤S106):
步骤S102,在Event被触发时,确定该Event所匹配的Action;
步骤S104,获取上述Action对应的当前正在被执行的冲突操作的类型;其中,上述冲突操作的类型包括人为触发和Event触发;其中,该冲突操作表示相近操作或相反操作,例如:窗户全开与窗户半开、灯灭与灯亮;
步骤S106,对于不同类型,采取不同方式执行上述Action。
具体地,如果当前正在被执行的冲突操作的类型是人为触发,则直接执行上述Action;如果当前正在被执行的冲突操作的类型是Event触发,则根据预设的各个Event的优先级从高到低的顺序,按序执行各个Event所匹配的Action;其中,所述各个Event包括:被触发的Event,以及所述当前正在被执行的冲突操作所对应的Event。
通过本实施例,对设备行为Action的冲突操作进行类型划分,针对人为触发操作和Event触发操作,分别采取对应方式执行Action,解决了相关技术中Event-Action的冲突操作使得用户体验不佳的问题,从而避免了Event-Action模型中不同Event导致的相近或相反Action的冲突,提高了家电设备的智能性,提升了用户体验,同时设备操作更加安全。
为了完善本实施例的技术方案,下面对该方案的细节进行进一步的介绍。
在Event被触发之前,配置多个Event-Action对;为各个Event设置对应的标示位,存入优先级库中;其中,该标示位表示Event的优先级。Event的优先级可用于在最终执行Action时,依据Event优先级的顺序依次执行。由于Event-Action的冲突在很多场景下可能导致安全危险,设置优先级将有效保护有安全作用的Event-Action顺利执行,且不被打断。
在Event被触发之前,构建冲突操作库。在冲突操作库中查找是否存在与Action对应的冲突操作;其中,冲突操作库中记录有各个Action对应的冲突操作,其由设备出厂时定义的基本冲突库构成、或者由用户自定义的自定义冲突库构成、或者由设备出厂时定义的基本冲突库及用户自定义的自定义冲突库合并构成。
用户可以自定义冲突操作库,冲突操作可以为毫不相关的操作,且可以定义Event的类型,使得设备可以提供更加复杂的服务,更好的满足用户的需求。
由厂家定义的基本冲突库,厂家可以将可能导致安全事故的设备的Action全部设置成冲突操作,这样也能有效的避免对这些设备的误操作。
在步骤S104中,获取Action对应的当前正在被执行的冲突操作的类型,具体包括:基于实时操作集,确定在冲突操作库中查找到的Action对应的冲突操作是否正在被执行;如果正在被执行,则确定当前正在被执行的冲突操作的类型;其中,所述实时操作集用于按照类型,实时存储人为触发的冲突操作,和Event触发的冲突操作。
在该优选实施方式中,上述冲突操作库用于后续查找Action对应的冲突操作,上述实时操作集用于确定冲突操作当前是否正在被执行及所属类型,从而为避免Event-Action模型的冲突操作提供基础。
在步骤S106中,在冲突操作的类型是Event触发类型时,表示冲突操作所对应的Action正在执行中,此时是否执行被触发的Event所对应的Action,可以根据优先级顺序来确定,从而避免多个冲突操作一起执行。其中,该优先级顺序是被触发的Event的优先级,和冲突操作所对应的正在执行的Event的优先级进行比较。
例如,用户定义了两组Event-Action,一组为电视开-客厅灯灭,即Event(TvOn)—Action(LightOff),另一组为门打开-客厅灯亮,即Event(DoorOpen)—Action(LightOn)。两个Action为相反操作,即冲突操作。
晚上九点钟,家中一名成员打开电视,于是电视发送Event(TvOn)信号,ruleengine根据配对情况调用客厅灯触发Action(LightOff),然后客厅灯关闭。
晚上十点钟,家中另一名成员从外归来,打开门,此时门发出Event(DoorOpen)信号,rule engine根据配对情况调用客厅灯触发Action(LightOn)。此时需要执行Action(LightOn)操作,而基于实时操作集可知,当前有客厅灯打开的冲突操作(LightOff)在执行,因此,需要判断两个Event:Event(TvOn)和Event(DoorOpen)打开门的优先级顺序,如果Event(DoorOpen)的优先级高于Event(TvOn),则执行Event(DoorOpen)对应的Action(LightOn),客厅灯打开。
基于该优选实施方式,在确定Action对应的冲突操作是人为触发时,可以直接执行该Action,不会出现Event-Action模型的冲突操作。
例如:用户定义了一组Event-Action:电视开-客厅灯灭,即Event(TvOn)—Action(LightOff),该Action(客厅灯灭)的相反操作(即冲突操作)设定为客厅灯亮。
家中一名成员从外归来,将客厅灯打开。之后,家中一名成员打开电视,于是电视发送Event(TvOn)信号,rule engine根据配对情况调用客厅灯触发Action(LightOff),此时,Action存在冲突操作(客厅灯亮),且该冲突操作的类型是人为触发,则直接执行Action(LightOff),即客厅灯关闭。
对于上述根据各个Event的优先级顺序,按序执行各个Event所匹配的Action,包括以下优选实施方式:执行最高优先级的Event所匹配的Action,将其他Event暂存在缓冲池中;在最高优先级的Event所匹配的Action执行完成后,从缓冲池中按照优先级顺序依次调出Event,执行其所匹配的Action。从而使得各个Action的执行井然有序,互不干扰。
本实施例的技术方案可应用在两种智能家居系统中:有中心节点的智能家居系统和无中心节点的智能家居系统。
对于上述两种智能家居系统,其区别在于:优先级库、冲突操作库和实时操作集。对于有中心节点的智能家居系统,上述三个数据库是设立在家居设备所连接的网观侧(全局);对于无中心节点的智能家居系统,上述三个数据库是设立在家居设备的本地侧(本地局部)。另外,当用户手动操作家居设备时,在有中心节点的智能家居系统中,需要发送signal汇报,以告知网关该操作为用户手动操作;在无中心节点的智能家居系统中,不需要发送signal汇报,设备本身能够得知用户的手动操作。
实施例二
图2是根据本发明实施例二的有中心节点的智能家居系统的冲突解决方法流程图,如图2所示,包括:
1)智能家电设备进入本地设备互联网后,连接智能网关,向智能网关注册成为设备网设备。
2)智能家电设备暴露Event接口和Action接口,智能网关获取设备提供的Event和Action。
3)智能家电将出厂时定义的基本冲突库发送给网关。
4)网关将上述基本冲突库和用户自定义的自定义冲突库,合并为冲突操作库。
表1.冲突操作库举例
5)用户通过控制终端配置Event和Action。
6)为各个Event增加一个EventType位,即类型位,代表优先级。用户可以为给每一个Event设置优先级,默认是普通级别。
7)所有Event与类型位的对应关系存储在优先级库中,由网关维护。
表2.优先级库举例
Event Name |
Event Type |
A |
Security |
B |
Entertainment |
8)网关将负责监听所有通过网关的人为调用信号和Event信号。同时,若是人为调用信号(人为手动操作设备),则设备发送signal信号告知网关。
9)网关将人为调用和人为手动操作设备均定义为人为操作,并且将最新的操作记录在人为触发操作集中,若有更新的同一操作,将覆盖掉旧操作,只记录最新操作。人为触发操作集只记录操纵的Method Name、调用设备等。比较简单。
10)网关将Event触发的Action记录在Event触发操作集中,同样只记录最新的Event触发的Action。
表3.Event触发操作集举例
Event Name |
Action Name |
Replace |
Replace ID |
M |
N |
No |
-------- |
X |
Y |
Yes |
111 |
上述人为触发操作集和上述Event触发操作集,合并为实时操作集。该实时操作集用于按照类型,实时存储人为触发的冲突操作,和Event触发的冲突操作。
11)当有至少一个Event被触发时,网关首先找到Event对应的Action,然后基于每个Action在冲突操作库中进行搜索,查看是否有Action对应的冲突操作。若无,则直接执行上述Action。
12)若有冲突操作,则基于实时操作集查看此冲突操作是否当前正在被执行。首先基于人为触发操作集,查看冲突操作是否当前正在被执行,若在,说明该冲突操作的类型是人为触发,则直接执行上述Action。
13)若不在,则基于Event触发操作集,查看冲突操作是否当前正在被执行,若不在,则直接执行上述Action。
14)若有两个冲突操作在Event触发操作集中,说明冲突操作的类型是Event触发。则根据优先级库来比较两个Event的类型位(优先级),首先执行高优先级的Event对应的Action,将低优先级的Event暂时存入缓冲池,同时将两个Event分配相同的Replace ID,等待高优先级的Event执行完毕后,根据Replace ID从缓冲池中找到对应的Event再执行。
表4.缓冲池举例
Event Name |
Action Name |
Replace ID |
P |
Q |
111 |
图3是根据本发明实施例二的有中心节点的智能家居系统的结构示意图,如图3所示,中心节点上主要包含三个模块:
1.监听模块:用来监听所有的人为对设备的操作,Event信号,以及由设备主动发送的signal信号,帮助实时操作管理模块建立、更新和修改实时操作集。
2.实时操作管理模块:此模块主要用来维护实时的人为和Event导致的设备操作,所以涉及到对实时操作的添加,修改,删除等操作。
3.免冲突模块:这是核心模块,主要作用是根据Action的冲突操作库,实时操作集以及Event的优先级库,来判断Event-Action是否执行,负责Event的处理,要么进入ruleengine执行,要么被放入缓冲池中等待。
实施例三
无中心节点的智能家居系统的冲突解决方法流程,包括:
1)智能家电设备与控制终端连接。
2)智能家电设备暴露Event接口和Action接口。
3)用户通过控制终端配置Event-Action。
4)为各个Event增加一个EventType位,即类型位,代表优先级。用户可以为给每一个Event设置优先级,默认是普通级别。
5)由于没有中心节点,则不存在一个设备上具备全局的优先级库,所以设备只需要建立和自己相关的本地Event优先级库。
6)由于没有中心节点,则不存在一个设备上具备全局的冲突操作库,所以设备只需要建立本地的基本冲突库和用户自定义的自定义冲突库,二者合并为冲突操作库。
7)设备将人为调用和人为手动操作设备均定义为人为操作,并且将最新的操作记录在人为触发操作集中,若有更新的同一操作,将覆盖掉旧操作,只记录最新操作。
8)网关将Event触发的Action记录在Event触发操作集中,同样只记录最新的Event触发的Action。
之后有Event发生后,处理流程与有中心节点的智能家居系统的冲突解决方法流程一样,不再赘述。
实施例四
图4是根据本发明实施例四的Event-Action冲突解决装置的结构框图,如图4所示,包括:匹配查找模块10、类型获取模块20和行为执行模块30。下面对各个模块的功能进行介绍。
匹配查找模块10,用于在Event被触发时,确定该Event所匹配的Action;
类型获取模块20,连接至匹配查找模块10,用于获取上述Action对应的当前正在被执行的冲突操作的类型;其中,上述冲突操作的类型包括人为触发和Event触发;
行为执行模块30,连接至类型判断模块20,用于对于不同类型,采取不同方式执行上述Action。
通过本实施例,对设备行为Action的冲突操作进行类型划分,针对人为触发操作和Event触发操作,分别采取对应方式执行Action,解决了相关技术中Event-Action的冲突操作使得用户体验不佳的问题,从而避免了Event-Action模型中不同Event导致的相近或相反Action的冲突,提高了家电设备的智能性,提升了用户体验,同时设备操作更加安全。
优选地,上述行为执行模块包括:
人为触发执行模块,用于在上述当前正在被执行的冲突操作的类型是人为触发的情况下,直接执行上述Action;
Event触发执行模块,用于在上述当前正在被执行的冲突操作的类型是Event触发的情况下,根据预设的各个Event的优先级从高到低的顺序,按序执行各个Event所匹配的Action;其中,上述各个Event包括:被触发的Event,以及上述当前正在被执行的冲突操作所对应的Event。
上述装置还包括:
查找模块,用于在获取上述Action对应的当前正在被执行的冲突操作的类型之前,在冲突操作库中查找是否存在与上述Action对应的冲突操作;
其中,冲突操作库中记录有各个Action对应的冲突操作,其由设备出厂时定义的基本冲突库构成、或者由用户自定义的自定义冲突库构成、或者由设备出厂时定义的基本冲突库及用户自定义的自定义冲突库合并构成。
用户可以自定义冲突操作库,冲突操作可以为毫不相关的操作,且可以定义Event的类型,使得设备可以提供更加复杂的服务,更好的满足用户的需求。
由厂家定义的基本冲突库,厂家可以将可能导致安全事故的设备的Action全部设置成冲突操作,这样也能有效的避免对这些设备的误操作。
在该优选实施方式中,上述冲突操作库用于后续查找Action对应的冲突操作,上述实时操作集用于确定冲突操作当前是否正在被执行及所属类型,从而为避免Event-Action模型的冲突操作提供基础。
由于Event-Action的冲突在很多场景下可能导致安全危险,设置优先级将有效保护有安全作用的Event-Action顺利执行,且不被打断。基于此,本实施例提供了一种优选实施方式,即上述装置还包括:优先级设置模块,用于在Event被触发之前,配置多个Event-Action对;为各个Event设置对应的类型位,存入优先级库中;其中,上述类型位表示Event的优先级。
上述类型获取模块,还用于基于实时操作集,确定在上述冲突操作库中查找到的上述Action对应的冲突操作是否正在被执行;如果正在被执行,则确定上述当前正在被执行的冲突操作的类型;其中,上述实时操作集用于按照类型,实时存储人为触发的冲突操作,和Event触发的冲突操作。
上述Event触发执行模块包括:第一执行单元,用于执行最高优先级的Event所匹配的Action,将其他Event暂存在缓冲池中;第二执行单元,用于在最高优先级的Event所匹配的Action执行完成后,从缓冲池中按照优先级从高到低的顺序依次调出Event,执行其所匹配的Action。
从以上的描述中可知,本发明技术方案主要有以下几个改进点:
1.扩展了Event,增加了EventType位,将Event添加优先级。
2.设置Action操作冲突库,分为基本冲突库和自定义冲突库。
3.维护实时操作集,包括人为触发操作集和Event触发操作集。
4.设置缓冲池存储待执行的Event,当高优先级的Event执行完毕后,在实时Event-Action表中删除该操作前,对照Replace ID将相同的Event-Action从缓冲池取出执行。
从以上的描述中可知,本发明技术方案主要有以下技术效果:
(1)用户体验好。用户可以自定义冲突操作库,冲突操作可以为毫不相关的操作,且可以定义Event的类型,使得设备可以提供更加复杂的服务,更好的满足用户的需求。
(2)更安全。由于Event-Action的冲突在很多场景下可能导致安全危险,设置优先级将有效保护有安全作用的Event-Action顺利执行,且不被打断。同时,由厂家定义的基本冲突库,厂家可以将可能导致安全事故的设备的Action全部设置成冲突操作,这样也能有效的避免对这些设备的误操作。
(3)该发明基于目前通用的操作系统所提供的API即可实现,具有可实现性。
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。