基于复杂事件处理的家居自动控制方法和装置

文档序号:31070524发布日期:2022-08-09 21:01阅读:77来源:国知局
基于复杂事件处理的家居自动控制方法和装置

1.本发明涉及自动控制技术领域,更具体地,涉及一种基于复杂事件处理的家居自动控制方法和装置。


背景技术:

2.目前的家居相关的产品,主要依托“如果什么,就执行什么”这样的逻辑形式实现自动控制,尽管足以实现一些简单场景的自动化控制,例如下班回家提前开空调、开门自动开灯、睡前自动关灯拉窗帘等,但是当情况变得复杂起来,例如在判断人活动的范围以及该范围是否封闭的基础上控制空调或空气净化器的开关、在判断人进入沙发所在区域并停留一段时间的基础上控制电视的开闭等,这种仅仅依靠“如果什么,就执行什么”逻辑的简单判断,就无法实现人性化的智能控制。而且,这种以“如果什么,就执行什么”工作的系统,即便是面对一些简单的场景,也经常需要通过手机进行辅助操作。这与人们所期待的,更加人性化的智能家居生活还相距甚远。
3.导致理想与现实之间巨大差距的关键问题就在于:当下智能家居领域所采用的逻辑分析方法不足以应对日常生活中经常发生的复杂情境。
4.尽管复杂事件处理技术还很少被应用于智能家居领域,但是其对复杂情景的分析与处理具有较强的适应性,因此将复杂事件处理技术应用于智能家居领域,将会为智能家居领域开拓新的发展空间。


技术实现要素:

