【摘要】 华为云物联网平台提供的规则引擎包括数据转发和设备联动等多种能力,这些能力都要怎么使用?本文教您8招最常用的用法,带您玩转规则引擎。
规则引擎是华为云物联网平台提供的一种能力,用户对接入平台的设备设定相应的规则,在条件满足所设定的规则后,平台会触发相应的动作来满足用户需求。规则引擎包含数据转发和设备联动两种类型。
数据转发规则:物联网平台支持将设备上报的数据(和设备信息)转发至其他云服务,包括数据接入服务DIS、对象存储服务OBS、企业集成平台ROMA等,并支持对转发的数据进行过滤。
设备联动规则:设备联动规则是指当设备行为(即设备上报的数据中的某个值)或者系统时间满足了规则设定的条件时,就会触发规则设定的动作,如触发告警、发送消息和下发命令给设备。
面对规则引擎的这么多能力,我们该如何使用它们?接下来就让本文教你8招,带你玩转规则引擎。
对于设备上报的数据,设备接入服务只保存最新的数据,设备管理服务(创建应用时开启了存储数据能力)保存7天的历史数据。如果用户希望长期保存设备历史数据,就需要将设备上报的数据及时转发至其他地方保存。
此时,就轮到规则引擎出场了。数据转发规则支持将设备上报的数据转发至对象存储服务OBS,实现设备数据持久存储。OBS是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力,适用于对设备上报数据进行归档和备份存储。
在OBS中,基本的概念是桶和对象:桶是OBS中存储对象的容器,每个桶都有自己的存储类别、访问权限、所属区域等属性,用户在互联网上通过桶的访问域名来定位桶。对象是OBS中数据存储的基本单位,一个对象实际是一个文件的数据与其相关属性信息的集合体,包括Key(文件名称)、Metadata(元数据,由OBS自动生成)、Data(文件数据)三部分。
规则引擎转发设备上报数据到OBS时,每条数据都会作为一个对象被保存到用户创建的桶中。若需要用桶中读取数据,OBS也提供了控制台、SDK、API、客户端工具等多种方法,是不是很方便?
很多物联网企业都会自己开发物联网应用管理设备,那么,物联网应用如何从物联网平台实时获取设备上报的数据?华为物联网平台提供了两种方案。
方案一是使用设备管理服务的订阅推送功能。这个方案是由第三方应用调用物联网平台的接口进行订阅,然后设备上报数据后物联网平台主动推送至第三方应用。这个方案方便快捷,且支持推送的数据不止设备上报的数据,还包括设备注册通知、设备状态变化通知等;但这个方案也有一些局限性:第三方应用所在服务器必须绑定一个公网IP用于接收推送,物联网平台默认只提供较弱(10TPS)的推送能力,且不支持过滤数据。
方案二则是使用规则引擎,将设备上报数据转发到数据接入服务DIS,再由第三方应用从DIS获取数据。DIS为处理或分析流数据的第三方应用构建数据流管道,实现数据高效采集、传输、分发。
在DIS中,数据流管道被称为通道,是用户创建的逻辑单位,用以区分不同用户实时数据的集合。和使用OBS服务时同样,我们需要先创建一个通道,然后在物联网平台创建数据转发规则时指定该通道,设备上报的数据就会被物联网平台转发至该通道内。然后,第三方应用通过集成DIS的SDK或直接调用DIS的API,主动获取数据。创建规则时,我们还可以指定过滤条件,例如指定某个属性的值必须大于0才转发该条数据,提前过滤无效数据。
该方案虽然仅支持转发设备上报的数据(和设备信息),但无需公网IP,支持数据过滤,并可以根据数据流速创建不同规格的数据通道,整体灵活性更高。
有些时候,第三方应用因为性能或业务逻辑等问题,期望获取的是已经分析处理过的设备上报数据,而不是原始数据。对于这种诉求,我们仅需在第二招上稍微做些改动即可实现。
实时流计算服务CS,是运行在公有云上的实时流式大数据分析服务,全托管的方式用户无需感知计算集群,只需聚焦于Stream SQL业务,即时执行作业。CS支持DIS流式数据作为数据源和数据输出,所以我们需要建立两个DIS通道,一个通道作为CS的数据源,物联网平台将数据转发至该通道后就会被CS取出并处理;另一个通道作为CS的输出通道,CS会把分析处理完的数据输出到这个通道中,第三方应用再从该通道中获取分析后的数据即可。
物联网解决方案中,作为数据主体的“物”可能数量会非常大,产生的数据已经无法通过传统的数据处理服务进行处理,如何分析与利用这庞大的物联网设备数据对物联网企业来说又是一个新的挑战。为此,华为云提供了大数据分析服务(MapReduce服务 MRS)。MRS是一个在华为云上部署和管理Hadoop系统的服务,一键即可部署Hadoop集群。MRS提供租户完全可控的企业级大数据集群云服务,轻松运行Hadoop、Spark、HBase、Kafka、Storm等大数据组件,并具备在后续根据业务需要进行定制开发的能力。因此,我们仅需将数据转发至MRS,然后就可以看MRS大展身手了。于是,又轮到规则引擎出场了。数据转发规则虽然不支持将数据直接转发至MRS,但支持将数据转发至DIS,DIS再将数据转发至MRS。
在上一招中,我们将数据转发到DIS后,由第三方应用直接取出。而在这一招中,我们利用了DIS的另一个能力,转储任务。DIS支持将通道内的数据通过定时任务的方式转储至其他服务,其中就包括MRS。通过规则引擎和DIS,我们就可以将设备上报的数据全自动转发至MRS,由MRS进行大数据分析。
对一些企业来说,物联网设备上报的数据仅仅是他们业务数据的一部分,单纯的设备上报数据没有意义,他们需要将多种数据集成起来,才能发挥数据的真正价值。为了这样的企业,华为云提供了应用与数据集成平台 ROMA。ROMA是一个全栈式的应用与数据集成平台,源自华为数字化转型集成实践,聚焦应用和数据连接,适配多种企业常见的使用场景。ROMA提供轻量化消息、数据、API、设备等集成能力,简化企业上云,支持云上云下、跨区域集成,帮助企业实现数字化转型。物联网平台规则引擎支持将数据转发至ROMA的消息集成(Message Queue Service,简称MQS)组件,为企业提供安全、标准化的消息通道。
ROMA的MQS组件是基于kafka的消息中间件,所以物联网平台转发数据至ROMA,本质上来说也是讲数据转发到一个数据通道中,但ROMA作为集成平台,提供了多种应用和数据集成组件,完成数据的统一化和标准化,方便用户统一获取后进一步利用。
现在的很多设备都能做到自动化管理,例如照明灯根据环境光强自动开关,高发热量的设备根据自身温度自动关机等。这些自动化逻辑可以直接烧录到设备中,也可以通过云端设置和执行。若将逻辑直接烧录到设备中,优点是设备反应快,但缺点是需要每个设备单独烧录,而且如果逻辑有变化必须一个个设备重新烧录,非常难以管理。若将逻辑设置到云端,虽然设备的反应速度会有所降低,但逻辑只需云端维护,修改起来也非常方便,因此,我们建议对反应速度要求不是特别高的自动化逻辑都设置到云端。规则引擎中的设备联动服务提供图形化的操作界面,通过简单的操作即可实现设备的自动化逻辑,厂商无需再自行开发第三方应用。
以上文中的照明灯根据环境光强自动开关为例,我们可以设置两条规则,一条是当设备上报数据中的环境光强小于一个阈值(如50)时,物联网平台自动给设备下发开灯命令。另一条则是当设备上报数据中的环境光强大于一个阈值(如500)时,物联网平台自动给设备下发关灯命令。
通过这两条规则,我们可以实现当设备检测到的环境光强小于50时自动开灯,环境光强大于500时自动关灯,达到智能照明的目的。
物联网平台支持告警能力,设备触发告警条件后会在物联网平台上显示一条告警,用户查看告警可以得知告警级别,告警来源(指是哪个设备产生的告警),告警内容等,方便用户更快定位问题设备,及时解决问题。
而这个告警,也是通过设备联动规则产生的。设备联动规则支持设备上报的数据满足条件时,在物联网平台上显示一条告警,告警的信息(类型、级别、名称、内容)均可自定义。
通过这种方式,用户可以自定义业务所需的告警,实现设备异常及时定位,业务管理更高效。
很多物联网设备24小时运行,设备管理者并不需要知道设备每一刻的状态,只需要设备在上报某些特定状态时能通知到管理者。例如,当设备电量低时,自动发送邮件和短信通知管理员。这个功能我们同样可以使用设备联动规则实现,因为华为云物联网平台规则引擎对接了消息通知服务SMN。
消息通知服务SMN是可靠的、可扩展的、海量的消息处理服务。它可以依据用户的需求主动推送通知消息,最终用户可以通过短信、电子邮件、应用等方式接收。SMN的主题订阅模型,旨在提供一对多的消息订阅以及通知功能,能够实现一站式集成多种推送通知方式。在SMN中有两种类型的客户端,即发布者和订阅者。发布者通过主题发布消息,由SMN将消息推送给主题订阅者,订阅者可以为邮件地址、手机号码、消息队列、函数、函数工作流及URL地址。
因此通过我们仅需先在SMN上创建好主题,并使用手机号和邮箱订阅这个主题,物联网平台规则被触发后就会自动发布消息至主题,通过SMN服务给订阅的邮箱和手机发送邮件和短信了,实现无需值守,特殊情况直接通知到人。
学会以上8招,您就掌握了物联网平台规则引擎的使用方法。若您希望进一步了解规则引擎,请访问华为云设备管理帮助中心,我们提供了详尽的操作指导文档。
作者:华为云享专家 我是卤蛋