一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于WebHook服务的智能设备状态信息持久化方法及平台与流程

2021-12-07 21:45:00 来源:中国专利 TAG:

一种基于webhook服务的智能设备状态信息持久化方法及平台
技术领域
1.本发明涉及智能家居技术领域,特别是指一种基于webhook服务的智能设备状态信息持久化方法及智能家居业务管理平台。


背景技术:

2.在当前的智能家居领域中,设备状态信息存储在网关设备中,平台和移动端无法接收到设备状态变化事件和变化后的状态值。当移动端显示设备状态时,必须经过平台做中转,平台再从网关获取各设备的当前状态值,该请求过程因节点多从而造成请求等待时间长,导致查询效率低,同时网关所在的网络波动对获取数据的成功率影响大。


技术实现要素:

3.为了解决平台从网关获取各设备的当前状态值的请求过程因节点多从而造成请求等待时间长,导致查询效率低的问题,本发明实施例提供了一种基于 webhook服务的智能设备状态信息持久化方法及智能家居业务管理平台。
4.为解决上述技术问题,本发明提供如下所述技术方案如下:
5.一方面,提供了一种基于webhook服务的智能设备状态信息持久化方法,该方法应用于智能家居业务管理平台,所述智能家居业务管理平台包括emqx消息服务器、webhook服务模块、redis数据库以及至少一个property消费服务进程;
6.所述方法包括:
7.s1、当emqx消息服务器接收到属性状态值的变化指令时,所述emqx消息服务器向webhook服务模块发布属性状态值的变化值;
8.s2、所述webhook服务模块基于所述变化值更新属性值到内存队列;
9.s3、所述webhook服务模块更新设备的属性值到redis数据库,所述redis 数据库向所述webhook服务模块返回更新结果;
10.s4、当消息的生产速度大于所述webhook服务模块向所述redis数据库更新的速度时,开启至少一个property消费服务进程,每个property消费服务进程向所述webhook服务模块中取出属性值,并更新到redis数据库。
11.可选地,所述s2中的webhook服务模块基于所述变化值更新属性值到内存队列,包括:
12.当基于所述变化值更新属性值的消息进入内存队列时,如果所述内存队列已存在相同设备下同名属性的消息,则将要入的消息覆盖已存在的旧消息。
13.可选地,所述方法还包括:
14.s5、当平台接收到移动端发送的设备状态查询消息时,所述平台直接获取所述redis数据库内的设备状态,将所述设备状态发送至所述移动端。
15.可选地,所述s4中的每个property消费服务进程向所述webhook服务模块中取出
属性值,并更新到redis数据库,包括:
16.所述property消费服务进程向所述webhook服务模块发送属性值获取请求,所述webhook服务模块向所述property消费服务进程出列属性值,所述webhook 服务模块向所述redis数据库进行设备属性值的更新,所述redis数据库向所述 webhook服务模块发送更新结果。
17.可选地,所述redis数据库是使用redis扩展的json类型进行数据存储,存储的数据以物的id作为键、以物的属性名为json的object对象的属性名、以物的属性值作为json的object对象的属性值。
18.另一方面,提供了一种智能家居业务管理平台,所述智能家居业务管理平台用于实现一种基于webhook服务的智能设备状态信息持久化方法,所述智能家居业务管理平台包括emqx消息服务器、webhook服务模块、redis数据库以及至少一个property消费服务进程,其中:
19.所述emqx消息服务器,用于接收到属性状态值的变化指令时,向webhook服务模块发布属性状态值的变化值;
20.所述webhook服务模块,用于基于所述变化值更新属性值到内存队列;更新设备的属性值到redis数据库;
21.所述redis数据库,用于更新设备的属性值;向所述webhook服务模块返回更新结果;
22.所述property消费服务进程,用于当消息的生产速度大于所述webhook服务模块向所述redis数据库更新的速度时,开启至少一个property消费服务进程,每个property消费服务进程向所述webhook服务模块中取出属性值,并更新到redis数据库。
23.可选地,所述webhook服务模块,进一步用于:
24.当基于所述变化值更新属性值的消息进入内存队列时,如果所述内存队列已存在相同设备下同名属性的消息,则将要入的消息覆盖已存在的旧消息。
25.可选地,所述平台还用于:
26.当平台接收到移动端发送的设备状态查询消息时,所述平台直接获取所述 redis数据库内的设备状态,将所述设备状态发送至所述移动端。
27.可选地,所述property消费服务进程,进一步用于:
28.所述property消费服务进程向所述webhook服务模块发送属性值获取请求,所述webhook服务模块向所述property消费服务进程出列属性值,所述webhook 服务模块向所述redis数据库进行设备属性值的更新,所述redis数据库向所述 webhook服务模块发送更新结果。
29.可选地,所述redis数据库是使用redis扩展的json类型进行数据存储,存储的数据以物的id作为键、以物的属性名为json的object对象的属性名、以物的属性值作为json的object对象的属性值。
30.本发明实施例的上述技术方案至少具有如下有益效果:
31.通过智能家居业务管理平台实现基于webhook服务的智能设备状态信息持久化,将所有网关下的任意设备的所有属性状态值在变化之后,实时地存储在平台的redis服务中,以达到当移动端查询一个或多个设备状态时,能直接从平台的 redis服务直接获取设
备状态数据返回给移动端,从而减少移动端的数据查询等待时间,提高查询效率。
附图说明
32.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
33.图1是本发明实施例提供的一种基于webhook服务的智能设备状态信息持久化方法流程图;
34.图2是本发明实施例提供的一种智能家居业务管理平台的结构示意图。
具体实施方式
35.为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
36.本发明实施例提供了一种基于webhook服务的智能设备状态信息持久化方法,该方法可以应用于智能家居业务管理平台,该智能家居业务管理平台包括 emqx消息服务器、webhook服务模块、redis数据库以及至少一个property消费服务进程。如图1所示的基于webhook服务的智能设备状态信息持久化方法流程图,该方法的处理流程可以包括如下的步骤:
37.s1、当emqx消息服务器接收到属性状态值的变化指令时,emqx消息服务器向webhook服务模块发布属性状态值的变化值。
38.s2、webhook服务模块基于变化值更新属性值到内存队列。
39.其中,webhook服务是一个高性能的http服务,提供一个http接口用于接收emqx提交过来的设备状态数。
40.一种可行的实施方式中,由于保存数据到redis的速度低于接收数据的速度, webhook需要实现一份内存队列,用于保存接收到的数据,然后再从内存队列取出数据写入到redis中。
41.可选地,当基于变化值更新属性值的消息进入内存队列时,如果内存队列已存在相同设备下同名属性的消息,则将要入的消息覆盖已存在的旧消息。这样,可以只保留属性的最新状态值。
42.s3、webhook服务模块更新设备的属性值到redis数据库,redis数据库向 webhook服务模块返回更新结果。
43.一种可行的实施方式中,webhook服务模块内置一个设备属性消费者,无需进程交互就能从内存消息队列取出一条消息,然后直接写入redis。循环地从内存消息队列取出消息然后写入redis,每秒可完成消费10000条消息以上。
44.可选地,redis数据库是使用redis扩展的json类型进行数据存储,存储的数据以物的id作为键、以物的属性名为json的object对象的属性名、以物的属性值作为json的object对象的属性值,例如,温度为20摄氏度、模式为制冷的空调001,保存在redis的结构是:001

