added new level system logic
This commit is contained in:
parent
af63266744
commit
965a63a14b
3 changed files with 71 additions and 22 deletions
37
config.json
37
config.json
|
@ -1,32 +1,25 @@
|
|||
{
|
||||
"pager": {
|
||||
"url": "http://127.0.0.1:3000/api/message/advanced",
|
||||
"params": {
|
||||
"type": "simple",
|
||||
"routing": {
|
||||
"device": "generic",
|
||||
"connectors": [
|
||||
[
|
||||
"dummy",
|
||||
"1234567"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
"url": "http://127.0.0.1:3000/api/message/advanced"
|
||||
},
|
||||
"germanUmlautSupport": true,
|
||||
"regions": [
|
||||
{
|
||||
"name": "muc",
|
||||
"name": "Magdeburg",
|
||||
"active": true,
|
||||
"dwdID": "mxx",
|
||||
"_id": "eyJuYW1lIjoibXVjIiwiYWN0aXZlIjp0cnVlLCJkd2RJRCI6Im14eCIsIl9pZCI6ImV5SnVZVzFsSWpvaWJYVmpJaXdpWVdOMGFYWmxJanAwY25WbExDSmtkMlJKUkNJNkltMTRlQ0lzSWw5cFpDSTZJbVY1U25WWlZ6RnNTV3B2YVdKWVZtcEphWGRwV1ZkT01HRllXbXhKYW5Bd1kyNVdiRXhEU210a01sSktVa05KTmtsdE1UUmxRMGx6U1d3NWNGcERTVFpKYlZZMVUyNVdXbFo2Um5OVFYzQjJZVmRLV1ZadGNFcGhXR1J3VjFaa1QwMUhSbGxYYlhoS1lXNUJkMWt5TlZkaVJYaEVVMjEwYTAxc1NrdFZhMDVLVG10c2RFMVVVbXhSTUd4NlUxZDNOV05HY0VSVFZGcEtZbFpaTVZVeU5WZFhiRm8yVW01T1ZGWXpRakpaVm1STFYxWmFkR05GY0doWFIxSjNWakZhYTFRd01VaFNiR3hZWWxob1MxbFhOVUprTVd0NVRsWmthVkpZYUVWVk1qRXdZVEF4YzFOcmRGWmhNRFZMVkcxMGMyUkZNVlZWYlhoU1RVZDRObFV4WkROT1YwNUhZMFZTVkZaR2NFdFpiRnBhVFZaVmVVNVdaRmhpUm04eVZXMDFUMVpHV1hwUmFrcGFWbTFTVEZZeFdtRmtSMDVHWTBkb1dGSXhTak5XYWtaaFlURlJkMDFWYUZOaVIzaFpXV3hvYjFNeGJGaE9WVXByVFZkME5WUnNXbXRoVmtwWllVVldWazFxUlhkWlZFRjRZekZPY21SR1dtaE5SRlpNVmtjeE1HTXlVa1pOVm14V1lsaG9VMVJWWkRST2JGVjRXa1JPVDFZd05VaFpNRlpUVmtaYVIyTkZkRnBpUm5CaFZGWmFWbVZWTlZkYVJtaHBVbTA0ZVZaWE1ERlVNVnBIVjFod1VtRnJjR0ZXYlRGVFZFWlplRmR0Um10U01EVkhXVEJrYjFkR1NYaFRhazVYWVd0YWFGbFVSbEprTURGV1lVWk9hVkl6YUZwWFYzaHZZakZOZUdKR2FFOVdWWEJ5VkZaa01FNVdVbk5YYlhSb1ZtdHdXbGxWVmxkV2F6RnhVbGhrV2xaRlJqUlpla1pQWTIxU1IxZHRhRTVTUmxwTlZtdGplRTFIVFhsVmExcE9WbTE0VjFsc2FHOVZNVkpXV1hwU1RsWnJOVmxVYTJoclZWWlZkMko2VmtwaWFrRTVTVzR3UFNKOSJ9"
|
||||
},
|
||||
{
|
||||
"name": "oberallgaeu",
|
||||
"active": true,
|
||||
"dwdID": "oax",
|
||||
"_id": "eyJuYW1lIjoib2JlcmFsbGdhZXUiLCJhY3RpdmUiOnRydWUsImR3ZElEIjoib2F4IiwiX2lkIjoiZXlKdVlXMWxJam9pYjJKbGNtRnNiR2RoWlhVaUxDSmhZM1JwZG1VaU9uUnlkV1VzSW1SM1pFbEVJam9pYjJGNElpd2lYMmxrSWpvaVpYbEtkVmxYTVd4SmFtOXBZakpLYkdOdFJuTmlSMlJvV2xoVmFVeERTbWhaTTFKd1pHMVZhVTl1VW5sa1YxVnpTVzFTTTFwRmJFVkphbTlwWWpKR05FbHBkMmxZTW14clNXcHZhVnBZYkV0a1ZteFlUVmQ0U21GdE9YQlpha3BMWWtkT2RGSnVUbWxTTWxKdlYyeG9WbUZWZUVSVGJXaGFUVEZLZDFwSE1WWmhWVGwxVlc1c2ExWXhWbnBUVnpGVFRURndSbUpGVmtwaGJUbHdXV3BLUjA1RmJIQmtNbXhaVFcxNGNsTlhjSFpoVm5CWllrVjBhMVp0ZUZsVVZtUTBVMjFHZEU5WVFscGhhelZRVkZWYWMxZEhWa2xVYlVaT1lURndlbGRyV2s5VGJVMTNZa2hTVTJKWVFuSlZha296WlZaa2MxUnJjRTlpVmtwS1ZUSndSMWxXVlhwYVNFSllZVEpvY2xsVVJrOVdiRlpZWWtaQ2FGWllRWGxXTVZwclRUSkdXRmRzU2xGV1JFSndXbXhGT1ZCVFNqa2lmUT09In0="
|
||||
"dwdID": "mdx",
|
||||
"preset": "184d015919c",
|
||||
"levels": {
|
||||
"wind_storm": 1,
|
||||
"thunderstorm": 1,
|
||||
"rain1": 2,
|
||||
"rain2": 2,
|
||||
"snow": 1,
|
||||
"ice": 666,
|
||||
"frost": 1,
|
||||
"fog": 1,
|
||||
"other": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -193,6 +193,12 @@
|
|||
{ text: 'Level 1', value: 1 },
|
||||
]
|
||||
},
|
||||
{ n: 1, k: 'Andere Warnmeldungen', u: 'other',
|
||||
i: [
|
||||
{ text: 'ignore', value: 666 },
|
||||
{ text: 'allow', value: 0 },
|
||||
]
|
||||
},
|
||||
],
|
||||
}
|
||||
},
|
||||
|
@ -224,6 +230,10 @@
|
|||
},
|
||||
storeConfig() {
|
||||
const storeConfig = JSON.parse(JSON.stringify(this.configData))
|
||||
storeConfig.regions = storeConfig.regions.map((x) => {
|
||||
delete x._id
|
||||
return x
|
||||
})
|
||||
this.$http.post('/config', storeConfig).then(response => {
|
||||
})
|
||||
.then(this.$http.post('/restart'))
|
||||
|
|
46
index.js
46
index.js
|
@ -31,6 +31,17 @@ const umlautMapIntl = {
|
|||
'\u00df': 'ss',
|
||||
}
|
||||
|
||||
function itnlUmlaute(str) {
|
||||
let umlautMap = umlautMapIntl
|
||||
return str
|
||||
.replace(/[\u00dc|\u00c4|\u00d6][a-z]/g, (a) => {
|
||||
const big = umlautMap[a.slice(0, 1)];
|
||||
return big.charAt(0) + big.charAt(1).toLowerCase() + a.slice(1);
|
||||
})
|
||||
.replace(new RegExp('['+Object.keys(umlautMap).join('|')+']',"g"),
|
||||
(a) => umlautMapIntl[a]
|
||||
);
|
||||
}
|
||||
function replaceUmlaute(str) {
|
||||
let umlautMap = config.germanUmlautSupport
|
||||
? umlautMapGermany
|
||||
|
@ -56,6 +67,33 @@ async function sendPage(preset, payload) {
|
|||
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
function analyzeCategory(txt) {
|
||||
//console.log('analyzing text', txt)
|
||||
|
||||
if (txt.indexOf('WINDBOEN')>-1) return 'wind_storm'
|
||||
if (txt.indexOf('STURMBOEN')>-1) return 'wind_storm'
|
||||
if (txt.indexOf('ORKANBOEN')>-1) return 'wind_storm'
|
||||
|
||||
if (txt.indexOf('STARKREGEN')>-1) return 'rain1'
|
||||
if (txt.indexOf('DAUERREGEN')>-1) return 'rain2'
|
||||
|
||||
if (txt.indexOf('GEWITTER')>-1) return 'thunderstorm'
|
||||
|
||||
if (txt.indexOf('SCHNEE')>-1) return 'snow'
|
||||
if (txt.indexOf('FROST')>-1) return 'frost'
|
||||
if (txt.indexOf('GLATTE')>-1) return 'ice'
|
||||
if (txt.indexOf('NEBEL')>-1) return 'fog'
|
||||
return 'none'
|
||||
}
|
||||
function analyzeLevel(txt) {
|
||||
if (txt.indexOf('STUFE 1 VON ')>-1) return 1
|
||||
if (txt.indexOf('STUFE 2 VON ')>-1) return 2
|
||||
if (txt.indexOf('STUFE 3 VON ')>-1) return 3
|
||||
if (txt.indexOf('STUFE 4 VON ')>-1) return 4
|
||||
return 0
|
||||
}
|
||||
|
||||
async function checkDWD() {
|
||||
for (region of config.regions) {
|
||||
if (!region.active) continue
|
||||
|
@ -65,6 +103,14 @@ async function checkDWD() {
|
|||
rssData.entries.sort((a,b) => new Date(b.published).valueOf() - new Date(a.published).valueOf())
|
||||
if (rssData.entries.length > 0) {
|
||||
msg = rssData.entries[0].description
|
||||
const msgCategory = analyzeCategory(itnlUmlaute(msg.toUpperCase()))
|
||||
const msgLevel = analyzeLevel(itnlUmlaute(msg.toUpperCase()))
|
||||
//console.log('type', msgCategory, 'level', msgLevel)
|
||||
const msgLevelTrigger = !!region.levels[msgCategory]
|
||||
? region.levels[msgCategory]
|
||||
: 0
|
||||
//console.log(msgLevelTrigger, 'is the trigger level for', msgCategory)
|
||||
if (msgLevel >= msgLevelTrigger) { } else continue // ignore the stuff we want to ignore
|
||||
msg = msg.replace('DWD WETTERWARNUNG:', 'DWD:')
|
||||
msg = msg.replace(' in ', ' ')
|
||||
msg = msg.replace(' von ', '/')
|
||||
|
|
Loading…
Add table
Reference in a new issue