Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. UWZ Script für Europa / Österreich

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    UWZ Script für Europa / Österreich

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      muckel last edited by

      Hat noch jemand dieses Script in richtiger Form und könnte es hochladen

      https://forum.iobroker.net/topic/7167/unwetterwarnung-für-österreich-bzw-europa/41

      Danke im Voraus

      Liebe Grüße

      1 Reply Last reply Reply Quote 0
      • sigi234
        sigi234 Forum Testing Most Active last edited by

        Skript_UWZ.txt

        1 Reply Last reply Reply Quote 1
        • Nashra
          Nashra Most Active Forum Testing last edited by Nashra

          Müßte dieses sein...

          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."+instance;
          var ChannelId = "UWZ";
          
          var forceInitStates = false;
          var numOfWarnings = 3;
          
          var url='http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=XXXAREAXXX';
          
          
          /********************* Hier die Warnzellen-Id's eintragen *****************************/
          var warncellid = ['UWZDE12345','UWZDE67890'];
          /**************************************************************************************/
          
          
          var UWZTypesArray=["n/a","unbekannt","Sturm/Orkan","Schneefall","Starkregen","Extremfrost","Waldbrandgefahr","Gewitter","Glätte","Hitze","Glatteisregen","Bodenfrost"];
          
          function createStates(n){
              var AreaChannelID = null;
              
              for (var j=0; j<warncellid.length; j++) {
                  AreaChannelId=ChannelId+"."+warncellid[j];        
                  for (var i=0; i<n; i++) {
                      createState(AreaChannelId+".warning."+i+".ShortText","",forceInitStates,{type: 'string'});
                      createState(AreaChannelId+".warning."+i+".LongText","",forceInitStates,{type: 'string'});
                      createState(AreaChannelId+".warning."+i+".object","",forceInitStates,{type: 'string'});
                      createState(AreaChannelId+".warning."+i+".begin","",forceInitStates,{type: 'string'});
                      createState(AreaChannelId+".warning."+i+".end","",forceInitStates,{type: 'string'});
                      createState(AreaChannelId+".warning."+i+".severity",0,forceInitStates,{type: 'number'});
                      createState(AreaChannelId+".warning."+i+".type",0,forceInitStates,{min:0, max:11, type: 'number',states:UWZTypesArray});
                      createState(AreaChannelId+".warning."+i+".uwzLevel",0,forceInitStates,{min:0, max:5, type: 'number'});
                      createState(AreaChannelId+".warning."+i+".uwzColor",0,forceInitStates,{type:'number'});
                      createState(AreaChannelId+".warning."+i+".HTMLShort","",forceInitStates,{type: 'string'});
                      createState(AreaChannelId+".warning."+i+".HTMLLong","",forceInitStates,{type: 'string'});
                  }
              }
          }
          
          function getUWZLevel (warnName){
              var result = -1; // -1 is an error!
              var alert = warnName.split("_");
              var colors = ["green","darkgreen","yellow","orange","red","violet"];
              
              if (alert[0]=="notice") { result = 1; }
              else if (alert[1] == "forewarn") { result = 2; }
              else {
                  result = colors.indexOf(alert[2]);
              }
              return result;
          }
          
          function getUWZUrgency (warnName){
              var result = 0;
              
              var alert = warnName.split("_");
              if (alert[1] == "forewarn") { 
                  result = 1; 
              }
              else {
                  result = 2; // immediate;
              }
              return result;
          }
          
          function getLevelColor(uwzLevel) {
              var uwzColor = [
                  0x00ff00, // 0 - Grün
                  0x009b00, // 1 - Dunkelgrün
                  0xffff00, // 2 - Gelb Wetterwarnungen (Stufe 1)
                  0xffb400, // 3 - Orange Warnungen vor markantem Wetter (Stufe 2)
                  0xff0000, // 4 - Rot Unwetterwarnungen (Stufe 3)
                  0xff00ff, // 5 - Violett Warnungen vor extremem Unwetter (Stufe 4)
              ];
              if (uwzLevel>=0 && uwzLevel<=5)
                  return uwzColor[uwzLevel];
              else
                  return 0;
          }
          
          function createHTMLShort(w){
              var html = '<div style="background: #'+w.uwzColor.toString(16)+'" border:"10px">';
              
              var theData = JSON.parse(w.object);
              
              html += '<h3>';
              if (w.uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
              html += UWZTypesArray[w.type];
              html +="</h3>";
              html += "<p>Zeitraum von "+formatDate(new Date(theData.dtgStart*1000),"WW, DD. OO YYYY hh:mm")+" Uhr bis "+formatDate(new Date(theData.dtgEnd*1000),"WW, DD. OO YYYY hh:mm")+" Uhr </p>";
              html += '<p>'+w.ShortText+'</p>';
              html += "</div>";
              return html;
          }
          
          function createHTMLLong(w){
              var html = '<div style="background: #'+w.uwzColor.toString(16)+'" border:"10px">';
              
              var theData = JSON.parse(w.object);
              
              html += '<h3>';
              if (w.uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
              html += UWZTypesArray[w.type];
              html +="</h3>";
              html += "<p>Zeitraum von "+formatDate(new Date(theData.dtgStart*1000),"WW, DD. OO YYYY hh:mm")+" Uhr bis "+formatDate(new Date(theData.dtgEnd*1000),"WW, DD. OO YYYY hh:mm")+" Uhr </p>";
              html += '<p>'+w.LongText+'</p>';
              html += "</div>";
              return html;    
          }
          
          function processResultEntry(w) {
              this.object = JSON.stringify(w);
          
              this.begin=formatDate(new Date(w.dtgStart*1000),"DD.MM.YYYY hh:mm");
              this.end=formatDate(new Date(w.dtgEnd*1000),"DD.MM.YYYY hh:mm");
              
              // dwmlog (formatDate(this.begin,"DD.MM.YYYY hh:mm"),4);
              // dwmlog (formatDate(this.end,"DD.MM.YYYY hh:mm"),4);
              
              this.LongText = w.payload.translationsLongText.DE;
              this.ShortText = w.payload.translationsShortText.DE;
              
              this.severity = w.severity;
              this.type = w.type;
              this.uwzLevel = getUWZLevel(w.payload.levelName);
              this.uwzUrgency = getUWZUrgency(w.payload.levelName);
              this.uwzColor = getLevelColor(this.uwzLevel);
              var x = this;
              this.HTMLShort = createHTMLShort(x);
              this.HTMLLong  = createHTMLLong(x);
          }
          
          function processData(Area,data) {
              if (!data) {
                 return;
              }
              var AreaChannelId=ChannelId+"."+Area;
              
              var thedata = JSON.parse(data);
              var warnings= [];
              
              if (thedata.results.length>0) {
                  for (i=0; i<thedata.results.length; i++) {
                      warnings.push(new processResultEntry(thedata.results[i]));
                  }
              }
              
              warnings.sort(function(a,b){
                  var asort = a.severity; 
                  var bsort = b.severity;
                  
                  return bsort-asort;
              });
              
              
              dwmlog(JSON.stringify(warnings));
              
              for (i=0; i<numOfWarnings; i++) {
                  if (i<warnings.length) {
                      setState(AreaChannelId+".warning."+i+".LongText",warnings[i].LongText);
                      setState(AreaChannelId+".warning."+i+".ShortText",warnings[i].ShortText);
                      setState(AreaChannelId+".warning."+i+".object",warnings[i].object);
                      setState(AreaChannelId+".warning."+i+".begin",warnings[i].begin);
                      setState(AreaChannelId+".warning."+i+".end",warnings[i].end);
                      setState(AreaChannelId+".warning."+i+".severity",warnings[i].severity);
                      setState(AreaChannelId+".warning."+i+".type",warnings[i].type);
                      setState(AreaChannelId+".warning."+i+".uwzLevel",warnings[i].uwzLevel);
                      setState(AreaChannelId+".warning."+i+".uwzColor",warnings[i].uwzColor);
                      setState(AreaChannelId+".warning."+i+".HTMLShort",warnings[i].HTMLShort);
                      setState(AreaChannelId+".warning."+i+".HTMLLong",warnings[i].HTMLLong);
                  } else {
                      setState(AreaChannelId+".warning."+i+".LongText","");
                      setState(AreaChannelId+".warning."+i+".ShortText","");
                      setState(AreaChannelId+".warning."+i+".object","{}");
                      setState(AreaChannelId+".warning."+i+".begin","");
                      setState(AreaChannelId+".warning."+i+".end","");
                      setState(AreaChannelId+".warning."+i+".severity",0);
                      setState(AreaChannelId+".warning."+i+".type",0);
                      setState(AreaChannelId+".warning."+i+".uwzLevel",0);
                      setState(AreaChannelId+".warning."+i+".uwzColor",0);
                      setState(AreaChannelId+".warning."+i+".HTMLShort","");
                      setState(AreaChannelId+".warning."+i+".HTMLLong","");
                }
              }
          }
          
          function getAreaFromURI(uri) {
              var searchstr = "&areaID=";
              var n = uri.search(searchstr);
              var result = uri.slice(n+searchstr.length,uri.length);
              return result;
          }
          
          createStates(numOfWarnings);
          // processData(jsond2);
          
          var request = require('request');
          schedule ("*/30 * * * *", function(){
              for (var i=0; i<warncellid.length; i++) {
                      request({  
                          uri: url.replace("XXXAREAXXX",warncellid[i]),
                          method: "GET",
                          timeout: 10000,
                          followRedirect: true,
                          maxRedirects: 10
                      }, function(error, response, body) {
                          // dwmlog("UWZ Error" + error,2);
                          // dwmlog("UWZ Response: " + JSON.stringify(response),4);
                          dwmlog("AREA: "+getAreaFromURI(response.request.uri.href),4);
                          dwmlog("UWZ Body: " + body,4);
                          if (response.statusCode == 200) {
                              processData(getAreaFromURI(response.request.uri.href),body);
                          }
                      });    
              }
          });
          
          

          Da war Sigi234 schneller 🙂

          1 Reply Last reply Reply Quote 0
          • M
            muckel last edited by

            Danke, danke, danke! 🙂

            Nashra 1 Reply Last reply Reply Quote 0
            • Nashra
              Nashra Most Active Forum Testing @muckel last edited by

              @muckel sagte in UWZ Script für Europa / Österreich:

              Danke, danke, danke! 🙂

              Bitte, aber das Ganze scheint nicht mehr zu funktionieren, sie hier Link Text

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              838
              Online

              31.8k
              Users

              80.0k
              Topics

              1.3m
              Posts

              3
              5
              846
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo