Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
package-lock.json
.vscode/launch.json
node_modules

package-lock.json
.vscode/launch.json
27 changes: 26 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ npm install .
},
"timers": {
"blitzCollection": 600000, // how often should we aggregate thunder data for evaluation
"pollWeatherAlerts": 600000 // how often should we download weather altert data
"meteoAlerts": 600000, // how often should we download weather altert data
"meteoAlerts": 600000 // how often should we weather alterts checked
},
"blitzArea": { // thunder reporting area. if there is storm detected inside, report it
"minLat": 47.51,
Expand All @@ -47,6 +48,30 @@ npm install .
"SW": "South-West",
"W": "West",
"NW": "North-West"
},
"meteoAlerts": { // meteo alarm config sections
"enabled": true, // enables or disables meteo alarm
"timeout": 60, // how long should the warning be muted after sending, in minutes
"severityFilter": ["severe", "extreme"], // severity levels which will be send
"certaintyFilter": ["likely", "observed"], // certainty levels which will be send
"url": "https://feeds.meteoalarm.org/feeds/meteoalarm-legacy-atom-slovakia", // atom feed with warnings
"regions": [
"Bratislava" // list of monitored regions/ areas
],
"severity": { // severity translations
"unknown": "Unknown",
"minor": "Minor",
"moderate": "Moderate",
"severe": "Severe",
"extreme ": "Extreme"
},
"certainty": { // ceverity translations
"observed": "Observed",
"likely": "Likely (> 50%)",
"possible": "Possible (<= 50%)",
"unlikely": "Unlikely (~ 0%)",
"unknown": "Unknown"
}
}
}
```
Expand Down
15 changes: 12 additions & 3 deletions config.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,14 @@
"meteoAlerts": {
"enabled": true,
"timeout": 180,
"severityFilter": [
"severe",
"extreme"
],
"certaintyFilter": [
"likely",
"observed"
],
"url": "https://feeds.meteoalarm.org/feeds/meteoalarm-legacy-atom-slovakia",
"regions": [
"Bratislava"
Expand All @@ -43,7 +51,7 @@
"minor": "Minor",
"moderate": "Moderate",
"severe": "Severe",
"extreme ": "Extreme"
"extreme": "Extreme"
},
"certainty": {
"observed": "Observed",
Expand All @@ -58,15 +66,16 @@
"thunderstorm": "Thunderstorm",
"fog": "Fog",
"hightemperature": "High Temperature",
"lowtemperature": "Low Temperature",
"lowtemperature": "Low Temperature",
"coastalevent": "Coastal Event",
"forestfire": "Forest Fire",
"avalanche": "Avalanche",
"rain": "Rain",
"flood": "Flood ",
"rainflood": "Rain Flood",
"marinehazard": "Marine Hazard ",
"drought": "Drought "
"drought": "Drought ",
"icing": "Icing "
}
}
}
12 changes: 7 additions & 5 deletions index.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -108,14 +108,16 @@ async function checkMeteoAlerts() {
if (endTime < Date.now())
return;

if (meteoAlerts[item.identifier])
if (meteoAlerts[item.identifier]
|| !config.meteoAlerts.certaintyFilter.includes(item.certainty.toLowerCase())
|| !config.meteoAlerts.severityFilter.includes(item.severity.toLowerCase()))
return;

warnigs.push({
id: item.identifier,
region: item.area,
certainty: item.certainty,
severity: item.severity,
certainty: item.certainty.toLowerCase(),
severity: item.severity.toLowerCase(),
event: parseEvent(item.event),
start: item.start,
end: item.end
Expand All @@ -132,8 +134,8 @@ async function checkMeteoAlerts() {
start: formatDate(item.start),
end: formatDate(item.end),
event: config.meteoAlerts.events[item.event] ?? item.event,
severity: config.meteoAlerts.severity[item.severity.toLowerCase()],
certainty: config.meteoAlerts.certainty[item.certainty.toLowerCase()]
severity: config.meteoAlerts.severity[item.severity],
certainty: config.meteoAlerts.certainty[item.certainty]
});
sendAlert(message, channels.weather);
meteoAlerts[item.id] = Date.now();
Expand Down