Proof of concept als javascript …
! ```
`var debuglevel = 4;
var debugchannel = 'info';
! function dwmlog( message, level, channel) {
if (typeof channel === 'undefined') {
channel = debugchannel;
}
if ( typeof level === 'undefined')
{
level = debuglevel;
}
if ( debuglevel >= level ) {
log (message, channel );
}
}
! var AdapterId = "javascript.0";
var ChannelId = "dwd";
! var forceInitStates = false;
var numOfWarnings = 3;
! var url='https://maps.dwd.de/geoserver/dwd/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=dwd:Warnungen_Gemeinden&outputFormat=application/json&CQL_FILTER=WARNCELLID IN ('XXXAREAXXX')';
var warncellid = 809175127;
! url=url.replace("XXXAREAXXX",warncellid);
! function createStates(n){
for (var i=0; i<n; i++)/{/createstate(channelid+".warning."+i+".name","",forceinitstates,{type:/'string'});/createstate(channelid+".warning."+i+".text","",forceinitstates,{type:/createstate(channelid+".warning."+i+".headline","",forceinitstates,{type:/createstate(channelid+".warning."+i+".description","",forceinitstates,{type:/createstate(channelid+".warning."+i+".object","",forceinitstates,{type:/createstate(channelid+".warning."+i+".begin",0,forceinitstates,{type:/'number'});/createstate(channelid+".warning."+i+".end",0,forceinitstates,{type:/createstate(channelid+".warning."+i+".severity",0,forceinitstates,{min:0,/max:/4,/type:/'number',/states:["none","minor","moderate","severe","extreme"]});/createstate(channelid+".warning."+i+".urgency",0,forceinitstates,{min:0,/2,/states:["n/a","future","immediate"]});/createstate(channelid+".warning."+i+".category",0,forceinitstates,{min:0,/a","health","met"]});/createstate(channelid+".warning."+i+".eventcode",0,forceinitstates,{type:/createstate(channelid+".warning."+i+".color",0,forceinitstates,{type:/createstate(channelid+".warning."+i+".htmllong","",forceinitstates,{type:/}/**/parse/cap/profile/*/according/to/https:/werdis.dwd.de/tools/cap-dwd-profil.pdf/function/processcap(w)/this.name="w.NAME;" this.begin="new" date(w.onset).gettime();/this.end="new" date(w.expires).gettime();/this.text="w.EVENT;" this.headline="w.HEADLINE;" this.description="w.DESCRIPTION;" this.instruction="w.INSTRUCTION;" this.object="JSON.stringify(w);" switch/(w.severity)/case/"minor":/this.severity="1;" break;/"moderate":/"severe":/"extreme":/default:/(w.urgency)/"future":/this.urgency="1;" "immediate":/(w.category)/"health":/this.category="1;" "met":/cols="w.EC_AREA_COLOR.split("" ");/this.color="cols[0]*65536+cols[1]*256+cols[2]*1;" this.eventcode="parseInt(w.EC_II);" this.htmllong="<div style="background: #" +this.color.tostring(16)+'"="">';
this.HTMLlong += '
! ### '+this.headline+'
! ';
this.HTMLlong += '
! Zeitraum von: '+formatDate(this.begin,"DD.MM.YYYY hh:mm")+' bis: '+formatDate(this.end,"DD.MM.YYYY hh:mm")+"
! ";
this.HTMLlong += '
! '+this.description+'
! ';
this.HTMLlong += w.SENDERNAME;
}
! function processData(data) {
if (!data) {
return;
}
var thedata = JSON.parse(data);
var warnings= [];
var warn = null;
if (thedata.totalFeatures>0) {
for (i=0; i<thedata.totalfeatures; 3/10/i++)/{/warn="new" processcap(thedata.features[i].properties);/dwmlog/(json.stringify(warn),4);/warnings.push(warn);/}/warnings.sort(function(a,b){/var/asort="a.urgency*1000+a.category*100+a.severity;" bsort="b.urgency*1000+b.category*100+b.severity;" return/bsort-asort;/});/dwmlog(json.stringify(warnings));/for/(i="0;" i<numofwarnings;/if/(i<warnings.length)/setstate(channelid+".warning."+i+".name",warnings[i].name);/setstate(channelid+".warning."+i+".text",warnings[i].text);/setstate(channelid+".warning."+i+".headline",warnings[i].headline);/setstate(channelid+".warning."+i+".description",warnings[i].description);/setstate(channelid+".warning."+i+".object",warnings[i].object);/setstate(channelid+".warning."+i+".begin",warnings[i].begin);/setstate(channelid+".warning."+i+".end",warnings[i].end);/setstate(channelid+".warning."+i+".severity",warnings[i].severity);/setstate(channelid+".warning."+i+".urgency",warnings[i].urgency);/setstate(channelid+".warning."+i+".category",warnings[i].category);/setstate(channelid+".warning."+i+".eventcode",warnings[i].eventcode);/setstate(channelid+".warning."+i+".color",warnings[i].color);/setstate(channelid+".warning."+i+".htmllong",warnings[i].htmllong);/else/setstate(channelid+".warning."+i+".name","");/setstate(channelid+".warning."+i+".text","");/setstate(channelid+".warning."+i+".headline","");/setstate(channelid+".warning."+i+".description","");/setstate(channelid+".warning."+i+".object","{}");/setstate(channelid+".warning."+i+".begin",0);/setstate(channelid+".warning."+i+".end",0);/setstate(channelid+".warning."+i+".severity",0);/setstate(channelid+".warning."+i+".urgency",0);/setstate(channelid+".warning."+i+".category",0);/setstate(channelid+".warning."+i+".eventcode",0);/setstate(channelid+".warning."+i+".color",0);/setstate(channelid+".warning."+i+".htmllong","");/function/requestdwd(){/request="require('request');" request({/uri:/url,/method:/"get",/timeout:/10000,/followredirect:/true,/maxredirects:/},/function(error,/response,/body)/dwmlog("dwd/error/"/+/error,2);/response:/json.stringify(response),4);/body:/body,4);/(error="==" null)/processdata(body);/createstates(numofwarnings);/requestdwd();/schedule/("*/*/*",/function(){/<e=""></thedata.totalfeatures;></n;>`
! ... leider sind hier ein Teil der Datenpunkte (severity, urgency, category) ... ich sag mal, eingeschränkt kompatibel.
! Andererseits fände ich eh hier eine Struktur besser, die mehrere Warncell-Id's (Also Gemeinden) unterstützt, man muss "nur" die Warncellid mit einer Komma-Separierten Liste übergeben ...
! Ich grübel mal weiter ...[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]