物联网节点红色IBM Bluemix:状态机/存储旧数据

时间:2016-02-06 00:16:09

标签: ibm-cloud iot node-red

我已经构建了一个简单的应用程序,它连接到我的IoT温度传感器设备,并根据温度,温度,温度和温度发送电子邮件。为此,我使用IBM IoT节点连接到我的IoT设备,然后使用case语句处理数据,分为三个桶:warm,just right和cold。从那里我生成一封电子邮件,并将临时类别发送到我的电子邮件地址。

然而,我的临时传感器每1秒钟测量并发送数据,因此我的应用每1秒发送一封电子邮件 - 这种情况太频繁了。相反,我只想在三种温度状态之间发生转换时发送电子邮件。当然,我想用状态机或case语句处理块来实现它。这要求我有两个数据点:当前温度测量值和最后记录的测量值。存储最后记录的温度测量的最佳方法是什么?我应该使用节点流程的任何提示吗?

Email IoT Application Nodes

3 个答案:

答案 0 :(得分:1)

如果我们看一下这篇文章:

MSDN docs

我们找到一个名为" context"的部分。这允许我们在全局或仅在本地到特定节点的情况下维护消息流实例之间的状态数据。这意味着可以保存较早时间收到的值并与当前值进行比较。你必须在Function节点中使用JavaScript语言,但我希望它不会太复杂,并且有很多例子。

答案 1 :(得分:1)

默认托盘中的报告异常(rbe)节点将为您执行此操作。

如果邮件的msg.payload字段与上一条邮件不同,则只允许邮件通过。

流程看起来像这样:

Node-RED flow

我使用的是MQTT输入而不是IoTf节点,但它已经足够接近它了。

功能节点设置电子邮件正文(msg.payload)和 rbe 节点将处理每次更改只发送一次。

需要注意的一点是, rbe 节点基于每个主题进行过滤,因此所有消息都是相同主题,但 email-out 节点使用该主题进行设置电子邮件主题。

答案 2 :(得分:0)

除了rbe之外,您还可以使用延迟节点(功能选项板中的第三个)将速率限制为每分钟5条消息(可编程数量和周期),并可选择是否丢弃多余的消息。据推测,当消息在短时间内到达时,您可能不会丢弃,并且突发之间存在较长的间隙。