1.本发明属于物联网的技术领域,具体涉及一种基于物联网联动场景的控制方法和系统。
背景技术:2.随着物联网技术的发展,智能设备在各行各业被广泛应用,为了智能体验,设备跟设备之间的联动使用会越来越多,必然会使联动规则更多、更灵活、更复杂(如设备的某个行为持续一段时间后进行联动、设备的某个规则满足跨越后进行联动等)。当前,对于复杂、特殊的联动规则更多的是进行硬编码实现,编码难度大,无法与业务进行解耦,造成程序维护成本高,开发效率低,因此亟需提炼出一个易于灵活扩展、与业务解耦的规则引擎,业务相关的使用自定义函数交给规则引擎来运行,使开发人员专注具体业务的函数开发,提高效率。
技术实现要素:3.为了解决现有技术中对于复杂、特殊的联动规则编码实现的难度大,无法与业务进行解耦,造成程序维护成本高、开发效率低等问题,本技术提供一种基于物联网联动场景的控制方法和系统,以解决上述技术缺陷问题。
4.根据本发明的一个方面,提出了一种基于物联网联动场景的控制方法,该方法包括:
5.监听智能设备的行为数据,获取缓存中上一次断言规则表达式的执行结果;
6.响应于缓存中不存在执行结果,执行断言规则表达式,将断言规则表达式的执行结果更新至缓存中,根据执行结果执行动作;
7.响应于缓存中存在执行结果,执行断言规则表达式,将得到的执行结果与缓存中的结果进行比对,若结果不相等,将断言规则表达式的执行结果更新至缓存中,根据执行结果更新执行动作,若结果相等,继续执行当前动作。
8.在具体的实施例中,断言规则表达式包括持续时长的规则表达式,具体包括以下逻辑步骤:监听智能设备的行为数据生成缓存key,响应于缓存中不存在缓存key,将缓存key设置到分布式缓存中,设置缓存key的值为当前时间戳,并根据持续时长生成延迟事件发送至延迟队列,其中,行为数据包括断言规则id和规则主题,延迟事件的内容包括当前所有的主题和开始计时的时间戳;
9.响应于缓存中存在缓存key,获取缓存key的值,并根据当前时间戳确定持续时长;
10.监听延迟事件并根据延迟事件的内容确定缓存key及其对应的缓存值,响应于缓存值与延迟事件中的时间戳不相等,结束智能设备的持续动作,响应于缓存值与延迟事件中的时间戳相等,重新发送延迟事件中的规则主题。
11.在具体的实施例中,延迟事件的内容包括当前所有的主题信息和开始计时的时间戳。延迟事件的内容可用于记录规则主题以及相应的时间戳,便于在判断持续时长到期流
程中比对分析。
12.在具体的实施例中,缓存key不设置过期时间。凭借该设置可以避免因缓存key过期导致在联动阶段触发重复动作。
13.在具体的实施例中,还包括响应于缓存中存在缓存key,删除当前规则主题。凭借该设置可以避免重复计时。
14.根据本发明的另一方面,提出了一种基于物联网联动场景的控制系统,用于执行上述的控制方法,包括:
15.监听模块:配置用于监听智能设备的行为数据,并与断言规则的主题进行匹配;
16.触发模块:配置用于执行断言规则表达式,返回执行结果;
17.执行模块:配置用于根据执行结果执行动作。
18.在具体的实施例中,执行结果的数据类型为布尔型。
19.在具体的实施例中,执行模块可执行一或多个动作,并且可顺序执行或并发执行。
20.在具体的实施例中,触发模块根据执行结果,决定是否生成执行任务,若是立即执行则添加至任务阻塞队列,否则添加到任务延迟队列。在具体的实施例中,消费延迟任务判断任务的当前状态,若为取消则执行模块忽略执行,否则添加至任务阻塞队列,任务执行线程从任务阻塞队列获取执行任务,寻找对应的执行模块执行动作并更新执行动作结果。
21.与现有技术相比,本发明的有益成果在于:
22.本发明的基于物联网联动场景的控制方法和系统有效地降低了物联网智能设备复杂规则联动开发的难度,规则引擎脱离了具体的业务,通过规则引擎可以实现不同业务的需求;具体的业务转换成一个个简单的函数,实现了由繁到简的转变;程序更灵活,易于扩展;开发人员侧重关注业务。
附图说明
23.包括附图以提供对实施例的进一步理解并且附图被并入本说明书中并且构成本说明书的一部分。附图图示了实施例并且与描述一起用于解释本发明的原理。将容易认识到其它实施例和实施例的很多预期优点,因为通过引用以下详细描述,它们变得被更好地理解。通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本技术的其它特征、目的和优点将会变得更明显:
24.图1是根据本发明的一个实施例的一种基于物联网联动场景的控制方法的流程图;
25.图2是根据本发明的一个具体的实施例的设备联动实现流程图;
26.图3是根据本发明的一个具体的实施例的持续时长实现规则设置图;
27.图4是根据本发明的一个具体的实施例的计时函数流程图;
28.图5是根据本发明的一个具体的实施例的清除计时流程图;
29.图6是根据本发明的一个具体的实施例的计算持续时长函数流程图;
30.图7是根据本发明的一个具体的实施例的持续时长延迟事件流程图;
31.图8是根据本发明的一个具体的实施例的一种基于物联网联动场景的控制系统的框架图;
32.图9是根据本发明的一个具体的实施例的规则引擎的结构图;
33.图10是根据本发明的一个具体的实施例的规则引擎运行流程图。
具体实施方式
34.下面结合附图和实施例对本技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
35.本发明提出了一种基于物联网联动场景的控制方法和系统,图1示出了根据本发明的一个实施例的一种基于物联网联动场景的控制方法的流程图,如图1所示,该基于物联网联动场景的控制方法包括:
36.s101:监听智能设备的行为数据,获取缓存中上一次断言规则表达式的执行结果;根据缓存中上一次断言规则表达式的执行结果是否存在来判断如何智能设备如何执行当前动作。
37.s102:响应于缓存中不存在执行结果,执行断言规则表达式,将断言规则表达式的执行结果更新至缓存中,根据执行结果执行动作;缓存中不存在执行结果,表明当前执行结果为新指令动作,执行器根据该执行结果执行相应动作,并将执行结果更新至缓存中,以作为后续智能设备联动(跨越)判断的依据。
38.s103:响应于缓存中存在执行结果,执行断言规则表达式,将得到的执行结果与缓存中的结果进行比对,若结果不相等,将断言规则表达式的执行结果更新至缓存中,根据执行结果更新执行动作,若结果相等,继续执行当前动作。若缓存中存在执行结果,表示当前执行结果与缓存中上一个执行结果可能存在重复,因此经过结果的比对,若相同表示当前执行结果与缓存中上一个执行结果的执行动作是相同的,继续保持该执行动作,无需再次触发该执行动作,避免了智能设备重复触发产生的抖动,保证设备的稳定运作,提高使用者的使用体验;若比对结果不相同,则说明当前执行结果与缓存中上一个执行结果的执行动作不同,将当前执行结果更新至缓存中,执行器根据当前执行结果执行相应的新的动作。上述联动控制方式可以避免频繁重复地触发动作,在断言结果变化时才进行联动,可满足不同业务的需求。
39.在一个具体的实施例中,智能设备持续在线,设备行为一直保持活跃状态,为了避免规则引擎频繁重复的触发动作,规则的断言结果需要变化才进行联动(这里简称“跨越”),否则不处理。定义跨越函数fn.crossing:入参:断言规则表达式;出参:返回布尔型true跨越,false无跨越。图2示出了根据本发明的一个具体的实施例的设备联动实现流程图,如图2所示,该实现步骤包括:
40.s201:获取上一次缓存key的值,即从缓存获取上一次断言规则表达式的执行结果;
41.s202:判断结果是否存在,若存在执行步骤s203,否则执行步骤s204;
42.s203:执行表达式,如果缓存不存在,执行断言规则表达式,结果true/false保存到缓存(即步骤s205),跨越函数返回true,第一次默认当跨越(即步骤s204);
43.s205:更新缓存的值;
44.s206:如果缓存存在,执行断言规则表达式,得到执行的结果;
45.s207:结果与上一次的对比,当前断言规则表达式的执行结果与缓存中的结果进
行对比;
46.s208:判断对比是否相等,若相等说明无跨越,跨越函返回false(即步骤s209),不相等则把断言规则表达式的结果true/false更新到缓存(即步骤s205)。
47.在一个具体的实施例中,断言规则表达式包括持续时长的规则表达式,具体包括以下逻辑步骤:计时、清除计时、计算持续时长、持续时长延迟时间到期流程。具体逻辑如下:监听智能设备的行为数据生成缓存key,响应于缓存中不存在缓存key,将缓存key设置到分布式缓存中,设置缓存key的值为当前时间戳,并根据持续时长生成延迟事件发送至延迟队列,其中,行为数据包括断言规则id和规则主题,延迟事件的内容包括当前所有的主题和开始计时的时间戳,缓存key不设置过期时间;
48.响应于缓存中存在缓存key,获取缓存key的值,并根据当前时间戳确定持续时长,并删除当前规则主题;
49.监听延迟事件并根据延迟事件的内容确定缓存key及其对应的缓存值,响应于缓存值与延迟事件中的时间戳不相等,结束智能设备的持续动作,响应于缓存值与延迟事件中的时间戳相等,重新发送延迟事件中的规则主题。
50.下面结合图3的一个具体的实施例的持续时长实现规则设置图进行说明,设备某个行为数据保持一段时间作为规则,图3中示出需求是某个空间的拥挤度》=50%,持续时长10分钟,空调自动调整到26
°
。该持续时长实现流程包括计时函数流程、清除计时流程、计算持续时长流程、持续时长延迟时间到期流程。图4-图7依次示出了上述流程示意图:
51.如图4的计时函数流程图所示,该计时函数(fn.timein)的入参1:主题作为key;入参2:持续时长的时间;出参:返回布尔型true,异常则抛出。具体流程包括:
52.s401:开始计时,通过函数入参1生成缓存key,如fn.keep.{0}.{1},0代表断言规则id,1代表规则主题;
53.s402:判断缓存是否存在key,存在则返回true,不存在则进入步骤s403;
54.s403:设置key到分布式缓存,值为时间戳,key不超时;
55.s404:发送事件,设置ttl持续时长对象到延迟队列,值存储当前的变量值json。通过函数入参2生成延迟事件发到延迟队列,事件的内容包含当前的所有的主题的信息及开始计时的时间戳。
56.如图5的计时函数流程图所示,该清除计时函数(fn.timerm)的入参1:主题作为key;出参:返回布尔型true,异常则抛出,具体流程包括:
57.s501:开始清除,通过函数入参1生成缓存key,如fn.keep.{0}.{1},0代表断言规则id,1代表规则主题;
58.s502:判断缓存是否存在key,若存在则进入步骤s503,否则返回布尔型true;
59.s503:清除fn.keep.{0}.{1}。
60.如图6的计时函数流程图所示,该计算持续时长函数(fn.keeptime)入参1:主题作为key;出参:返回计时的时间戳,具体流程包括:
61.s601:开始计算时长,通过函数入参1生成缓存key,如fn.keep.{0}.{1},0代表断言规则id,1代表规则主题;
62.s602:获取key的值,通过缓存key获取对应的值,开始计时的时间戳;
63.s603:当前时间戳-缓存的值;
64.s604:返回时长。
65.如图7的持续时长延迟事件到期流程图所示,该持续时长延迟事件流程包括:
66.s701:监听keeptimeexpiredelayevent(计时到期延迟)事件,通过事件内容生成key,如fn.keep.{0}.{1},0代表断言规则id,1代表规则主题;
67.s702:获取缓存key的值(设置key的时间戳);
68.s703:缓存key的时间戳与事件上的时间戳进行对比,相等则把延迟事件上的主题信息重新发送到规则引擎(即步骤s704),否则结束;
69.s704:调用输出通道发送keeptimeoutputchannel。
70.在一个具体的实施例中,上述持续时长的断言规则表达式可以为:space id in('1382944810765709314')and(crowded≥'50'?fn.timein('crowded',600):!fn.timerm('crowded'))and fn.keeptime('crowded')》=600and crowded》='50';跨越规则的表达式可以为:fn.crossing("spaceid in('1382944810765709314')and(crowded》='50'?fn.timein('crowded',600):!fn.timerm('crowded'))and fn.keeptime('crowded')》=600and crowded》='50'")and spaceid in('1382944810765709314')and(crowded》='50'?fn.timein('crowded',600):!fn.timerm('crowded'))and fn.keeptime('crowded')》=600and crowded》='50'。规则引擎基于上述的断言规则表达式即可实现上述的持续时长、跨越的流程。
71.图8是根据本发明的一个具体的实施例的一种基于物联网联动场景的控制系统的框架图,如图8所示,该系统包括监听模块801、触发模块802和执行模块803,监听模块801、触发模块802和执行模块803构成规则引擎,监听模块801配置用于监听智能设备的行为数据,监听规则包含的主题,找到对应的触发器,并与断言规则的主题进行匹配;触发模块802配置用于执行断言规则表达式,返回执行结果;执行模块803配置用于根据执行结果执行动作。图9示出了根据本发明的一个具体的实施例的规则引擎的结构图,如图9所示,触发模块801中触发器可自定义不同逻辑,如逻辑与、逻辑或等,通过触发器执行断言规则;断言规则:触发器需要依赖的规则表达式,断言结果数据类型是布尔型;执行模块803中,执行器:执行动作的功能,可以实现不同的执行器,比如顺序执行、并发执行等;执行动作:执行器执行的具体动作,一个执行器可以执行多个动作。
72.图10示出了根据本发明的一个具体的实施例的规则引擎运行流程图,如图10所示,该规则引擎的运行流程包括以下步骤:
73.s901:规则主题监听器,应用启动后开启规则主题监听器、消费延迟队列线程、任务执行线程;
74.s902:使用观察者模式监听,主题监听器收到智能设备的行为数据与断言规则的主题进行匹配;
75.s903:判断是否匹配,如果能匹配,找到断言规则的触发器(即步骤s904)执行断言规则(即步骤s905),返回触发器的执行结果(即步骤s906);
76.s907:生成执行任务,保存到数据库(即步骤s908),通过触发器的执行结果,决定是否生成执行任务;
77.s909:判断执行方式,执行任务如果是立即执行则添加到任务阻塞队列(即步骤s913),否则添加到任务延迟队列(即步骤s910);
78.消费延迟任务(s911)判断任务是否取消(即步骤s912),如果是取消则忽略执行,否则添加到任务阻塞队列(s913);
79.任务执行线程(s914)从阻塞队列(s913)获取执行任务,通过任务找到对应的执行器(s915),执行动作并返回结果(s916),更新执行动作结果(s917)。
80.本发明的一种基于物联网联动场景的控制系统中提炼出了一个易于灵活扩展、与业务解耦的规则引擎,业务相关的实用自定义函数交由规则引擎运行,开发人员只需专注具体业务函数的开发,将具体业务转换成一个个简单的函数,实现了由繁到简的转变,提高效率。
81.以上描述仅为本技术的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本技术中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本技术中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。