专栏首页安全领域如何通过7个简单步骤构建智能物联网网关

如何通过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 条评论
登录 后参与评论

相关文章

  • 物联网即为设备加服务

    原文地址:https://dzone.com/articles/the-internet-of-things-is-devices-and-services

    未来守护者
  • 物联网如何加速智慧城市的发展

    从理论上讲,物联网加速了政府发展智慧城市的应用,使生活变得更便捷,舒适,并减轻了人们的生活成本。构建智慧城市将减少能源和水的浪费以及公共交通的使用,随之环境污染...

    未来守护者
  • 低功耗物联网的诞生:第二次无线革命

    物联网对众多技术行业造成了剧烈的冲击,其中就包括电信。以前,电信行业的发展方向似乎十分明确:不断提高数据的无线传输速率。所有的供应商都或多或少的在追求这个相同的...

    未来守护者
  • 工具文化有效应对安全事件

    近期,红帽官网已发布Linux内核TCP SACK机制存在三个相关的安全漏洞,其最严重的安全漏洞会被远程攻击者利用在运行受影响软件的系统上触发一个内核崩溃,从而...

    嘉为科技
  • Linux下的signal信号机制

    在Linux中,要发送一个信号相当容易。程序员需要知道两个信息:要发送哪个信号,将这个信号发送给哪个进程。可以用 man 7 signal 找到一个可以利用的信...

    阳光岛主
  • 什么是网站系统安全的渗透检测?

    建设网站系统需要做的工作很多,比如架构,模板的确认,还有各个安全问题的考虑,比如漏洞,木马等问题的渗透测试。而对于渗透这个词很多人都没怎么接触过。相信最近追热播...

    墨者安全科技
  • LeetCode 173. Binary Search Tree Iterator(搜索二叉树)

    题解:题目说Next()的时间效率O(1),空间效率O(h),h为树的高度。我们维护一个栈,把前序遍历的左子树的结果存进去。

    ShenduCC
  • 机器学习入门必备的13张小抄(附下载)

    允中 编译整理 量子位 出品 | 公众号 QbitAI 那么多机器学习工具包,那么多命令、操作和公式,想要全部记住,实在是太难了…… 所以,小抄是人见人爱的好东...

    量子位
  • 原 EMQ百万级MQTT消息服务(ACL鉴权)

    虽然EMQ已经搭建起来了,但是投入到业务使用中还面临着一些问题,当然MQTT设计之初也考虑了这一点,比如不是任何一个客户端都能链接到服务器和限制客户端能够对to...

    喵了个咪233
  • 小白学数据 | 28张小抄表大放送:Python,R,大数据,机器学习

    大数据文摘

扫码关注云+社区

领取腾讯云代金券