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": {
|
"pager": {
|
||||||
"url": "http://127.0.0.1:3000/api/message/advanced",
|
"url": "http://127.0.0.1:3000/api/message/advanced"
|
||||||
"params": {
|
|
||||||
"type": "simple",
|
|
||||||
"routing": {
|
|
||||||
"device": "generic",
|
|
||||||
"connectors": [
|
|
||||||
[
|
|
||||||
"dummy",
|
|
||||||
"1234567"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"germanUmlautSupport": true,
|
"germanUmlautSupport": true,
|
||||||
"regions": [
|
"regions": [
|
||||||
{
|
{
|
||||||
"name": "muc",
|
"name": "Magdeburg",
|
||||||
"active": true,
|
"active": true,
|
||||||
"dwdID": "mxx",
|
"dwdID": "mdx",
|
||||||
"_id": "eyJuYW1lIjoibXVjIiwiYWN0aXZlIjp0cnVlLCJkd2RJRCI6Im14eCIsIl9pZCI6ImV5SnVZVzFsSWpvaWJYVmpJaXdpWVdOMGFYWmxJanAwY25WbExDSmtkMlJKUkNJNkltMTRlQ0lzSWw5cFpDSTZJbVY1U25WWlZ6RnNTV3B2YVdKWVZtcEphWGRwV1ZkT01HRllXbXhKYW5Bd1kyNVdiRXhEU210a01sSktVa05KTmtsdE1UUmxRMGx6U1d3NWNGcERTVFpKYlZZMVUyNVdXbFo2Um5OVFYzQjJZVmRLV1ZadGNFcGhXR1J3VjFaa1QwMUhSbGxYYlhoS1lXNUJkMWt5TlZkaVJYaEVVMjEwYTAxc1NrdFZhMDVLVG10c2RFMVVVbXhSTUd4NlUxZDNOV05HY0VSVFZGcEtZbFpaTVZVeU5WZFhiRm8yVW01T1ZGWXpRakpaVm1STFYxWmFkR05GY0doWFIxSjNWakZhYTFRd01VaFNiR3hZWWxob1MxbFhOVUprTVd0NVRsWmthVkpZYUVWVk1qRXdZVEF4YzFOcmRGWmhNRFZMVkcxMGMyUkZNVlZWYlhoU1RVZDRObFV4WkROT1YwNUhZMFZTVkZaR2NFdFpiRnBhVFZaVmVVNVdaRmhpUm04eVZXMDFUMVpHV1hwUmFrcGFWbTFTVEZZeFdtRmtSMDVHWTBkb1dGSXhTak5XYWtaaFlURlJkMDFWYUZOaVIzaFpXV3hvYjFNeGJGaE9WVXByVFZkME5WUnNXbXRoVmtwWllVVldWazFxUlhkWlZFRjRZekZPY21SR1dtaE5SRlpNVmtjeE1HTXlVa1pOVm14V1lsaG9VMVJWWkRST2JGVjRXa1JPVDFZd05VaFpNRlpUVmtaYVIyTkZkRnBpUm5CaFZGWmFWbVZWTlZkYVJtaHBVbTA0ZVZaWE1ERlVNVnBIVjFod1VtRnJjR0ZXYlRGVFZFWlplRmR0Um10U01EVkhXVEJrYjFkR1NYaFRhazVYWVd0YWFGbFVSbEprTURGV1lVWk9hVkl6YUZwWFYzaHZZakZOZUdKR2FFOVdWWEJ5VkZaa01FNVdVbk5YYlhSb1ZtdHdXbGxWVmxkV2F6RnhVbGhrV2xaRlJqUlpla1pQWTIxU1IxZHRhRTVTUmxwTlZtdGplRTFIVFhsVmExcE9WbTE0VjFsc2FHOVZNVkpXV1hwU1RsWnJOVmxVYTJoclZWWlZkMko2VmtwaWFrRTVTVzR3UFNKOSJ9"
|
"preset": "184d015919c",
|
||||||
},
|
"levels": {
|
||||||
{
|
"wind_storm": 1,
|
||||||
"name": "oberallgaeu",
|
"thunderstorm": 1,
|
||||||
"active": true,
|
"rain1": 2,
|
||||||
"dwdID": "oax",
|
"rain2": 2,
|
||||||
"_id": "eyJuYW1lIjoib2JlcmFsbGdhZXUiLCJhY3RpdmUiOnRydWUsImR3ZElEIjoib2F4IiwiX2lkIjoiZXlKdVlXMWxJam9pYjJKbGNtRnNiR2RoWlhVaUxDSmhZM1JwZG1VaU9uUnlkV1VzSW1SM1pFbEVJam9pYjJGNElpd2lYMmxrSWpvaVpYbEtkVmxYTVd4SmFtOXBZakpLYkdOdFJuTmlSMlJvV2xoVmFVeERTbWhaTTFKd1pHMVZhVTl1VW5sa1YxVnpTVzFTTTFwRmJFVkphbTlwWWpKR05FbHBkMmxZTW14clNXcHZhVnBZYkV0a1ZteFlUVmQ0U21GdE9YQlpha3BMWWtkT2RGSnVUbWxTTWxKdlYyeG9WbUZWZUVSVGJXaGFUVEZLZDFwSE1WWmhWVGwxVlc1c2ExWXhWbnBUVnpGVFRURndSbUpGVmtwaGJUbHdXV3BLUjA1RmJIQmtNbXhaVFcxNGNsTlhjSFpoVm5CWllrVjBhMVp0ZUZsVVZtUTBVMjFHZEU5WVFscGhhelZRVkZWYWMxZEhWa2xVYlVaT1lURndlbGRyV2s5VGJVMTNZa2hTVTJKWVFuSlZha296WlZaa2MxUnJjRTlpVmtwS1ZUSndSMWxXVlhwYVNFSllZVEpvY2xsVVJrOVdiRlpZWWtaQ2FGWllRWGxXTVZwclRUSkdXRmRzU2xGV1JFSndXbXhGT1ZCVFNqa2lmUT09In0="
|
"snow": 1,
|
||||||
|
"ice": 666,
|
||||||
|
"frost": 1,
|
||||||
|
"fog": 1,
|
||||||
|
"other": 0
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
|
@ -193,6 +193,12 @@
|
||||||
{ text: 'Level 1', value: 1 },
|
{ 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() {
|
storeConfig() {
|
||||||
const storeConfig = JSON.parse(JSON.stringify(this.configData))
|
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 => {
|
this.$http.post('/config', storeConfig).then(response => {
|
||||||
})
|
})
|
||||||
.then(this.$http.post('/restart'))
|
.then(this.$http.post('/restart'))
|
||||||
|
|
46
index.js
46
index.js
|
@ -31,6 +31,17 @@ const umlautMapIntl = {
|
||||||
'\u00df': 'ss',
|
'\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) {
|
function replaceUmlaute(str) {
|
||||||
let umlautMap = config.germanUmlautSupport
|
let umlautMap = config.germanUmlautSupport
|
||||||
? umlautMapGermany
|
? umlautMapGermany
|
||||||
|
@ -56,6 +67,33 @@ async function sendPage(preset, payload) {
|
||||||
|
|
||||||
} catch (e) {}
|
} 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() {
|
async function checkDWD() {
|
||||||
for (region of config.regions) {
|
for (region of config.regions) {
|
||||||
if (!region.active) continue
|
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())
|
rssData.entries.sort((a,b) => new Date(b.published).valueOf() - new Date(a.published).valueOf())
|
||||||
if (rssData.entries.length > 0) {
|
if (rssData.entries.length > 0) {
|
||||||
msg = rssData.entries[0].description
|
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('DWD WETTERWARNUNG:', 'DWD:')
|
||||||
msg = msg.replace(' in ', ' ')
|
msg = msg.replace(' in ', ' ')
|
||||||
msg = msg.replace(' von ', '/')
|
msg = msg.replace(' von ', '/')
|
||||||
|
|
Loading…
Add table
Reference in a new issue