如何通过7个简单步骤构建智能物联网网关

现在我们将着手构建智能物联网网关。我们将使用 Ansible 来自动化网关配置,因为它也可用于配置管理和应用程序部署。一旦您准备好在生产环境中配置和部署数千个网关,就可以同样地使用这个 Ansible 工具(一个简单的自动化IT工具)。

网关的主要组件是:

  • Red Hat Enterprise Linux:提供企业级基础。
  • Red Hat JBoss A-MQ(消息队列产品):调处传感器数据。
  • Red Hat JBoss Fuse(企业服务总线):转换传感器数据并将其发送到端点。
  • Red Hat JBoss BRMS(业务规则管理系统):实现边缘的实时决策。

一旦网关配置完毕,我们将通过启动 Red Hat JBoss Fuse 并构建及部署路由和业务规则服务来付诸实践。然后我们启动一个传感器应用程序,它使用 MQTT 将温度数据发送到 Red Hat JBoss A-MQ 中间件。这些消息将被转发到我们之前开启的服务。最后,我们将创建业务规则以在传感器值达到阈值时触发所期望的动作。

注意:在开始之前,您需要确保在网关的 Downloads 文件夹中有 Red Hat JBoss Fuse 6.2.1 。您可以从 Red Hat Customer Portal 下载它。在 Red Hat Developer Program 中也免费提供红帽产品。

步骤 1:用 Ansible 准备主机系统

在主机上 clone 项目仓库。

  • 打开终端并输入以下命令:
[user@localhost ~]$ git clone -b Virtual-Lab-1-Host https://github.com/RedHat-IoT/Virtual_IoT_Gateway.git
  • 使用网关的 IP 地址更新主机文件 [Virtual-IoT-Gateway/Ansible/host] ,并将主机的公钥放在远程网关上(Ansible 使用 ssh 与远程系统通信)。你可以在这里学习如何设置 Ansible 。
  • 为您网关的用户名更新 Ansible playbook BuildGW 文件 [Virtual-IoT-Gateway/Ansible/BuildGW]: set_fact:user='user name'
  • 通过输入以下命令来启动 Ansible playbook:
[user@localhost ~]$ cd Virtual_IoT_Gateway/Ansible
[user@localhost ~]$ ansible-playbook BuildGW

让 Ansible 运行 playbook 中的任务。待 Ansible 完毕后,我们就可以准备直接在网关上开始工作。

第2步:登录到网关

注意:就我的网关而言,我使用了 username = 'demo-user' 和 password = 'change12_me' 的配置。

第3步:启动 Red Hat JBoss Fuse 服务

  • 打开一个新的 shell 并输入以下命令:
[demo-user@localhost ~]$ cd
[demo-user@localhost ~]$ cd IoT_Summit_Lab
[demo-user@iotlab IoT_Summit_Lab]$ ./runJBossFuse.sh
  • 等待 Red Hat JBoss Fuse 服务完成启动过程。

Red Hat JBoss Fuse 需要安装 'camel-mqtt' OSGi(Open Service Gateway Initiative,开放服务网关倡议)功能来处理 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输) 消息。

  • 在 'JBossFuse' 命令提示符处输入以下简单的命令:
JBossFuse:karaf@root> features:install camel-mqtt
  • 最小化此 shell 以保持 Fuse 服务在后台运行。

第4步:构建和部署 Camel 路由

传感器数据将通过本项目提供的 Camel 路由进行转换和发送。现在我们需要构建 Red Hat JBoss Fuse 项目并将其部署到我们正在运行的 Fuse 服务上。我们将使用有现成提供的脚本来构建和部署项目。

  • 在终端中,执行以下命令:
[demo-user@iotlab Software_Sensor]$ cd
[demo-user@iotlab ~]$ cd IoT_Summit_Lab/
[demo-user@iotlab IoT_Summit_Lab]$ ./runRoutingService.sh

我们可以通过登录到 JBOSS Fuse 管理控制台来验证 Camel 路由已经部署好(请参阅详细信息)。

第5步:创建业务规则

智能物联网网关的其中一个重要功能是在传感器数据满足业务规则所定义的某些条件时触发动作。在本节中,我们将学习如何创建业务规则服务。该服务将按以下方式工作:

  1. 从消息队列中读取传感器数据。
  2. 传感器数据被移交给规则执行引擎,该规则执行引擎根据每个定义的规则触发动作。
  3. 更改后的数据被放入另一个定义的消息队列中。

我们将使用 MS Excel 决策表来定义业务规则。下图(原文如此,无图)显示了一个每一行代表一个规则的决策表的示例。蓝色的列是“条件”,黄色的列则是“动作”。

规则的语法很简单:如果 一些条件,那么 一些动作。

该规则系统能够从电子表格中读取并按照上述语法将其编译为规则。在本实验中,提供了一个示例的业务规则电子表格,可用于创建新规则。

此表中的列所代表含义如下:

Alerting Rule:规则的名称。它是一个可选字段,但对调试非常有用。

Device Type:由传感器报告的设备类型。

Payload:此规则需要匹配的数值范围。

Result:由规则触发的动作,即将值更改为0或1。

  • 打开示例规则电子表格:'DecisionTable.xls'
  • 通过填写以下信息创建两条规则:
    • 规则1:如果我们得到0到60之间的温度读数,则将结果字段更改为0。
    • 规则2:如果我们得到61到100之间的温度读数,则将结果字段更改为1。