>{“temp”:20,“mode”:0}。
45.在数据更新时,可以进行局部更新,即当温度调整为21时,只需要更新001 下面的.temp属性值,不用整体先读取整箱数据修改再保存整个json值。对应的命令是:json.set.temp 21。
46.还可以进行多键获取:当想一次性获取空调001和空调002的所有的状态值时,传入001和002键名,就可以获取到2条json共4个属性值。对应的命令是json.mget 001 002。
47.json类型的数据存储可以通过jsonredis服务实现,该jsonredis是给redis 数据库安装了一个json数据类型支持的扩展模块的服务,此服务除了拥有redis 原生支持的数据类型之外,还支持json数据类型。
48.s4、当消息的生产速度大于webhook服务模块向redis数据库更新的速度时,开启至少一个property消费服务进程,每个property消费服务进程向webhook 服务模块中取出属性值,并更新到redis数据库。
49.一种可行的实施方式中,将属性值更新到redis数据库后,redis数据库返回更新结果,property消费服务进程可以弥补webhook服务内置消费者的消费能力不足,保证属性值及时地更新到redis中。
50.可选地,s4中的每个property消费服务进程向webhook服务模块中取出属性值,并更新到redis数据库,包括:
51.property消费服务进程向webhook服务模块发送属性值获取请求,webhook 服务模块向property消费服务进程出列属性值,webhook服务模块向redis数据库进行设备属性值的更新,redis数据库向webhook服务模块发送更新结果。
52.s5、当平台接收到移动端发送的设备状态查询消息时,平台直接获取redis 数据库内的设备状态,将设备状态发送至移动端。
53.本发明实施例中,通过智能家居业务管理平台实现基于webhook服务的智能设备状态信息持久化,将所有网关下的任意设备的所有属性状态值在变化之后,实时地存储在平台的redis服务中,以达到当移动端查询一个或多个设备状态时,能直接从平台的redis服务直接获取设备状态数据返回给移动端,从而减少移动端的数据查询等待时间,提高查询效率。
54.本发明实施例提供了一种智能家居业务管理平台,如图2所示为智能家居业务管理平台的结构示意图,所述智能家居业务管理平台用于实现一种基于 webhook服务的智能设备状态信息持久化方法,所述智能家居业务管理平台包括 emqx消息服务器、webhook服务模块、redis数据库以及至少一个property消费服务进程,其中:
55.所述emqx消息服务器,用于接收到属性状态值的变化指令时,向webhook服务模块发布属性状态值的变化值;
56.所述webhook服务模块,用于基于所述变化值更新属性值到内存队列;更新设备的属性值到redis数据库;
57.所述redis数据库,用于更新设备的属性值;向所述webhook服务模块返回更新结果;
58.所述property消费服务进程,用于当消息的生产速度大于所述webhook服务模块向所述redis数据库更新的速度时,开启至少一个property消费服务进程,每个property消费服务进程向所述webhook服务模块中取出属性值,并更新到redis数据库。
59.可选地,所述webhook服务模块,进一步用于:
60.当基于所述变化值更新属性值的消息进入内存队列时,如果所述内存队列已存在相同设备下同名属性的消息,则将要入的消息覆盖已存在的旧消息。
61.可选地,所述平台还用于:
62.当平台接收到移动端发送的设备状态查询消息时,所述平台直接获取所述 redis数据库内的设备状态,将所述设备状态发送至所述移动端。
63.可选地,所述property消费服务进程,进一步用于:
64.所述property消费服务进程向所述webhook服务模块发送属性值获取请求,所述webhook服务模块向所述property消费服务进程出列属性值,所述webhook 服务模块向所述redis数据库进行设备属性值的更新,所述redis数据库向所述 webhook服务模块发送更新结果。
65.可选地,所述redis数据库是使用redis扩展的json类型进行数据存储,存储的数据以物的id作为键、以物的属性名为json的object对象的属性名、以物的属性值作为json的object对象的属性值。
66.本发明实施例中,通过智能家居业务管理平台实现基于webhook服务的智能设备状态信息持久化,将所有网关下的任意设备的所有属性状态值在变化之后,实时地存储在平台的redis服务中,以达到当移动端查询一个或多个设备状态时,能直接从平台的redis服务直接获取设备状态数据返回给移动端,从而减少移动端的数据查询等待时间,提高查询效率。
67.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
68.以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献