diff --git a/flows.json b/flows.json index 96fa90c..e0dbe1d 100644 --- a/flows.json +++ b/flows.json @@ -15,6 +15,64 @@ "info": "", "env": [] }, + { + "id": "ed4ea3c2bc13d1ec", + "type": "tab", + "label": "Weather", + "disabled": false, + "info": "", + "env": [] + }, + { + "id": "df425a30fbcfb2e9", + "type": "group", + "z": "ed4ea3c2bc13d1ec", + "name": "General Alerts", + "style": { + "label": true + }, + "nodes": [ + "7d9f24e0a78ec15c", + "7a962f9a62b1c9bd", + "f9f2f5c1415ff1be", + "6837f30909e2eb48", + "b2fd625446aad769", + "4982986ff8aefd02", + "ca5ab0add7ccdb84", + "e7c7b4fcae2ded18", + "474ea9dc63cf9b40" + ], + "x": 14, + "y": 79, + "w": 1352, + "h": 202 + }, + { + "id": "b0521ee44dc796d1", + "type": "group", + "z": "ed4ea3c2bc13d1ec", + "name": "Defiance Alerts", + "style": { + "label": true + }, + "nodes": [ + "8ac36baa32177bd6", + "aa989a69868fc5fe", + "846ac653b993bbec", + "fc63778f17491208", + "404170ec56d4c845", + "15a570205c470b53", + "6d492df9348a35e9", + "ab2e9b884521285a", + "eff5cac2621c8c91", + "9151c0cd48bb3c45", + "1bbab6628566033e" + ], + "x": 14, + "y": 299, + "w": 1372, + "h": 262 + }, { "id": "200f284a1171f0a8", "type": "mqtt-broker", @@ -331,5 +389,491 @@ "x": 550, "y": 240, "wires": [] + }, + { + "id": "7d9f24e0a78ec15c", + "type": "http request", + "z": "ed4ea3c2bc13d1ec", + "g": "df425a30fbcfb2e9", + "name": "AtmosphericX", + "method": "GET", + "ret": "obj", + "paytoqs": "ignore", + "url": "http://192.168.1.106:3010/api/warnings", + "tls": "", + "persist": false, + "proxy": "", + "insecureHTTPParser": false, + "authType": "", + "senderr": false, + "headers": [], + "x": 320, + "y": 120, + "wires": [ + [ + "f9f2f5c1415ff1be" + ] + ] + }, + { + "id": "7a962f9a62b1c9bd", + "type": "inject", + "z": "ed4ea3c2bc13d1ec", + "g": "df425a30fbcfb2e9", + "name": "", + "props": [ + { + "p": "payload" + }, + { + "p": "topic", + "vt": "str" + } + ], + "repeat": "30", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "", + "payloadType": "date", + "x": 130, + "y": 120, + "wires": [ + [ + "7d9f24e0a78ec15c" + ] + ] + }, + { + "id": "f9f2f5c1415ff1be", + "type": "function", + "z": "ed4ea3c2bc13d1ec", + "g": "df425a30fbcfb2e9", + "name": "Filter", + "func": "let alerts = msg.payload\n\n// Filter for Severe Thunderstorm Warnings\n\nlet ts = alerts.filter(function(alert) {\n if (alert.raw.properties &&\n alert.raw.properties.event === \"Severe Thunderstorm Warning\") {\n return true\n }\n})\n\n// Filter for Severe Thunderstorm Warnings with tornado detection\n// that have a tornado possible parameter\n\nlet tstp = alerts.filter(function(alert) {\n if (alert.raw.properties &&\n alert.raw.properties.event === \"Severe Thunderstorm Warning\" &&\n alert.raw.properties.parameters &&\n alert.raw.properties.parameters.tornadoDetection &&\n alert.raw.properties.parameters.tornadoDetection.length > 0) {\n let tornadoPossible = alert.raw.properties.parameters.tornadoDetection[0]\n return tornadoPossible === \"POSSIBLE\"\n }\n})\n\n// Filter for Tornado Warnings\n\nlet tornado = alerts.filter(function(alert) {\n if (alert.raw.properties &&\n alert.raw.properties.event === \"Tornado Warning\") {\n return true\n }\n})\n\n// If there are any alerts, return them\n\nmsg.ts = ts\nmsg.ts_count = ts.length\n\nmsg.tstp = tstp\nmsg.tstp_count = tstp.length\n\nmsg.tornado = tornado\nmsg.tornado_count = tornado.length\n\nreturn msg", + "outputs": 1, + "timeout": 0, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 490, + "y": 120, + "wires": [ + [ + "b2fd625446aad769", + "4982986ff8aefd02", + "e7c7b4fcae2ded18" + ] + ] + }, + { + "id": "6837f30909e2eb48", + "type": "mqtt out", + "z": "ed4ea3c2bc13d1ec", + "g": "df425a30fbcfb2e9", + "name": "", + "topic": "weather/alerts/general/severe_thunderstorm_warning/tornado_possible", + "qos": "0", + "retain": "", + "respTopic": "", + "contentType": "", + "userProps": "", + "correl": "", + "expiry": "", + "broker": "200f284a1171f0a8", + "x": 1090, + "y": 180, + "wires": [] + }, + { + "id": "b2fd625446aad769", + "type": "change", + "z": "ed4ea3c2bc13d1ec", + "g": "df425a30fbcfb2e9", + "name": "", + "rules": [ + { + "t": "set", + "p": "payload", + "pt": "msg", + "to": "tstp_count", + "tot": "msg" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 700, + "y": 180, + "wires": [ + [ + "6837f30909e2eb48" + ] + ] + }, + { + "id": "4982986ff8aefd02", + "type": "change", + "z": "ed4ea3c2bc13d1ec", + "g": "df425a30fbcfb2e9", + "name": "", + "rules": [ + { + "t": "set", + "p": "payload", + "pt": "msg", + "to": "tornado_count", + "tot": "msg" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 700, + "y": 240, + "wires": [ + [ + "ca5ab0add7ccdb84" + ] + ] + }, + { + "id": "ca5ab0add7ccdb84", + "type": "mqtt out", + "z": "ed4ea3c2bc13d1ec", + "g": "df425a30fbcfb2e9", + "name": "", + "topic": "weather/alerts/general/tornado_warning", + "qos": "0", + "retain": "", + "respTopic": "", + "contentType": "", + "userProps": "", + "correl": "", + "expiry": "", + "broker": "200f284a1171f0a8", + "x": 1000, + "y": 240, + "wires": [] + }, + { + "id": "e7c7b4fcae2ded18", + "type": "change", + "z": "ed4ea3c2bc13d1ec", + "g": "df425a30fbcfb2e9", + "name": "", + "rules": [ + { + "t": "set", + "p": "payload", + "pt": "msg", + "to": "ts_count", + "tot": "msg" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 700, + "y": 120, + "wires": [ + [ + "474ea9dc63cf9b40" + ] + ] + }, + { + "id": "474ea9dc63cf9b40", + "type": "mqtt out", + "z": "ed4ea3c2bc13d1ec", + "g": "df425a30fbcfb2e9", + "name": "", + "topic": "weather/alerts/general/severe_thunderstorm_warning", + "qos": "0", + "retain": "", + "respTopic": "", + "contentType": "", + "userProps": "", + "correl": "", + "expiry": "", + "broker": "200f284a1171f0a8", + "x": 1040, + "y": 120, + "wires": [] + }, + { + "id": "8ac36baa32177bd6", + "type": "http request", + "z": "ed4ea3c2bc13d1ec", + "g": "b0521ee44dc796d1", + "name": "Defiance County", + "method": "GET", + "ret": "obj", + "paytoqs": "ignore", + "url": "https://api.weather.gov/alerts/active/zone/OHC039", + "tls": "", + "persist": false, + "proxy": "", + "insecureHTTPParser": false, + "authType": "", + "senderr": false, + "headers": [], + "x": 300, + "y": 400, + "wires": [ + [ + "fc63778f17491208", + "404170ec56d4c845" + ] + ] + }, + { + "id": "aa989a69868fc5fe", + "type": "inject", + "z": "ed4ea3c2bc13d1ec", + "g": "b0521ee44dc796d1", + "name": "", + "props": [ + { + "p": "payload" + }, + { + "p": "topic", + "vt": "str" + } + ], + "repeat": "30", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "", + "payloadType": "date", + "x": 130, + "y": 400, + "wires": [ + [ + "8ac36baa32177bd6" + ] + ] + }, + { + "id": "846ac653b993bbec", + "type": "mqtt out", + "z": "ed4ea3c2bc13d1ec", + "g": "b0521ee44dc796d1", + "name": "", + "topic": "weather/alerts/defiance", + "qos": "0", + "retain": "", + "respTopic": "", + "contentType": "", + "userProps": "", + "correl": "", + "expiry": "", + "broker": "200f284a1171f0a8", + "x": 730, + "y": 340, + "wires": [] + }, + { + "id": "fc63778f17491208", + "type": "change", + "z": "ed4ea3c2bc13d1ec", + "g": "b0521ee44dc796d1", + "name": "", + "rules": [ + { + "t": "set", + "p": "payload", + "pt": "msg", + "to": "payload.features", + "tot": "msg" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 500, + "y": 340, + "wires": [ + [ + "846ac653b993bbec" + ] + ] + }, + { + "id": "404170ec56d4c845", + "type": "function", + "z": "ed4ea3c2bc13d1ec", + "g": "b0521ee44dc796d1", + "name": "Filter", + "func": "let alerts = msg.payload.features\n\n// Filter for Severe Thunderstorm Warnings\n\nlet ts = alerts.filter(function(alert) {\n if (alert.properties &&\n alert.properties.event === \"Severe Thunderstorm Warning\") {\n return true\n }\n})\n\n// Filter for Severe Thunderstorm Warnings with tornado detection\n// that have a tornado possible parameter\n\nlet tstp = alerts.filter(function(alert) {\n if (alert.properties &&\n alert.properties.event === \"Severe Thunderstorm Warning\" &&\n alert.properties.parameters &&\n alert.properties.parameters.tornadoDetection &&\n alert.properties.parameters.tornadoDetection.length > 0) {\n let tornadoPossible = alert.properties.parameters.tornadoDetection[0]\n return tornadoPossible === \"POSSIBLE\"\n }\n})\n\n// Filter for Tornado Warnings\n\nlet tornado = alerts.filter(function(alert) {\n if (alert.properties &&\n alert.properties.event === \"Tornado Warning\") {\n return true\n }\n})\n\n// If there are any alerts, return them\n\nmsg.ts = ts\nmsg.ts_count = ts.length\n\nmsg.tstp = tstp\nmsg.tstp_count = tstp.length\n\nmsg.tornado = tornado\nmsg.tornado_count = tornado.length\n\nreturn msg", + "outputs": 1, + "timeout": 0, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 470, + "y": 400, + "wires": [ + [ + "eff5cac2621c8c91", + "15a570205c470b53", + "6d492df9348a35e9" + ] + ] + }, + { + "id": "15a570205c470b53", + "type": "change", + "z": "ed4ea3c2bc13d1ec", + "g": "b0521ee44dc796d1", + "name": "", + "rules": [ + { + "t": "set", + "p": "payload", + "pt": "msg", + "to": "tstp_count", + "tot": "msg" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 700, + "y": 460, + "wires": [ + [ + "1bbab6628566033e" + ] + ] + }, + { + "id": "6d492df9348a35e9", + "type": "change", + "z": "ed4ea3c2bc13d1ec", + "g": "b0521ee44dc796d1", + "name": "", + "rules": [ + { + "t": "set", + "p": "payload", + "pt": "msg", + "to": "tornado_count", + "tot": "msg" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 700, + "y": 520, + "wires": [ + [ + "ab2e9b884521285a" + ] + ] + }, + { + "id": "ab2e9b884521285a", + "type": "mqtt out", + "z": "ed4ea3c2bc13d1ec", + "g": "b0521ee44dc796d1", + "name": "", + "topic": "weather/alerts/defiance/tornado_warning", + "qos": "0", + "retain": "", + "respTopic": "", + "contentType": "", + "userProps": "", + "correl": "", + "expiry": "", + "broker": "200f284a1171f0a8", + "x": 1000, + "y": 520, + "wires": [] + }, + { + "id": "eff5cac2621c8c91", + "type": "change", + "z": "ed4ea3c2bc13d1ec", + "g": "b0521ee44dc796d1", + "name": "", + "rules": [ + { + "t": "set", + "p": "payload", + "pt": "msg", + "to": "ts_count", + "tot": "msg" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 700, + "y": 400, + "wires": [ + [ + "9151c0cd48bb3c45" + ] + ] + }, + { + "id": "9151c0cd48bb3c45", + "type": "mqtt out", + "z": "ed4ea3c2bc13d1ec", + "g": "b0521ee44dc796d1", + "name": "", + "topic": "weather/alerts/defiance/severe_thunderstorm_warning", + "qos": "0", + "retain": "", + "respTopic": "", + "contentType": "", + "userProps": "", + "correl": "", + "expiry": "", + "broker": "200f284a1171f0a8", + "x": 1040, + "y": 400, + "wires": [] + }, + { + "id": "1bbab6628566033e", + "type": "mqtt out", + "z": "ed4ea3c2bc13d1ec", + "g": "b0521ee44dc796d1", + "name": "", + "topic": "weather/alerts/defiance/severe_thunderstorm_warning/tornado_possible", + "qos": "0", + "retain": "", + "respTopic": "", + "contentType": "", + "userProps": "", + "correl": "", + "expiry": "", + "broker": "200f284a1171f0a8", + "x": 1100, + "y": 460, + "wires": [] } ] \ No newline at end of file diff --git a/flows_cred.json b/flows_cred.json index 7ff9909..10d75b4 100644 --- a/flows_cred.json +++ b/flows_cred.json @@ -1,3 +1,3 @@ { - "$": "dedc4844b17024634c37414e77a00c0cZVRqzrSY/m9SjTWpb+gdDmsN2uHh2bUF7El66/XU+1/IxDhOf/AFxxdhOVnOENd3VuPJfWBzcQLNOcC+A706lls=" + "$": "cf7de089b3bb02493c93035279de8bd3Br29jiTXIQ+gGZiB99I8ugwkuXqI8iKYRaCkgT11B6JAHtxLmYBqUPvVy7T8a57oDwsAhzp8urBDyMBY/VN0I6zSNQbLUt0lhMF1ghX7P61Rnml+ISKv" } \ No newline at end of file