一、目录
1. 实验目的
本实验建立在上一个实验的基础上,制作一个流程,该流程开始从外部来源引入数据并在内部加工处理。本实验将实现以下功能:
- 定期从网站检索信息
- 将该信息转换为有用的形式
- 在调试侧栏中显示结果
2. 实验步骤
2.1 添加注入节点
在之前的实验中,Inject 节点用于在单击其按钮时触发流。本次实验注入节点将被配置为定期触发流。从面板中将一个注入节点拖到工作区上。双击节点以显示编辑对话框。将重复间隔设置为每 5 分钟一次。单击完成关闭对话框。
实现步骤
-
1.拖拽节点
-
2.设置节点
2.2 添加 Http 请求节点
HTTP 请求节点可用于在触发时检索网页。向工作区添加一个后,编辑它以将 URL 属性设置为:
https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/significant_month.csv
然后单击完成关闭对话框。此 URL 是来自美国地质调查局网站的上个月重大地震的提要。该站点提供了许多其他选项,在完成本实验后可以尝试这些选项。
实现步骤
-
1.拖拽Http请求节点
-
2.设置Http请求节点
2.3 添加 CSV 节点
添加 CSV 节点并编辑其属性。启用“第一行包含列名”选项。然后单击完成关闭。
实现步骤
-
1.拖拽CSV 节点
-
2.设置CSV 节点
2.4 添加调试节点
添加一个调试节点到输出
实现步骤
-
1.拖拽节点
2.5 所有节点连线
添加线路连接:
- 注入节点输出到 HTTP 请求节点输入。
- HTTP 请求节点输出到 CSV 节点输入。
- CSV 节点输出到调试节点输入。
实现步骤
-
1.连接节点,如下图即可
-
2.测试是否获取数据,如下图
- 3.此时输出的数据为,示例其中一条数据
msg.payload : Object
{
"time": "2022-11-23T01:08:15.522Z",
"latitude": 40.8471,
"longitude": 30.967,
"depth": 10,
"mag": 6.1,
"magType": "mww",
"nst": 114,
"gap": 30,
"dmin": 0.414,
"rms": 0.99,
"net": "us",
"id": "us7000irp8",
"updated": "2022-11-27T05:10:55.686Z",
"place": "Western Turkey",
"type": "earthquake",
"horizontalError": 5.15,
"depthError": 1.729,
"magError": 0.052,
"magNst": 35,
"status": "reviewed",
"locationSource": "us",
"magSource": "us"
}
2.6 添加开关节点 (Switch Node)
将 Switch 节点添加到工作区。编辑其属性并将其配置为检查属性 msg.payload.mag,测试 >= 将其更改为测试数字和值 7。单击完成以关闭。添加从 CSV 节点到此 Switch 节点的第二条连线。
实现步骤
-
1.拖拽开关节点 (Switch Node)
- 2.重新连接节点,并设置节点属性
属性一栏填入
msg.payload.mag
-
3.测试是否获取数据
2.7 添加变更节点 (Change Node)
添加一个 Change 节点,连接到 Switch 节点的输出。配置它以将 msg.payload 设置为字符串 PANIC!。
实现步骤
-
1.添加一个 Change 节点
-
2.连接到 Switch 节点的输出
-
3.配置它以将 msg.payload 设置为字符串 PANIC!。
-
4.查看数据
2.8 添加第二个调试节点
将新的 Debug 节点连接到 Change 节点的输出
实现步骤
-
1.拖拽节点
-
2.连接起来,最终连接图
2.9 发布
通过单击部署按钮将流部署到运行时。打开 Debug 侧边栏选项卡,单击 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!"
你可以将开关阈值 7 更改为较小的值以测试程序。记得在更改后点击部署。
3.实验总结
本实验每 5 分钟自动触发一次,并从 url 检索数据。它解析数据并显示在调试侧栏中。它还检查数据中的幅度值,并为幅度大于或等于 7 的任何消息分支流。此类消息的有效负载被修改并显示在调试侧栏中。
4.全部代码
[
{
"id": "0380f5e5c1f1a45c",
"type": "tab",
"label": "流程 1",
"disabled": false,
"info": "",
"env": []
},
{
"id": "f86f4c2110f3389e",
"type": "tab",
"label": "流程 1",
"disabled": false,
"info": "",
"env": []
},
{
"id": "e98aa69a8103f8fe",
"type": "tab",
"label": "流程 2",
"disabled": false,
"info": "",
"env": []
},
{
"id": "fa20ef67192c25e2",
"type": "inject",
"z": "f86f4c2110f3389e",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 190,
"y": 140,
"wires": [
[
"0f05fccf4e2d3fbf"
]
]
},
{
"id": "977d78dcf57cae66",
"type": "debug",
"z": "f86f4c2110f3389e",
"name": "debug 1",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 580,
"y": 140,
"wires": []
},
{
"id": "0f05fccf4e2d3fbf",
"type": "function",
"z": "f86f4c2110f3389e",
"name": "function 1",
"func": "//生成日期对象\nvar date = new Date(msg.payload);\n// 把msg.payload 设置成现有日期\nmsg.payload = date.toString();\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 380,
"y": 220,
"wires": [
[
"977d78dcf57cae66"
]
]
},
{
"id": "b8ee50815174ee99",
"type": "change",
"z": "e98aa69a8103f8fe",
"name": "",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "PANIC!",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 670,
"y": 280,
"wires": [
[
"bb851bebfab99bf4"
]
]
},
{
"id": "14b27b021218d919",
"type": "switch",
"z": "e98aa69a8103f8fe",
"name": "",
"property": "payload.mag",
"propertyType": "msg",
"rules": [
{
"t": "gte",
"v": "7",
"vt": "num"
}
],
"checkall": "true",
"repair": false,
"outputs": 1,
"x": 490,
"y": 320,
"wires": [
[
"b8ee50815174ee99",
"d4ac9f4b192c2367"
]
]
},
{
"id": "dd639232c1a75865",
"type": "inject",
"z": "e98aa69a8103f8fe",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "300",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 80,
"y": 280,
"wires": [
[
"99aa8818242bf31d"
]
]
},
{
"id": "99aa8818242bf31d",
"type": "http request",
"z": "e98aa69a8103f8fe",
"name": "",
"method": "GET",
"ret": "txt",
"paytoqs": "ignore",
"url": "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/significant_month.csv",
"tls": "",
"persist": false,
"proxy": "",
"insecureHTTPParser": false,
"authType": "",
"senderr": false,
"headers": [],
"x": 220,
"y": 280,
"wires": [
[
"a08de50d70477fdc"
]
]
},
{
"id": "a08de50d70477fdc",
"type": "csv",
"z": "e98aa69a8103f8fe",
"name": "",
"sep": ",",
"hdrin": true,
"hdrout": "none",
"multi": "one",
"ret": "\\n",
"temp": "",
"skip": "0",
"strings": true,
"include_empty_strings": "",
"include_null_values": "",
"x": 350,
"y": 280,
"wires": [
[
"14b27b021218d919"
]
]
},
{
"id": "bb851bebfab99bf4",
"type": "debug",
"z": "e98aa69a8103f8fe",
"name": "debug 7",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 860,
"y": 280,
"wires": []
},
{
"id": "d4ac9f4b192c2367",
"type": "debug",
"z": "e98aa69a8103f8fe",
"name": "debug 8",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 680,
"y": 360,
"wires": []
}
]