Make area weather alerts reusable as a subflow

This commit is contained in:
2025-03-20 00:33:31 -04:00
parent 3c092bf519
commit c63adaa68d

View File

@ -2,6 +2,12 @@ const severeWarningEvents = ["Severe Thunderstorm Warning","Destructive Severe T
const tornadoWarningEvents = ["Tornado Warning","Radar Indicated Tornado Warning","Confirmed Tornado Warning","Tornado Emergency"] const tornadoWarningEvents = ["Tornado Warning","Radar Indicated Tornado Warning","Confirmed Tornado Warning","Tornado Emergency"]
const tornadoWatchEvents = ["Tornado Watch"] const tornadoWatchEvents = ["Tornado Watch"]
const severeThunderstormWatchEvents = ["Severe Thunderstorm Watch"] const severeThunderstormWatchEvents = ["Severe Thunderstorm Watch"]
const area = msg.area
const mqttTopic = "weather/alerts/" + area
const tstormTopic = mqttTopic + "/severe_thunderstorm_warning"
const tornadoWarnTopic = mqttTopic + "/tornado_warning"
const tornadoWatchTopic = mqttTopic + "/tornado_watch"
const severeThunderstormWatchTopic = mqttTopic + "/severe_thunderstorm_watch"
let alerts = msg.payload.features let alerts = msg.payload.features
let tornado_possible = false let tornado_possible = false
@ -88,13 +94,18 @@ let severe_thunderstorm_watch = alerts.filter(function(alert) {
// If there are any alerts, return them // If there are any alerts, return them
let allAlerts = {
"payload": msg.payload.features
}
let tstormMsg = { let tstormMsg = {
"payload": { "payload": {
"alerts": ts, "alerts": ts,
"count": ts.length, "count": ts.length,
"tornado_possible": tornado_possible, "tornado_possible": tornado_possible,
"considerable_destructive": considerable_destructive "considerable_destructive": considerable_destructive
} },
"topic": tstormTopic
} }
let tornadoWarnMsg = { let tornadoWarnMsg = {
@ -102,22 +113,36 @@ let tornadoWarnMsg = {
"alerts": tornado, "alerts": tornado,
"count": tornado.length, "count": tornado.length,
"confirmed": confirmed "confirmed": confirmed
} },
"topic": tornadoWarnTopic
} }
let tornadoWatchMsg = { let tornadoWatchMsg = {
"payload": { "payload": {
"alerts": tornado_watch, "alerts": tornado_watch,
"count": tornado_watch.length "count": tornado_watch.length
} },
"topic": tornadoWatchTopic
} }
let severeThunderstormWatchMsg = { let severeThunderstormWatchMsg = {
"payload": { "payload": {
"alerts": severe_thunderstorm_watch, "alerts": severe_thunderstorm_watch,
"count": severe_thunderstorm_watch.length "count": severe_thunderstorm_watch.length
},
"topic": severeThunderstormWatchTopic
}
// Create status message for node
let statusMsg = {
"status": {
"fill": "green",
"shape": "dot",
"text": alerts.length + " alerts processed at " + new Date().toLocaleString()
} }
} }
node.send([tstormMsg,tornadoWarnMsg,tornadoWatchMsg,severeThunderstormWatchMsg]) // Send messages to output nodes
node.status({fill:'green',shape:'dot',text:'Alerts Updated'})
node.send([allAlerts,tstormMsg,tornadoWarnMsg,tornadoWatchMsg,severeThunderstormWatchMsg,statusMsg])