基于物联网的设备控制方法、装置、电子设备及存储介质转让专利

申请号 : CN202210237416.X

文献号 : CN114650310B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘夏楠

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请提供了一种基于物联网的设备控制方法、装置、电子设备、计算机可读存储介质及计算机程序产品;可以应用于车载场景,方法包括:获取针对物联网中的目标物联网设备设置的执行计划,其中,执行计划包括执行时间和在执行时间需要执行的操作;确定执行计划对应的计划任务表达式,其中,计划任务表达式用于以字符串的形式描述执行计划;基于计划任务表达式对执行计划进行合法性检测;响应于执行计划的合法性检测通过,将执行计划存储到等待执行队列中;响应于到达执行时间,从等待执行队列中读取执行计划并转换为机器指令、以及向目标物联网设备发送机器指令。通过本申请,能够在节约资源的同时,提升对物联网设备进行控制的稳定性。

权利要求 :

1.一种基于物联网的设备控制方法,其特征在于,所述方法包括:获取针对物联网中的目标物联网设备设置的执行计划,其中,所述执行计划包括执行时间和在所述执行时间需要执行的操作;

确定所述执行计划对应的计划任务表达式,其中,所述计划任务表达式用于以字符串的形式描述所述执行计划;

基于所述目标物联网设备的标识查询计划任务配置表,当所述计划任务配置表中存在与所述目标物联网设备的标识相同、且操作描述符互斥的记录时,针对所述执行计划对应的计划任务表达式包括的多个时间维度,生成一一对应的多个第一位图,并针对所述记录对应的计划任务表达式包括的多个时间维度,生成一一对应的多个第二位图;

针对每个所述时间维度对应的第一位图和第二位图进行按位与操作,得到每个所述时间维度对应的结果位图;

基于所述多个时间维度一一对应的多个结果位图,对所述执行计划包括的执行时间和所述记录包括的执行时间进行时间重合检测;

响应于时间重合检测结果表征所述执行计划包括的执行时间与所述记录包括的执行时间不重合,生成表征所述执行计划的合法性检测通过的合法性检测结果;

响应于所述执行计划的合法性检测通过,将所述执行计划存储到等待执行队列中;

响应于到达所述执行时间,从所述等待执行队列中读取所述执行计划并转换为机器指令、以及向所述目标物联网设备发送所述机器指令。

2.根据权利要求1所述的方法,其特征在于,所述获取针对物联网中的目标物联网设备设置的执行计划,包括:执行以下处理至少之一:

获取目标对象针对所述目标物联网设备设置的执行计划,其中,所述执行计划是所述目标对象通过客户端或者网页设置的;

获取场景控制系统针对所述目标物联网设备设置的执行计划,其中,所述执行计划是所述场景控制系统基于逻辑规则设置的。

3.根据权利要求1所述的方法,其特征在于,在获取针对物联网中的目标物联网设备设置的执行计划之后,所述方法还包括:基于所述执行计划对所述目标物联网设备进行支持检测;

响应于支持检测结果表征所述目标物联网设备不支持所述执行计划包括的在所述执行时间需要执行的操作,向所述执行计划的设置方发送提示消息,其中,所述提示消息用于提示所述目标物联网设备不支持所述执行计划包括的在所述执行时间需要执行的操作;

响应于支持检测结果表征所述目标物联网设备支持所述执行计划包括的在所述执行时间需要执行的操作,转入执行确定所述执行计划对应的计划任务表达式的步骤。

4.根据权利要求1所述的方法,其特征在于,所述计划任务配置表包括多个物联网设备的标识、以及每个所述物联网设备分别对应的计划任务表达式和操作描述符。

5.根据权利要求1所述的方法,其特征在于,所述方法还包括:当所述计划任务配置表中不存在与所述目标物联网设备的标识相同、且操作描述符互斥的记录时,生成表征所述执行计划的合法性检测通过的合法性检测结果;

所述方法还包括:

将所述合法性检测通过的执行计划存储到所述计划任务配置表中。

6.根据权利要求1所述的方法,其特征在于,所述方法还包括:响应于时间重合检测结果表征所述执行计划包括的执行时间与所述记录包括的执行时间重合,生成表征所述执行计划的合法性检测失败的合法性检测结果。

7.根据权利要求1所述的方法,其特征在于,

所述基于所述多个时间维度一一对应的多个结果位图,对所述执行计划包括的执行时间和所述记录包括的执行时间进行时间重合检测,包括:令t满足:2≤t≤T‑1,且从第1个时间维度到第T个时间维度为时间维度的降序,其中,T为所述多个时间维度的总数,且T为大于1的正整数;

当第1个时间维度对应的结果位图包括的每个格子的值均为0时,确定所述执行计划包括的执行时间与所述记录包括的执行时间不重合;

当第1个时间维度至第t个时间维度一一对应的t个结果位图中,每个所述结果位图包括的多个格子中均存在至少一个格子的值为1、且第t+1个时间维度对应的结果位图包括的每个格子的值均为0时,确定所述执行计划包括的执行时间与所述记录包括的执行时间不重合;

当第1个时间维度至第T个时间维度一一对应的T个结果位图中,每个所述结果位图包括的多个格子中均存在至少一个格子的值为1时,确定所述执行计划包括的执行时间与所述记录包括的执行时间重合。

8.根据权利要求1所述的方法,其特征在于,

所述执行计划包括周期性的多个执行计划;

所述将所述执行计划存储到等待执行队列中,包括:

针对所述周期性的多个执行计划,将待执行的多个周期中,距离当前时间最近的周期对应的执行计划存储到等待执行队列中。

9.根据权利要求1所述的方法,其特征在于,

所述等待执行队列中存储有包括针对所述目标物联网设备设置的执行计划在内的多个执行计划,且所述多个执行计划在所述等待执行队列中是按照执行时间从早到晚的顺序进行排序的;

所述响应于到达所述执行时间,从所述等待执行队列中读取所述执行计划并转换为机器指令,包括:启动多个线程;

响应于所述多个执行计划中的任一执行计划到达执行时间,基于所述多个线程中的空闲线程从所述等待执行队列的最小时间一侧读取所述任一执行计划,并将所述任一执行计划包括的在所述执行时间需要执行的操作转换为机器指令;

其中,所述空闲线程是以阻塞的方式处理所述任一执行计划的,且在未到达所述执行时间时,所述空闲线程处于休眠状态。

10.根据权利要求9所述的方法,其特征在于,所述方法还包括:基于每个所述线程在处理所述等待执行队列中存储的执行计划时的延迟时间,确定服务器的性能压力;

当所述性能压力的压力值大于性能压力阈值时,对所述服务器进行扩容;

当所述性能压力的压力值小于或者等于性能压力阈值时,对所述服务器进行缩容。

11.根据权利要求10所述的方法,其特征在于,

所述服务器包括多个消息队列节点,且每个所述消息队列节点包括多个线程;

所述对所述服务器进行扩容,包括:

响应于每个所述消息队列节点均不能增加线程,在所述服务器中增加新的消息队列节点,并在所述新的消息队列节点中启动新的线程;

响应于所述多个消息队列节点中存在能够增加线程的消息队列节点,在所述能够增加线程的消息队列节点中启动新的线程;

所述对所述服务器进行缩容,包括:

响应于每个所述消息队列节点均不能减少线程,在所述服务器中关闭至少一个所述消息队列节点;

响应于所述多个消息队列节点中存在能够减少线程的消息队列节点,在所述能够减少线程的消息队列节点中关闭至少一个线程。

12.根据权利要求1所述的方法,其特征在于,所述向所述目标物联网设备发送所述机器指令,包括:向所述物联网的核心网关发送所述机器指令,其中,所述核心网关用于在接收到所述机器指令之后,根据路由规则将所述机器指令发送至所述物联网的边缘网关,以使所述边缘网关向所述目标物联网设备发送所述机器指令。

13.一种基于物联网的设备控制装置,其特征在于,所述装置包括:获取模块,用于获取针对物联网中的目标物联网设备设置的执行计划,其中,所述执行计划包括执行时间和在所述执行时间需要执行的操作;

确定模块,用于确定所述执行计划对应的计划任务表达式,其中,所述计划任务表达式用于以字符串的形式描述所述执行计划;

