本申请涉及物联网技术领域,尤其涉及一种提供物联网服务的方法、设备、服务器及计算机可读存储介质。
背景技术:
在2g(第二代移动通信技术)、3g(第三代移动通信技术)、4g(第四代移动通信技术)、5g(第五代移动通信技术)、6g(第六代移动通信技术)或更下一代移动通信技术以及蓝牙、zigbee、wifi等短距离无线通信技术共同组成的网络环境下,无法保证网络通讯的持续连通和稳定通讯,必然会因位置移动、信号质量、自然环境等不可抗因素导致物联网(theinternetofthings,简称iot)终端出现高延迟、频繁断线上线、长期失联(离线)等情况。在共享经济相关产品以及商用电器如空调的监控等应用场景中通常需要面临多种网络通讯条件。
目前在物联网行业中处理通讯的链接机制还比较简单,大多为定时的上报数据或心跳,服务器下发配置或指令也多为直接下发,对于离线的设备大多是加入消息队列等待设备上线后消费或超时处理。
随着物联网相关技术的发展和应用场景的增加,我们面临的业务场景也变得愈发复杂,服务端与iot终端之间的通讯数据因种类繁多而变得越来越复杂,这导致因网络问题使得大量的功能变得难以控制或保持稳定,如果处理不及时则会导致相关业务整体的发展停摆,严重拖累企业的开发和运营。
尤其是,iot终端在与服务器通讯时存在如下技术问题:
通讯业务与系统业务存在严重的耦合,层次划分不清,通讯业务混在在其他系统业务中,导致存在侵入关系的业务面对需求时难以开发维护。通讯业务是与iot设备通讯的相关业务,需要直接与iot设备进行数据交互,例如从iot设备读取数据或向iot设备发送数据;系统业务为服务端处理的业务,尤其是涉及用户交互的业务。
由于通讯业务与系统业务的严重耦合,业务逻辑需要同时对系统业务和通讯业务进行管理和维护,所有iot设备的状态和配置的维护和获取需要大量的额外逻辑处理,分散且不易管理,容易出现逻辑漏洞和设计缺陷。
此外,导致长期失联设备的状态难维护、难管理,最终出现设备数据的碎片化(如同一组批次的设备配置不一致的问题),这种设备在后续的管理中很容易被遗漏,最终导致出现生产事故。
针对上述问题,目前尚未提出有效的解决方式。
技术实现要素:
有鉴于此,本申请提出一种提供物联网服务的方法、设备、服务器及计算机可读存储介质,通过为iot设备生成对应的设备影子,一方面将从iot设备接收的数据存储或更新到设备影子,另一方面在业务服务请求使用到iot设备的数据时从设备影子中读取iot设备对应的数据以供执行业务服务所用,可见,通过提供设备影子使得将通讯业务从系统业务中分离出来,系统业务不再直接参与与iot终端的通讯,转而由设备影子提供数据,影子服务专门负责与iot终端的通讯,降低了多种业务通过系统获取iot终端相关数据的耗时,进而有效改善交互体验和响应速度。
根据本申请的一个方面,提供一种提供物联网(iot)服务的方法,包括:
生成与iot设备对应的设备影子,将从所述iot设备接收的数据存储或更新到对应的所述设备影子;
当业务服务请求使用所述iot设备的数据时,从所述iot设备对应的所述设备影子中读取所述请求使用的数据,以用于执行所述业务服务。
进一步地,将从所述业务服务接收的与iot设备关联的数据存储或更新到对应的设备影子;
当iot设备请求自身关联数据时,从所述iot设备对应的设备影子中读取所述请求使用的数据,以供所述iot设备使用。
进一步地,当所述iot设备的数量为多个时,为每个iot设备生成对应的设备影子。
进一步地,将处于冷设备状态的iot设备的设备影子存放在冷数据区域,将处于热设备状态的iot设备的设备影子从冷数据区域加载到热数据区域或同时存放在冷数据区域和热数据区域;;
和/或,将从所述iot设备接收的数据,经过解码后,存储或更新到对应的所述设备影子;
和/或,
所述设备影子中存储的iot设备的数据包括设备唯一标识,通过所述设备唯一标识查找与iot设备对应的设备影子。
进一步地,所述冷数据区域具有长期存储能力,所述热数据区域具有快速读写能力;
和/或,
当检测到处于冷设备状态的iot设备接入时,将存储在所述冷数据区域中的与所述接入的iot设备对应的设备影子加载到所述热数据区域,并将所述接入的iot设备对应的设备影子中的至少部分数据返回给所述接入的处于冷设备状态的iot设备以进行数据同步;
和/或,
当检测到新iot设备接入时,在冷数据区域和热数据区域同时生成与所述新iot设备对应的设备影子;
和/或,
对所述设备影子进行查找时的查找顺序为:先从热数据区域中查找,再从冷数据区域中查找;
和/或,
响应于定期触发或者由用户主动触发,将所述热数据区域的设备影子更新或者写入所述冷数据区域;
和/或,
当检测到所述iot设备从热设备变为冷设备时,将在所述热数据区域中存储的所述iot设备对应的设备影子清除并保存到所述冷数据区域。
进一步地,定时扫描目标iot设备对应的设备影子的最新状态时间,如果所述最新状态时间超时,则判断为所述目标iot设备从热设备状态变为了冷设备状态。
进一步地,所述存储或更新到设备影子中的数据包括以下类型至少之一:基础数据、状态数据、配置数据和业务数据。
进一步地,所述状态数据,只允许被所述iot设备写入或者更新;
和/或,
所述配置数据,优先允许所述iot设备读写;
和/或,
所述状态数据、配置数据均包括如下四个主属性:数据类型、数据、更新时间和协议身份标识(id);
和/或,
所述设备影子被写入或更新时,由所述解析服务单元的实现决定以json数据或java对象实例还是二进制数据对所述设备影子进行存储。
进一步地,当检测到新的iot设备接入时,如果所述新的iot设备支持的协议未在服务器端预先定义,将所述数据类型标记为预定标记,并指定协议id为预定的值。
根据本申请的另一个方面,提供一种提供物联网iot服务的服务设备,包括:
影子服务单元、解析服务单元、业务服务单元和接入服务单元,
所述影子服务单元,用于生成与iot设备对应的设备影子,将通过所述接入服务单元从所述iot设备接收的数据存储或更新到对应的所述设备影子;
所述解析服务单元,用于当所述业务服务单元请求使用所述iot设备的数据时,调用所述影子服务单元从所述iot设备对应的所述设备影子中读取所述请求使用的数据,以供所述业务服务单元用于执行所述业务服务。
进一步地,所述影子服务单元还包括,将从所述业务服务接收的与iot设备关联的数据存储或更新到对应的设备影子;
当iot设备请求自身关联数据时,所述接入服务单元从所述iot设备对应的设备影子中读取所述请求使用的数据,以供所述iot设备使用。
进一步地,当所述iot设备的数量为多个时,所述设备影子与所述多个iot设备中的每个相对应。
进一步地,将处于冷设备状态的iot设备的设备影子存储或更新到冷数据区域,将处于热设备状态的iot设备的设备影子存储或更新到热数据区域,
和/或,将从所述iot设备接收的数据,经过解码后,存储或更新到对应的所述设备影子;
和/或,
所述设备影子中存储的iot设备的数据包括设备唯一标识,通过所述设备唯一标识查找与iot设备对应的设备影子。
进一步地,所述冷数据区域具有长期存储能力,所述热数据区域具有快速读写能力;
和/或,
当检测到处于冷设备状态的iot设备接入时,将存储在所述冷数据区域中的与所述接入的iot设备对应的设备影子加载到所述热数据区域,并将所述接入的iot设备对应的设备影子中的至少部分数据返回给所述接入的处于冷设备状态的iot设备以进行数据同步;
和/或,
当检测到新iot设备接入时,所述影子服务单元在冷数据区域和热数据区域同时生成与所述新iot设备对应的设备影子;
和/或,
对所述设备影子进行查找时的查找顺序为:先从热数据区域中查找,再从冷数据区域中查找;
和/或,
响应于定期触发或者由用户主动触发,所述影子服务单元将所述热数据区域的设备影子更新或者写入所述冷数据区域;
和/或,
当检测到所述iot设备从热设备变为冷设备时,所述影子服务单元将在所述热数据区域中存储的所述iot设备对应的设备影子清除并保存到所述冷数据区域。
进一步地,所述影子服务单元定时扫描目标iot设备对应的设备影子的最新状态时间,如果所述最新状态时间超时,则判断为所述目标iot设备从热设备状态变为了冷设备状态。
进一步地,所述存储或更新到设备影子中的数据包括以下类型至少之一:基础数据、状态数据、配置数据和业务数据。
进一步地,所述状态数据,只允许被对应的所述iot设备写入或者更新;
和/或,
所述配置数据,优先允许被对应的所述iot设备读写;
和/或,
所述状态数据、配置数据均包括如下四个主属性:数据类型、数据、更新时间和协议身份标识id;
和/或,
所述设备影子被写入或更新时,由所述解析服务单元的实现决定以json数据或java对象实例还是二进制数据对所述设备影子进行存储
进一步地,当检测到新的iot设备接入时,如果所述新的iot设备支持的协议未在服务器端预先定义,则将所述数据类型标记为预定标记,并指定协议id为预定的值。
根据本申请的又一个方面,提供了一种服务器,其特征在于,包括:一个或多个处理器;存储器;一个或多个程序,其中所述一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行上述的方法。
根据本申请的又一个方面,提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有程序代码,所述程序代码可被处理器调用执行上述的方法。
根据本申请提出的一种提供物联网服务的方法、设备、服务器及计算机可读存储介质,通过为iot设备生成对应的设备影子,一方面将从iot设备接收的数据存储或更新到设备影子,另一方面在业务服务请求使用到iot设备的数据时从设备影子中读取iot设备对应的数据以供执行业务服务所用,使得将与iot设备通讯的通讯业务从系统业务中分离出来,通讯业务与系统业务不再耦合,系统业务不再直接参与与iot设备的通讯,转而由设备影子提供数据,影子服务专门负责与iot设备的通讯,降低了多种业务通过系统获取iot设备相关数据的耗时,进而有效改善交互体验和响应速度。
此外,通过设备影子对iot设备的数据进行维护,有效的将每一个接入服务系统的iot终端设备的状态、配置以及业务数据等即时的保存到设备影子中,这样既保证了长期失联(离线)设备的状态、配置的可靠持久化,也能够避免设备配置的丢失和差异化(设备上线即可对设备影子中保存的设备配置进行同步下发,而不会因设备长期无法接收配置而直接丢弃配置数据),进而解决设备管理困难的问题。
进一步地,移动网络的通讯稳定性是不确定的,存在无法通讯、通讯延迟长、通讯时间长等可能的问题。通过在服务器系统端为iot设备生成对应的设备影子,实现了指令下发的异步处理,改变业务设计思路,业务系统的逻辑仅向下触及到影子服务调用为止,可将数据发送状态、数据响应状态等作为标记放入设备影子的业务数据中进行维护,使数据的通讯状态变得更加清晰,进而简化系统业务的设计开发成本,减少了系统处理异常频率,提高交付效率,提高可靠性。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,并可依照说明书的内容予以实施,以下以本申请的较佳实施例并配合附图详细说明如后。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1示出了本申请的一种物联网系统的一实施例的示意图;
图2示出了本申请的一种提供物联网iot服务的设备的一实施例的示意图;
图3示出了本申请的一种设备影子的一实施例的示意图;
图4示出了本申请的一种设备影子数据类型的一实施例的示意图;
图5示出了本申请的提供物联网服务的方法的一实施例的示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1示出了本申请的一种物联网系统的一实施例的示意图。
现有技术中,用户利用远程设备3如手机等电子产品,通过服务设备10的对iot设备2进行管理和控制。服务设备10提供物联网服务平台,通过业务服务直接与iot设备2进行数据交互,例如状态查询、配置读写等。例如,洗衣机下单并开机,空调机组的远程定时控制,这些操作即是通过服务设备的业务服务来完成。这样的交互设计方案,导致,通讯业务与系统业务存在严重的耦合,层次划分不清,通讯业务混在在其他系统业务中,导致存在侵入关系的业务面对需求时难以开发维护。此外,由于通讯业务与系统业务的严重耦合,业务逻辑需要同时对系统业务和通讯业务进行管理和维护,所有iot设备的状态和配置的维护和获取需要大量的额外逻辑处理,分散且不易管理,容易出现逻辑漏洞和设计缺陷。
如图所述,本申请提出了一个解决方案,在服务设备1中增加设备影子,通过设备影子作为中间模块,将通讯业务和系统业务进行了分离,iot设备与服务端的数据交互通过设备影子进行,业务服务与iot设备的数据之间的数据交互也通过设备影子进行,从而避免了系统业务直接参与与iot终端的通讯,降低了多种业务通过系统获取iot终端相关数据的耗时,进而有效改善交互体验和响应速度。
图2示出了本申请的一种提供物联网iot服务的设备的一实施例的示意图。
如图所示,所述服务设备1包括影子服务单元11、解析服务单元12、业务服务单元13和接入服务单元14。
接入服务单元14用于接入iot设备2,接收来自于iot设备2的连接请求和数据。
本申请所描述的iot设备可以为iot终端例如iot电器设备,但不限于此。同样,本申请的iot设备不限于具有2g、3g、4g、5g、6g或更下一代移动通信技术等网络的通讯模块(通讯模块与负载设备连接后可接入本申请的服务设备系统)或者为具备2g、3g、4g、5g、6g通讯能力的集成物联网终端(设备本身集成通讯功能单元),且并不局限于无线网络(通过internet等公共网络亦可)。
本申请中的网络数据通讯可以依托于tcp和/或udp传输层协议。在影子服务单元11、解析服务单元12、业务服务单元13之间的通讯方式不限于远程调用,也可以是通过消息队列传递消息,以提高因季节变化场景引发的短时间接入大量iot终端导致的服务异常。
影子服务单元11,用于生成与iot设备2对应的设备影子(未示出),将通过接入服务单元14从iot设备2接收的数据存储或更新到对应的设备影子。
解析服务单元12,用于当业务服务单元13请求使用iot设备2的数据时,调用影子服务单元11从设备影子中读取iot设备2对应的数据,以供业务服务单元13用于执行业务服务。
可选地,影子服务单元11还可以将从业务服务单元13接收的与iot设备关联的数据例如配置数据存储或更新到对应的设备影子中;当iot设备请求自身关联数据时,接入服务单元14从所述iot设备对应的设备影子中读取所述请求使用的数据,以供所述iot设备使用。
设备影子(deviceshadow)也被称为设备孪生(devicetwin)。作为一种实现方式,当iot设备2的数量为多个时,影子服务单元11为每个iot设备生成对应的设备影子,可选地,每个iot设备对应至少1个设备影子。例如,每个iot设备至少对应一个例如在数据库中的用于长期存储数据的设备影子,但还可以在其他位置如缓存中具有用于短期使用的设备影子。本申请中影子服务即对设备影子直接进行更新、创建、查询和删除等管理服务,系统内的其他服务包括通讯服务和业务服务均通过影子服务获取或更新设备影子中的数据,影子服务单元11提供上述影子服务,用于管理所有的设备影子。
作为一种实现方式,接入服务单元14从所述iot设备接收的数据,经过解析服务单元12解码后,由影子服务单元11存储或更新到对应的设备影子。对于任何连接到服务设备1端的iot设备2,都可以由解析服务单元12负责将数据进行解码并通过解码的数据尝试在影子服务单元11中更新或创建设备影子。
进一步地,iot设备可以划分为2类:冷设备和热设备。由于我们面临的iot设备例如iot电器设备如空调、供暖器等存在季节性或周期性的被启用或上电,即一年中长达半年以上的时间是完全离线的。也存在用于开发/测试机型在使用一段时间后即被永久闲置。也存在正常的长期在线设备。当iot设备在线或在一定时间内在线的设备称之为热设备,这个时间范围可以任意设定例如72小时。当iot设备超过一定时间未连接到服务端时,我们将之定义为冷设备。即同一iot设备,因其在线情况会存在冷设备或热设备之间的类型变化。
因此,作为一种实现方式,针对冷设备和热设备,本申请将冷设备的设备影子存放在冷数据区域,将处于热设备的设备影子从冷数据区域加载到热数据区域或同时存放在冷数据区域和热数据区域。可以理解的,本申请为每个iot设备都生成至少一个对应的设备影子,例如对任何iot设备都在冷数据区中生成对应的设备影子,当iot设备为冷设备时,将对应的设备影子存放在冷数据区域,而当iot设备接入变成热设备时,可将其对应的设备影子加载到热数据区域,此时冷数据区域中的设备影子可以删除,从而热设备的设备影子只唯一存在于热数据区域,当然,针对热设备,冷数据区域中的设备影子也可以继续保留,并定期更新冷数据区域中继续保留的设备影子,以保持与热数据区域中的设备影子尽可能同步,从而确保在系统发生意外时,即便热数据区域中的数据丢失了,设备影子因同时存放在冷数据区域而不会丢失。
热设备的设备影子可以被同时存储或更新到冷数据区域和热数据区域中,只是以更新热数据区域中的数据为主,以更新冷数据区域中的数据为辅。热设备的数据会定期和/或以及在变为冷设备时被更新到冷数据区域中。
图3示出了本申请的一种设备影子的一实施例的示意图。
如图所示,设备影子存储区域包括包括冷数据区域1111和热数据区域1112,其中,将处于冷设备状态的iot设备的设备影子存储或更新到冷数据区域,将处于热设备状态的iot设备的设备影子存储或更新到热数据区域,可选地,热设备的设备影子可以被同时存储或更新到冷数据区域和热数据区域中。
冷数据区域1111具有长期存储能力,用于长期存放处于冷设备状态的iot设备的数据,以便iot设备长期离线的情况下也能为其保存数据,进而在其重新上线时能够及时同步数据,以确保不会出现设备配置的版本差异,因此冷数据区域1111需要采用稳定可靠的保存方式,例如为数据库。数据库例如为mysql(关系型数据库)或mongodb(文档型数据库),不限于此。
热数据区域1112具有快速读写能力,用于存放处于热设备状态的iot设备的数据,需要的是是读写速度快,因此,热数据区域1112例如为缓存或内存型数据库。缓存可以为内存中的一部分存储区域,可以选择如redis(remotedictionaryserver,即远程字典服务)实例或redis集群实现,不限于此。
作为一种实现方式,当检测到处于冷设备状态的iot设备接入时,影子服务单元11将该接入的iot设备对应的存储在冷数据区域的设备影子加载到热数据区域(可以通过拷贝的方式吗,也可以通过剪切的方式,本申请中优选采用拷贝的方式,从而冷数据区中还继续保存该iot设备的设备影子),并将设备影子中的至少部分数据返回给该接入的iot设备以进行数据同步。
例如,当一个iot设备2在长期离线后突然连接到服务设备1,发送了登录信息,此时解析服务单元12尝试向影子服务单元11请求设备数据,影子服务单元11在设备影子中查找对应的设备影子,由于冷设备的设备影子被保存在冷数据区域中,影子服务单元11将在冷数据区域找到对应的设备影子,找到后,影子服务单元11将该设备影子从冷数据区域加载到热数据区域中,并返回该设备影子中至少部分数据例如被请求的状态和配置数据给解析服务单元12,解析服务单元12将该至少部分数据返回给该iot设备,以更新该iot设备的对应数据,达到数据同步。
可选地,至少部分数据包括状态和/或配置数据,以当检测到处于冷设备状态的iot设备接入时,由服务设备1端或者iot设备2端触发进行上述的数据同步,即进行该接入的iot设备的状态和配置数据的同步。
例如,当长期离线的iot设备上线后,可以由服务设备端主动进行状态和配置的同步动作,也可以由iot设备主动执行进行状态和配置的同步动作,由谁主动取决于iot设备的实现方式。
作为一种实现方式,当检测到新iot设备接入时,影子服务单元11在冷数据区域和热数据区域同时生成(即创建)与所述新iot设备对应的设备影子。
例如,当一个全新的iot设备注册到服务设备1端时,由解析服务单元12向影子服务单元11请求查找设备影子,此时自然无法查找到设备影子,那么解析服务单元12将调用影子服务单元11进行设备影子的创建,在创建时,同时在冷数据区域和热数据区域中创建对应的设备影子,从而保证在iot设备突然再次离线时,其设备影子因为保存在了冷数据区域中而不会丢失。当然不限于此,例如也可以只在热数据区域中创建对应的设备影子,以此减小服务设备中存储空间的开销。
可选地,对设备影子中存储的iot设备的数据进行查找时的查找顺序为:先从热数据区域中查找,再从冷数据区域中查找。也就说,影子服务单元首先会尝试从热数据区域如缓存中获取设备影子,如果没有查找到对应设备影子,会尝试从冷数据区域如数据库中获取设备影子,即先查询热设备数据,后查询冷设备数据。由此,可以加快热设备的接入速度。当然不限于此,也可以先从冷数据区域中查找,再从热数据区域中查找,以提高冷设备的接入速度。
此外,设备影子中存储的iot设备的数据可以包括设备唯一标识,影子服务单元11通过设备唯一标识在设备影子中查找对应的iot设备的数据。其中,设备唯一标识为由iot终端连接服务设备端时,服务设备端通过登录数据中携带的设备信息获取的如imei、产品id(identitydocument,身份标识)等。以此提高了查找效率和准确性。
作为一种实现方式,响应于定期触发或者由用户主动触发,影子服务单元11定期或被触发地将热数据区域的设备影子更新或者写入冷数据区域。以确保在最小开销的情况下使设备影子被相对及时的持久化。保证在iot设备突然再次离线时,其设备数据因为保存在了冷数据区域中而不会丢失。
作为一种实现方式,当检测到iot设备2从热设备变为冷设备时,影子服务单元11将在热数据区域中存储的该iot设备对应的设备影子清除并保存到冷数据区域。可选地,影子服务单元11定时扫描目标iot设备对应的设备影子的最新状态时间,如果最新状态时间超时,则判断为该目标iot设备从热设备状态变为了冷设备状态。
例如,当一个热设备在一段时间内一直未连接服务设备端,由服务设备端的定时扫描发现目标设备对应的设备影子的最新状态时间超时,此时将该热设备存储在对应的热数据区域中的设备影子保存到冷设备数据中(例如将缓存中的数据保存到数据库中),并清除对应的热热数据区域中的设备影子(例如缓存数据)。由此,将变为冷设备的设备数据转移到冷数据区域而在热数据区域不再保存,既保证了设备数据不丢失,又减小了系统存储空间的开销。
作为一种实现方式,设备影子可以使用json文档描述,用于存储设备上报状态和应用程序期望状态等信息。当然,也可以选择更加节省空间效率更高的二进制序列化方式,例如protobuf和msgpack对设备影子进行存储。
图4示出了本申请的一种设备影子数据类型的一实施例的示意图。
如图所示,设备影子中的数据包括以下类型至少之一:基础数据21、状态数据22、配置数据23和业务数据24。
基础数据21,是所有设备都具备的属性,且仅供系统执行维护。基础数据21包括但不限于:设备id、连接id(channelid)、最后通讯时间、接入服务实例id、在线状态、接入设备id、产品id、会话秘钥、标签(tags)等固定的内容。基础数据有助于通过它对设备样子进行快速检索。
状态数据22,状态数据由iot终端上报至系统,且对于业务服务仅具备只读权限,也就是说,只允许被对应的所述iot设备写入或者更新。
配置数据23,由业务服务产生并写入到设备影子中,由业务服务单元/影子服务单元通知解析服务单元对iot设备影子的配置数据进行同步。
状态数据22和配置数据23支持不同的数据类型如json、protobuf、msgpack以及纯粹二进制数据等,通过数据类型(type)和协议id(protocolid)区分。
对于状态数据22和配置数据23,均包含如下四个主属性:数据类型(type:json/bin等)、数据(data)、更新时间(time)和协议id(protocolid)。通过这种方式以使设备影子能够使用较少的数据空间以保存更多的数据,而不是只能使用json作为数据存储的格式,还可以使用如protobuf、msgpack以及纯粹二进制数据等格式,通过数据类型(type)和协议id(protocolid)予以区分。影子服务通过例如协议id对设备影子中的数据进行标记,以便于使用和解析,同时让设备影子具有更强的适配性。
当检测到新的iot设备接入时,如果所述新的iot设备支持的协议未在服务器端预先定义,则将所述数据类型标记为预定标记,并指定协议id为预定的值。
例如,如果遇到未知(未预先在系统内定义)的协议则数据类型标记为none并指定协议id为特定的特殊值。通过这种方式影子服务无需提前对设备影子模型进行定义,将解析、配置等动作根据服务系统对特定设备型号的业务需求独立出来,交由解析服务处理,增强服务系统对多种iot终端的可适配性。可在任意时刻在系统中对设备的协议信息进行维护更新操作(未进行定义时数据无法解析,但不影响对设备数据的保存),以增加对特定/新设备的数据协议和业务上的支持。
业务数据即business数据,表示通讯业务数据,通讯业务数据包含系统通讯业务数据以及传统业务数据两种,系统通讯业务用于与iot终端通讯过程中一些协议上的基础业务支持,即系统通讯业务产生或使用的数据(可以被其他业务服务按需读取)。例如通讯延迟、连接状态(连接/断开)、指令应答队列(每个控制有一个唯一指令id,较高要求的控指令需要在得到携带对应唯一指令id的控制应答才判定特定的控制指令是下发成功的)、信号强度(移动网络特有)等,不在此做更细致的描述。例如通讯延迟计算即为基础业务支持,当通讯协议支持设备延迟计算时,会存在一段时间的连续的通讯数据,由于此数据并不包含在设备影子的数据类型和配置类型中,而作为系统通讯业务中,通过对应的业务数据进行延迟计算的支持。对于传统业务其性质等价于缓存,如非必要,可不需要放在设备影子中管理,而由对应的业务服务自行通过缓存维护即可,从而避免存入太多的业务数据会导致设备影子占用大量资源、臃肿。
通过设备影子我们将iot设备的基础数据、状态数据、配置数据和业务数据在服务端进行了可靠的维护,通过对相关数据的读写控制以确保iot终端与设备影子之间的同步机制可靠性。对于状态数据,只允许iot终端写入(或更新),对于配置数据,相对于业务服务,优先允许iot终端同步(进行读写),即例如如果设备影子中的配置与iot设备上的配置不同,优先将设备影子中的配置写入到iot设备。通过这种方式我们能够允许iot终端在网络不稳定以及长期离线的情况下,无视服务端业务体系的复杂性,以确保不会出现设备配置的版本差异(整体一致性,一旦设备连接服务端配置能够立即被同步至设定状态而不会丢失)。
可选的,所述设备影子被写入或更新时,由所述解析服务单元的实现决定以json数据或java对象实例还是二进制数据对所述设备影子进行存储。我们的设备影子在读写状态和配置时,由解析服务的实现决定以json数据或java对象实例还是原始的二进制数据存储解析后的数据。由此,对于接入的未定义(无法识别)的设备的数据可以使用默认的协议id(专用于表示未知设备协议)进行标记,后期可对这些数据进行修改实现正确的解析和支持,从而所有接入系统的iot终端均无需定义设备影子即可接入本申请的服务设备或服务系统,本申请中的设备影子通过预先对iot终端的数据协议进行定义和录入实现对不同类型设备数据的接入、解析和业务支持。
本申请还包括对应上述服务设备的一种提供物联网服务的方法,如图5示出了本申请的提供物联网服务的方法的一实施例的示意图。
步骤s1,生成与iot设备对应的设备影子,将从所述iot设备接收的数据存储或更新到对应的所述设备影子。
步骤s2,当业务服务请求使用所述iot设备的数据时,从所述iot设备对应的所述设备影子中读取所述请求使用的数据,以用于执行所述业务服务。
由于本实施例的方法所实现的处理及功能基本相应于前述设备的实施例、原理和实例,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。
本申请还包括一种服务器,包括至少一个处理器,以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令执行本发明实施例所述的物联网服务的方法。
基于同一发明构思,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行本发明实施例上述物联网服务的方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
1.一种提供物联网(iot)服务的方法,其特征在于,包括:
生成与iot设备对应的设备影子,将从所述iot设备接收的数据存储或更新到对应的所述设备影子;
当业务服务请求使用所述iot设备的数据时,从所述iot设备对应的所述设备影子中读取所述请求使用的数据,以用于执行所述业务服务。
2.如权利要求1所述的方法,其特征在于,还包括:
将从所述业务服务接收的与iot设备关联的数据存储或更新到对应的设备影子;
当iot设备请求自身关联数据时,从所述iot设备对应的设备影子中读取所述请求使用的数据,以供所述iot设备使用。
3.如权利要求1所述的方法,其特征在于:
当所述iot设备的数量为多个时,为每个iot设备生成对应的设备影子。
4.如权利要求1-3任一所述的方法,其特征在于:
将处于冷设备状态的iot设备的设备影子存放在冷数据区域,将处于热设备状态的iot设备的设备影子从冷数据区域加载到热数据区域或同时存放在冷数据区域和热数据区域;;
和/或,将从所述iot设备接收的数据,经过解码后,存储或更新到对应的所述设备影子;
和/或,
所述设备影子中存储的iot设备的数据包括设备唯一标识,通过所述设备唯一标识查找与iot设备对应的设备影子。
5.如权利要求4所述的方法,其特征在于:
所述冷数据区域具有长期存储能力,所述热数据区域具有快速读写能力;
和/或,
当检测到处于冷设备状态的iot设备接入时,将存储在所述冷数据区域中的与所述接入的iot设备对应的设备影子加载到所述热数据区域,并将所述接入的iot设备对应的设备影子中的至少部分数据返回给所述接入的处于冷设备状态的iot设备以进行数据同步;
和/或,
当检测到新iot设备接入时,在冷数据区域和热数据区域同时生成与所述新iot设备对应的设备影子;
和/或,
对所述设备影子进行查找时的查找顺序为:先从热数据区域中查找,再从冷数据区域中查找;
和/或,
响应于定期触发或者由用户主动触发,将所述热数据区域的设备影子更新或者写入所述冷数据区域;
和/或,
当检测到所述iot设备从热设备变为冷设备时,将在所述热数据区域中存储的所述iot设备对应的设备影子清除并保存到所述冷数据区域。
6.如权利要求5所述的方法,其特征在于:
定时扫描目标iot设备对应的设备影子的最新状态时间,如果所述最新状态时间超时,则判断为所述目标iot设备从热设备状态变为了冷设备状态。
7.如权利要求1-3任一所述的方法,其特征在于:
所述存储或更新到设备影子中的数据包括以下类型至少之一:基础数据、状态数据、配置数据和业务数据。
8.如权利要求7所述的方法,其特征在于:
所述状态数据,只允许被所述iot设备写入或者更新;
和/或,
所述配置数据,优先允许所述iot设备读写;
和/或,
所述状态数据、配置数据均包括如下四个主属性:数据类型、数据、更新时间和协议身份标识(id);
和/或,
所述设备影子被写入或更新时,由所述解析服务单元的实现决定以json数据或java对象实例还是二进制数据对所述设备影子进行存储。
9.如权利要求8所述的方法,其特征在于:
当检测到新的iot设备接入时,如果所述新的iot设备支持的协议未在服务器端预先定义,将所述数据类型标记为预定标记,并指定协议id为预定的值。
10.一种提供物联网iot服务的服务设备,其特征在于,包括:
影子服务单元、解析服务单元、业务服务单元和接入服务单元,
所述影子服务单元,用于生成与iot设备对应的设备影子,将通过所述接入服务单元从所述iot设备接收的数据存储或更新到对应的所述设备影子;
所述解析服务单元,用于当所述业务服务单元请求使用所述iot设备的数据时,调用所述影子服务单元从所述iot设备对应的所述设备影子中读取所述请求使用的数据,以供所述业务服务单元用于执行所述业务服务。
11.如权利要求10所述的设备,其特征在于:
所述影子服务单元还包括,将从所述业务服务接收的与iot设备关联的数据存储或更新到对应的设备影子;
当iot设备请求自身关联数据时,所述接入服务单元从所述iot设备对应的设备影子中读取所述请求使用的数据,以供所述iot设备使用。
12.如权利要求10所述的设备,其特征在于:
当所述iot设备的数量为多个时,所述设备影子与所述多个iot设备中的每个相对应。
13.如权利要求10-12任一所述的设备,其特征在于:
将处于冷设备状态的iot设备的设备影子存储或更新到冷数据区域,将处于热设备状态的iot设备的设备影子存储或更新到热数据区域,
和/或,将从所述iot设备接收的数据,经过解码后,存储或更新到对应的所述设备影子;
和/或,
所述设备影子中存储的iot设备的数据包括设备唯一标识,通过所述设备唯一标识查找与iot设备对应的设备影子。
14.如权利要求13所述的设备,其特征在于:
所述冷数据区域具有长期存储能力,所述热数据区域具有快速读写能力;
和/或,
当检测到处于冷设备状态的iot设备接入时,将存储在所述冷数据区域中的与所述接入的iot设备对应的设备影子加载到所述热数据区域,并将所述接入的iot设备对应的设备影子中的至少部分数据返回给所述接入的处于冷设备状态的iot设备以进行数据同步;
和/或,
当检测到新iot设备接入时,所述影子服务单元在冷数据区域和热数据区域同时生成与所述新iot设备对应的设备影子;
和/或,
对所述设备影子进行查找时的查找顺序为:先从热数据区域中查找,再从冷数据区域中查找;
和/或,
响应于定期触发或者由用户主动触发,所述影子服务单元将所述热数据区域的设备影子更新或者写入所述冷数据区域;
和/或,
当检测到所述iot设备从热设备变为冷设备时,所述影子服务单元将在所述热数据区域中存储的所述iot设备对应的设备影子清除并保存到所述冷数据区域。
15.如权利要求14所述的设备,其特征在于:
所述影子服务单元定时扫描目标iot设备对应的设备影子的最新状态时间,如果所述最新状态时间超时,则判断为所述目标iot设备从热设备状态变为了冷设备状态。
16.如权利要求10-12任一所述的设备,其特征在于:
所述存储或更新到设备影子中的数据包括以下类型至少之一:基础数据、状态数据、配置数据和业务数据。
17.如权利要求16所述的设备,其特征在于:
所述状态数据,只允许被对应的所述iot设备写入或者更新;
和/或,
所述配置数据,优先允许被对应的所述iot设备读写;
和/或,
所述状态数据、配置数据均包括如下四个主属性:数据类型、数据、更新时间和协议身份标识id;
和/或,
所述设备影子被写入或更新时,由所述解析服务单元的实现决定以json数据或java对象实例还是二进制数据对所述设备影子进行存储。
18.如权利要求17所述的设备,其特征在于:
当检测到新的iot设备接入时,如果所述新的iot设备支持的协议未在服务器端预先定义,则将所述数据类型标记为预定标记,并指定协议id为预定的值。
19.一种服务器,其特征在于,包括:一个或多个处理器;存储器;一个或多个程序,其中所述一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如权利要求1-9中任意一项所述的方法。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有程序代码,所述程序代码可被处理器调用执行如权利要求1-9中任意一项所述的方法。
技术总结