本教程建立在第一个教程的基础上,制作一个流程,该流程开始从外部来源提取数据,以便在本地做一些有用的事情。
该流程将:
在之前的教程中,Inject 节点是在点击其按钮时触发流程的。对于本教程,Inject 节点将配置为在定期间隔触发流程。
从调色板中将一个 Inject 节点拖到工作区。
双击节点以打开编辑对话框。将重复间隔设置为每 5 分钟
。
点击完成以关闭对话框。
HTTP 请求节点可用于在触发时检索网页。
在工作区中添加一个后,编辑它以将URL
属性设置为:
https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/significant_month.csv
然后点击完成以关闭对话框。
该 URL 是来自美国地质调查局网站的过去一个月重大地震的摘要。该网站提供了一些其他选项,您可能希望在完成本教程后进行尝试。
添加一个 CSV 节点并编辑其属性。启用“第一行包含列名”的选项。
然后点击完成以关闭。
将一个调试节点添加到输出。
添加连接线以连接:
在工作区中添加一个 Switch 节点。编辑其属性并配置它检查属性msg.payload.mag
,测试条件为>=
,将其更改为测试数字
和值7
。点击完成关闭。
从 CSV 节点添加一条线到该 Switch 节点。
添加一个 Change 节点,连接到 Switch 节点的输出。配置它将msg.payload
设置为字符串PANIC!
。
将一个新的调试节点连接到 Change 节点的输出。
通过点击“部署”按钮将流程部署到运行时。
在调试侧边栏标签打开的情况下,点击 Inject 按钮。您应该看到一系列条目,其内容看起来像:
msg.payload : Object
{"time":"2017-11-19T15:09:03.120Z","latitude":-21.5167,"longitude":168.5426,"depth":14.19,"mag":6.6,"magType":"mww","gap":21,"dmin":0.478,"rms":0.86,"net":"us","id":"us2000brgk","updated":"2017-11-19T17:10:58.449Z","place":"68km E of Tadine, New Caledonia","type":"earthquake","horizontalError":6.2,"depthError":2.8,"magError":0.037,"magNst":72,"status":"reviewed","locationSource":"us","magSource":"us"}
您现在可以点击每个属性左侧的小箭头以展开它们并检查内容。
如果有任何震级大于 7 的地震,您也会看到调试消息,例如:
msg.payload : string(6)
"PANIC!"
您可以将 Switch 的值7
更改为一个更小的值来测试您的程序。记得在更改后点击部署。
***
该流程每 5 分钟自动触发一次,并从网址中检索数据。它解析数据并在调试侧边栏中显示。它还检查数据中的震级值,并为任何震级大于或等于 7 的消息分支流程。这些消息的有效负载被修改并在调试侧边栏中显示。
本教程中创建的流程由以下 json 表示。要将其导入到编辑器中,请将其复制到剪贴板,然后粘贴到导入对话框中。
[{"id":"e36406f2.8ef798","type":"inject","z":"f03b57d5.e525f8","name":"","topic":"","payload":"","payloadType":"str","repeat":"300","crontab":"","once":false,"x":130,"y":900,"wires":[["c3c50023.3bbed"]]},{"id":"c3c50023.3bbed","type":"http request","z":"f03b57d5.e525f8","name":"Recent Quakes","method":"GET","url":"https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/significant_month.csv","tls":"","x":300,"y":900,"wires":[["8afc6cac.e0812"]]},{"id":"8afc6cac.e0812","type":"csv","z":"f03b57d5.e525f8","name":"","sep":",","hdrin":true,"hdrout":"","multi":"one","ret":"\\n","temp":"","x":470,"y":900,"wires":[["44779781.4190f8","6f0eb546.9e208c"]]},{"id":"44779781.4190f8","type":"debug","z":"f03b57d5.e525f8","name":"","active":true,"complete":false,"x":630,"y":900,"wires":[]},{"id":"6f0eb546.9e208c","type":"switch","z":"f03b57d5.e525f8","name":"","property":"payload.mag","propertyType":"msg","rules":[{"t":"gte","v":"7","vt":"num"}],"checkall":"true","outputs":1,"x":510,"y":960,"wires":[["d78d4aa8.8c8208"]]},{"id":"d78d4aa8.8c8208","type":"change","z":"f03b57d5.e525f8","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"PANIC!","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":650,"y":1020,"wires":[["72fddece.fac0d"]]},{"id":"72fddece.fac0d","type":"debug","z":"f03b57d5.e525f8","name":"","active":true,"complete":false,"x":750,"y":960,"wires":[]}]
版权所有 OpenJS Foundation 和 Node-RED 贡献者。保留所有权利。OpenJS Foundation 拥有并使用注册商标。有关 OpenJS Foundation 的商标列表,请参阅我们的 商标政策 和 商标列表。未在 OpenJS Foundation 商标列表 中列出的商标和徽标是其各自持有者的商标™或注册商标®。使用它们并不意味着与它们有任何关联或认可。
OpenJS Foundation | 使用条款 | 隐私政策 | OpenJS Foundation 章程 | 商标政策 | 商标列表 | Cookie 政策