Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [Script] DWD/UWZ/NINA Warnungen als Push/Sprachnachrichten

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill lĂ€uft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

  • MonatsrĂŒckblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.7k

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

Geplant Angeheftet Gesperrt Verschoben JavaScript
1.5k BeitrÀge 53 Kommentatoren 571.6k Aufrufe 52 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Megawaldi

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

    T Offline
    T Offline
    ticaki
    schrieb am zuletzt editiert von
    #686

    @megawaldi
    Werden die Warnungen auch erfasst?

    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

    Spenden

    M 1 Antwort Letzte Antwort
    0
    • T ticaki

      @megawaldi
      Werden die Warnungen auch erfasst?

      M Offline
      M Offline
      Megawaldi
      schrieb am zuletzt editiert von
      #687

      @ticaki
      Ja sieht gut aus bis jetzt

      1 Antwort Letzte Antwort
      0
      • NashraN Offline
        NashraN Offline
        Nashra
        Most Active Forum Testing
        schrieb am zuletzt editiert von
        #688

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

        Gruß Ralf
        Mir egal, wer Dein Vater ist! Wenn ich hier angel, wird nicht ĂŒbers Wasser gelaufen!!

        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

        T 1 Antwort Letzte Antwort
        0
        • NashraN Nashra

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

          T Offline
          T Offline
          ticaki
          schrieb am zuletzt editiert von
          #689

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

          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

          Spenden

          1 Antwort Letzte Antwort
          0
          • T Offline
            T Offline
            ticaki
            schrieb am zuletzt editiert von ticaki
            #690

            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.

            Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

            Spenden

            M 1 Antwort Letzte Antwort
            0
            • T 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 Offline
              M Offline
              Megawaldi
              schrieb am zuletzt editiert von
              #691

              @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 Antwort Letzte Antwort
              0
              • M Megawaldi

                @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 Offline
                T Offline
                ticaki
                schrieb am zuletzt editiert von ticaki
                #692

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

                Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                Spenden

                M 1 Antwort Letzte Antwort
                0
                • T 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 Offline
                  M Offline
                  Megawaldi
                  schrieb am zuletzt editiert von
                  #693

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

                  T 1 Antwort Letzte Antwort
                  0
                  • M Megawaldi

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

                    T Offline
                    T Offline
                    ticaki
                    schrieb am zuletzt editiert von ticaki
                    #694

                    @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.

                    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                    Spenden

                    M 1 Antwort Letzte Antwort
                    0
                    • T 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 Offline
                      M Offline
                      Megawaldi
                      schrieb am zuletzt editiert von
                      #695

                      @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 Antwort Letzte Antwort
                      0
                      • M Megawaldi

                        @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 Offline
                        T Offline
                        ticaki
                        schrieb am zuletzt editiert von
                        #696

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

                        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                        Spenden

                        M 1 Antwort Letzte Antwort
                        0
                        • T ticaki

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

                          M Offline
                          M Offline
                          Megawaldi
                          schrieb am zuletzt editiert von
                          #697

                          @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 Antwort Letzte Antwort
                          0
                          • M Megawaldi

                            @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 Offline
                            T Offline
                            ticaki
                            schrieb am zuletzt editiert von ticaki
                            #698

                            @megawaldi
                            Gute Idee, werde es mir nÀchstes Wochenende ansehen. Hab dieses keine Zeit. :)

                            EDIT: Hab ich die Erlaubnis das in mein großes Skript einzubauen?

                            Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                            Spenden

                            M 1 Antwort Letzte Antwort
                            0
                            • T ticaki

                              @megawaldi
                              Gute Idee, werde es mir nÀchstes Wochenende ansehen. Hab dieses keine Zeit. :)

                              EDIT: Hab ich die Erlaubnis das in mein großes Skript einzubauen?

                              M Offline
                              M Offline
                              Megawaldi
                              schrieb am zuletzt editiert von
                              #699

                              @ticaki
                              Klar. Gib dann mal ne RĂŒckmeldung

                              T 2 Antworten Letzte Antwort
                              0
                              • M Megawaldi

                                @ticaki
                                Klar. Gib dann mal ne RĂŒckmeldung

                                T Offline
                                T Offline
                                ticaki
                                schrieb am zuletzt editiert von
                                #700

                                @megawaldi
                                Edit gelesen?

                                Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                Spenden

                                M 1 Antwort Letzte Antwort
                                0
                                • T ticaki

                                  @megawaldi
                                  Edit gelesen?

                                  M Offline
                                  M Offline
                                  Megawaldi
                                  schrieb am zuletzt editiert von
                                  #701

                                  @ticaki
                                  Klar mach nur, ein großes Script das alles macht hab ich mir auch schon ĂŒberlegt. WĂŒrde auch das mit den doppelten Datenpunkten in den einzelnen Scripten und dann nochmal in deinem Script lösen.
                                  War mir nur zu stressig das selber umzusetzen ;-)

                                  1 Antwort Letzte Antwort
                                  0
                                  • T Offline
                                    T Offline
                                    ticaki
                                    schrieb am zuletzt editiert von ticaki
                                    #702

                                    Hab an dem DWD Standalone Skript etwas gewerkelt, könnt ihr ja mal testen. Die Warnungen beim Erstellen der States werde ich wohl auch noch verstehen und demnÀchst beheben können.

                                    DWD Adapterersatz Beta

                                    EDIT war noch ein Fehler drin, hab ihn ohne Anmerkung behoben

                                    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                    Spenden

                                    1 Antwort Letzte Antwort
                                    0
                                    • T Offline
                                      T Offline
                                      ticaki
                                      schrieb am zuletzt editiert von ticaki
                                      #703

                                      Hallo,

                                      ich hab die Serveranfragen an DWD und UWZ ins Skript integriert. Der DWD schein soweit gut zu laufen, UWZ hab ich leider keine Warnungen zu. So das ich nicht weiß, ob da nicht noch ein paar Fehler drin sind. Falls es jemand testen will, findet man es hier.

                                      https://github.com/ticaki/DWD-UWZ-NINA-Pushwarnungen-iobroker/blob/master/dwd_uwz_nina_script_with_DWDUWZ_inside_ALPHA.js

                                      Neue Konfigurationsmöglichkeiten:

                                      // Standalone Datenquelle
                                      /* nur Landkreis/GroßstĂ€dte werden verwendet: https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_warncellids_csv.csv?__blob=publicationFile&v=3 */
                                      var dwdWarncellId = ''; // Deaktivieren mit ''
                                      var dwdBundesland = ''; // 3 Buchstaben
                                      
                                      // UWZ - Landeskennung - Postleitzahl UWZDE12345
                                      var uwzWarncellId = ''; // Deaktivieren mit ''
                                      
                                      

                                      Wenn WarncellID nicht '' ist wird die entsprechende interne Abfrage aktivert und z.B. dwd.0 nicht mehr beobachtet.

                                      • Kein Netzwerk geht schon mal... dĂ€mlicher router :)

                                      EDIT:

                                      Version Alpha 2

                                      • Standalone hatte keinen automatischen Nachrichtenversand
                                      • UWZ: die Aktivierung des standalone Parts hat die andere Methode nicht deaktiviert.
                                      • Log ergĂ€nzt

                                      EDIT2:
                                      hab gerade async await kapiert, muß das Skript noch darauf ĂŒberprĂŒfen.

                                      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                      Spenden

                                      1 Antwort Letzte Antwort
                                      0
                                      • T Offline
                                        T Offline
                                        ticaki
                                        schrieb am zuletzt editiert von ticaki
                                        #704

                                        Hallo,

                                        Alpha 3 ist online neue Funktionen:

                                        • Eine zusĂ€tzliche Datenquelle fĂŒr DWD so das Warnungen fĂŒr die Gemeinde und nicht mehr fĂŒr den ganzen Landkreis abgefragt werden können.
                                        • Der Modus ist automatisch. man muß die Warncell nachschlagen und das Skript sucht in beiden Datenquellen nach der ID. Bei Fund schaltet es die andere Datenquelle ab.
                                        • bei Gemeinden funktionieren die Alert States noch nicht und Höhenangaben habe natĂŒrlich keine Auswirkungen mehr. Gibt nicht viele Gemeinden die ihre Höhe Ă€ndern :)

                                        Warncell-ID kann hier nachgeschlagen werden: https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_warncellids_csv.csv?__blob=publicationFile&v=3

                                        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                        Spenden

                                        sigi234S 1 Antwort Letzte Antwort
                                        0
                                        • T ticaki

                                          Hallo,

                                          Alpha 3 ist online neue Funktionen:

                                          • Eine zusĂ€tzliche Datenquelle fĂŒr DWD so das Warnungen fĂŒr die Gemeinde und nicht mehr fĂŒr den ganzen Landkreis abgefragt werden können.
                                          • Der Modus ist automatisch. man muß die Warncell nachschlagen und das Skript sucht in beiden Datenquellen nach der ID. Bei Fund schaltet es die andere Datenquelle ab.
                                          • bei Gemeinden funktionieren die Alert States noch nicht und Höhenangaben habe natĂŒrlich keine Auswirkungen mehr. Gibt nicht viele Gemeinden die ihre Höhe Ă€ndern :)

                                          Warncell-ID kann hier nachgeschlagen werden: https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_warncellids_csv.csv?__blob=publicationFile&v=3

                                          sigi234S Online
                                          sigi234S Online
                                          sigi234
                                          Forum Testing Most Active
                                          schrieb am zuletzt editiert von
                                          #705

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

                                          Alpha 3 ist online neue Funktionen:

                                          23:14:50.964	info	javascript.0 (7748) Stop script script.js.Sigi.UWZ_DWD_NINA9
                                          23:14:51.089	info	javascript.0 (7748) Start javascript script.js.Sigi.UWZ_DWD_NINA9
                                          23:14:51.096	info	javascript.0 (7748) script.js.Sigi.UWZ_DWD_NINA9: registered 0 subscriptions and 0 schedules
                                          23:14:51.097	error	javascript.0 (7748) script.js.Sigi.UWZ_DWD_NINA9: ReferenceError: DWD2 is not defined
                                          23:14:51.097	error	javascript.0 (7748) at script.js.Sigi.UWZ_DWD_NINA9:418:24
                                          23:14:51.097	error	javascript.0 (7748) at script.js.Sigi.UWZ_DWD_NINA9:2845:3
                                          

                                          Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                                          Immer Daten sichern!

                                          T 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          332

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          BeitrÀge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe