Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Script] DWD/UWZ/NINA Warnungen als Push/Sprachnachrichten

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Script] DWD/UWZ/NINA Warnungen als Push/Sprachnachrichten

    This topic has been deleted. Only users with topic management privileges can see it.
    • crunchip
      crunchip Forum Testing Most Active @ticaki last edited by crunchip

      @ticaki sagte in [Script] DWD/UWZ/NINA Warnungen als Push/Sprachnachrichten:

      Die werden eigentlich rausgefiltert. Also Warnung dann 1 x wurde verlängert - dann nix mehr

      so funktioniert es bei mir, ohne Probleme, bzw wenn gravierende Änderungen an der Warnung, dann kommt eine Neue, dann aber auch im Anhang ingesamt 1/2/3...gültige Warnungen

      1 Reply Last reply Reply Quote 0
      • D4vE
        D4vE last edited by

        @ticaki sry aber ich muss mich nochmals melden hast du nochmal geguckt an was das genau liegt hab wieder ein haufen nachrichten bekommen 😞

        photo_2021-09-01_11-05-58.jpg

        crunchip 1 Reply Last reply Reply Quote 0
        • crunchip
          crunchip Forum Testing Most Active @D4vE last edited by

          @d4ve das mit der Meldung Nebel....wurde verlängert....hatte ich heute auch

          D4vE T 2 Replies Last reply Reply Quote 0
          • D4vE
            D4vE @crunchip last edited by

            @crunchip ja aber es ja nicht sinn der sache das man 100 nachrichten bekommt! es steht ja da (von bis) das reicht auch ich hatte darmals eine andere version da war das nicht ^^ ich weiß nur nicht mehr welche es war 🙂

            T 1 Reply Last reply Reply Quote 0
            • T
              ticaki Developer @D4vE last edited by ticaki

              @d4ve sagte in [Script] DWD/UWZ/NINA Warnungen als Push/Sprachnachrichten:

              @crunchip ja aber es ja nicht sinn der sache das man 100 nachrichten bekommt! es steht ja da (von bis) das reicht auch ich hatte darmals eine andere version da war das nicht ^^ ich weiß nur nicht mehr welche es war 🙂

              Das wird in allen Versionen so sein.

              Ich schreibe es nochmal damit du es vielleicht verstehst: DWD schickt dir 100 Warnungen und die werden rausgefiltert nur hier klappt das aus einem mir nicht bekannten Grund nicht. Du wirst keine alte Version dieses Skript finden das es besser macht, nur viel schlechter.

              Du kannst das halt ganz abschalten im Skript und das ist am einfachsten wenn du folgende Zeile änderst:

              w.repeatCounter += w2.repeatCounter + 1;
              

              in

              w.repeatCounter += w2.repeatCounter + 2;
              

              Damit gibt es kein verlängern mehr.

              und am besten gleich auch noch:

              if (w.repeatCounter > 30 ) {
              

              in

              if (w.repeatCounter > 300 ) {
              

              Ich hab in meiner Version das minimum Warnlevel mal gesenkt vielleicht bekomme ich den Fehler dann auch.

              D4vE 1 Reply Last reply Reply Quote 0
              • D4vE
                D4vE @ticaki last edited by

                @ticaki said in [Script] DWD/UWZ/NINA Warnungen als Push/Sprachnachrichten:

                w.repeatCounter

                Moin wo genau muss ich das ändern? hab keine ahnung davon 😉 ich sende dir mal das was ich früher genutzt habe und da hatte ich das nicht 🙂

                T 1 Reply Last reply Reply Quote 0
                • T
                  ticaki Developer @D4vE last edited by

                  @d4ve
                  du must das 1. suchen und die Zeile durch das 2. (in) ersetzen

                  D4vE 2 Replies Last reply Reply Quote 0
                  • D4vE
                    D4vE @ticaki last edited by D4vE

                    //Version 13.6

                    //nachbearbeitet von ticaki

                    1 Reply Last reply Reply Quote 0
                    • D4vE
                      D4vE @ticaki last edited by

                      @ticaki 22:27:16.803 error javascript.0 (126) script.js.common.JS.Wetterwarnung compile failed: at script.js.common.JS.Wetterwarnung:2381

                      kommt nun

                      T 1 Reply Last reply Reply Quote 0
                      • T
                        ticaki Developer @D4vE last edited by

                        @d4ve
                        dann hast du nicht die Zeile ersetzt

                        D4vE 1 Reply Last reply Reply Quote 0
                        • D4vE
                          D4vE @ticaki last edited by D4vE

                          @ticaki ok hab es nochmal gemacht nun kommt kein fehler was genau hab ich da nun geändert lieben dank

                                          w.repeatCounter += w2.repeatCounter + 2;
                                      }
                                      if (w.repeatCounter > 300 ) {
                          T 1 Reply Last reply Reply Quote 0
                          • T
                            ticaki Developer @D4vE last edited by ticaki

                            @d4ve sagte in [Script] DWD/UWZ/NINA Warnungen als Push/Sprachnachrichten:

                            @ticaki ... was genau hab ich da nun geändert lieben dank

                            Die erste Änderung sorgt dafür das der Wiederholungszähler jetzt 0, 2, 4 usw hochzählt. der Spruch mit der Verlängerung kommt jedoch ausschließlich wenn der Zähler bei 1 steht.

                            Die 2. Änderung sorgt dafür das der Zähler "praktisch nie" zurück gesetzt wird. Der ist normalerweise so eingestellt das nach 30 wiederholungen die Warnung erneut gesendet wird. Bei einem refresh von 10 Minuten im DWD Adapter und mit durchgehender Erneuerung der Warnung ist das alle 5 Stunden. Mit der Änderung aus 1. wären es nur 2:30h mit der Änderung aus 2. 25 Stunden.

                            D4vE 1 Reply Last reply Reply Quote 0
                            • D4vE
                              D4vE @ticaki last edited by

                              @ticaki Danke nochmal nun geht alles! gestern nacht um 02:45 kamm eine meldung und um 08:00 die 2 meldung das es aufgehoben wurde!
                              somit ist das teil PERFEKT! danke für die gute Arbeit...

                              1 Reply Last reply Reply Quote 0
                              • T
                                ticaki Developer last edited by ticaki

                                Hallo,

                                ich hab das UWZ Skript auf Axios umgestellt, wäre nett wenn jemand testet, ob es Probleme gibt.

                                // Version 1.04
                                // Author: dwm
                                // Änderungen ticaki
                                // 1.01 debuglevel keine Ausgabe bei 1;
                                // 1.02 let und variable "Fehler" behoben (wurde als Syntaxfehler angezeigt)
                                // 1.03 logausgabe fehler bei keiner Verbindung behoben
                                // 1.03 schedule gegen setInterval() getauscht.
                                // 1.04 umgestellt auf Axios.
                                
                                var intervalMinutes = 5;
                                var debuglevel = 4;
                                var debugchannel = 'info';
                                
                                const axios = require('axios');
                                
                                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 = 7;
                                
                                var url='http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=XXXAREAXXX';
                                
                                
                                /********************* Hier die Warnzellen-Id's eintragen *****************************/
                                var warncellid = ['UWZxxxxxxx'];
                                /**************************************************************************************/
                                
                                
                                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 (let 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,{min:0, max:6, 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, thedata) {
                                   if (!thedata) {
                                      return;
                                   }
                                
                                   var warnings= [];
                                   if (thedata.results.length>0) {
                                       for (let 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),2);
                                   let areaChannelId=ChannelId+"."+Area;
                                   for (let 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);
                                
                                setInterval(work,intervalMinutes * 60 * 1000);
                                work();
                                
                                async function work() {
                                   for (var i=0; i<warncellid.length; i++) {
                                       try {
                                           const res = await axios.get(url.replace("XXXAREAXXX",warncellid[i]));
                                           dwmlog("AREA: "+getAreaFromURI(res.config.url),4);
                                           dwmlog("UWZ Body: " + JSON.stringify(res.data),4);
                                           dwmlog("Status: " + res.status,4);
                                           if (res.status == 200) {
                                               processData(getAreaFromURI(res.config.url),res.data);
                                           }
                                       } catch (error) {
                                           // Error 😨
                                           if (error.response) {
                                               /*
                                               * The request was made and the server responded with a
                                               * status code that falls out of the range of 2xx
                                               */
                                               dwmlog(error.response.data, 1);
                                               dwmlog(error.response.status, 1);
                                               dwmlog(error.response.headers, 1);
                                           } else if (error.request) {
                                               /*
                                               * The request was made but no response was received, `error.request`
                                               * is an instance of XMLHttpRequest in the browser and an instance
                                               * of http.ClientRequest in Node.js
                                               */
                                               dwmlog("Server antwortet nicht", 1);
                                           } else {
                                               // Something happened in setting up the request and triggered an Error
                                               dwmlog(error.message, 1, 'warn');
                                           }
                                           dwmlog(error,1);
                                       }
                                   }
                                }
                                
                                

                                Danke

                                Thomas Braun sigi234 2 Replies Last reply Reply Quote 0
                                • Thomas Braun
                                  Thomas Braun Most Active @ticaki last edited by

                                  Ist es eigentlich normal, dass alle 5 Minuten die deutschlandweite Corona-Hinweismeldung im log erscheint? Einmal würde mir reichen.
                                  Oder hab ich da irgendwas übersehen?

                                  T 1 Reply Last reply Reply Quote 0
                                  • T
                                    ticaki Developer @Thomas Braun last edited by ticaki

                                    @thomas-braun
                                    Ja es ist normal. Wenn du

                                    var uLogAusgabe=        false;
                                    

                                    auf false setzt werden die Logausgaben auf nahe 0 reduziert. Für die Ersteinrichtung möchte ich das aber nicht als default setzten.

                                    Etwas mehr Infos dazu: Nina erzeugt jedesmal "neue" States, wenn es aktualisiert wird. Wenn dein Adapter auf 5 Minuten steht, wird alle 5 Minuten eine neue Warnung gefunden und dazu gibt es dann Logausgaben (über das verändern der alten Warnung oder das hinzufügen einer neuen..)

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

                                      @ticaki sagte in [Script] DWD/UWZ/NINA Warnungen als Push/Sprachnachrichten:

                                      ich hab das UWZ Skript auf Axios umgestellt, wäre nett wenn jemand testet, ob es Probleme gibt.

                                      Danke, läuft soweit. Warte auf eine Warnung.

                                      T 1 Reply Last reply Reply Quote 0
                                      • T
                                        ticaki Developer @sigi234 last edited by ticaki

                                        @sigi234
                                        Da war noch ein geerbter Fehler in der Logausgabe... Oder der Fehler ist durch updates im Javascript-Adapter erst als solcher entstanden.

                                        // Version 1.05
                                        // Author: dwm
                                        // Änderungen ticaki
                                        // 1.01 debuglevel keine Ausgabe bei 1;
                                        // 1.02 let und variable "Fehler" behoben (wurde als Syntaxfehler angezeigt)
                                        // 1.03 logausgabe fehler bei keiner Verbindung behoben
                                        // 1.03 schedule gegen setInterval() getauscht.
                                        // 1.04 umgestellt auf Axios.
                                        // 1.05 Fehler in dwmlog behoben
                                        
                                        var intervalMinutes = 5;
                                        var debuglevel = 1;
                                        var debugchannel = 'info';
                                        
                                        const axios = require('axios');
                                        
                                        function dwmlog( message, level, channel) {
                                          if (channel === undefined) {
                                              channel = debugchannel;
                                          }
                                          if (level === undefined)
                                          {
                                              level = debuglevel;
                                          }
                                          if ( debuglevel >= level ) {
                                              log (message, channel );
                                          }
                                        }
                                        
                                        var AdapterId = "javascript."+instance;
                                        var ChannelId = "UWZ";
                                        
                                        var forceInitStates = false;
                                        var numOfWarnings = 7;
                                        
                                        var url='http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=XXXAREAXXX';
                                        
                                        
                                        /********************* Hier die Warnzellen-Id's eintragen *****************************/
                                        var warncellid = ['UWZxxxxxxx'];
                                        /**************************************************************************************/
                                        
                                        
                                        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 (let 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,{min:0, max:6, 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, thedata) {
                                           if (!thedata) {
                                              return;
                                           }
                                        
                                           var warnings= [];
                                           if (thedata.results.length>0) {
                                               for (let 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),2);
                                           let areaChannelId=ChannelId+"."+Area;
                                           for (let 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);
                                        
                                        setInterval(work,intervalMinutes * 60 * 1000);
                                        work();
                                        
                                        async function work() {
                                           for (var i=0; i<warncellid.length; i++) {
                                               try {
                                                   const res = await axios.get(url.replace("XXXAREAXXX",warncellid[i]));
                                                   dwmlog("AREA: "+getAreaFromURI(res.config.url),4);
                                                   dwmlog("UWZ Body: " + JSON.stringify(res.data),4);
                                                   dwmlog("Status: " + res.status,4);
                                                   if (res.status == 200) {
                                                       processData(getAreaFromURI(res.config.url),res.data);
                                                   }
                                               } catch (error) {
                                                   // Error 😨
                                                   if (error.response) {
                                                       /*
                                                       * The request was made and the server responded with a
                                                       * status code that falls out of the range of 2xx
                                                       */
                                                       dwmlog(error.response.data, 1);
                                                       dwmlog(error.response.status, 1);
                                                       dwmlog(error.response.headers, 1);
                                                   } else if (error.request) {
                                                       /*
                                                       * The request was made but no response was received, `error.request`
                                                       * is an instance of XMLHttpRequest in the browser and an instance
                                                       * of http.ClientRequest in Node.js
                                                       */
                                                       dwmlog("Server antwortet nicht", 1);
                                                   } else {
                                                       // Something happened in setting up the request and triggered an Error
                                                       dwmlog(error.message, 1, 'warn');
                                                   }
                                                   dwmlog(error,1);
                                               }
                                           }
                                        }
                                        

                                        Änderungen:
                                        debuglevel auf 1 gesetzt

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

                                          Moin, ist die Ausgabe im Log so richtig wenn keine Warnungen vorliegen?

                                          javascript.0 496 2021-09-07 11:52:17.046 info script.js.Wetter.DWD-UWZ-NINA-2: []
                                          javascript.0 496 2021-09-07 11:52:17.046 info script.js.Wetter.DWD-UWZ-NINA-2: Status: 200
                                          javascript.0 496 2021-09-07 11:52:17.046 info script.js.Wetter.DWD-UWZ-NINA-2: UWZ Body: {"results":],"generator":"PHPjf"}
                                          javascript.0 496 2021-09-07 11:52:17.045 info script.js.Wetter.DWD-UWZ-NINA-2: AREA: UWZDExyz
                                          
                                          T 1 Reply Last reply Reply Quote 0
                                          • T
                                            ticaki Developer @Nashra last edited by

                                            @nashra
                                            Welche Version?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            569
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            53
                                            1521
                                            463785
                                            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