查询模块,用于基于目标物联网设备的标识查询计划任务配置表;

生成模块,用于当所述计划任务配置表中存在与所述目标物联网设备的标识相同、且操作描述符互斥的记录时,针对所述执行计划对应的计划任务表达式包括的多个时间维度,生成一一对应的多个第一位图,并针对所述记录对应的计划任务表达式包括的多个时间维度,生成一一对应的多个第二位图;针对每个所述时间维度对应的第一位图和第二位图进行按位与操作,得到每个所述时间维度对应的结果位图;

检测模块,用于基于所述多个时间维度一一对应的多个结果位图,对所述执行计划包括的执行时间和所述记录包括的执行时间进行时间重合检测;

生成模块,还用于响应于时间重合检测结果表征所述执行计划包括的执行时间与所述记录包括的执行时间不重合,生成表征所述执行计划的合法性检测通过的合法性检测结果;

存储模块,用于响应于所述执行计划的合法性检测通过,将所述执行计划存储到等待执行队列中;

读取模块,用于响应于到达所述执行时间,从所述等待执行队列中读取所述执行计划;

转换模块,用于将所述执行计划转换为机器指令;

发送模块,用于向所述目标物联网设备发送所述机器指令。

14.一种电子设备,其特征在于,所述电子设备包括:

存储器,用于存储可执行指令;

处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至12任一项所述的基于物联网的设备控制方法。

15.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于被处理器执行时,实现权利要求1至12任一项所述的基于物联网的设备控制方法。

说明书 :

基于物联网的设备控制方法、装置、电子设备及存储介质

技术领域

[0001] 本申请涉及物联网技术领域,尤其涉及一种基于物联网的设备控制方法、装置、电子设备及计算机可读存储介质。

背景技术

[0002] 物联网(IoT,Internet of Things)即万物相连的互联网,是互联网基础上进行的延伸和扩展,将各种信息传感设备与互联网结合起来而形成的一个巨大网络,通过网络接入实现物与物、物与人的泛在连接。随着物联网技术的发展,物联网的相关应用也越来越普及。示例的,可以在智能家居、智能安防、智慧城市等使用场景下针对物联网设备设置非及时性的执行计划,例如“排气扇延迟10秒执行”、“每月1日提醒我交话费”、“每个工作日10:30启动扫地机器人”等。
[0003] 然而,相关技术提供的方案中,通常会一次性存储针对某个物联网设备设置的所有执行计划,导致资源的占用率较高。此外,当针对同一个物联网设备的同一个时间点设置多个互斥的操作指令时,也容易出现不可预料的执行结果,也即针对物联网设备进行控制的稳定性也较差。

发明内容

[0004] 本申请实施例提供一种基于物联网的设备控制方法、装置、电子设备、计算机可读存储介质及计算机程序产品,能够在节约资源的同时,提升对物联网设备进行控制的稳定性。
[0005] 本申请实施例的技术方案是这样实现的:
[0006] 本申请实施例提供一种基于物联网的设备控制方法,包括:
[0007] 获取针对物联网中的目标物联网设备设置的执行计划,其中,所述执行计划包括执行时间和在所述执行时间需要执行的操作;
[0008] 确定所述执行计划对应的计划任务表达式,其中,所述计划任务表达式用于以字符串的形式描述所述执行计划;
[0009] 基于所述计划任务表达式对所述执行计划进行合法性检测;
[0010] 响应于所述执行计划的合法性检测通过,将所述执行计划存储到等待执行队列中;
[0011] 响应于到达所述执行时间,从所述等待执行队列中读取所述执行计划并转换为机器指令、以及向所述目标物联网设备发送所述机器指令。
[0012] 本申请实施例提供一种基于物联网的设备控制装置,包括:
[0013] 获取模块,用于获取针对物联网中的目标物联网设备设置的执行计划,其中,所述执行计划包括执行时间和在所述执行时间需要执行的操作;
[0014] 确定模块,用于确定所述执行计划对应的计划任务表达式,其中,所述计划任务表达式用于以字符串的形式描述所述执行计划;
[0015] 检测模块,用于基于所述计划任务表达式对所述执行计划进行合法性检测;
[0016] 存储模块,用于响应于所述执行计划的合法性检测通过,将所述执行计划存储到等待执行队列中;
[0017] 读取模块,用于响应于到达所述执行时间,从所述等待执行队列中读取所述执行计划;
[0018] 转换模块,用于将所述执行计划转换为机器指令;
[0019] 发送模块,用于向所述目标物联网设备发送所述机器指令。
[0020] 本申请实施例提供一种电子设备,包括:
[0021] 存储器,用于存储可执行指令;
[0022] 处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的基于物联网的设备控制方法。
[0023] 本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于被处理器执行时,实现本申请实施例提供的基于物联网的设备控制方法。
[0024] 本申请实施例提供一种计算机程序产品,包括计算机程序或指令,用于被处理器执行时,实现本申请实施例提供的基于物联网的设备控制方法。
[0025] 本申请实施例具有以下有益效果:
[0026] 在获取到针对物联网中的目标物联网设备设置的执行计划之后,首先将执行计划转换为对应的计划任务表达式,接着基于计划任务表达式对执行计划进行合法性检测,随后将合法性检测通过的执行计划存储到等待执行队列中,最后在到达执行时间时,从等待执行队列中读取执行计划并转换为对应的机器指令、以及向目标物联网设备发送机器指令,如此,一方面由于仅仅在等待执行队列中存储到达执行时间的执行计划,可以有效减小资源的占用率;另一方面通过提前对执行计划进行合法性检测,避免了针对同一物联网设备设置互斥指令的情况的发生,从而有效提升了对物联网设备进行控制时的稳定性。

附图说明

[0027] 图1A是本申请实施例提供的基于物联网的设备控制系统1000的架构示意图;
[0028] 图1B是本申请实施例提供的基于物联网的设备控制系统1001的架构示意图;
[0029] 图2是本申请实施例提供的服务器200的结构示意图;
[0030] 图3是本申请实施例提供的基于物联网的设备控制方法的流程示意图;
[0031] 图4是本申请实施例提供的基于物联网的设备控制方法的流程示意图;
[0032] 图5是本申请实施例提供的基于物联网的设备控制方法的流程示意图;
[0033] 图6是本申请实施例提供的物联网云端控制系统的架构示意图;
[0034] 图7是本申请实施例提供的基于物联网的设备控制方法的流程示意图;
[0035] 图8是本申请实施例提供的执行计划的设置流程示意图;
[0036] 图9是本申请实施例提供的针对两个年位图进行按位与操作的原理示例图;
[0037] 图10是本申请实施例提供的时间重合检测的流程示意图;
[0038] 图11是本申请实施例提供的针对等待执行队列中存储的多个执行计划进行处理的原理示意图;
[0039] 图12是本申请实施例提供的对线程数量进行调整的原理示意图。

具体实施方式