注意:在第二条规则 Payload 列中,在“61”和“100”之间添加一个空格。

注意:以 MS Excel 格式保存电子表格。

业务规则服务的详细信息在这里

第6步:构建并运行业务规则服务

我们已经在决策表中添加了一些规则,现在我们需要构建新版本的服务并启动它。

  • 在终端中输入以下命令:
[demo-user@localhost IoT_Summit_Lab]$ cd
[demo-user@localhost ~]$ cd IoT_Summit_Lab/
[demo-user@localhost IoT_Summit_Lab]$ ./runRulesService.sh

它应该显示以下输出:

 < output truncated > AMQ-Broker tcp://localhost:61616 ready to work!
Device-Type = temperature
Device-ID   = 4711
Payload     = 70
Result      = 1
----------------------
Sending 18.05.2016 10:46:22 766temperature47117000.01

第7步:测试规则服务

我们将通过软件传感器向我们的设置发送测试消息来测试此服务。应该发生以下步骤:

  • 软件传感器通过 MQTT 发送具有高值的消息。
  • 路由服务会将其选中,转换消息并将其发送到 AMQP (Advanced Message Queuing Protocol,高级消息队列协议)消息队列。
  • 业务规则服务将从队列中获取转换后的消息,并将其放入另一个 AMQP 消息队列中,但前提是它满足业务规则条件。
  • 在新终端中输入以下命令:
[demo-user@localhost Desktop]$ cd
[demo-user@localhost ~]$ cd IoT_Summit_Lab/
[demo-user@localhost IoT_Summit_Lab]$ ./runHighSensor.sh

它应该显示以下输出:

Starting the producer to send messages
Sending '70,0'
AMQ-Broker tcp://localhost:61616 ready to work!
Device-Type = temperature
Device-ID   = 4711
Payload     = 70
Result      = 1
----------------------
Sending 17.05.2016 15:08:59 265temperature47117000.01
----------------------

验证消息是否得到正确处理的另一种方法是通过 'http://localhost:8181' 查看 Red Hat JBoss Fuse 控制台。消息入列和出列的统计现在应该显示一条消息已经从 'message.to.rules' 中取出并放入 'message.to.datacenter' 中。

注意: Fuse 控制台登录名/密码是 admin/change12_me

结论

通过红帽自动化工具来使用 Ansible 构建智能物联网网关是一个非常简单的过程。基于开源技术的企业级智能物联网网关由 Red Hat Enterprise Linux, Red Hat JBoss Fuse, Red Hat JBoss BRMS 和 Red Hat JBoss A-MQ 构建而成。

我们提供了示例代码,通过部署路由和业务规则服务来使智能物联网网关可用。传感器应用程序用于将温度数据发送到 A-MQ 中间件。这些 MQTT 消息由我们之前启动的服务处理。最后,我们创建了业务规则以在传感器值达到阈值时触发所期望的动作。

GitHub 上提供了构建智能物联网网关的源代码,并包含演练视频。

本文的版权归 lwj786 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏blackheart的专栏

[解读REST] 6.REST的应用经验以及教训

衔接上文[解读REST] 5.Web的需求 & 推导REST,上文根据Web的需求推导出了REST架构风格,以及REST的详细描述和解释。自从1994年以来,R...

268100
来自专栏北京马哥教育

超实用:小团队如何从零搭建一个自动化运维体系?

如下图,现在行业内各巨头自动化运维架构的最终样子大家都知道了,但是如何根据自己团队当前的情况一步步向这个目标演进?

16100
来自专栏即时通讯技术

技术干货:从零开始,教你设计一个百万级的消息推送系统

本文主要分享的是如何从零设计开发一个中大型推送系统,因限于篇幅,文中有些键技术只能一笔带过,建议有这方面兴趣的读者可以深入研究相关知识点,从而形成横向知识体系。

22820
来自专栏WeTest质量开放平台团队的专栏

Android 内存暴减的秘密?!

在 我这样减少了26.5M Java内存!中内存优化一期已经告一段落,主要做的事情是,造了几个分析内存问题的轮子,定位进程各种类型内存占用情况,分析了线程创建O...

10920
来自专栏小狼的世界

Ajax与REST

REST(Representational State Transfer)是一种开发思想,互联网不断发展,富媒体越来越多的应用,不断地冲击着我们的应用,使应用的...

11120
来自专栏腾讯Bugly的专栏

关于移动 App H5 页面里的 JavaScript 异常捕获

自 HTML5 标准正式发布之后,其得天独厚的跨平台特性吸引了众多开发者的目光。 伴随着 HTML5 的发展,JavaScript 的重要性也在逐步增加,要说现...

65690
来自专栏技术换美食换不换

建站之路

11120
来自专栏数据和云

数据库高可用和分区解决方案-MySQL 篇

许春植(Luocs) (阿里巴巴高级数据库管理员,7年以上数据库运维管理经验,擅长MySQL、Oracle及MongoDB数据库,目前主要研究并建设Mongo...

54160
来自专栏加米谷大数据

Kafka性能测试

耗时:18秒 总体文件大小:2193.45MB 最大处理量:163.6659MB/S TPS:171616.1767条

35620
来自专栏架构师之路

db如何快速回滚+恢复,DBA的神技能

如果人为执行了“删库”操作,命令会同步给其他从库,导致所有库上的数据全被删除,无法恢复,故这种方案是不行的。

17450

扫码关注云+社区

领取腾讯云代金券