5.针对目前家居的现状,本发明通过将复杂事件处理技术应用于家居领域,改善了家居对复杂情境的分析能力,提高了家居的智能化水平。
6.具体地,本发明是通过以下技术方案来实现的:
7.第一方面,本发明提供了一种基于复杂事件处理的家居自动控制方法,包括:
8.获取家居的待解决问题,基于所述待解决问题,确定原子事件;
9.构建家居的复杂事件处理规则集和复杂事件处理引擎,并基于所述复杂事件处理规则集和所述复杂事件处理引擎构建复杂事件处理系统;
10.使用所述复杂事件处理系统处理所述原子事件,并输出控制信息;
11.基于所述控制信息,对所述家居进行自动控制。
12.进一步地,所述复杂事件处理引擎:
13.将外接设备数据包装为yaml字符串并进行base64与异或编码加密,以事件名称加密字符串为主题使用apache kafka中间件以发布订阅模式实现数据传输,使用mongo db数据库实现对非结构化数据的存储记录;
14.接入kafka中间件,对特定主题进行订阅发布实现事件的分析与产生;
15.使用uml搭建用户端监听kafka实现实时监测、规则集查看与个性化定制。
16.进一步地,所述复杂事件处理引擎:
17.基于rapide语言设计的时间自动机设计子结构,依据数据特点分层分析构建;
18.使用混杂自动机进行数据与事件之间的转换;
19.使用状态识别自动机提炼传感器信息;
20.使用模式识别事件处理代理实现从家居物化状态及时刻信息到家居模式的判断与选择;
21.使用模式内与过渡控制事件处理代理以对控制器下达控制模式;
22.使用渐进控制混杂自动机依照控制模式下达控制指令。
23.进一步地,所述构建复杂事件处理规则集的方法包括:
24.调查和总结常用的家居,列出所述家居的可选状态以及不同状态下造成的家居环境影响;
25.利用定位软件追踪不同人员日常生活轨迹,结合专业文档以及生活常识将可控设备的控制条件进行分解,所述将可控设备的控制条件进行分解包括:将各种可控设备的控制定义为不同层级的复杂事件并对复杂事件进行拆分,将高层的复杂事件拆解为第一层级的复杂事件的组合,直至拆分到所有事件均为由传感器直接获的得原子事件;
26.参考拆分过程,将所述原子事件按照一定规则向上聚合,得到最初始定义的所有复杂事件,聚合结果为最终的所述复杂事件处理规则集。
27.进一步地,所述基于复杂事件处理的家居自动控制方法还包括:面向家居用户端的个性化定制方法,
28.所述面向家居用户端的个性化定制方法包括:
29.通过自定义位置主体与界限划分,及该房间的功能选择,自动确定传感器位置。
30.进一步地,所述位置主体包括:空区域、门、窗、墙、可停留位置、不可停留位置和外界;所述界限划分包括:房间边界、外部边界和使用区边界。
31.进一步地,所述家居模式包括:无人模式、部分睡眠模式、完全睡眠模式、普通模式以及青少年模式;其中,
32.无人模式与有人模式划分依靠房屋人数确认;
33.有人模式依靠睡眠判定划分为睡眠模式与清醒模式;
34.睡眠模式依照人数划分为部分睡眠模式和完全睡眠模式;
35.清醒模式映照类别划分为普通模式与青少年模式。
36.进一步地,所述基于复杂事件处理的家居自动控制方法还包括:
37.使用状态间的跳转识别事件内容和存在的关系,当进入新状态时将执行一次状态内需要执行的动作,修改局部变量;其中,状态间跳转分为三类,分别由特定事件、定时器和边界条件触发;
38.由所述特定事件触发的跳转可检查事件之间的因果依赖,数据参数和上下文关系是否符合预期,其跳转规则包括跳前状态、跳后状态和布尔表达式三部分,其布尔表达式可包含的参变量有接收到的事件的类型及其参数、epa中的局部变量两类,而事件参数包含事件来源、因事件id、时间戳等信息;当接收到一个新事件时,所述epa将会逐一判断所有特定事件触发的跳转规则中跳前状态是否与当前状态相符,若相符且规则中布尔表达式为真,则会跳转到跳后状态,反之则不进行任何操作;对于所有具有相同的跳前状态的跳转规则,其布尔表达式两两互斥,不应同时成立;
39.定时器触发的跳转则可检查事件之间的时间关系是否符合预期,其跳转规则包括跳前状态、跳后状态和历经时长三部分,其中,历经时长为进入跳前状态后经过的时间长度;当epa位于某一状态时,将会逐一判断所有定时器触发的跳转规则中跳前状态是否与当前状态相符,若相符则按照历经时长建立定时器;当定时器定时结束时,epa便会跳转到指定的跳后状态,若还未结束epa便进行了状态跳转的话,则关闭当前所有定时器,不再执行;对于任意一个状态而言,若存在多个定时器触发的跳转规则,历经时长更长的跳转规则永远也不会执行;任一epa里所有的定时器触发的跳转规则的跳前状态都是不相同的;
40.边界条件触发的跳转主要运用于系统底层的epa,可以从系统输入量中识别出特定的原子事件;边界条件触发的跳转会不断考察输入的数值是否满足预期条件,其跳转规则包括跳前状态、跳后状态和边界条件三部分;其中,边界条件是包含epa中的局部变量和输入数值两类变量的布尔表达式;当输入的数值更新时,会检查边界条件是否成立,若成立则进行相应的跳转;
41.对于单个事件处理代理epa的事件消耗方式,对于系统中的每一类事件,系统会建立以事件名称为主题的消息队列;
42.当epa需要发送特定类型事件时,需根据事件类型找到对应主题的消息队列,并将事件发布到此消息队列中;
43.当epa需要获取特定类型事件时,需根据事件类型订阅对应主题的消息队列,并从指定位置按序读取,直到读完,然后等待下一事件进入队列;当系统初次启动时,会将消息队列清空,所有订阅将从消息队列头部开始读取。
44.第二方面,本发明提供了一种基于复杂事件处理的家居自动控制装置,包括:
45.原子事件确定单元,获取家居的待解决问题,基于所述待解决问题,确定原子事件;
46.复杂事件处理系统构建单元,构建家居的复杂事件处理规则集和复杂事件处理引擎,并基于所述复杂事件处理规则集和所述复杂事件处理引擎构建复杂事件处理系统;
47.控制信息输出单元,使用所述复杂事件处理系统处理所述原子事件,并输出控制信息;
48.自动控制单元,基于所述控制信息,对所述家居进行自动控制。
49.第三方面,本发明提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的基于复杂事件处理的家居自动控制方法的步骤。
50.第四方面,本发明提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述的基于复杂事件处理的家居自动控制方法的步骤。
51.本发明将复杂事件处理技术应用于家居领域,将家居的待解决问题分解为原子事件,构建复杂事件处理系统,使用复杂事件处理系统处理原子事件并输出控制信息,并且基于控制信息来控制家居,由此改善了家居对复杂情境的分析能力,减少了人为操作,实现了用户功能的个性化定制,提高了家居的智能化水平。
附图说明
52.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
53.图1是根据本发明的一个实施例的基于复杂事件处理的家居自动控制方法的流程图;
54.图2至4是根据本发明的一个实施例的用于家居的规则集的示例的示意图;
55.图5是根据本发明的一个实施例的用于家居的复杂事件处理系统的结构示意图;
56.图6是根据本发明的一个实施例的带时间跳转的自动机的示例;
57.图7是根据本发明的一个实施例的可依照时间边界条件进行跳转的混杂自动机模型和普通有穷状态自动机的示例;
58.图8是根据本发明的另一实施例的基于复杂事件处理的家居自动控制装置的示意图;
59.图9是根据本发明的一个实施例的电子设备的结构示意图。
具体实施方式
60.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
61.图1是根据本发明的一个实施例的基于复杂事件处理的家居自动控制方法的流程图。参照图1,该方法可以包括如下步骤:
62.步骤101:获取家居的待解决问题,基于所述待解决问题,确定原子事件;
63.步骤102:构建家居的复杂事件处理规则集和复杂事件处理引擎,并基于所述复杂事件处理规则集和所述复杂事件处理引擎构建复杂事件处理系统;
64.步骤103:使用所述复杂事件处理系统处理所述原子事件,并输出控制信息;
65.步骤104:基于所述控制信息,对所述家居进行自动控制。
66.具体地,在本实施例中,需要说明的是,在步骤101中,可以获取家居的待解决问题(即,复杂问题),然后将该复杂问题进行分解,拆分成简单的、可解决的问题(即,原子事件)。例如,待解决问题为“是否开关灯”时,可以将是否开关灯拆分成“延时”、“哪个房间”、“是否需要照明”等原子事件;“哪个房间”可以通过人体传感器,感测是否有人来确定;“是否需要照明”可以通过光照传感器,感测光线强度来确定。
67.在步骤102中,可以构建家居的复杂事件处理规则集,构建该规则集的方法包括:调查和总结常用的家居(例如,开关灯、开关空调、开关电视、开关空气净化器等),列出所述家居的可选状态以及不同状态下造成的家居环境影响;利用定位软件追踪不同人员日常生活轨迹,结合专业文档以及生活常识将可控设备的控制条件进行分解,即将各种可控设备的控制定义为不同层级的复杂事件并对复杂事件进行拆分,将高层的复杂事件拆解为第一层级的复杂事件的组合,直至拆分到所有事件均为由传感器直接获的得原子事件;参考拆
分过程,将所述原子事件按照一定规则向上聚合,得到最初始定义的所有复杂事件,聚合结果为最终的所述复杂事件处理规则集。图2至图4是根据本发明的家居的复杂事件处理规则集的示例。其中光照情况判断规则如图2所示。该规则产生结果为事件1/5光照情况,赋值可能为正常或过暗,规则判断过程包括两种状态房间光照正常(状态1)和房间光照过暗(状态2),当出现光照≥160lx状态2跳转至状态1并执行状态1中流程产生光照情况/正常的事件,同理当出现光照≤50lx状态1跳转至状态2并执行状态2中流程产生光照情况/过暗的事件。又例如,以“空气质量判断”为例,空气质量判断规则如图3所示。该规则产生结果为事件1/6空气质量,赋值可能为差或良,规则判断过程包括两种状态客厅pm2.5值高(状态1)和客厅pm2.5值低(状态2),当出现pm2.5值≥75μg/l状态2跳转至状态1并执行状态1中流程产生空气质量/良的事件,状态1跳转状态2同理。“房间湿度”的调节规则如图4所示,其过程与上面类似,此处不再赘述。
68.图5所示,为所设计的基于复杂事件处理的家居自动控制系统的总体结构,其通过kafka从控制器传感器获取数据,通过混杂自动机实现连续数据与离散事件间的转换,接入复杂事件处理(cep)规则集,通过对传感器的状态识别推测现实环境中其他实体的状态,进而匹配家居模式,以运行不同的模式内及过渡切换规则集。对于家居模式而言,我们认为有如下五种模式需要分开控制,分别是无人模式、部分睡眠模式、完全睡眠模式、普通模式以及青少年模式,其模式分割依图上所示,其细节依靠时间自动机进行实现。
69.对于规则集的构建,可以首先构建单人环境下规则集,主要以传感器为元器件基础,将传感器可直接产生的信号信息作为原子事件,即最基本的事件,并通过原子事件的不断聚合产生复杂事件,实现对环境变化的反应以及对终端设备的控制。
70.以单人环境下的规则集为基础,进一步引入区域空间判断的逻辑并用热感传感器代替小米的人体传感器,用于实现多人环境下的规则集。
71.特定区域中是否有人是判断很多设备是否启动的重要中间事件。通过热感传感器,获取重要边界附近人体的移动方向,可以同时判断相邻区域人数的增加和减少,达到人数监听的目的,以提供区域是否有人的信息。但是对于许多功能设备而言,具体的人数信息并不是必要的,单纯的是否有人的信息已经可以满足控制的需求,同时复杂的人数信息会给复杂事件的聚合增加不必要的负担,导致规则集复杂且冗余,自动机中出现大量的非必要状态。通过观察和对比不同功能设备对区域信息的需求,将区域根据包含关系进行多级分类,对区域人数进行分别记录,单独生成是否有人的信息,减少区域之间的相互干扰,减少人数信息带来的负面影响。
72.根据上述理论基础,在单人环境下的规则集上进行增添和改进,得到多人环境下的规则集。最后根据以上两个规则集,实现规则判断系统,规则判断系统指规则集处理引擎是复杂事件处理系统的一部分,是规则的逻辑处理核心。
73.然后,在步骤102中,可以进一步构建复杂事件处理引擎,并基于复杂事件处理规则集和复杂事件处理引擎构建复杂事件处理系统。
74.特别地,复杂事件处理引擎的构造过程如下:
75.主要使用两类自动机模型进行事件模式匹配、组建面向智能家居的cep系统结构,分别为带输出的混杂自动机模型与带时间跳转的带输出的有穷状态自动机模型。其中,前者主要用于匹配并输出家居这一混杂系统中各连续量蕴含的原子事件,后者主要用于匹配
其他离散量和事件蕴含的信息密度更大的复杂事件。接下来将使用自动机的状态转换图对本文使用的带时间跳转的自动机结构和现有的自动机模型进行等价性证明。
76.图6为一个带时间跳转的自动机的示例,可按时序接收x、y、z三类外部事件进行状态跳转。其中,状态1至状态2的跳转为时间跳转,即在状态1停留的时间超过等待时间(waittime)时,状态1自发跳转到状态2。
77.本例等价于一个普通有穷状态自动机模型与一个小型混杂自动机模型结合的并行结构。如图7(1)为一可以依照时间边界条件进行跳转的混杂自动机模型,收发的事件仅来自它所服务的图左所示的普通有穷状态自动机,其作用为当主状态机当前状态存在时间跳转时,会触发并考察时间边界,直到达到等待时间或者收到主状态跳转信号。当其位于非触发状态(wait)时,可接收wait类型的事件跳转至触发状态(trigger),并更新时间边界条件为当前时间加等待时间(waittime);当其位于触发状态时(trigger),可接收statechange类型的事件跳转回非触发状态(wait),如果未接收到,则考虑当前时间戳是否满足设定的边界条件,即超过预定的等待时间(now》t),若超过便跳转至生成状态(gnerate)生成timejump类型事件,最后回到非触发状态。
78.如图7(2)为一个普通有穷状态自动机,每当状态除x、y、z三类事件外的其他事件仅收发于右侧的混杂自动机。当该自动机状态发生改变时,都会产生一个statechange事件,当下一跳转存在时间跳转时(如状态1),则会产生一个wait类型事件,并带有等待时长(waittime)参数,使附属的混杂自动机处于触发状态;当在等待时长内接收到事件x,则直接跳转至状态3,并使附属的混杂自动机处于非触发状态,否则会接收到timejump类型的事件,跳转至状态2。
79.此结构可使时间跳转得以正常发生,不用将主自动机改造为混杂自动机模型即可进行时间跳转,无需主自动机实时考察时间边界,降低了的实现难度,提高了主自动机的运行效率。它使得上述带时间跳转的自动机模型得以正常运行。在经实际实验,带时间跳转条件对简化自动机表达,简化逻辑具有很大作用。
80.然后,对规则集的表达进行了统一。将rapide语言抽象成图,结合uml的某些特殊表达方式,使得规则集更易于理解,且具有更宽广的代表性,兼具二者优点。我们已经制作了epn制作模具、epa制作模具和vsio-rapide定义图库。
81.当出现特定事件模式时,预示着系统状态发生了改变。用事件模式匹配推动状态的切换,执行相应的状态反应。许多状态机切换模型局部特征相似或者相同,我们把它们提取出来,形成固定模式,方便模式复用,简化思考过程。
82.在构建模型时,还考虑到了时空问题。一方面许多模型会涉及到历史事件的影响,另一方面有些系统并不是作为点存在的,而是有内在的空间结构。针对时间问题,我们通过事件分割,将持续事件拆分为开始事件与结束事件来讨论,回归点状事件时序问题的讨论。针对空间问题,由于传感器采集到的数据大多为点式数据,产生点式事件,我们需要用分散的点式事件集合确定整个系统事件发生的范围,利用范围事件在空间具有相交,相离等关系,明确这些区域的存在意义,产生状态机的表示方法。将点事件进行升维,通过数值对应,数值范围划分的方法,将点状事件数据化,通过效果最优的插值法将点状事件连结成平面或者空间,近似代替未知区域。运用区域感知,得到一张知晓各个区域所在状态,可以用各种函数拟合范围事件边界,即可回答范围事件间是否相交,相交区域在哪里等问题的等高
线平面图。经过以上构建,此时的状态机将不再是单一状态运作的,而是分开独立运作的,每一个原子事件的产生均会触发整个层状结构的epa的变化,改变每一个状态机所对应的边界函数,保证状态机只能控制对应区域的控制设备,实现事件空间关系的聚合。同时由于控制区域不确定,所以所有控制指令不再是直接控制底层设备了,而是传递给特定epa统一实现一类设备的控制。
83.复杂事件处理引擎可以将外接设备数据包装为yaml字符串并进行base64与异或编码加密,以事件名称加密字符串为主题使用apache kafka中间件以发布订阅模式实现数据传输,使用mongo db数据库实现对非结构化数据的存储记录;可以接入kafka中间件,对特定主题进行订阅发布实现事件的分析与产生;可以使用uml搭建用户端监听kafka实现实时监测、规则集查看与个性化定制。
84.另外,复杂事件处理引擎可以基于rapide语言设计的时间自动机设计子结构,依据数据特点分层分析构建;可以使用混杂自动机进行数据与事件之间的转换;可以使用状态识别自动机提炼传感器信息;可以使用模式识别事件处理代理实现从家居物化状态及时刻信息到家居模式的判断与选择;可以使用模式内与过渡控制事件处理代理以对控制器下达控制模式;并且可以使用渐进控制混杂自动机依照控制模式下达控制指令。其中该家居模式包括无人模式、部分睡眠模式、完全睡眠模式、普通模式以及青少年模式,并且无人模式与有人模式划分依靠房屋人数确认;有人模式依靠睡眠判定划分为睡眠模式与清醒模式;睡眠模式依照人数划分为部分睡眠模式和完全睡眠模式;清醒模式映照类别划分为普通模式与青少年模式。
85.基于复杂事件处理引擎和规则集可以形成图5所示的复杂事件处理系统。
86.在步骤103中,可以使用所述复杂事件处理系统处理所述原子事件,并输出控制信息。具体地,以“是否开关灯”为例,光照情况判断规则如图2所示。该规则产生结果为事件1/5光照情况,赋值可能为正常或过暗,规则判断过程包括两种状态房间光照正常(状态1)和房间光照过暗(状态2),当出现光照≥160lx状态2跳转至状态1并执行状态1中流程产生光照情况/正常的事件,同理当出现光照≤50lx状态1跳转至状态2并执行状态2中流程产生光照情况/过暗的事件。又例如,以“空气质量判断”为例,空气质量判断规则如图3所示。该规则产生结果为事件1/6空气质量,赋值可能为差或良,规则判断过程包括两种状态客厅pm2.5值高(状态1)和客厅pm2.5值低(状态2),当出现pm2.5值≥75μg/l状态2跳转至状态1并执行状态1中流程产生空气质量/良的事件,状态1跳转状态2同理。对于“房间湿度”的调节,过程与上面类似,此处不再赘述。
87.在步骤104中,可以基于所述控制信息,对所述家居进行自动控制。例如,可以根据灯光过暗事件,自动增加灯管的亮度。
88.另外,根据本发明可以对面向家居用户端进行个性化定制,该个性化定制方法包括:通过自定义位置主体与界限划分,及该房间的功能选择,自动确定传感器位置,从而提供传感器的安装方案。其中该位置主体包括:空区域、门、窗、墙、可停留位置、不可停留位置和外界;所述界限划分包括:房间边界、外部边界和使用区边界。
89.另外,根据本发明的基于复杂事件处理的家居自动控制方法,其中可以使用状态间的跳转识别事件内容和存在的关系,当进入新状态时将执行一次状态内需要执行的动作,修改局部变量;其中,状态间跳转分为三类,分别由特定事件、定时器和边界条件触发;
由所述特定事件触发的跳转可检查事件之间的因果依赖,数据参数和上下文关系是否符合预期,其跳转规则包括跳前状态、跳后状态和布尔表达式三部分,其布尔表达式可包含的参变量有接收到的事件的类型及其参数、单个事件处理代理(epa,即本文所述的自动机)中的局部变量两类,而事件参数包含事件来源、因事件id、时间戳等信息;当接收到一个新事件时,所述epa将会逐一判断所有特定事件触发的跳转规则中跳前状态是否与当前状态相符,若相符且规则中布尔表达式为真,则会跳转到跳后状态,反之则不进行任何操作;对于所有具有相同的跳前状态的跳转规则,其布尔表达式两两互斥,不应同时成立;定时器触发的跳转则可检查事件之间的时间关系是否符合预期,其跳转规则包括跳前状态、跳后状态和历经时长三部分,其中,历经时长为进入跳前状态后经过的时间长度;当epa位于某一状态时,将会逐一判断所有定时器触发的跳转规则中跳前状态是否与当前状态相符,若相符则按照历经时长建立定时器;当定时器定时结束时,epa便会跳转到指定的跳后状态,若还未结束epa便进行了状态跳转的话,则关闭当前所有定时器,不再执行;对于任意一个状态而言,若存在多个定时器触发的跳转规则,历经时长更长的跳转规则永远也不会执行;任一epa里所有的定时器触发的跳转规则的跳前状态都是不相同的。
90.边界条件触发的跳转主要运用于系统底层的epa,可以从系统输入量中识别出特定的原子事件;边界条件触发的跳转会不断考察输入的数值是否满足预期条件,其跳转规则包括跳前状态、跳后状态和边界条件三部分;其中,边界条件是包含epa中的局部变量和输入数值两类变量的布尔表达式;当输入的数值更新时,会检查边界条件是否成立,若成立则进行相应的跳转;对于单个事件处理代理epa的事件消耗方式,对于系统中的每一类事件,系统会建立以事件名称为主题的消息队列;当epa需要发送特定类型事件时,需根据事件类型找到对应主题的消息队列,并将事件发布到此消息队列中;当epa需要获取特定类型事件时,需根据事件类型订阅对应主题的消息队列,并从指定位置按序读取,直到读完,然后等待下一事件进入队列;当系统初次启动时,会将消息队列清空,所有订阅将从消息队列头部开始读取。
91.实验验证方案:实验总体包含三大主体设备,分别是3d模拟设备、微机端与移动端。3d模拟设备用于模拟真实家居环境,产生大量传感器及控制器的数据,用于验证复杂事件处理(cep)规则集的鲁棒性,测试复杂事件处理系统中事件处理代理(epa)并发,并可通过配置文件动态生成3d家居模型,以模拟多样化的家居环境。微机端用于构建复杂事件处理引擎(epn)运行环境(包括zookeeper、kafka以及python运行环境等),连接家居物联网,用于加载、运行与维护复杂事件处理规则集,其接口具有通用性,可通过系统镜像拷贝实现家居复杂事件处理系统的量产。移动端采用win10平板环境,装载所设计的智能家居系统用户端,通过互联网与另外两端进行数据交换,可让用户实时监控家居环境,对复杂事件处理引擎进行个性化定制。
92.采用此结构进行实验的优点是,其具有完整的控制端与用户端,模拟设备能模拟不同的家居场景,可进行大量的试运行实验,也可采用随机实验以验证规则集的鲁棒性,提高开发与调试效率。
93.根据以上实验思路,最终采用visual python进行3d家居模拟环境系统的开发,采用kafka与zookeeper连接模拟环境在python环境中搭建cep引擎,在win10平板使用svg等h5、js可视化工具开发移动端程序。当前我们已经完成了整体复杂事件处理引擎的开发以
及大部分智能家居模拟场景的开发,实现了大部分非模式的家居复杂事件处理规则集的搭建并使用其对已经搭建好的系统进行检验性实验。
94.对于cep引擎环境及外延的开发包括:
95.kafka和消息队列为多线程大数据量的信息传输提供可能,首先可以实现缓冲和削峰,即上游数据时有突发流量,下游可能处理不了,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。其次实现解耦和扩展性:项目开始的时候,并不能确定具体需求。消息队列可以作为一个接口层,解耦重要的业务流程。只需要遵守约定,针对数据编程即可获取扩展能力。其次避免冗余,即可以采用一对多的方式,一个生产者发布消息,可以被多个订阅topic的服务消费到,供多个毫无关联的业务使用。其次是健壮性,消息队列可以堆积请求,所以消费端业务即使短时间死掉,也不会影响主要业务的正常进行。其次是异步通信,很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。
96.在智能家居的情景中,我们需要处理各种各样的消息,考虑到使用kafka实施订阅收发机制有如下优点:拥有消息发布和订阅的功能,类似于消息队列或者企业消息传送系统;能存储消息流,并具备容错性;能够实时的处理消息;首先介绍kafka的消息分类方式,消息分为主题(topic):kafka中的消息以主题为单位进行归类,生产者负责将消息发送到特定的主题,而消费者负责订阅主题进行消费;还有分区(partition):主题可以分为多个分区,一个分区只属于单个主题;同一主题下的不同分区包含的消息不同(即发送给主题的消息具体是发送到某一个分区);消息被追加到分区日志文件的时候,会分配一个特定的偏移量(offset),offset是消息在分区中的唯一标识,kafka通过它来保证消息在分区的顺序性,offset不跨分区,也就是说kafka保证的是分区有序而不是主题有序。
97.其次对于qt,每一个qobject对象和pyqt中所有继承自qwidget的控件(这些都是qobject的子对象)都支持信号与槽机制。当信号发射时,连接的槽函数将会自动执行。在pyqt 5中信号与槽通过object.signal.connect()方法连接。pyqt的窗口控件类中有很多内置信号,开发者也可以添加自定义信号。信号与槽具有如下特点。
98.我们让kafka的主题对应cep中的执行类型,分区对应于cep的事件类型,最终使用kafka进行数据的处理。
99.我们根据yaml信息进行分发,依据name进行分类,接收,分发。并令所有事件结构都为按yaml格式书写的字符串,一项事件产生,便会自动生成yanl文件,yaml经过加密,被kafka接受,并以此进入cep系统。我们利用python直接读取kafka收发的yaml,变成list和dict,并在接收yaml时还需要给出一个pyqt5的qsignal信号进行提醒。
100.在实际运行的过程中,我们为kafka加入了更多的功能,包括对中间件的控制信号,比如清空队列、开始、保存消息队列信息并停止等等函数。至此我们设计出了一个class,实现了发布事件yaml字符串,接收事件yaml字符串的接口(需要发出qsignal信号给槽函数),清空队列,依据给定的消息队列信息开始,保存消息队列信息,和kafka连接和并行化处理问题。
101.在设计的过程中,我们也注意到一些细节设计,我们令插入相同的字段不回滚,而
是直接返回这样进程就不会断;以even_id作为主键和唯一索引,避免二义性的发生;考虑到消费者接收事件就行,接收到的时候要让主程序知道它接收到了,而我们的界面使用pyqt5编程,所以使用qsignal信号触发。把生产者和消费者包装成类,用__init__()方法,依靠各类kafka连接参数给它初始化,生产者类里需要有生产函数,只接受一个参数-事件的class,消费者类里需要有消费者函数和一个qsignal信号,接收到事件的时候可以压入队列,可以通过消费者函数取出。事件产生才需要记录,接收记录没有意义,之后有关数据库的cep处理就是基于历史记录的,接收到的事件就是那个特定事件类型的事件yaml字符串,由于我们的自动机是触发接收模式,且为消耗型的,所以不需要历史事件。
102.以此设计出了kafka的主流程,即:发送数据-》kafka监听数据-》存入一条记录到mysql,有epa发布,有epa订阅,然后有些订阅的epa没收到信息,清空队列是指清空kafka消息队列是吧,cep技术搭建的epn的子结构,这几个功能,并将其包装成线程,以节约主程序的时间。
103.我们首先进行事件接口配置,令所有事件结构都为按yaml格式书写的字符串,并创建了一个event文件进行事件构建,定义如事件名称,事件id,创建事件的epa名,状态,方法,进程名,时间戳来源和结束事件戳等多个信息。随后用eventmanager.yaml对yaml文件进行管理,首先是用一定的规则对文件进行信息加密;其次对产生,接受事件等信息进行定义。
104.考虑到使启动kafka和mongodb的过程更加方便,我们在dependencymanager.py里定义了cmdrunner类对windows运行cmd指令进行帮助。还有类似于_mongodbconnect函数连接了mongodb数据库,_importkafka函数按顺序启动zookeeper与kafka依赖。
105.接下来是建立epn的部分,首先建立startup读取目录,建立epa线程字典;其次启动epa;用excuter.py把指令下放到某个特定epa。而所有的epa运行信息都会存储在message.py文件中。
106.对于3d家居场景的开发包括:
107.3d家居环境模拟主要分为三个部分,即房间结构建模、传感器控制器建模以及家居活动建模,来模拟家居环境,并将模拟产生的数据通过卡夫卡传送到复杂事件处理引擎中,同时可以通过卡夫卡接收来自复杂事件处理引擎的数据,实现控制。
108.房间结构建模模块,读取类似下图的家居平面图,通过识别图片上的颜色,建立八类位置主体(空地方,门、窗、墙,可停留的地方,可睡眠的地方,不可停留的地方,外界,房间边界,外部边界,使用区边界),实现建模。之所以分为以上八类,是因为通过复杂事件技术实现对家居的智能控制是利用规则集进行约束的,而规则集主要是利用多个人体传感器组合对范围的判断和其它传感器的动作触发来完成模式识别的,因此可以将具体的家具进行抽象,用各种范围进行代替,即此处提到的空地方,可停留的地方,可睡眠的地方,不可停留的地方,外界,房间边界,外部边界,使用区边界,而墙因其不可变性,门窗因其隔离性可变而单独分离出来。
109.传感器控制器建模模块,利用yaml语言书写config文件,配置传感器以及控制器的名称、位置、产生事件的名称以及其他性质。
110.对于家居活动建模,我们对人的日常活动进行了分析,总结出了三类活动方式,即静止、控制家居智能设备和移动,其中最难模拟的是移动方式。莱维飞行是最符合动物移动
模式的,但应用在家居活动中由于随机方向移动符合幂律分布的指定距离受房间结构限制,有时无法提供足够的可移动范围,因此在这种情况下,采用α为2.5的帕累托分布模拟移动距离。a*算法是计算二维平面两点最短路径的算法,可以模拟大多数有目的的移动情况。因此,以上两种算法为基础,通过布朗运动弥补未考虑到的移动情况,最大限度的模拟人的日常活动,最后利用while来延长时间维度。最终,实现家居活动建模。
111.家居活动建模模块,利用yaml语言配置,实现了多种行动方式以及触发活动的模拟。行动方式主要包括通过导入真实移动数据控制移动,通过鼠标键盘控制移动和通过指令控制移动。其中通过指令控制移动如下图,stay表示保持静止、ramdommove表示布朗运动形式的随机游走、directmove表示从指定位置移动到指定位置并利用a*算法得到路径,operating表示控制器开关控制,paretomove表示莱维飞行形式的随机游走。
112.最后,使用3dsmax建立obj模型,并使用visual python建立3d可视化模型,完成场景的可视化。
113.可实现事件聚合的执行单元又称之为epa,是系统中负责事件模式匹配的对象。它接收特定的原子事件和复杂事件,检查事件与事件之间的因果依赖,时间关系,数据参数和上下文关系是否符合预定规则,改变反映其状态的局部变量,并依据判断结果执行相应的动作。动作可以是传递事件、创建事件和与目标系统的交互。
114.本引擎利用自动机技术搭建epa,使用状态间的跳转识别事件内容和存在的关系,当进入新状态时将执行一次状态内需要执行的动作,修改局部变量。其中,状态间跳转分为三类,分别由特定事件、定时器和边界条件触发。
115.特定事件触发的跳转可检查事件之间的因果依赖,数据参数和上下文关系是否符合预期,其跳转规则包括跳前状态、跳后状态和布尔表达式三部分,其布尔表达式可包含的参变量有接收到的事件的类型及其参数、epa中的局部变量两类,而事件参数包含事件来源、因事件id、时间戳等信息。当接收到一个新事件时,该epa将会逐一判断所有特定事件触发的跳转规则中跳前状态是否与当前状态相符,若相符且规则中布尔表达式为真,则会跳转到跳后状态,反之则不进行任何操作。对于所有具有相同的跳前状态的跳转规则,其布尔表达式两两互斥,不应同时成立。
116.定时器触发的跳转则可检查事件之间的时间关系是否符合预期,其跳转规则包括跳前状态、跳后状态和历经时长三部分,其中,历经时长为进入跳前状态后经过的时间长度。当epa位于某一状态时,将会逐一判断所有定时器触发的跳转规则中跳前状态是否与当前状态相符,若相符则按照历经时长建立定时器。当定时器定时结束时,epa便会跳转到指定的跳后状态,若还未结束epa便进行了状态跳转的话,则关闭当前所有定时器,不再执行。对于任意一个状态而言,若存在多个定时器触发的跳转规则,历经时长更长的跳转规则永远也不会执行,所以在具体实现中,任一epa里所有的定时器触发的跳转规则的跳前状态都是不相同的。
117.边界条件触发的跳转主要运用于系统底层的epa,可以从系统输入量中识别出特定的原子事件。边界条件触发的跳转会不断考察输入的数值是否满足预期条件,其跳转规则包括跳前状态、跳后状态和边界条件三部分。其中,边界条件是包含epa中的局部变量和输入数值两类变量的布尔表达式。当输入的数值更新时,会检查边界条件是否成立,若成立则进行相应的跳转。
118.当epa跳转至下一状态时,会执行一次状态内所需执行的动作集合。其中,动作包含利用刚接收的事件信息修改局部变量、产生新事件、执行特定指令三类。
119.图8是根据本发明的另一实施例的基于复杂事件处理的家居自动控制装置的示意图,参照8所示,基于复杂事件处理的家居自动控制装置包括原子事件确定单元801、复杂事件处理系统构建单元802、控制信息输出单元803、自动控制单元804,由于本发明实施例提供的基于复杂事件处理的家居自动控制装置,可以用于执行上述实施例所述的基于复杂事件处理的家居自动控制方法,其工作原理和有益效果类似,故此处不再详述,具体内容可参见上述实施例的介绍。
120.在本实施例中,需要说明的是,本发明实施例的装置中的各个单元可以集成于一体,也可以分离部署。上述单元可以合并为一个单元,也可以进一步拆分成多个子单元。
121.基于相同的发明构思,本发明又一实施例提供了一种电子设备,参见图9,所述电子设备具体包括如下内容:处理器901、存储器902、通信接口903和通信总线904;
122.其中,所述处理器901、存储器902、通信接口903通过所述通信总线904完成相互间的通信;
123.所述处理器901用于调用所述存储器902中的计算机程序,所述处理器执行所述计算机程序时实现上述基于复杂事件处理的家居自动控制方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:获取家居的待解决问题,基于所述待解决问题,确定原子事件;构建家居的复杂事件处理规则集和复杂事件处理引擎,并基于所述复杂事件处理规则集和所述复杂事件处理引擎构建复杂事件处理系统;使用所述复杂事件处理系统处理所述原子事件,并输出控制信息;基于所述控制信息,对所述家居进行自动控制。
124.可以理解的是,所述计算机程序可以执行的细化功能和扩展功能可参照上面实施例的描述。
125.基于相同的发明构思,本发明又一实施例提供了一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述基于复杂事件处理的家居自动控制方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:获取家居的待解决问题,基于所述待解决问题,确定原子事件;构建家居的复杂事件处理规则集和复杂事件处理引擎,并基于所述复杂事件处理规则集和所述复杂事件处理引擎构建复杂事件处理系统;使用所述复杂事件处理系统处理所述原子事件,并输出控制信息;基于所述控制信息,对所述家居进行自动控制。
126.可以理解的是,所述计算机程序可以执行的细化功能和扩展功能可参照上面实施例的描述。
127.此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
128.以上所描述的装置实施例仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
129.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或实施例的某些部分所述的基于复杂事件处理的家居自动控制方法。
130.此外,在本发明中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
131.此外,在本发明中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
132.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1