added new level system logic

master
cheetah 2 years ago
parent af63266744
commit 965a63a14b

@ -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'))

@ -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…
Cancel
Save