使用Hawkular对物联网数据做出反应

在第一篇文章中,我一直在讨论如何将IoT传感器数据发送到 Hawkular 的指标子系统 ,然后如何在Hawkular中注册指标,以便可以在控制台中对其进行图形化处理。

在本文中,我将讨论如何使用Hawkular警报组件(Hawkular-full中已经可用)来响应传入的数据并使Arduino上的LED闪烁。

带有以太网屏蔽和黄色LED的Arduino Uno

带有以太网屏蔽和黄色LED的Arduino Uno

对于Arduino,我添加了便宜的基于Enc28j60的以太网屏蔽。 有一个可用标准库 ,可以轻松设置我们正在使用的Web服务器(实际上代码大部分来自该示例)。

新的(完整)设置如下所示:

使用Arduino作为演员进行设置

使用Arduino作为演员进行设置

警示

Hawkular已经内置了一个警报组件,该组件可以将传入的值与阈值进行比较,然后调用插件以通过电子邮件将警报发送到irc通道以及更多通信方式。 我们将在这里使用的插件是webhook 。 由于在标准Hawkular发行版中仅提供电子邮件插件,因此我们需要先安装webhook插件:

查看Hawkular警报

git clone https://github.com/hawkular/hawkular-alerts.git
cd hawkular-alerts

建立鹰派警报:

mvn -Pdev -DskipTests install

现在您可以将插件复制到Hawkular服务器

cd hawkular-alerts-actions-plugins
cd hawkular-alerts-actions-webhook
cp hawkular-alerts-actions-webhook.war \
   $HAWKULAR/modules/system/layers/hawkular/org/hawkular/nest/main/deployments/

由于Hawkular不会自动执行此操作,因此您需要在复制webhook.war之后重新启动Hawkular服务器。

设置警报

我已经修改了ruby脚本以提取配置文件(YAML格式):

---
16617927:40.176.91.120.5.0.0.125:
  :name: Living room
  :alert:
    :comparator: :gt
    :value: 25

第一行是以下几行适用的指标的ID。 第二行是UI的显示名称。 接下来的部分将设置警报。

注册要在下面使用的webhook:

@webhook_props = { url: 'http://172.31.7.177/',   # target server
                   method: 'POST' }               # http verb
@alerts_client.create_action 'webhook', "send-via-webhook-#{metric_id}", @webhook_props

设置触发器和条件,首先触发

t = Hawkular::Alerts::Trigger.new({})
  t.enabled = true
  t.id = "trigger_#{metric_id}"
  t.tags = { :resourceId => "#{feed}/#{res_id}" }

标签告诉UI触发器在哪个资源上应用,因此可以在Hawkular UI中显示警报

接下来的条件:

c = Hawkular::Alerts::Trigger::Condition.new({})
  c.trigger_mode = :FIRING
  c.type = :THRESHOLD
  c.data_id = metric_id
  c.operator = alert[:comparator].to_s.upcase
  c.threshold = alert[:value]

最后,由于我们不仅希望警报显示在UI中,还希望通过Webhook将其转发到我们的Arduino,所以我们需要将Webhook附加到触发器。 插件ID是webhook ,而action_id是我们在上面设置的。

# Reference an action definition
  a = Hawkular::Alerts::Trigger::Action.new({})
  a.action_plugin = 'webhook'
  a.action_id = "send-via-webhook-#{metric_id}"
  t.actions.push a

然后我们可以创建触发器,该触发器将立即处于活动状态。

@alerts_client.create_trigger t, , nil
开火

现在,当输入高于阈值的值时,将触发Webhook,它将打开与Arduino的http连接,并且LED指示灯将闪烁。

此外,警报还将显示在Hawkular UI的警报中心中:

警报中心中的高温警报列表。

警报中心中的高温警报列表。

更多

请注意,上面的触发器定义非常简单,并且只有一个比较器。 同样,每次输入高于阈值的值时,触发器都会触发。在更现实的场景中,可能会增加一些抑制作用,即仅当测量值在某个时间间隔内超过阈值几倍时才触发触发器。 或者,如果您开始使用空调,则可以将触发器设置为自动禁用,然后让比较器在温度降至一定水平以下后将其重新打开。

除上述功能外,您还可以使用Hawkular Alerts做更多的事情,包括将其嵌入到您自己的应用程序中的独立部署。

一些进一步的阅读:

翻译自: https://www.javacodegeeks.com/2016/03/reacting-iot-data-hawkular.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值