一种主动物联网设备的状态实时更新方法及装置
文献发布时间:2023-06-19 18:27:32
技术领域
本发明涉及物联网技术领域,具体涉及一种主动物联网设备的状态实时更新方法及装置。
背景技术
物联网设备是非标准计算设备,可无线连接到网络并具有传输数据的能力。其通过物联网和网络技术帮助区域实现预期功能(例如环境监测,安全监测,事件检测,高清监控等),带动服务升级。而能否做好物联网设备的管理和维护是能否实现上述功能的必要条件,其中设备的在离线状态是主要影响因素。根据调研,传统物联设备状态更新方法大多基于物联网设备的一条日志直接判断该设备在在一段时间内是否在线,即根据收到该设备的日志时间加上一个固定时间段。在这个固定时间段内设备一直为在线状态,超过这个时间段为离线状态,即根据系统配置为物联网设备设置固定的状态更新频率,在查询时,若发现超过状态更新频率没有物联设备上报的日志数据,则将物联设备判定为离线状态,然后在实际使用过程中,物联网由于自身电池电量的衰减或波动,及其他环境因素影响(高温,高压),导致状态更新频率发生变化,从而导致服务器接收物联设备上报的日志数据的最新事件与状态更新频率出现偏差,从而导致系统误判物联设备的状态,不利于物联设备的管理与维护。
发明内容
本发明的目的在于提供一种主动物联网设备的状态实时更新方法及装置,通过区分计算物联设备类型,及周期性计算平均上报频率θ,历史最大上报频率maxΔT和上报频率的标准差σ,实时更新其状态的算法,真实的反应设备的状态,方便物联网设备的管理和维护。
一种主动物联网设备的状态实时更新方法,具体包括以下步骤:
S1、不间断地接收物联设备上报的日志数据;
S2、根据所述日志数据,判断所述物联设备所属的类型,所述类型包括:主动设备、被动设备;
S3、若所述物联设备属于主动设备时,提取日志数据的最新上报时间,并计算获得平均上报率θ;
S4、根据所述最新上报时间与平均上报率θ实时计算更新在线失效时间;
S5、接收当前查询指令,提取当前查询指令的时间,根据所述当前查询指令的时间与所述在线失效时间,判断所述主动设备的状态。
进一步地,所述步骤S2具体包括以下步骤:
根据物联设备上报的历史日志数据计算历史上报频率;
根据历史上报频率,分别计算平均上报率θ、标准差σ,并根据所述平均上报率θ、标准差σ计算标准差系数Vσ,其中Vσ=σ/θ;
根据所述平均上报率θ或标准差系数Vσ,判断所述物联设备所属的类型;
当所述平均上报频率θ大于阈值μ或标准差系数Vσ大于阈值ε时,则判断该设备为主动设备。
进一步地,所述平均上报率θ,具体通过以下步骤得到:
根据移动平均法更新历史上报频率ΔT;
根据更新后的历史上报频率ΔT进行均值处理,计算物联设备的平均上报频率θ以及标准差σ。
进一步地,所述历史上报频率ΔT,具体通过以下步骤得到:
对物联设备的历史日志数据按照时间从大到小进行排序;
排序后,计算物联设备的相邻的两条日志数据之间的时间差值,所处时间差值为历史上报频率ΔT,其中,最大值为物联设备的最大历史上报频率maxΔT。
进一步地,所述移动平均法,具体包括以下步骤:
遍历排序后历史日志数据,取当前遍历历史日志数据以及前β条历史日志数据,计算β+1个历史上报频率ΔT的均值更新当前遍历历史日志数据的历史上报频率ΔT。
进一步地,所述判断主动物联网设备的状态,具体包括以下步骤:
若所述在线失效时间为默认值,则判断所述主动设备为未激活状态;
若当前查询指令的时间小于所述在线失效时间,则判断所述主动设备为在线状态;
若当前查询指令的时间大于所述在线失效时间,则判断所述主动设备为离线状态。
进一步地,所述在线失效时间=最新上报时间+平均上报率θ*3。
进一步地,通过消息中间件Kafka获取物联设备的基础信息,并写入设备基础信息表sensor_all_info,所述基础信息包括物联设备的上报频率、物联设备类型信息;
通过消息中间件Kafka获取物联设备上报的日志数据
通过消息中间件Kafka获取日志数据的上报时间,并写入上报时刻表sensor_status;
通过物联设备的唯一产品编码data_code和设备编码sensor_id,将上报时间与设备基础信息表(sensor_all_info)、计算出来的频率信息进行匹配,所述频率信息包括历史最大上报频率maxΔT、平均上报频率θ以及物联设备类型,并将更新的在线失效时间写入设备基础信息表(sensor_all_info)。
一种主动物联网设备的状态实时更新装置,包括:
一个或多个处理器;
存储单元,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,能使得所述一个或多个处理器实现所述的一种主动物联网设备的状态实时更新方法。
本发明具有的有益效果:
通过物联设备接收上传日志数据,区分物联设备类型,并计算确定对应的物联设备的平均上报率θ;向目标物联设备查询请求,以使目标物联设备反馈自身的设备身份信息;根据设备身份信息获取日志数据的最新上报时间,以使云端据此最新上报时间;若当前查询指令的时间小于所述在线失效时间,则判断所述主动物联设备为在线状态。本发明兼容传统的物联设备接入方式,即通过外网接入云端的基础上,还将物联设备直接与手机、电脑等物联设备连接,物联设备分别通过消息中间件与云端进行信息交互,可实现对物联设备的状态实时更新。本发明通过物联设备实现与云端和设备端之间的交互,在兼容如今主流的物联设备接入方式的基础上,还能支持物联设备的绑定和一系列交互服务,从而让物联网建设更加灵活,不仅可以满足不同地区、产业的物联网控制需要,还能节约建设和维护成本。
通过本发明方法获取设备在线失效时间,既可以灵活有效的计算出设备实时在线失效时间,又可以避免瞬时大功率、满电浮充时间长短等一系列问题对在线失效时间的影响,满足各种环境下物联设备对管理维护的要求。更加实现了物联设备远程实时状态更新、调配参数,大大减少了时间成本和人力成本,解决因时间、地域差导致的时效性问题,让物联设备运维及现场调试更简单便捷。
附图说明
图1为本发明的状态实时更新方法流程示意图;
图2为本发明的架构中的数据示意图;
图3为本发明的计算平均上报率方法流程示意图;
图4为本发明的状态实时更新系统示意图;
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
另外,为了清楚和简洁起见,可能省略了对公知的结构、功能和配置的描述。本领域普通技术人员将认识到,在不脱离本公开的精神和范围的情况下,可以对本文描述的示例进行各种改变和修改。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
实施例1
物联日志数据的采集由物联设备自动采集并上传物联网云平台,无需人工参与,采集的日志数据具备以下的主要特征:
1.数据自动化持续性收集,
在很多行业监测领域应用的物联设备存在高频率、不间断的持续采集指标数据特点。如环保监测设备每30秒采集一组监测指标上传云端;
2.设备采集数据量增长快,
物联设备高频率采集数据导致数据增长量很快,如单个设备每30秒采集一组6个监测指标上传,每日单个设备采集数据量可达到17280条;
3.数据具备时序性,
物联感知自动化采集数据非人工填报,具备时序性特征,即每个采集的指标数据均有采集时间点,且数据采集先后顺序明确。
一、物联网设备的特点
物联网设备都具有传输数据的能力,根据传输数据的时间间隔,目前大多数的物联网设备可以被分类为主动设备和被动设备。
主动设备是无论外界情况如何,保持一定的时间间隔传输数据(例如温度传感器),具有持续性,规律性。
被动设备是检测到外界的某个事件发生才传输数据(例如火灾报警器),具有偶然性,一次性。
针对上述特性将在算法构建中精确定量定义主动设备和被动设备,然后再分别判断设备的实时状态。
二、物联网设备状态实时更新算法优点
根据调研,传统物联设备状态更新方法大多基于物联网设备的一条日志直接判断该设备在在一段时间内是否在线,即根据收到该设备的日志时间加上一个固定时间段。在这个固定时间段内设备一直为在线状态,超过这个时间段为离线状态。而本文档提出的算法相较于传统方法有以下优点:
根据物联网场景需求,定义设备状态,以便准确描述设备的状态。
将物联网设备分为主动设备和被动设备,提高对设备类型的实时状态判断精确度。
利用消息中间件Kafka可以满足实时更新。
基于场景特点,包含对特殊情况的处理(系统刚启用时,数据量不够容易对设备类型造成误判),提高对设备类型的实时状态判断精确度。系统运行一段时间后,能够自动修正设备类型和状态。
三、算法实现方式
在说明算法之前需要定义以下内容:
历史上报频率ΔT:物联网设备相邻两次传输数据的时间间隔(单位秒)。
平均上报频率θ:根据上报频率采用移动平均法计算(单位秒)。
未激活:设备没有上报过任何日志。
主动设备:有固定的平均上报频率。
被动设备:没有固定的平均上报频率(非主动设备即为被动设备)。
历史最大上报频率maxΔT:该设备最大的上报频率ΔT。
标准差系数Vσ:平均上报频率的标准差与均值的商。
被动设备在线失效时间(expired_time):日志最新上报时间+历史最大上报频率maxΔT。
主动设备在线失效时间(expired_time):日志最新上报时间+平均上报频率θ*3。
物联网设备状态实时更新算法实现步骤:
1、周期性的根据设备上报日志数据计算历史上报频率。
2、计算设备的平均上报频率θ,历史最大上报频率maxΔT和上报频率的标准差σ。
3、根据第2步结果判断设备类型。
4、根据第2步和第3步结合日志最新上报时间,实时计算各种类型设备的在线失效时间。
5、根据第3步和第4步结果实时判断设备状态。
四、算法具体细节
设备状态实时更新算法按照以上的5个步骤进行,下面依次对每个步骤的具体实现做出描述。
1、计算历史上报频率
根据设备上报的日志数据(包括确定设备唯一性的信息,和历史上报日志时刻)计算其历史上报频率ΔT。
对每个设备的数据按照历史上报日志时刻从大到小排序。
为了提升计算效率,排除历史数据的影响,筛选距离当前时刻最近的α条数据,其中α可以根据计算环境和场景需求自行调整,默认α=4096。
计算每个设备的相邻的两条日志上报时间差值,为历史上报频率ΔT。
2、计算平均上报频率和历史最大上报频率
根据设备的历史上报频率ΔT,计算设备的历史最大上报频率,然后采用移动平均法更新ΔT后,对该设备再求均值得到平均上报率θ以及更新后ΔT的标准差σ。
求得每个设备的历史最大上报频率maxΔT。
移动平均法的实现:对排序后数据,取从当前行至前β条数据,计算其ΔT的均值作为当前行数据的ΔT。默认β=128,使用移动平均法可以消除周期变动和随机波动的影响。
对更新后的ΔT,采用avg函数计算每个设备的平均上报频率θ。计算上报频率的标准差σ。
3、判断设备类型
根据2计算出来的结果,判断设备的类型。
计算标准差系数Vσ=σ/θ。
判断设备是否为主动设备:如果该设备的平均上报频率θ小于阈值μ或者标准差系数Vσ小于阈值ε,则判断该设备为主动设备,记为0。标准差系数能够反应数据的稳定性,在此场景可以代表设备是否有基本固定的上报频率,其中Vσ越小越稳定,默认阈值ε=0.5。θ小于阈值μ代表设备有较高的上报频率,默认阈值μ=1day。以上两个阈值可以根据场景需求更改。
不满足主动设备条件的设备,定义为被动设备,记为1。
并根据历史日志定时更新θ,maxΔT和设备类型,更新间隔为γ,默认γ=30min
4、计算设备的在线失效时间
根据2和3的结果,结合消息中间件Kafka的日志信息,实时更新设备的在线失效时间(expired_time)。
新设备基础数据上报后,在线失效时间初始化为1970-01-01 08:00:00。
设备一旦上报日志后,用Kafka中的日志信息的上报时间(latest_time)并与clickhouse库中的设备基础信息(sensor_all_info)和计算出来的频率信息(sensor_ifonline)进行匹配,并更新在线设备的在线失效时间写入设备基础信息表(sensor_all_info),从而可以实现实时更新的功能。
被动设备的在线失效时间:日志最新上报时间+历史最大上报频率maxΔT。
主动设备在线失效时间:日志最新上报时间+平均上报频率θ*3。
5、判断设备的实时状态
根据3和4的结果,在查询时实时判断设备的状态。
在线失效时间(expired_time)为1970-01-01 00:00:00的设备状态为:未激活。
查询时间小于等于设备在线失效时间,则设备为在线状态;查询时间大于设备在线失效时间,设备为离线状态。
五、架构和流程
设备基础信息从Kafka的topic(iot_device_info)中获取,解析后写入表sensor_all_info,写入过程中某些字段(设备的上报频率、设备类型信息等)设置默认值。
设备历史日志上报时刻从表sensor_status中获取,预处理后得到历史最大上报频率maxΔT,平均上报频率θ以及设备类型写入表sensor_ifonline中。
sensor_ifonline与sensor_all_info关联,填充设备的上报频率、设备类型等信息,保存在内存中(sensor_all_info_tp),结构与sensor_all_info保持一致。
通过Kafka的topic(iot_device_log_*)获取设备实时上报的日志,通过设备的唯一信息(产品编码data_code和设备编码sensor_id)和sensor_all_info_tp进行关联,利用日志的上报时间(latest_time),从而实现实时更新设备在线失效时间(expired_time)。得到的数据保存在内存中(sensor_all_info_e),结构与sensor_all_info保持一致。
将sensor_all_info_e写入sensor_all_info中。
图2中,各个节点的含义:
sensor_status:物联网设备的历史日志上报时刻。
sensor_ifonline:通过sql语句计算每个设备的历史最大上报频率maxΔT,平均上报频率θ以及设备类型,存储在Clickhouse。
iot_device_log_*:物联网设备上报的日志topic,json格式,存储在kafka。
sensor_all_info:物联网设备的所有基础信息和状态信息
六、流程
下面给出设备状态实时更新算法流程。
实施例2
一种主动物联网设备的状态实时更新装置,其特征在于,包括:
一个或多个处理器;
存储单元,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,能使得所述一个或多个处理器实现所述的一种主动物联网设备的状态实时更新方法。
实施例3
一种状态实时更新系统,包括:
一个或多个物联网设备,物联设备通过路由器分别与消息中间件进行数据交互,云端服务器通过订阅消息中间件的内容获得物联设备上传的日志数据。
实施例4,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时能实现所述的一种主动物联网设备的状态实时更新方法。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,依据本发明的技术实质,在本发明的精神和原则之内,对以上实施例所作的任何简单的修改、等同替换与改进等,均仍属于本发明技术方案的保护范围之内。
- 一种系统状态的检测方法、装置、设备及存储介质
- 一种硬盘状态显示方法、装置及设备
- 一种确定区域运力状态的方法及装置、电子设备
- 一种磁盘状态检测方法、装置、设备及存储介质
- 一种便携式设备及其佩戴状态检测方法和装置
- 一种被动物联网设备的状态实时更新方法及装置
- 一种设备主动注册物联网平台的方法、装置、设备及介质