[0040] 为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
[0041] 在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
[0042] 在以下的描述中,所涉及的术语“第一\第二\…”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\…”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
[0043] 可以理解的是,在本申请实施例中,涉及到用户设置的执行计划等相关的数据,当本申请实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
[0044] 在以下的描述中,所涉及的术语“多个”是指至少两个。
[0045] 除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
[0046] 对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
[0047] 1)执行计划:包括执行时间和物联网设备在执行时间需要执行的操作,例如执行计划可以是:“排气扇延迟10秒执行”、“每月1日提醒我交话费”、“每个工作日10:30启动扫地机器人”等。
[0048] 2)计划任务表达式:又称Cron表达式,是由若干数字、空格、符号按一定的规则,组成的一组字符串,从而表达时间的信息。其中,字符串通常以5或6个空格隔开,分为6或7个域,每一个域代表一个含义。示例的,Cron表达式通常有如下两种语法格式:
[0049] (1)Seconds Minutes Hours DayofMonth Month DayofWeek Year
[0050] (2)Seconds Minutes Hours DayofMonth Month DayofWeek
[0051] 其中,Cron表达式从左到右(用空格隔开)的“Seconds  Minutes  Hours DayofMonth Month DayofWeek Year”分别表示:“秒分小时月份中的日期月份星期中的日期年份”。
[0052] 3)响应于:用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
[0053] 4)网关:用于负责与物联网设备进行数据通信的网络互连模块,网关可以是虚拟的或者具有实体的,在网关上可以部署与控制相关的服务,例如访问控制以及准入控制等。其中,网关包括核心网关和边缘网关(即部署在网络边缘侧的网关,通过网络连接、协议转换等功能连接物理和数字世界,提供轻量化的连接管理、实时数据分析和应用管理功能)。
[0054] 5)按位与:按位与运算符“&”是双目运算符,其功能是参与运算的两数各对应的二进位相与,只有对应的两个二进位都为1时,结果位才为1。
[0055] 6)位图(Bitset\Bitmap):由非常紧凑的连续数组空间表示特定数据的一种数据结构。
[0056] 本申请实施例提供一种基于物联网的设备控制方法、装置、电子设备、计算机可读存储介质及计算机程序产品,能够在节约资源的同时,提升对物联网设备进行控制的稳定性。下面说明本申请实施例提供的电子设备的示例性应用,本申请实施例提供的电子设备可以实施为笔记本电脑、平板电脑、台式计算机、移动设备(例如移动电话、个人数字助理、专用消息设备)、家庭网关、车载终端等各种类型的终端设备,也可以实施为服务器,或者由终端设备和服务器协同实施。下面以电子设备实施为服务器为例进行说明。
[0057] 参见图1A,图1A是本申请实施例提供的基于物联网的设备控制系统1000(例如云端物联网控制系统)的架构示意图,为实现支撑一个在节约资源的同时,提升对物联网设备进行控制的稳定性的应用,图1A所示的基于物联网的设备控制系统1000包括:服务器200、物联网的核心网关300、物联网的边缘网关400、终端设备500和目标物联网设备600。
[0058] 在一些实施例中,目标对象(例如家庭用户或者企业用户)可以通过终端设备500上运行的客户端510(例如物联网设备的专用控制应用或者集成在其他应用中的小程序)设置针对物联网中的目标物联网设备600(例如智能家电,图1A中以空调为例进行说明)的执行计划(当然,目标对象也可以通过浏览器上显示的网页设置针对目标物联网设备600的执行计划),其中,执行计划包括执行时间和在执行时间需要执行的操作,例如目标对象针对空调设置的执行计划可以是“在每天下午5:30开启除湿”,接着终端设备500将目标对象针对目标物联网设备600设置的执行计划发送至服务器200(例如云端物联网控制系统),服务器200在接收到执行计划之后,首先确定执行计划对应的计划任务表达式(即Cron表达式),接着基于Cron表达式对执行计划进行合法性检测;随后服务器200响应于执行计划的合法性检测通过,将执行计划存储到等待执行队列中(例如存储到设置在数据库中的等待执行队列中,或者存储到设置在内存中的等待执行队列中);最后服务器200响应于到达执行时间,从等待执行队列中读取执行计划并转换为机器指令、以及将转换得到的机器指令发送至核心网关300。核心网关300在接收到服务器200发送的机器指令之后,根据路由规则向边缘网关400发送机器指令,从而边缘网关400在接收到机器指令后,可以将机器指令发送至目标物联网设备600,以使目标物联网设备600执行接收到的机器指令(例如开启除湿功能)。
[0059] 在另一些实施例中,除了可以由目标对象直接设置针对目标物联网设备600的执行计划外,服务器200还可以从场景控制系统(图1A中未示出)中获取针对物联网中的目标物联网设备600设置的执行计划,例如可以将目标物联网设备600与场景控制系统形成联动,从而场景控制系统可以根据自身的逻辑规则,设置针对目标物联网设备600的执行计划,如此,能够为用户提供更加智能化的体验。
[0060] 在另一些实施例中,以车载场景为例,参见图1B,图1B是本申请实施例提供的基于物联网的设备控制系统1001的架构示意图,如图1B所示,基于物联网的设备控制系统1001包括:车载终端700(例如车载控制台)和目标物联网设备800(例如方向盘控制器;当然,还可以通过车载终端700设置针对车辆中的空调、音箱等设备的执行计划),其中,车载终端700与目标物联网设备800之间可以通过有线(如通用串行总线协议)或无线(如基于蓝牙、紫蜂通信协议)的方式进行连接。示例的,车辆驾驶者可以通过车载终端700呈现的人机交互界面设置针对车辆中的目标物联网设备800的执行计划,接着,车载终端700在接收到车辆驾驶者设置的执行计划之后,可以采用本申请实施例提供的基于物联网的设备控制方法对车辆驾驶者设置的执行计划进行检测、存储、计算和触发,从而能够在不依赖于互联网的条件下,实现在节约资源的同时,提升对物联网设备进行控制的稳定性。
[0061] 在一些实施例中,本申请实施例提供的基于物联网的设备控制方法还可以应用于边缘物联网控制系统,示例的,可以将本申请实施例提供的基于物联网的设备控制方法应用于家庭网关等硬件设备中,例如终端设备(例如手机)在接收到用户针对目标物联网设备(例如洗衣机)设置的执行计划、以及针对执行计划进行检测、存储、计算和触发之后,可以通过家庭网关向目标物联网设备发送机器指令,从而无需依赖于互联网执行。
[0062] 在一些实施例中,终端设备400或服务器200还可以通过运行计算机程序来实现本申请实施例提供的基于物联网的设备控制方法,例如,计算机程序可以是操作系统中的原生程序或软件模块;可以是本地(Native)应用程序(APP,Application),即需要在操作系统中安装才能运行的程序,如物联网设备专用的控制程序(对应上文的客户端510);也可以是小程序,即只需要下载到浏览器环境中就可以运行的程序;还可以是能够嵌入至任意APP中的小程序,如嵌入至即时通信类的应用程序中的小程序组件,其中,该小程序组件可以由用户控制运行或关闭。总而言之,上述计算机程序可以是任意形式的应用程序、模块或插件。
[0063] 在另一些实施例中,服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器,其中,云服务可以是基于物联网的设备控制服务,供终端设备400进行调用。终端设备400可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能电视、智能手表等,但并不局限于此。终端设备以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。
[0064] 下面以本申请实施例提供的电子设备为服务器为例进行说明。参见图2,图2是本申请实施例提供的服务器200的结构示意图,图2所示的服务器200包括:至少一个处理器210、存储器240、至少一个网络接口220。服务器200中的各个组件通过总线系统230耦合在一起。可理解,总线系统230用于实现这些组件之间的连接通信。总线系统230除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统230。
[0065] 处理器210可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
[0066] 存储器240可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器240可选地包括在物理位置上远离处理器210的一个或多个存储设备。
[0067] 存储器240包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器240旨在包括任意适合类型的存储器。
[0068] 在一些实施例中,存储器240能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
[0069] 操作系统241,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
[0070] 网络通信模块242,用于经由一个或多个(有线或无线)网络接口220到达其他电子设备,示例性的网络接口220包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
[0071] 在一些实施例中,本申请实施例提供的基于物联网的设备控制装置可以采用软件方式实现,图2示出了存储在存储器240中的基于物联网的设备控制装置243,其可以是程序和插件等形式的软件,包括以下软件模块:获取模块2431、确定模块2432、检测模块2433、存储模块2434、读取模块2435、转换模块2436、发送模块2437、查询模块2438、生成模块2439、扩容模块24310和缩容模块24311,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。需要指出的是,在图2中为了表述方便,一次性示出了上述所有模块,在实际应用中,不排除基于物联网的设备控制装置243中仅包括获取模块2431、确定模块2432、检测模块2433、存储模块2434、读取模块2435、转换模块2436和发送模块2437的实施,将在下文中说明各个模块的功能。
[0072] 下面将结合本申请实施例提供的服务器的示例性应用和实施,说明本申请实施例提供的基于物联网的设备控制方法。
[0073] 参见图3,图3是本申请实施例提供的基于物联网的设备控制方法的流程示意图,将结合图3示出的步骤进行说明。
[0074] 在步骤101中,获取针对物联网中的目标物联网设备设置的执行计划。
[0075] 这里,执行计划包括执行时间和在执行时间需要执行的操作。
[0076] 示例的,以物联网中的目标物联网设备为洗衣机为例,针对洗衣机设置的执行计划可以是:“在下午3点开始启动洗衣”。
[0077] 在一些实施例中,可以通过以下方式实现上述的步骤101:执行以下处理至少之一:获取目标对象(例如家庭用户或者企业用户)针对物联网中的目标物联网设备设置的执行计划,其中,执行计划可以是目标对象通过自身关联的终端设备上运行的客户端或者浏览器中显示的网页(Web)设置的;获取场景控制系统针对物联网中的目标物联网设备设置的执行计划,其中,执行计划是场景控制系统基于逻辑规则设置的。
[0078] 示例的,以目标对象为家庭用户为例,家庭用户可以通过APP(例如可以是针对物联网设备的专用控制应用,或者是集成在即时通信应用中的小程序)或者Web页面作为执行计划的设置入口,从而对物联网中的目标物联网设备设置相应的执行计划。
[0079] 示例的,除了可以由目标对象直接设置针对目标物联网设备的执行计划之外,还可以将目标物联网设备与场景控制系统进行联动,从而场景控制系统可以根据自身的逻辑规则,为目标物联网设备设置相应的执行计划(例如假设场景控制系统在检测到某公开区域没有人之后,可以自动延迟1分钟后关闭照明系统),进而为用户提供更加智能化的体验。
[0080] 在另一些实施例中,在获取到针对物联网中的目标物联网设备设置的执行计划之后,还可以执行以下处理:基于执行计划对目标物联网设备进行支持检测;响应于支持检测结果表征目标物联网设备不支持执行计划包括的在执行时间需要执行的操作,向执行计划的设置方发送提示消息,其中,提示消息用于提示执行计划的设置方目标物联网设备不支持执行计划包括的在执行时间需要执行的操作;响应于支持检测结果表征目标物联网设备支持执行计划包括的在执行时间需要执行的操作,转入执行图3示出的步骤102。
[0081] 示例的,以目标物联网设备为豆浆机为例,在获取到针对物联网中的豆浆机设置的执行计划(例如目标对象通过APP针对豆浆机设置的执行计划)之后,可以首先检测目标对象(例如家庭用户A)设置的执行计划包括的在执行时间需要执行的操作是否被豆浆机支持,当支持检测结果表征豆浆机不支持家庭用户A设置的执行计划包括的在执行时间需要执行的操作时(例如假设家庭用户A设置的执行计划为:“每月1日提醒我交话费”,而豆浆机不具备提醒用户交话费的功能),可以向家庭用户A关联的终端设备发送提示消息,从而提示家庭用户A当前设置的执行计划不被豆浆机支持,需要重新进行设置;当支持检测结果表征豆浆机支持家庭用户A设置的执行计划包括的在执行时间需要执行的操作时(例如假设家庭用户A设置的执行计划为:“下午3:00制作果蔬汁”,而豆浆机具备制作果蔬汁的功能),可以转入确定执行计划对应的计划任务表达式的步骤,如此,在获取到针对目标物联网设备设置的执行计划之后,首先通过检测执行计划能否被目标物联网设备支持,从而有效提高后续的执行成功率。
[0082] 在步骤102中,确定执行计划对应的计划任务表达式。
[0083] 这里,计划任务表达式(即Cron表达式)用于以字符串的形式描述执行计划包括的执行时间。
[0084] 在一些实施例中,在获取到针对物联网中的目标物联网设备设置的执行计划,并在检测到目标物联网设备支持执行计划包括的在执行时间需要执行的操作之后,可以确定执行计划对应的Cron表达式。其中,Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义。例如一个Cron表达式通常可以包括以下域中的至少一项:秒域、分域、小时域、日域、月域、周域、年域,其中,秒域和分域的有效范围是0~59的整数、小时域的有效范围是0~23的整数、日域的有效范围是1~31的整数、月域的有效范围是1~12的整数、周域的有效范围是1~7的整数,年域的有效范围是1970~2099。此外,还可以在Cron表达式中出现如下的特殊字符:“,”、“‑”,“*”,“/”,其中,“,”表示列出枚举值,例如假设在分域使用“5,20”,则表示在第5分和第20分各触发一次;“‑”表示范围,例如假设在分域使用“5‑20”,则表示从第5分至第20分每分钟触发一次;“*”表示匹配该域的任意值,例如假设在分域使用“*”,则表示每分钟都会触发;“/”表示起始时间开始触发,然后每隔固定时间触发一次,例如假设在分域使用“5/20”,则表示第5分触发一次,并在第25分和第45分分别再触发一次。
[0085] 示例的,以执行计划包括的执行时间为“2022年当前时间以及当前时间后的每天上午11:15”为例,针对秒域,由于执行时间是从第0秒开始,因此在Cron表达式中显示为“0”;针对分域,由于执行时间是从第15分开始,因此在Cron表达式中显示为“15”;针对小时域,由于执行时间是从第11小时开始,因此在Cron表达式中显示为“11”;针对日域,由于执行时间包括当前日期以及当前日期以后的每天,因此在Cron表达式中显示为“*”;针对月域,由于执行时间包括当前月份以及当前月份以后的每月,因此在Cron表达式中显示为“*”;针对周域,由于执行时间包括当前周以及当前周以后的每周,因此在Cron表达式中显示为“*”;针对年域,由于执行时间是从2022年开始,因此在Cron表达式中显示为“2022”,从而针对执行时间为“2022年当前时间以及当前时间后的每天上午11:15”的执行计划,可以得到如下对应的Cron表达式“0 15 11***2022”,表示在2022年当前时间以及当前时间后的每天上午11:15触发。
[0086] 在步骤103中,基于计划任务表达式对执行计划进行合法性检测。
[0087] 在一些实施例中,可以通过以下方式实现步骤103:基于目标物联网设备的标识查询计划任务配置表,并基于查询结果生成执行计划的合法性检测结果;其中,计划任务配置表包括多个物联网设备的标识、以及每个物联网设备分别对应的计划任务表达式和操作描述符(即用于描述物联网设备在执行时间需要执行的操作的符号,例如以物联网设备为空调为例,当执行计划包括的操作为打开空调时,对应的操作描述符可以是“open”;当执行计划包括的操作为关闭空调时,对应的操作描述符可以是“close”)。
[0088] 示例的,参见表1,表1是本申请实施例提供的计划任务配置表,如表1所示,在计划任务配置表中存储有多个物联网设备的标识(例如物联网设备的唯一编码(ID,Identity Document))、以及每个物联网设备分别对应的Cron表达式和操作描述符,如此,在获取到针对目标物联网设备设置的执行计划之后,可以基于目标物联网设备的标识查询现有的计划任务配置表,从而确定是否对目标物联网设备设置了互斥的执行计划。
[0089] 表1计划任务配置表
[0090]标识 设备标识 Cron表达式 操作描述符
1 空调1 0 0 8 1/1** open
2 空调2 0 0 18 1/1** close
3 豆浆机1 0 0 8 1/1** open
4 豆浆机2 0 15 1 1*** close
[0091] 在另一些实施例中,承接上文,可以通过以下方式实现上述的基于查询结果生成执行计划的合法性检测结果:当计划任务配置表中不存在与目标物联网设备的标识相同、且操作描述符互斥的记录时,生成表征执行计划的合法性检测通过的合法性检测结果。
[0092] 示例的,以目标物联网设备为空调1为例,在获取到针对空调1设置的执行计划之后,可以基于空调1的标识查询计划任务配置表,当计划任务配置表中不存在与空调1的标识相同、且操作描述符互斥的记录时(即没有对空调1设置互斥的执行计划),可以直接生成表征执行计划的合法性检测通过的合法性检测结果。
[0093] 需要说明的是,当执行计划的合法性检测通过之后,还可以将执行计划存储到计划任务配置表中,例如可以将执行计划对应的目标物联网设备的标识、执行计划对应的Cron表达式、以及基于执行计划包括的在执行时间需要执行的操作转换得到的操作描述符存储到计划任务配置表中,如此,通过对计划任务配置表进行实时更新,进一步提高了后续物联网设备执行的成功率。
[0094] 在一些实施例中,还可以通过以下方式实现上述的基于查询结果生成执行计划的合法性检测结果:当计划任务配置表中存在与目标物联网设备的标识相同、且操作描述符互斥的记录时,基于执行计划对应的计划任务表达式和记录对应的计划任务表达式进行时间重合检测;响应于时间重合检测结果表征执行计划包括的执行时间与记录包括的执行时间不重合,生成表征执行计划的合法性检测通过的合法性检测结果;响应于时间重合检测结果表征执行计划包括的执行时间与记录包括的执行时间重合,生成表征执行计划的合法性检测失败的合法性检测结果。
[0095] 示例的,以目标物联网设备为空调1为例,在获取到针对空调1设置的执行计划之后,可以基于空调1的标识查询计划任务配置表,当计划任务配置表中存在与空调1的标识相同、且操作描述符互斥的记录时(例如假设执行计划包括的在执行时间需要执行的操作对应的操作描述符为“open”、而在计划任务配置表中查询到的与空调1的标识相同的记录包括的操作描述符为“close”),可以基于执行计划对应的计划任务表达式(假设为Cron表达式1)和记录对应的计划任务表达式(假设为Cron表达式2)进行时间重合检测,当时间重合检测结果表征执行计划包括的执行时间与记录包括的执行时间不重合时(例如假设执行计划包括的执行时间为11:30,而记录包括的执行时间为12:00,即虽然针对空调1设置的执行计划和记录中包括的执行计划是互斥的,但这两个执行计划的执行时间是不重合的,因此仍可以认为两者是不冲突的),生成表征执行计划的合法性检测通过的合法性检测结果;当时间重合检测结果表征执行计划包括的执行时间与记录包括的执行时间重合时(例如假设执行计划包括的执行时间为每天的11:30,且记录包括的执行时间也为每天的11:30,即在同一个时间点针对空调1设置了互斥的执行计划,因此可以认为两者是冲突的),生成表征执行计划的合法性检测失败的合法性检测结果。
[0096] 需要说明的是,针对合法性检测失败的执行计划,还可以向执行计划的设置方发送相应的提示消息,其中,提示消息中还可以携带有设置失败的具体原因,例如与先前设置的执行计划发生冲突、物联网设备不支持当前设置的执行计划等。
[0097] 在一些实施例中,针对上述计划任务配置表中存在与目标物联网设备的标识相同、且操作描述符互斥的记录的情况,还可以通过以下方式实现上述的基于执行计划对应的计划任务表达式和记录对应的计划任务表达式进行时间重合检测:针对执行计划对应的计划任务表达式(假设为Cron表达式1)包括的多个时间维度,分别生成一一对应的多个第一位图,并针对记录对应的计划任务表达式(假设为Cron表达式2)包括的多个时间维度,分别生成一一对应的多个第二位图;针对每个时间维度对应的第一位图和第二位图进行按位与操作,得到每个时间维度对应的结果位图;基于多个时间维度一一对应的多个结果位图,对执行计划包括的执行时间和记录包括的执行时间进行时间重合检测。
[0098] 示例的,可以通过以下方式实现上述的基于多个时间维度一一对应的多个结果位图,对执行计划包括的执行时间和记录包括的执行时间进行时间重合检测:令t满足:2≤t≤T‑1,且从第1个时间维度到第T个时间维度为时间维度的降序,T为多个时间维度的总数,其中,T为大于1的正整数;当第1个时间维度对应的结果位图包括的每个格子的值均为0时,确定执行计划包括的执行时间与记录包括的执行时间不重合;当第1个时间维度至第t个时间维度一一对应的t个结果位图中,每个结果位图包括的多个格子中均存在至少一个格子的值为1、且第t+1个时间维度对应的结果位图包括的每个格子的值均为0时,确定执行计划包括的执行时间与记录包括的执行时间不重合;当第1个时间维度至第T个时间维度一一对应的T个结果位图中,每个结果位图包括的多个格子中均存在至少一个格子的值为1时,确定执行计划包括的执行时间与记录包括的执行时间重合。
[0099] 举例来说,假设执行计划对应的计划任务表达式(假设为Cron表达式1)包括的多个时间维度为:年、月、日、星期、小时、分、秒,则可以针对这7个时间维度生成一一对应的7个第一位图,分别为第一年位图、第一月位图、第一日位图、第一星期位图、第一小时位图、第一分位图、第一秒位图;同时,假设记录对应的计划任务表达式(假设为Cron表达式2)包括的多个时间维度为:年、月、日、星期、小时、分、秒,则可以针对这7个时间维度生成一一对应的7个第二位图,分别为第二年位图、第二月位图、第二日位图、第二星期位图、第二小时位图、第二分位图、第二秒位图。接着,对第一年位图和第二年位图进行按位与操作,得到年结果位图(即以年为时间维度得到的结果位图),当年结果位图包括的每个格子中的值均为0时(表征执行计划包括的执行时间和记录包括的执行时间在年的时间维度上不重合,例如假设执行计划包括的执行时间为2022年,而记录包括的执行时间为2021年),确定执行计划包括的执行时间与记录包括的执行时间不重合(即执行计划的合法性检测通过);当年结果位图包括的多个格子中存在至少一个格子的值为1时(表征执行计划包括的执行时间和记录包括的执行时间在年的时间维度上重合,例如假设执行计划包括的执行时间为2022年,记录包括的执行时间也为2022年),可以对第一月位图和第二月位图进行按位与操作,得到月结果位图。当月结果位图包括的每个格子中的值均为0时,确定执行计划包括的执行时间与记录包括的执行时间不重合(即虽然执行计划包括的执行时间和记录包括的执行时间是同一年,但是月份不同,因此两者的执行时间是不同的);当月结果位图包括的多个格子中存在至少一个格子的值为1时(即执行时间在月的时间维度上也相同),可以对第一日位图和第二日位图进行按位与操作,得到日结果位图。以此类推,当日结果位图表征执行计划包括的执行时间和记录包括的执行时间在日的时间维度上重合时,还可以进一步检测执行计划包括的执行时间和记录包括的执行时间在星期、小时、分、以及秒的时间维度上是否重合。也就是说,当执行计划包括的执行时间与记录包括的执行时间在任一时间维度上不重合时,可以确定执行计划的合法性检测通过;当执行计划包括的执行时间和记录包括的执行时间在所有时间维度上均重合时,可以确定执行计划的合法性检测失败。
[0100] 在步骤104中,响应于执行计划的合法性检测通过,将执行计划存储到等待执行队列中。
[0101] 在一些实施例中,执行计划可以是周期性的多个执行计划,则可以通过图4示出的步骤1041实现步骤104中的将执行计划存储到等待执行队列中的操作,将结合图4示出的步骤1041进行说明。
[0102] 在步骤1041中,针对周期性的多个执行计划,将待执行的多个周期中,距离当前时间最近的周期对应的执行计划存储到等待执行队列中。
[0103] 示例的,当针对目标物联网设备设置的执行计划为周期性的多个执行计划时,例如假设执行计划为“每月1日提醒我交话费”(该执行计划包括从1月1日至12月1日提醒我交话费的12个执行计划),则针对周期性的多个执行计划,可以将待执行的多个周期中,距离当前时间最近的周期对应的执行计划存储到等待执行队列中(例如假设当前时间为2月21日,则可以将在3月1日提醒我交话费的执行计划存储到等待执行队列中),如此,可以大大节省周期性的多个执行计划的存储空间,不用把周期性的执行计划的每个时间点都进行存储,而是在上一周期对应的执行计划完成后再存储下一周期对应的执行计划,从而节省了存储成本。
[0104] 需要说明的是,也可以将与当前时间接近的多个周期分别对应的多个执行计划一次性存储到等待执行队列中,或者将所有周期分别对应的多个执行计划一次性存储到等待执行队列中,又或者可以根据设备(例如服务器)的缓存自动调整存储到等待执行队列中的执行计划的数量(例如当服务器的剩余存储空间大于存储空间阈值时,可以一次性将与当前时间接近的多个周期分别对应的多个执行计划存储到等待执行队列中;当服务器的剩余存储空间小于存储空间阈值时,可以仅将与当前时间最近的周期对应的执行计划存储到等待执行队列中),本申请实施例对等待执行队列中一次性存储的执行计划的数量不作具体限定。
[0105] 在步骤105中,响应于到达执行时间,从等待执行队列中读取执行计划并转换为机器指令、以及向目标物联网设备发送机器指令。
[0106] 在一些实施例中,等待执行队列中可以存储有包括针对目标物联网设备设置的执行计划在内的多个执行计划,且多个执行计划在等待执行队列中可以是按照执行时间从早到晚的顺序进行排序的,则可以通过图5示出的步骤1051至步骤1053实现图3示出的步骤105,将结合图5示出的步骤1051至步骤1053进行说明。
[0107] 在步骤1051中,启动多个线程。
[0108] 在一些实施例中,可以在服务器中启动多个消息队列节点(例如Broker,Broker可以被看成消息转发器,负责一些控制和管理操作),并在每个消息队列节点中启动至少一个线程。
[0109] 需要说明的是,为了节约服务器的系统资源,在未到达执行计划包括的执行时间时(即线程不需要工作时),可以控制多个线程处于休眠状态,当到达执行计划包括的执行时间时(即线程需要工作时),才将线程从休眠状态唤醒。
[0110] 在步骤1052中,响应于多个执行计划中的任一执行计划到达执行时间,基于多个线程中的空闲线程从等待执行队列的最小时间一侧读取任一执行计划,并将任一执行计划包括的在执行时间需要执行的操作转换为机器指令。
[0111] 这里,空闲线程是以阻塞的方式(即在接收到物联网设备返回的调用结果之前,空闲线程会被挂起,直到得到调用结果之后才能继续执行其他的操作)处理任一执行计划的,且在未到达执行时间时,空闲线程处于休眠状态。
[0112] 示例的,假设在等待执行队列中存储有包括针对目标物联网设备设置的执行计划在内的4个执行计划,分别为:执行计划A、执行计划B、执行计划C和执行计划D,其中,执行计划B是针对目标物联网设备设置的执行计划,同时假设执行计划A包括的执行时间为10:30、执行计划B包括的执行时间为9:00、执行计划C包括的执行时间为11:00、执行计划D包括的执行时间为13:00,则执行计划A至执行计划D在等待执行队列中的排序顺序为:执行计划B、执行计划A、执行计划C、执行计划D。接着响应于多个执行计划中的任一执行计划到达执行时间(例如假设当前时间为9:00,即到达了执行计划B包括的执行时间),则可以基于在步骤1051启动的多个线程中的空闲线程从等待执行队列的最小时间一侧读取执行计划B,并将所读取的执行计划B包括的在执行时间需要执行的操作转换为对应的机器指令(即目标物联网设备能够识别的指令)。
[0113] 在一些实施例中,针对等待执行队列中存储有多个执行计划的情况,还可以执行以下处理:基于每个线程在处理等待执行队列中存储的执行计划时的延迟时间(例如可以是多个线程的平均延迟时间),确定服务器的性能压力;当性能压力的压力值大于性能压力阈值时,对服务器进行扩容;当性能压力的压力值小于或者等于性能压力阈值时,对服务器进行缩容。
[0114] 示例的,可以在服务器中启动多个消息队列节点,并在每个消息队列节点中启动多个线程,则可以通过以下方式实现上述的对服务器进行扩容:响应于每个消息队列节点均不能增加线程,在服务器中增加新的消息队列节点(即在服务器中启动新的消息队列节点),并在新的消息队列节点中启动新的线程(例如假设在服务器中启动有3个消息队列节点,分别为消息队列节点1、消息队列节点2和消息队列节点3,当消息队列节点1至消息队列节点3均不能增加线程时,可以在服务器中启动新的消息队列节点,例如消息队列节点4,以在消息队列节点4中启动新的线程);响应于多个消息队列节点中存在能够增加线程的消息队列节点,在能够增加线程的消息队列节点中启动新的线程(例如假设在服务器中启动有3个消息队列节点,分别为消息队列节点1、消息队列节点2和消息队列节点3,其中,消息队列节点3是能够增加线程的消息队列节点,则可以在消息队列节点3中启动新的线程),如此,可以通过增加线程的方式来减小服务器的性能压力,进而减小线程在处理执行计划时的延迟时间。
[0115] 示例的,承接上文,可以通过以下方式实现对服务器进行缩容:响应于每个消息队列节点均不能减少线程,在服务器中关闭至少一个消息队列节点(例如假设在服务器中启动有3个消息队列节点,分别为消息队列节点1、消息队列节点2和消息队列节点3,当消息队列节点1至消息队列节点3均不能减少线程时,可以关闭3个消息队列节点中的任意一个消息队列节点,例如可以在服务器中关闭消息队列节点1,从而减少线程的数量);响应于多个消息队列节点中存在能够减少线程的消息队列节点,在能够减少线程的消息队列节点中关闭至少一个线程(例如假设在服务器中启动有3个消息队列节点,分别为消息队列节点1、消息队列节点2和消息队列节点3,其中,消息队列节点2是能够减少线程的消息队列节点,则可以在消息队列节点2中关闭至少一个线程),如此,在服务器的性能压力减小时,通过减少线程的方式来避免服务器的系统资源浪费。
[0116] 在步骤1053中,向物联网的核心网关发送机器指令。
[0117] 这里,核心网关用于在接收到机器指令之后,根据路由规则将机器指令发送至物联网的边缘网关,以使边缘网关向目标物联网设备发送机器指令。
[0118] 示例的,以目标物联网设备为空调1为例,在将针对空调1设置的执行计划包括的在执行时间需要执行的操作转换为对应的机器指令之后,可以首先向物联网的核心网关发送转换得到的机器指令,从而核心网关在接收到机器指令之后,可以进一步根据路由规则向边缘网关发送机器指令(例如机器指令中可以携带有空调1的标识,从而核心网关可以向与空调1的标识匹配的边缘网关发送机器指令),边缘网关在接收到机器指令之后,可以根据空调1的标识从下属的多个物联网设备中确定出空调1,并将从核心网关中接收到的机器指令发送至空调1,以使空调1根据机器指令执行相应的操作(例如启动或者关闭等)。
[0119] 本申请实施例提供的基于物联网的设备控制方法,在获取到针对物联网中的目标物联网设备设置的执行计划之后,首先将执行计划转换为对应的计划任务表达式,接着可以基于计划任务表达式对执行计划进行合法性检测,随后将合法性检测通过的执行计划存储到等待执行队列中,最后在到达执行时间时,从等待执行队列中读取执行计划并转换为对应的机器指令、以及向目标物联网设备发送机器指令,如此,一方面由于仅仅在等待执行队列中存储到达执行时间的执行计划,而非存储针对目标物联网设备设置的所有执行计划,可以有效地减少资源的占用率;另一方面,通过基于计划任务表达式对执行计划提前进行合法性检测,能够避免针对同一个物联网设备设置互斥指令的情况的发生,从而大大提升了在对物联网设备进行控制时的稳定性。
[0120] 下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
[0121] 物联网设备在智能家居、智能安防、智慧城市等使用场景下往往需要设置非及时性的执行计划,例如“排气扇延迟10秒执行”、“每月1日提醒我交话费”、“每个工作日10:30启动扫地机器人”等。
[0122] 然而,相关技术提供的方案中,针对物联网设备,用户通常只能手动设置定时功能,例如带预约功能的洗衣机、豆浆机等,不能与云端进行联动。此外,相关技术提供的云端控制的物联网设备也仅仅只能设置简单的定时或者延迟的执行计划,同时相关技术提供的云端执行计划控制系统存在处理能力不足、失败率高等缺陷。可以看出,相关技术提供的方案存在处理能力不足、周期性的执行计划需要一次存储所有的时间点,导致存储空间占用大。此外,当针对同一个物联网设备的同一个时间点设置多个互斥的操作指令时,容易出现不可预料的执行结果。
[0123] 鉴于此,本申请实施例提供一种基于物联网的设备控制方法,设计了一套包括周期性的执行计划的检测、存储、计算、触发的解决方案,利用这套方案,家庭用户和政企用户都可以很方便地管理和设置自己的物联网设备。除了直接设置物联网的执行计划之外,还可以与场景控制系统形成联动(例如在检测到某公共区域没有人后,自动延迟1分钟后关闭照明系统),场景控制系统可以根据自身的逻辑规则,为物联网设备设置相应的执行计划,从而为用户提供更加智能化的体验。
[0124] 在对本申请实施例提供的基于物联网的设备控制方法进行具体说明之前,首先对物联网云端控制系统的架构进行说明。
[0125] 示例的,参见图6,图6是本申请实施例提供的物联网云端控制系统的架构示意图,如图6所示,一个典型的物联网云端控制系统的架构可以简化为客户端、业务层、控制层、接入层、以及物联网设备(可以包括多个物联网设备,例如可以包括物联网设备1、物联网设备2和物联网设备3)。下面将结合图6阐述在一个完整的物联网云端控制系统的架构下关于执行计划的管理和触发的具体实现过程。首先,用户可以通过在终端设备(例如手机、电脑等)上运行的APP或者Web页面作为设置入口,针对某个物联网设备(例如物联网设备1,例如空调)设置一个执行计划;接着,计划任务管理系统在接收到用户设置的执行计划之后,将用户设置的执行计划转换为对应的Cron表达式并进行存储。同时,计划任务管理系统还可以从用户设置的执行计划中确定出执行时间,并记录执行时间。当系统时间到达执行时间后,计划任务管理系统中的触发器会向设备影子模型系统发送用户设置的执行计划,以使设备影子模型系统根据物联网设备当前的状态将用户设置的执行计划翻译为对应的机器指令,并调用指令系统进行下发。例如指令系统可以先将机器指令下发给物联网的核心网关,以使核心网关根据路由规则将机器指令下发给物联网的边缘网关,从而边缘网关可以将机器指令交由目标物联网设备(即物联网设备1,即空调)执行。
[0126] 下面对本申请实施例提供的基于物联网的设备控制方法进行具体说明。
[0127] 示例的,参见图7,图7是本申请实施例提供的基于物联网的设备控制方法的流程示意图,如图7所示,当用户输入一次执行计划后,服务器经过处理,将处理后的执行计划存储到等待执行队列中,且当这次的执行计划处理完毕后,再计算下次的执行计划,并存储到等待执行队列中,如此循环,以达到周期性执行的目的。此种数据结构可以满足周期性执行和定时执行两种使用场景。此外,等待执行队列中也可以仅仅存储执行计划的最近一次执行任务(例如与当前时间最近的周期对应的执行计划包括的在执行时间需要执行的操作),从而到达节约存储空间的目的。
[0128] 本申请实施例提供的基于物联网的设备控制方法主要分为两个部分,第一部分为执行计划的设置,第二部分为执行计划的触发,下面分别进行说明。
[0129] (一)执行计划的设置
[0130] 在一些实施例中,参见图8,图8是本申请实施例提供的执行计划的设置流程示意图,如图8所示,在接收到用户针对某个物联网设备设置的执行计划之后,首先计算执行计划对应的Cron表达式,并利用Cron表达式的特性进行存储,例如可以存储在数据库中,也可以存储在内存中。周期性的执行计划(或称指令)设置时需要检测执行计划设置的合法性,例如首先检测执行计划包括的在执行时间需要执行的操作(即任务)是否被物联网设备支持,其次需要检测是否存在互斥的执行计划(例如同时打开和关闭某个物联网设备),最后需要检测互斥的执行计划包括的执行时间是否重合(例如可以使用位图计算时间维度是否重合),如果存在互斥的执行计划、且执行时间重合,则使本次设置的执行计划的合法性检测失败。此外,针对合法性检测通过的执行计划(即设置成功的执行计划),需要立即使用Cron表达式生成执行时间,并将待触发的任务(例如执行计划包括的在执行时间需要执行的操作)存储到等待执行队列中,等待触发器的执行。
[0131] 下面对执行计划的设置中的时间重合检测过程进行具体说明。
[0132] 在一些实施例中,每个Cron表达式可以由7个部分组成,从左到右分别是:秒、分钟、小时、日、月、星期、年,服务器在解析Cron表达式之后,可以针对这7个时间维度生成一一对应的7个位图。下面以年位图为例进行说明。
[0133] 示例的,参见图9,图9是本申请实施例提供的针对两个年位图进行按位与操作的原理示意图,如图9所示,可以在内存中使用连续的空间存储位图,每个格子中的值为0或者1,下标为对应的年份,Cron表达式1和Cron表达式2分别表示了两个从1970年到2100年每年是否执行的数据,将Cron表达式1和Cron表达式2所分别生成的两个位图进行按位与操作,即可得到一个结果位图,如果结果位图中每个格子的值全部为0,则表示Cron表达式1与Cron表达式2在年的时间维度上没有冲突(即本次设置的执行计划和计划任务配置表中查询到的记录包括的执行计划在年的时间维度上不重合)。
[0134] 同理,除了年位图之外,月位图、日位图、星期位图、小时位图、分位图、秒位图也可以使用同样的方法检测是否重合,下面将结合图10进行具体说明。
[0135] 示例的,参见图10,图10是本申请实施例提供的时间重合检测的流程示意图,如图10所示,在接收到针对某个物联网设备(例如物联网设备1)设置的执行计划之后,首先判断是否存在多个执行计划(即针对物联网设备1设置的多个执行计划),当不存在时,确定本次的执行计划设置成功;当存在时,针对每个执行计划生成对应的位图(例如可以针对每个执行计划对应的Cron表达式生成一组位图,包括:年位图、月位图、日位图、星期位图、小时位图、分位图、秒位图),接着针对多个执行计划两两检测时间是否重合,具体过程如下:首先检测年位图是否冲突(即执行时间在年的时间维度上是否重合,具体的检测过程可以参照图9的描述,本申请实施例在此不再赘述),当年位图检测结果表征不冲突时,确定本次的执行计划设置成功,当年位图检测结果表征冲突时,检测月位图是否冲突,当月位图检测结果表征不冲突时,确定本次的执行计划设置成功,当月位图检测结果表征冲突时,继续检测日位图是否冲突,以此类推,直至检测秒位图是否冲突,当所有时间维度的位图检测结果均冲突时,确定本次的执行计划设置失败。
[0136] (二)执行计划的触发
[0137] 在经过上述针对执行计划的设置流程之后,可以得到一个存储有多个执行计划的等待执行队列,下面将需要触发器按照等待执行队列中的顺序来进行触发操作。等待执行队列中存储的执行计划是按照执行时间的先后顺序进行排序的,因此,触发器仅需要从等待执行队列的最小时间一侧获取下次的执行计划。
[0138] 示例的,参见图11,图11是本申请实施例提供的针对等待执行队列中存储的多个执行计划进行处理的原理示意图,如图11所示,触发器中会同时启动多个线程(例如3个消费线程),并通过阻塞的方式从等待执行队列中获取下一个执行计划。当系统时间未到达下一个执行计划的执行时间时,消费线程将被阻塞住,直到等待执行队列中排在最前面的执行计划的执行时间到达,此时,消费线程将被唤醒。这种消息逻辑可以通过脚本(例如Redis中的lua脚本)实现。当消费线程获取到执行计划之后,可以根据执行计划中携带的物联网设备的标识(例如ID)、待执行的操作,调用下游的控制层进行具体的执行,例如图1中的架构所示,至此一个完整的执行计划的检测、存储、计算和触发处理过程完毕。
[0139] 在另一些实施例中,当等待执行队列中存储的待执行的执行计划的数量增多到超出固定线程数的处理能力时,可能会造成执行计划的积压,从而导致执行计划被延迟执行,这将损害用户的产品体验,因此还需要一个自适应反馈流程来动态调整线程的数量。
[0140] 示例的,参见图12,图12是本申请实施例提供的对线程数量进行调整的原理示意图,如图12所示,可以根据每个线程在处理等待执行队列中存储的执行计划时的延迟时间(例如多个线程的平均延迟时间),推断出物联网云端控制系统整体的性能压力,当性能压力的压力值大于压力阈值时,确定需要扩容(当确定需要扩容时,首先检测每台broker是否有线程可以增加,当每台broker均不能增加线程时,增加broker;当存在能够增加线程的broker时,在能够增加线程的broker中增加线程);当性能压力的压力值小于或者等于压力阈值时,确定需要缩容(当确定需要缩容时,首先检测每台broker是否有线程可以减少,当每台broker均不能减少线程时,减少broker;当存在能够减少线程的broker时,在能够减少线程的broker中减少线程)。如此,物联网云端控制系统可以根据此反馈数据(即性能压力的压力值)自动对整体处理能力进行线程数量的调整、或者集群的扩容或缩容,例如可以使用公有云(例如腾讯云)的自动扩缩容机制,也可以由人工来进行扩缩容。
[0141] 需要说明的是,本申请实施例提供的基于物联网的设备控制方法除了可以应用于云端物联网控制系统外,还可以用于边缘物联网控制系统,例如可以将本申请实施例提供的基于物联网的设备控制方法应用于家庭网关等硬件设备内,从而不依赖于互联网执行。
[0142] 综上所述,本申请实施例提供的基于物联网的设备控制方法具有以下有益效果:
[0143] 1)可以节省周期性的执行计划的存储空间,不需要把周期性的执行计划的每个时间点都进行存储,而是在上一个周期的执行计划处理完毕后再计算下一个周期的执行计划包括的执行时间,节省了存储成本;
[0144] 2)可以提前检测执行计划包括的执行时间是否有重合、以及执行计划设置的是否合理(例如检测物联网设备是否支持执行计划包括的操作),从而提高执行成功率;
[0145] 3)可以动态调整整个云端物联网控制系统的性能,利用实时反馈的数据,实现自动扩缩容,节省了成本。
[0146] 下面继续说明本申请实施例提供的基于物联网的设备控制装置243的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器240的基于物联网的设备控制装置243中的软件模块可以包括:获取模块2431、确定模块2432、检测模块2433、存储模块2434、读取模块2435、转换模块2436和发送模块2437。
[0147] 获取模块2431,用于获取针对物联网中的目标物联网设备设置的执行计划,其中,执行计划包括执行时间和在执行时间需要执行的操作;确定模块2432,用于确定执行计划对应的计划任务表达式,其中,计划任务表达式用于以字符串的形式描述执行计划;检测模块2433,用于基于计划任务表达式对执行计划进行合法性检测;存储模块2434,用于响应于执行计划的合法性检测通过,将执行计划存储到等待执行队列中;读取模块2435,用于响应于到达执行时间,从等待执行队列中读取执行计划;转换模块2436,用于将执行计划转换为机器指令;发送模块2437,用于向目标物联网设备发送机器指令。
[0148] 在一些实施例中,获取模块2431,还用于执行以下处理至少之一:获取目标对象针对目标物联网设备设置的执行计划,其中,执行计划是目标对象通过客户端或者网页设置的;获取场景控制系统针对目标物联网设备设置的执行计划,其中,执行计划是场景控制系统基于逻辑规则设置的。
[0149] 在一些实施例中,检测模块2433,还用于基于执行计划对目标物联网设备进行支持检测;发送模块2437,还用于响应于支持检测结果表征目标物联网设备不支持执行计划包括的在执行时间需要执行的操作,向执行计划的设置方发送提示消息,其中,提示消息用于提示目标物联网设备不支持执行计划包括的在执行时间需要执行的操作;确定模块2432,还用于响应于支持检测结果表征目标物联网设备支持执行计划包括的在执行时间需要执行的操作,转入执行确定执行计划对应的计划任务表达式的步骤。
[0150] 在一些实施例中,基于物联网的设备控制装置243还包括查询模块2438,用于基于目标物联网设备的标识查询计划任务配置表;基于物联网的设备控制装置243还包括生成模块2439,用于基于查询结果生成执行计划的合法性检测结果;其中,计划任务配置表包括多个物联网设备的标识、以及每个物联网设备分别对应的计划任务表达式和操作描述符。
[0151] 在一些实施例中,生成模块2439,还用于当计划任务配置表中不存在与目标物联网设备的标识相同、且操作描述符互斥的记录时,生成表征执行计划的合法性检测通过的合法性检测结果;存储模块2434,还用于将合法性检测通过的执行计划存储到计划任务配置表中。
[0152] 在一些实施例中,检测模块2433,还用于当计划任务配置表中存在与目标物联网设备的标识相同、且操作描述符互斥的记录时,基于执行计划对应的计划任务表达式和记录对应的计划任务表达式进行时间重合检测;生成模块2439,还用于响应于时间重合检测结果表征执行计划包括的执行时间与记录包括的执行时间不重合,生成表征执行计划的合法性检测通过的合法性检测结果;以及用于响应于时间重合检测结果表征执行计划包括的执行时间与记录包括的执行时间重合,生成表征执行计划的合法性检测失败的合法性检测结果。
[0153] 在一些实施例中,生成模块2439,还用于针对执行计划对应的计划任务表达式包括的多个时间维度,生成一一对应的多个第一位图,并针对记录对应的计划任务表达式包括的多个时间维度,生成一一对应的多个第二位图;针对每个时间维度对应的第一位图和第二位图进行按位与操作,得到每个时间维度对应的结果位图;检测模块2433,还用于基于多个时间维度一一对应的多个结果位图,对执行计划包括的执行时间和记录包括的执行时间进行时间重合检测。
[0154] 在一些实施例中,检测模块2433,还用于执行以下处理:令t满足:2≤t≤T‑1,且从第1个时间维度到第T个时间维度为时间维度的降序,其中,T为多个时间维度的总数,且T为大于1的正整数;当第1个时间维度对应的结果位图包括的每个格子的值均为0时,确定执行计划包括的执行时间与记录包括的执行时间不重合;当第1个时间维度至第t个时间维度一一对应的t个结果位图中,每个结果位图包括的多个格子中均存在至少一个格子的值为1、且第t+1个时间维度对应的结果位图包括的每个格子的值均为0时,确定执行计划包括的执行时间与记录包括的执行时间不重合;当第1个时间维度至第T个时间维度一一对应的T个结果位图中,每个结果位图包括的多个格子中均存在至少一个格子的值为1时,确定执行计划包括的执行时间与记录包括的执行时间重合。
[0155] 在一些实施例中,存储模块2434,还用于针对周期性的多个执行计划,将待执行的多个周期中,距离当前时间最近的周期对应的执行计划存储到等待执行队列中。
[0156] 在一些实施例中,读取模块2435,还用于响应于多个执行计划中的任一执行计划到达执行时间,基于多个线程中的空闲线程从等待执行队列的最小时间一侧读取任一执行计划;转换模块2436,还用于将任一执行计划包括的在执行时间需要执行的操作转换为机器指令;其中,空闲线程是以阻塞的方式处理任一执行计划的,且在未到达执行时间时,空闲线程处于休眠状态。
[0157] 在一些实施例中,确定模块2432,还用于基于每个线程在处理等待执行队列中存储的执行计划时的延迟时间,确定服务器的性能压力;基于物联网的设备控制装置243还包括扩容模块24310和缩容模块24311,其中,扩容模块24310,用于当性能压力的压力值大于性能压力阈值时,对服务器进行扩容;缩容模块24311,用于当性能压力的压力值小于或者等于性能压力阈值时,对服务器进行缩容。
[0158] 在一些实施例中,扩容模块24310,还用于响应于每个消息队列节点均不能增加线程,在服务器中增加新的消息队列节点,并在新的消息队列节点中启动新的线程;以及用于响应于多个消息队列节点中存在能够增加线程的消息队列节点,在能够增加线程的消息队列节点中启动新的线程;缩容模块24311,还用于响应于每个消息队列节点均不能减少线程,在服务器中关闭至少一个消息队列节点;以及用于响应于多个消息队列节点中存在能够减少线程的消息队列节点,在能够减少线程的消息队列节点中关闭至少一个线程。
[0159] 在一些实施例中,发送模块2437,还用于向物联网的核心网关发送机器指令,其中,核心网关用于在接收到机器指令之后,根据路由规则将机器指令发送至物联网的边缘网关,以使边缘网关向目标物联网设备发送机器指令。
[0160] 需要说明的是,本申请实施例装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本申请实施例提供的基于物联网的设备控制装置中未尽的技术细节,可以根据图3至图5任一附图的说明而理解。
[0161] 本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令(即可执行指令),该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行本申请实施例上述的基于物联网的设备控制方法。
[0162] 本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的基于物联网的设备控制方法,例如,如图3至图5任一附图示出的基于物联网的设备控制方法。
[0163] 在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD‑ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
[0164] 在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
[0165] 作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper Text Markup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
[0166] 作为示例,可执行指令可被部署为在一个电子设备上执行,或者在位于一个地点的多个电子设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个电子设备上执行。
[0167] 以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。