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.
    • T
      ticaki Developer @Nashra last edited by

      @nashra
      Jo. Damit sind dann alle Fehler die ich durch die jüngsten Änderungen eingebaut habe behoben. 🙂

      Aktuell ist: Version 0.97.24.3

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

        Ups Fehler beim Start

        10:21:53.556	error	javascript.0 (25794) script.js.Wetter.DWD-UWZ-NINA-1: TypeError: Cannot read property 'levelName' of undefined
        10:21:53.556	error	javascript.0 (25794) at addDatabaseData (script.js.Wetter.DWD-UWZ-NINA-1:1685:27)
        10:21:53.556	error	javascript.0 (25794) at _helper (script.js.Wetter.DWD-UWZ-NINA-1:1654:13)
        10:21:53.556	error	javascript.0 (25794) at InitDatabase (script.js.Wetter.DWD-UWZ-NINA-1:1637:9)
        10:21:53.556	error	javascript.0 (25794) at changeMode (script.js.Wetter.DWD-UWZ-NINA-1:566:9)
        10:21:53.556	error	javascript.0 (25794) at script.js.Wetter.DWD-UWZ-NINA-1:640:19
        10:21:53.556	error	javascript.0 (25794) at script.js.Wetter.DWD-UWZ-NINA-1:2425:3
        
        1 Reply Last reply Reply Quote 0
        • M
          Megawaldi @ticaki last edited by

          @ticaki
          Bekomme nen error beim Start:

          javascript.0
          	2021-10-20 10:23:26.363	error	at Script.runInContext (vm.js:130:18)
          javascript.0
          	2021-10-20 10:23:26.363	error	at script.js.Ausgaben.Wetterwarnungen.dwd_uwz_nina_script:2427:3
          javascript.0
          	2021-10-20 10:23:26.363	error	at script.js.Ausgaben.Wetterwarnungen.dwd_uwz_nina_script:643:19
          javascript.0
          	2021-10-20 10:23:26.363	error	at changeMode (script.js.Ausgaben.Wetterwarnungen.dwd_uwz_nina_script:569:9)
          javascript.0
          	2021-10-20 10:23:26.357	error	at InitDatabase (script.js.Ausgaben.Wetterwarnungen.dwd_uwz_nina_script:1640:9)
          javascript.0
          	2021-10-20 10:23:26.357	error	at _helper (script.js.Ausgaben.Wetterwarnungen.dwd_uwz_nina_script:1657:13)
          javascript.0
          	2021-10-20 10:23:26.357	error	at addDatabaseData (script.js.Ausgaben.Wetterwarnungen.dwd_uwz_nina_script:1688:27)
          javascript.0
          	2021-10-20 10:23:26.356	error	script.js.Ausgaben.Wetterwarnungen.dwd_uwz_nina_script: TypeError: Cannot read property 'levelName' of undefined
          
          T 1 Reply Last reply Reply Quote 0
          • T
            ticaki Developer @Megawaldi last edited by

            @megawaldi
            .04 ist aktuell. Habs dieses mal getestet.

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

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

              @megawaldi
              .04 ist aktuell. Habs dieses mal getestet.

              Beim Start keine Fehler mehr👍

              T sigi234 2 Replies Last reply Reply Quote 1
              • T
                ticaki Developer @Nashra last edited by

                @nashra
                Danke fürs Testen ohne meckern.

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

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

                  Beim Start keine Fehler mehr

                  Dito 👍

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

                    @ticaki
                    Bei mir läuft es auch so wie es soll 👍

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

                      @megawaldi
                      Werden die Warnungen auch erfasst?

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

                        @ticaki
                        Ja sieht gut aus bis jetzt

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

                          Da sind wir wieder. Jetzt wieder alle halbe Stunde die gleiche Nachricht von DWD und UWZ.
                          Was machen die Pappköppe da 🤔

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

                            @nashra
                            Ich benötige das log von 2 Wiederholungen mit DEBUG true

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

                              Mein DWD Adapter steht auf 10 Minuten und ich habe keine Wiederholungen. Aktuell fällt mir halt nur ein das du tatsächlich 2 mal die exakt gleiche Warnung drin stehen hast. Ich denke dann kommt das Skript durcheinander. Ich hab meinen DWD Datenbaum mal komplett gelöscht (wird beim nächsten Lauf wiedererstellt)und danach hatte ich einige Probleme weniger. Mußt aber natürlich das Skript neustarten wenn der Baum erstellt ist.

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

                                @ticaki
                                Ich bin vom dwd Adapter weg, da mich der Restart im log gestört hat und mir das zu unübersichtlich wurde.
                                Daher habe ich mir ein Script geschrieben, das das selbe aber die Datenstruktur vom dwd Adapter nachahmt macht.
                                Auch das uwz script habe ich heute mal neu geschrieben.
                                Wenn dich das interessiert, kann ich die zwei scripte gerne zur Verfügung stellen.

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

                                  @megawaldi
                                  Poste sie und wenn du Github benutzt gib mir den Link und ich setzte sie ins erste Posting. Hoffe du benutzt Interval und nicht schedule 🙂

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

                                    @ticaki
                                    Ich hab mich eigendlich für schedule entschieden 😉. Gibt es aus deiner sicht nen Grund warum interval bessser ist?

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

                                      @megawaldi
                                      Wenn alle Leute die bei DWD Daten abrufen schedule verwenden, freut sich der Server sicherlich zu jeder vollen Stunde ganz doll über das hohe Interesse. 🙂 Intervall richtet sich nach dem Startzeitpunkt des Skriptes und damit werden die Zugriffe mehr verteilt und es gibt nicht diese Peaks wie mit schedule.

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

                                        @ticaki
                                        Hier mal zum testen: Habs auf Intervall geändert 😉

                                        const axios = require('axios'); 
                                        
                                        var debuglevel = 1;
                                        var debugchannel = 'info';
                                        
                                        var channelId = "0_userdata.0.UWZ";
                                        
                                        var intervalMinutes = 5; 
                                        var forceInitStates = false;
                                        var numOfWarnings = 5;
                                        
                                        var url='http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=XXXAREAXXX';
                                        
                                        
                                        /********************* Hier die Warnzellen-Id's eintragen *****************************/
                                        var warncellid = ['UWZDE53879'];
                                        /**************************************************************************************/
                                        
                                        createStates(numOfWarnings);
                                        
                                        setInterval(work,intervalMinutes * 60 * 1000);
                                        work();
                                        
                                        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: 'object'});
                                                 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:10, type: 'number'});
                                                 createState(areaChannelId+".warning."+i+".type",0,forceInitStates,{min:0, max:11, type: 'number',states:{0:"n/a",1:"unbekannt",2:"Sturm/Orkan",3:"Schneefall",4:"Starkregen",5:"Extremfrost",6:"Waldbrandgefahr",7:"Gewitter",8:"Glätte",9:"Hitze",10:"Glatteisregen",11:"Bodenfrost"}});
                                                 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){
                                           if(warnName != undefined){
                                               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;
                                           } else {
                                               return 0;
                                           }
                                        }
                                        
                                        function getUWZUrgency (warnName){
                                           if(warnName != undefined){
                                               var result = 0;
                                               
                                               var alert = warnName.split("_");
                                               if (alert[1] == "forewarn") {
                                                   result = 1;
                                               }
                                               else {
                                                   result = 2; // immediate;
                                               }
                                               return result;
                                           } else {
                                               return 0;
                                           }
                                        }
                                        
                                        function getLevelColor(uwzLevel,levelName) {
                                           if(levelName != undefined){
                                               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;
                                               }
                                           } else {
                                               return 0;
                                           }
                                        }
                                        
                                        function createHTMLShort(theData,uwzColor,uwzUrgency,shortText){
                                           if(theData.type != undefined){
                                               var html = '<div style="background: #'+uwzColor.toString(16)+'" border:"10px">';
                                               html += '<h3>';
                                               if (uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
                                               html += UWZTypesArray[theData.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>'+shortText+'</p>';
                                               html += "</div>";
                                               return html;
                                           } else {
                                               return '';
                                           }
                                        }
                                        
                                        function createHTMLLong(theData,uwzColor,uwzUrgency,longText){
                                           if(theData.type != undefined){
                                               var html = '<div style="background: #'+uwzColor.toString(16)+'" border:"10px">';
                                               html += '<h3>';
                                               if (uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
                                               html += UWZTypesArray[theData.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>'+longText+'</p>';
                                               html += "</div>";
                                               return html;
                                           } else {
                                               return '';
                                           }
                                        }
                                        
                                        async function writeResultEntry(_warnObj,_i,_area) {
                                           let areaChannelId=channelId+"."+_area+".warning."+_i;
                                           
                                           var warnObjSting = JSON.stringify(_warnObj)|| '{}';
                                           var warnObj = JSON.parse(warnObjSting);
                                           
                                           var object = _warnObj != undefined ? _warnObj : Object({});
                                           var begin = _warnObj != undefined ? formatDate(new Date(warnObj.dtgStart*1000),"DD.MM.YYYY hh:mm") : "";
                                           var end = _warnObj != undefined ? formatDate(new Date(warnObj.dtgEnd*1000),"DD.MM.YYYY hh:mm") : "";
                                           var longText = _warnObj != undefined ? warnObj.payload.translationsLongText.DE : "";
                                           var shortText = _warnObj != undefined ? warnObj.payload.translationsShortText.DE : ""; 
                                           var severity = warnObj.severity || 0;
                                           var type = warnObj.type || 0;
                                           var uwzLevel = _warnObj != undefined ? getUWZLevel(warnObj.payload.levelName) : getUWZLevel(undefined);
                                           var uwzUrgency = _warnObj != undefined ? getUWZUrgency(warnObj.payload.levelName) : getUWZUrgency(undefined);
                                           var uwzColor = _warnObj != undefined ? getLevelColor(uwzLevel,warnObj.payload.levelName):  getLevelColor(uwzLevel,undefined) ;
                                           var htmlShort = createHTMLShort(warnObj,uwzColor,uwzUrgency,shortText);
                                           var htmlLong  = createHTMLLong(warnObj,uwzColor,uwzUrgency,longText);
                                        
                                           var oldObject = (await getStateAsync(areaChannelId+".object")).val;
                                        
                                           if(JSON.stringify(object) != JSON.stringify(oldObject)){
                                               setState(areaChannelId+".LongText",longText);
                                               setState(areaChannelId+".ShortText",shortText);
                                               setState(areaChannelId+".object",object);
                                               setState(areaChannelId+".begin",begin)
                                               setState(areaChannelId+".end",end);
                                               setState(areaChannelId+".severity",severity);
                                               setState(areaChannelId+".type",type);
                                               setState(areaChannelId+".uwzLevel",uwzLevel);
                                               setState(areaChannelId+".uwzColor",uwzColor);
                                               setState(areaChannelId+".HTMLShort",htmlShort);
                                               setState(areaChannelId+".HTMLLong",htmlLong);
                                           } else {
                                               dwmlog('Datensatz '+_i+' ist schon vorhanden',4);
                                           }
                                           
                                        }
                                        
                                        function processData(area, thedata) {
                                           if (!thedata) {
                                               return;
                                           }
                                        
                                           var jsonResults= [];
                                           if (thedata.results.length>0) {
                                               for (let i=0; i<thedata.results.length; i++) {
                                                   jsonResults.push(thedata.results[i]);
                                               }
                                           }
                                        
                                           jsonResults.sort(function(a,b){
                                               var asort = a.severity;
                                               var bsort = b.severity;
                                               return bsort-asort;
                                           });
                                        
                                           dwmlog(JSON.stringify(jsonResults),2);
                                           for (let i=0; i<numOfWarnings; i++) {
                                               if (i<jsonResults.length) {
                                                   //console.log(i+' -> mit Result'); 
                                                   writeResultEntry(jsonResults[i],i,area);
                                               } else {
                                                   //console.log(i+' -> ohne Result'); 
                                                   writeResultEntry(undefined,i,area);
                                               }
                                           }
                                        }
                                        
                                        function getAreaFromURI(uri) {
                                         var searchstr = "&areaID=";
                                         var n = uri.search(searchstr);
                                         var result = uri.slice(n+searchstr.length,uri.length);
                                         return result;
                                        }
                                        
                                        async function work() {
                                           for (var i=0; i<warncellid.length; i++) {
                                               await axios.get(url.replace("XXXAREAXXX",warncellid[i]))
                                               .then(results => {
                                                   dwmlog("AREA: "+warncellid[i],4);
                                                   dwmlog("UWZ Body: " + JSON.stringify(results.data),4);
                                                   dwmlog("Status: " + results.status,4);
                                                   if (results.status == 200) {
                                                       processData(getAreaFromURI(results.config.url),results.data);
                                                   } else {
                                                       dwmlog('Keine Daten empfangen',1);
                                                   }
                                               })
                                               .catch(error => {
                                                   if (error.response.status == 404){
                                                       dwmlog(error.message, 1);
                                                   } else {
                                                       dwmlog(error.response.data, 1);
                                                       dwmlog(error.response.status, 1);
                                                       dwmlog(error.response.headers, 1);
                                                   }
                                               })            
                                           }
                                        }
                                        
                                        function dwmlog( message, level, channel) {
                                         if (channel === undefined) {
                                             channel = debugchannel;
                                         }
                                         if (level === undefined)
                                         {
                                             level = debuglevel;
                                         }
                                         if ( debuglevel >= level ) {
                                             log (message, channel );
                                         }
                                        }
                                        

                                        const axios = require('axios');
                                        
                                        var debuglevel = 1;
                                        var debugchannel = 'info';
                                        
                                        var channelId = '0_userdata.0.DWD.'+instance+'.warning';
                                        
                                        var intervalMinutes = 5;
                                        var forceInitStates = false;
                                        var numOfWarnings = 5;
                                        
                                        var url='https://www.dwd.de/DWD/warnungen/warnapp/json/warnings.json';
                                        
                                        /********************* Hier die Warnzellen-Id's eintragen *****************************/
                                        const warncellid = ['105366000'];
                                        const land = 'nrw';
                                        /**************************************************************************************/
                                        
                                        createStates(numOfWarnings);
                                        
                                        setInterval(work,intervalMinutes * 60 * 1000);
                                        work();
                                        
                                        
                                        
                                        function createStates(anz){
                                           for (let i=0; i<anz; i++) {
                                                   if(i==0){
                                                       var baseChannelId = channelId;
                                                   } else {
                                                       var baseChannelId = channelId+i;
                                                   } 
                                                   createState(baseChannelId+".begin","",forceInitStates,{name: "Warning begin",type: "number",role: "value.time",read: true,write: true});
                                                   createState(baseChannelId+".description","",forceInitStates,{name: "Warning description",type: "string",role: "weather.state",read: true,write: true});
                                                   createState(baseChannelId+".end","",forceInitStates,{name: "Warning end",type: "number",role: "value.time",read: true,write: true});
                                                   createState(baseChannelId+".headline","",forceInitStates,{name: "Warning description",type: "string",role: "weather.state",read: true,write: true});
                                                   createState(baseChannelId+".level",0,forceInitStates,{name: "Warning level",type: "number",role: "value.warning",read: true,write: true,states: {1: "Preliminary info",2: "Minor",3: "Moderate",4: "Severe",5: "Extreme"}});
                                                   createState(baseChannelId+".map","",forceInitStates,{name: "Link to chart",type: "string",role: "weather.chart.url",read: true,write: true});
                                                   createState(baseChannelId+".object","",forceInitStates,{name: "JSON object with warning",type: "object",role: "weather.json",read: true,write: true});
                                                   createState(baseChannelId+".severity",0,forceInitStates,{name: "Warning severity",type: "number",role: "value.severity",read: true,write: true,states: {0: "None",1: "Minor",2: "Moderate",3: "Severe",4: "Extreme",9: "Heat Warning",11: "No Warning",19: "UV Warning",49: "Strong Heat",50: "Extreme Heat"}});
                                                   createState(baseChannelId+".text","",forceInitStates,{name: "Warning text",type: "string",role: "weather.title.short",read: true,write: true});
                                                   createState(baseChannelId+".type",0,forceInitStates,{name: "Warning type",type: "number",role: "weather.type",read: true,write: true,states: {0: "Thunderstorm",1: "Wind/Storm",2: "Rain",3: "Snow",4: "Fog",5: "Frost",6: "Ice",7: "Thawing",8: "Heat",9: "UV warning"}});  
                                           }
                                         
                                        }
                                        
                                        async function writeResultEntry(_warnObj,_i) {
                                           
                                           if(_i==0){
                                               var baseChannelId = channelId;
                                           } else {
                                               var baseChannelId = channelId+_i;
                                           }
                                            
                                           const maps = ['gewitter', 'sturm', 'regen', 'schnee', 'nebel', 'frost', 'glatteis', 'tauwetter', 'hitze', 'uv'];
                                           var warnObj = _warnObj || '{}';
                                           
                                           warnObj = JSON.parse(warnObj);
                                           var begin=warnObj.start || Number("");
                                           var description=warnObj.description || '';
                                           var end=warnObj.end || Number("");
                                           var headline=warnObj.headline || '';
                                           var level = warnObj.level === undefined || warnObj.level === null ? null : parseInt(warnObj.level, 10);
                                           var object = warnObj;
                                           var severity = warnObj.level > 1 ? warnObj.level - 1 : 0;
                                           var text=warnObj.event || '';
                                           var type = warnObj.type  === undefined || warnObj.type  === null ? null : parseInt(warnObj.type, 10);
                                           if (warnObj.type !== undefined && warnObj.type !== null) {
                                               var map = 'https://www.dwd.de/DWD/warnungen/warnapp_gemeinden/json/warnungen_gemeinde_map_'+land+'_'+maps[warnObj.type]+'.png';
                                           } else {
                                               var map ='';
                                           }
                                           
                                           var oldObject = (await getStateAsync(baseChannelId+".object")).val;
                                        
                                           if(JSON.stringify(object) != JSON.stringify(oldObject)){
                                               setState(baseChannelId+".begin",begin);
                                               setState(baseChannelId+".description",description);
                                               setState(baseChannelId+".end",end);
                                               setState(baseChannelId+".headline",headline);
                                               setState(baseChannelId+".level",Number(level));
                                               setState(baseChannelId+".map",map);
                                               setState(baseChannelId+".object",object);
                                               setState(baseChannelId+".severity",severity);
                                               setState(baseChannelId+".text",text);
                                               setState(baseChannelId+".type",Number(type));
                                           } else {
                                               dwmlog('Datensatz '+_i+' ist schon vorhanden',4);
                                           }
                                        }
                                        
                                        function processData(area, thedata) {
                                           if (!thedata) {
                                               return;
                                           }
                                           var jsonString = String(thedata);
                                           var newString = jsonString.replace('warnWetter.loadWarnings(','');
                                           newString = newString.replace(');','');
                                           var newJSON = JSON.parse(newString);
                                           
                                           var jsonResults = [];
                                           if (newJSON.warnings.hasOwnProperty(area)) {
                                               var anz = newJSON.warnings[area].length;
                                               for(var i=0;i<anz;i++){
                                                   jsonResults.push(JSON.stringify(newJSON.warnings[area][i]));
                                               }
                                           } 
                                        
                                           dwmlog(JSON.stringify(jsonResults),2);
                                           for (let i=0; i<numOfWarnings; i++) {
                                               if (i<jsonResults.length) {
                                                   //console.log(i+' -> mit Result'); 
                                                   writeResultEntry(jsonResults[i],i);
                                               } else {
                                                   //console.log(i+' -> ohne Result'); 
                                                   writeResultEntry(undefined,i);
                                               }
                                           }
                                           
                                        }
                                          
                                        async function work() {
                                           for (var i=0; i<warncellid.length; i++) {
                                               await axios.get(url)
                                               .then(results => {
                                                   dwmlog("AREA: "+warncellid[i],4);
                                                   dwmlog("UWZ Body: " + JSON.stringify(results.data),4);
                                                   dwmlog("Status: " + results.status,4);
                                                   if (results.status == 200) {
                                                       processData(+warncellid[i],results.data);
                                                   } else {
                                                       dwmlog('Keine Daten empfangen',1);
                                                   }
                                               })
                                               .catch(error => {
                                                   if (error.response.status == 404){
                                                       dwmlog(error.message, 1);
                                                   } else {
                                                       dwmlog(error.response.data, 1);
                                                       dwmlog(error.response.status, 1);
                                                       dwmlog(error.response.headers, 1);
                                                   }
                                               })            
                                           }
                                        }
                                        
                                        function dwmlog( message, level, channel) {
                                           if (channel === undefined) {
                                               channel = debugchannel;
                                           }
                                           if (level === undefined) {
                                               level = debuglevel;
                                           }
                                           if ( debuglevel >= level ) {
                                               log (message, channel );
                                           }
                                        }
                                        

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

                                          @megawaldi
                                          Das DWD Script schaue ich mir an, aber das UWZ ist im Grunde das selbe wie meines.

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

                                            @ticaki
                                            Ja klar, deins war ja die Vorlage.
                                            Ich hab das umwandeln in ein Object vor dem schreiben rausgenommen. Denke das wird etwas RAM sparen und performanter sein.
                                            Dann schreibe ich nur in die Datenpunkte, bei einer tatsächlichen Änderung. Das müsste IO einsparen, was bei speicherkarten nicht dumm ist.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.1k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

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