Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    476

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    5.2k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.4k

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

Scheduled Pinned Locked Moved JavaScript
1.5k Posts 53 Posters 596.5k Views 52 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Do not disturb
    T Do not disturb
    ticaki
    wrote on last edited by
    #131

    Hab jetzt ordentlich mit DWD email/telegram/echo getestet und ne ganze Menge Kleinigkeiten richten müssen.

    Die v0.94.2 ist ok. Kann jemand mit pushover, ioGo und SayIt das mal testen.

    Das hier ist der Werbetext zu dem Script:

    Unterstützt:

    • Telegram, Pushover, Home24-Mediaplayer, SayIt, Alexa, Datenpunkt, eMail oder ioGo
    • DWD-Adapter & Unwetterzentrale-Script
    • Wetterwarnung
    • Wetterentwarnung

    Funktionen:

    • Filter die Warnungen nach doppelt, Gefahr(level) und Höhe
    • Umschalten über iobroker zwischen DWD und UWZ oder beides
    • Autorestart bei Datenpunkterstellung
    • Automatischer Versand und/oder manueller Nachrichtenversand
    • Zeitschaltuhr für Sprachausgabe
    • Datenpunkte mit der Startzeit, Endzeit, Type, Schlagzeile, Beschreibung, Farbe für Level(bgcolor) und höchstem Warnlevel dieses Typs
    • Unterstützung für 0_userdata
    • Datenpunkthauptpfade sind konfigurierbar incl. 0_userdata
    • Konfigurationsprüfung soweit möglich
    • Automodus und einzelne Pushdienste über iobroker schaltbar (hat nicht mit manuellem Versand zu tun)
    • Optimierte Sprachausgabe
    • Fingerweg vom .alive state :)

    Kleinkram:

    • Sprachausgabe: Sturmdetails werden ausgefiltert oder korrekt ausgesprochen (konfigurierbar)
    • Sprachausgabe: Pause zwischen dem Absenden der einzelnen Warnungen an die Wiedergabeeinheit konfigurierbar.
    • Manuelle Sprachnachrichten können die Zeitschaltuhr missachten. (konfigurierbar)
    • Multi-User/Device bei fast allen Pushdiensten verfügbar (außer Datenpunkt & pushover)
    • Alexa und SayIt mit Lautstärkeeinstellung. Alexagruppen unterstützen keine Lautstärke trotzdem konfigurieren.
    • Zusätzliche Hervorhebung konfigurierbar über warnlevel (im Betreff/Ansage)

    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

    Spenden

    LatziL 1 Reply Last reply
    0
    • T ticaki

      Hab jetzt ordentlich mit DWD email/telegram/echo getestet und ne ganze Menge Kleinigkeiten richten müssen.

      Die v0.94.2 ist ok. Kann jemand mit pushover, ioGo und SayIt das mal testen.

      Das hier ist der Werbetext zu dem Script:

      Unterstützt:

      • Telegram, Pushover, Home24-Mediaplayer, SayIt, Alexa, Datenpunkt, eMail oder ioGo
      • DWD-Adapter & Unwetterzentrale-Script
      • Wetterwarnung
      • Wetterentwarnung

      Funktionen:

      • Filter die Warnungen nach doppelt, Gefahr(level) und Höhe
      • Umschalten über iobroker zwischen DWD und UWZ oder beides
      • Autorestart bei Datenpunkterstellung
      • Automatischer Versand und/oder manueller Nachrichtenversand
      • Zeitschaltuhr für Sprachausgabe
      • Datenpunkte mit der Startzeit, Endzeit, Type, Schlagzeile, Beschreibung, Farbe für Level(bgcolor) und höchstem Warnlevel dieses Typs
      • Unterstützung für 0_userdata
      • Datenpunkthauptpfade sind konfigurierbar incl. 0_userdata
      • Konfigurationsprüfung soweit möglich
      • Automodus und einzelne Pushdienste über iobroker schaltbar (hat nicht mit manuellem Versand zu tun)
      • Optimierte Sprachausgabe
      • Fingerweg vom .alive state :)

      Kleinkram:

      • Sprachausgabe: Sturmdetails werden ausgefiltert oder korrekt ausgesprochen (konfigurierbar)
      • Sprachausgabe: Pause zwischen dem Absenden der einzelnen Warnungen an die Wiedergabeeinheit konfigurierbar.
      • Manuelle Sprachnachrichten können die Zeitschaltuhr missachten. (konfigurierbar)
      • Multi-User/Device bei fast allen Pushdiensten verfügbar (außer Datenpunkt & pushover)
      • Alexa und SayIt mit Lautstärkeeinstellung. Alexagruppen unterstützen keine Lautstärke trotzdem konfigurieren.
      • Zusätzliche Hervorhebung konfigurierbar über warnlevel (im Betreff/Ansage)
      LatziL Offline
      LatziL Offline
      Latzi
      wrote on last edited by
      #132

      @ticaki im Verzeichnis test ist noch die Version 0.94.0, ist das die Richtige?

      1 Reply Last reply
      0
      • T Do not disturb
        T Do not disturb
        ticaki
        wrote on last edited by
        #133

        Nein... und das Äffchen drückt das Knöpfchen jetzt ist sie da

        Danke :)

        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

        Spenden

        LatziL 1 Reply Last reply
        1
        • T ticaki

          Nein... und das Äffchen drückt das Knöpfchen jetzt ist sie da

          Danke :)

          LatziL Offline
          LatziL Offline
          Latzi
          wrote on last edited by
          #134

          @ticaki :+1: läuft :+1:
          Etwas für die nächste Version: Bei mir kommt bei telegram "Alle Wetterwarnungenwurden aufgehoben", bitte ein Leerzeichen einfügen -> "Alle Wetterwarnungen wurden aufgehoben"

          T 1 Reply Last reply
          0
          • LatziL Latzi

            @ticaki :+1: läuft :+1:
            Etwas für die nächste Version: Bei mir kommt bei telegram "Alle Wetterwarnungenwurden aufgehoben", bitte ein Leerzeichen einfügen -> "Alle Wetterwarnungen wurden aufgehoben"

            T Do not disturb
            T Do not disturb
            ticaki
            wrote on last edited by ticaki
            #135

            @Latzi
            .... ups

            Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

            Spenden

            LatziL 1 Reply Last reply
            0
            • T ticaki

              @Latzi
              .... ups

              LatziL Offline
              LatziL Offline
              Latzi
              wrote on last edited by
              #136

              @ticaki ja, UWZ und regionName ist konfiguriert (UWZ-Nummer und Ort), muss ich sonst noch was angeben? Der Ort kommt bei mir weder bei Alexa noch Telegram an.

              1 Reply Last reply
              0
              • T Do not disturb
                T Do not disturb
                ticaki
                wrote on last edited by ticaki
                #137

                Ah ich lag falsch, manuell angestoßen und keinen Mode den er finden kann, ist behoben. Hab die Verionsnummer aber nicht angehoben.

                Ich kann bei "Alle Warnungen wurden aufgehoben" keinen Ort oder DWD/UWZ ausgeben.

                Diese Infos werden in der Warnung gespeichert und wenn alle Warnungen aufgehoben werden, könnte ich darauf noch zugriff bekommen, jedoch wenn du manuell anfragst weiß das Skript nur noch das es keine Warnungen gibt. Für DWD/UWZ schaut das Skript nach ob es Infos gibt.

                Vielleicht auch noch folgendes: Im Skript selbst gibt es keine Trennung zwischen DWD/UWZ wenn beides aktiv ist und beides 2 Warnungen hat, hast du 4 Warnungen in den mal "des DWD" und mal "der Unwetterzentrale" steht.

                Jetzt 16:30 ist das mit ' ' erst behoben, schon wieder nicht aufs knöpfchen gedrückt.

                Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                Spenden

                C 1 Reply Last reply
                0
                • T ticaki

                  Ah ich lag falsch, manuell angestoßen und keinen Mode den er finden kann, ist behoben. Hab die Verionsnummer aber nicht angehoben.

                  Ich kann bei "Alle Warnungen wurden aufgehoben" keinen Ort oder DWD/UWZ ausgeben.

                  Diese Infos werden in der Warnung gespeichert und wenn alle Warnungen aufgehoben werden, könnte ich darauf noch zugriff bekommen, jedoch wenn du manuell anfragst weiß das Skript nur noch das es keine Warnungen gibt. Für DWD/UWZ schaut das Skript nach ob es Infos gibt.

                  Vielleicht auch noch folgendes: Im Skript selbst gibt es keine Trennung zwischen DWD/UWZ wenn beides aktiv ist und beides 2 Warnungen hat, hast du 4 Warnungen in den mal "des DWD" und mal "der Unwetterzentrale" steht.

                  Jetzt 16:30 ist das mit ' ' erst behoben, schon wieder nicht aufs knöpfchen gedrückt.

                  C Offline
                  C Offline
                  CruziX
                  wrote on last edited by
                  #138

                  @ticaki Ist das Skript für Nina funktionsfähig?
                  Merke gerade, DWD hat keine Warnung, obwohl es den ganzen Tag regnet und Nina meldet gerade hochwasser ^^

                  Wie geht das eig mit UWZ, muss ich das einfach im Skript aktivieren? Finde dazu keinen Adapter

                  T 1 Reply Last reply
                  0
                  • C CruziX

                    @ticaki Ist das Skript für Nina funktionsfähig?
                    Merke gerade, DWD hat keine Warnung, obwohl es den ganzen Tag regnet und Nina meldet gerade hochwasser ^^

                    Wie geht das eig mit UWZ, muss ich das einfach im Skript aktivieren? Finde dazu keinen Adapter

                    T Do not disturb
                    T Do not disturb
                    ticaki
                    wrote on last edited by ticaki
                    #139

                    @CruziX
                    Es hat funktioniert, aber da ich kaum Warnungen zum testen hatte, hab ich das erstmal zur Seite gestellt. Ich baue das in nächster Zeit fertig für den Github Nina Adapter.

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

                    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                    Spenden

                    C 1 Reply Last reply
                    1
                    • T ticaki

                      @CruziX
                      Es hat funktioniert, aber da ich kaum Warnungen zum testen hatte, hab ich das erstmal zur Seite gestellt. Ich baue das in nächster Zeit fertig für den Github Nina Adapter.

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

                      C Offline
                      C Offline
                      CruziX
                      wrote on last edited by
                      #140

                      @ticaki danke, ich denke der Autor ist nach kurzer Recherche @dwm .

                      T 2 Replies Last reply
                      0
                      • C CruziX

                        @ticaki danke, ich denke der Autor ist nach kurzer Recherche @dwm .

                        T Do not disturb
                        T Do not disturb
                        ticaki
                        wrote on last edited by ticaki
                        #141

                        @CruziX
                        Gut zu wissen. :)

                        @all
                        behobene Kleinigkeiten bisher ohne Versionsnummernanhebung:

                        • Telegram&pushover&state&iogo: Amtliche Warnung vor fliegenen Fischenwurde -> Fischen wurde (behoben)
                        • eMail: vor fliegenden Fischen des DWD/UWZ für Entenhausen gültig
                          -> DWD/UWZ für Entenhausen: Gültig
                        • Danke hinzugefügt in Kommentar :)

                        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                        Spenden

                        sigi234S 1 Reply Last reply
                        0
                        • T ticaki

                          @CruziX
                          Gut zu wissen. :)

                          @all
                          behobene Kleinigkeiten bisher ohne Versionsnummernanhebung:

                          • Telegram&pushover&state&iogo: Amtliche Warnung vor fliegenen Fischenwurde -> Fischen wurde (behoben)
                          • eMail: vor fliegenden Fischen des DWD/UWZ für Entenhausen gültig
                            -> DWD/UWZ für Entenhausen: Gültig
                          • Danke hinzugefügt in Kommentar :)
                          sigi234S Online
                          sigi234S Online
                          sigi234
                          Forum Testing Most Active
                          wrote on last edited by sigi234
                          #142

                          @ticaki

                          javascript.0	2020-03-06 21:05:24.685	error	(9148) at process._tickCallback (internal/process/next_tick.js:68:7)
                          javascript.0	2020-03-06 21:05:24.685	error	(9148) at promise.then (C:\Program Files\iobroker\Test\node_modules\standard-as-callback\built\index.js:19:49)
                          javascript.0	2020-03-06 21:05:24.685	error	(9148) at tryCatcher (C:\Program Files\iobroker\Test\node_modules\standard-as-callback\built\utils.js:11:23)
                          javascript.0	2020-03-06 21:05:24.685	error	(9148) at client.get (C:\Program Files\iobroker\Test\node_modules\iobroker.js-controller\lib\states\statesInRedis.js:580:17)
                          javascript.0	2020-03-06 21:05:24.685	error	(9148) at adapter.getForeignState (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\main.js:1055:17)
                          javascript.0	2020-03-06 21:05:24.685	error	(9148) at createProblemObject (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\main.js:1464:17)
                          javascript.0	2020-03-06 21:05:24.664	error	(9148) at prepareScript (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\main.js:1411:37)
                          javascript.0	2020-03-06 21:05:24.664	error	(9148) at compile (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\main.js:1188:28)
                          javascript.0	2020-03-06 21:05:24.664	error	(9148) at Object.createScript (vm.js:277:10)
                          javascript.0	2020-03-06 21:05:24.664	error	(9148) at new Script (vm.js:83:7)
                          javascript.0	2020-03-06 21:05:24.663	error	(9148) SyntaxError: Unexpected token )
                          javascript.0	2020-03-06 21:05:24.663	error	(9148) ^
                          javascript.0	2020-03-06 21:05:24.663	error	(9148) let nMsg = msgall[0].toUpperCase())+msgall.substring(1);
                          javascript.0	2020-03-06 21:05:24.663	error	at script.js.Alexa.Ansage_UWZ3:1157
                          javascript.0	2020-03-06 21:05:24.663	error	(9148) script.js.Alexa.Ansage_UWZ3 compile failed:
                          

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

                          LatziL 1 Reply Last reply
                          0
                          • sigi234S sigi234

                            @ticaki

                            javascript.0	2020-03-06 21:05:24.685	error	(9148) at process._tickCallback (internal/process/next_tick.js:68:7)
                            javascript.0	2020-03-06 21:05:24.685	error	(9148) at promise.then (C:\Program Files\iobroker\Test\node_modules\standard-as-callback\built\index.js:19:49)
                            javascript.0	2020-03-06 21:05:24.685	error	(9148) at tryCatcher (C:\Program Files\iobroker\Test\node_modules\standard-as-callback\built\utils.js:11:23)
                            javascript.0	2020-03-06 21:05:24.685	error	(9148) at client.get (C:\Program Files\iobroker\Test\node_modules\iobroker.js-controller\lib\states\statesInRedis.js:580:17)
                            javascript.0	2020-03-06 21:05:24.685	error	(9148) at adapter.getForeignState (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\main.js:1055:17)
                            javascript.0	2020-03-06 21:05:24.685	error	(9148) at createProblemObject (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\main.js:1464:17)
                            javascript.0	2020-03-06 21:05:24.664	error	(9148) at prepareScript (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\main.js:1411:37)
                            javascript.0	2020-03-06 21:05:24.664	error	(9148) at compile (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\main.js:1188:28)
                            javascript.0	2020-03-06 21:05:24.664	error	(9148) at Object.createScript (vm.js:277:10)
                            javascript.0	2020-03-06 21:05:24.664	error	(9148) at new Script (vm.js:83:7)
                            javascript.0	2020-03-06 21:05:24.663	error	(9148) SyntaxError: Unexpected token )
                            javascript.0	2020-03-06 21:05:24.663	error	(9148) ^
                            javascript.0	2020-03-06 21:05:24.663	error	(9148) let nMsg = msgall[0].toUpperCase())+msgall.substring(1);
                            javascript.0	2020-03-06 21:05:24.663	error	at script.js.Alexa.Ansage_UWZ3:1157
                            javascript.0	2020-03-06 21:05:24.663	error	(9148) script.js.Alexa.Ansage_UWZ3 compile failed:
                            
                            LatziL Offline
                            LatziL Offline
                            Latzi
                            wrote on last edited by Latzi
                            #143

                            @sigi234 sagte in [Script] DWD/UWZ Warnungen als Pushnachrichten:

                            nMsg = msgall[0].toUpperCase())+msgall.substring(1);

                            Da ist eine Klammer zuviel in Zeile 1157: nMsg = msgall[0].toUpperCase() +msgall.substring(1);

                            sigi234S 1 Reply Last reply
                            0
                            • LatziL Latzi

                              @sigi234 sagte in [Script] DWD/UWZ Warnungen als Pushnachrichten:

                              nMsg = msgall[0].toUpperCase())+msgall.substring(1);

                              Da ist eine Klammer zuviel in Zeile 1157: nMsg = msgall[0].toUpperCase() +msgall.substring(1);

                              sigi234S Online
                              sigi234S Online
                              sigi234
                              Forum Testing Most Active
                              wrote on last edited by
                              #144

                              @Latzi sagte in [Script] DWD/UWZ Warnungen als Pushnachrichten:

                              @sigi234 sagte in [Script] DWD/UWZ Warnungen als Pushnachrichten:

                              nMsg = msgall[0].toUpperCase())+msgall.substring(1);

                              Da ist eine Klammer zuviel in Zeile 1157: nMsg = msgall[0].toUpperCase() +msgall.substring(1);

                              Ok, dann kommen Folgefehler

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

                              T 1 Reply Last reply
                              0
                              • sigi234S sigi234

                                @Latzi sagte in [Script] DWD/UWZ Warnungen als Pushnachrichten:

                                @sigi234 sagte in [Script] DWD/UWZ Warnungen als Pushnachrichten:

                                nMsg = msgall[0].toUpperCase())+msgall.substring(1);

                                Da ist eine Klammer zuviel in Zeile 1157: nMsg = msgall[0].toUpperCase() +msgall.substring(1);

                                Ok, dann kommen Folgefehler

                                T Do not disturb
                                T Do not disturb
                                ticaki
                                wrote on last edited by
                                #145

                                @sigi234
                                Werde ich gleich beheben, ist aber noch ein Fehler drin den ich mit beheben will. Emails werden versenden wenn 0 alte und 0 neue Meldungen vorhanden sind.

                                @All
                                Weiß jemand wo man beim Atom das automatische ergänzen von () und '' ausschalten kann, hab laufend Fehler deswegen?

                                Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                Spenden

                                1 Reply Last reply
                                0
                                • T Do not disturb
                                  T Do not disturb
                                  ticaki
                                  wrote on last edited by ticaki
                                  #146

                                  v0.94.3

                                  Alle gemeldeten Fehler behoben

                                  Geht:
                                  SayIt?
                                  ioGo?
                                  pushover?

                                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                  Spenden

                                  sigi234S 1 Reply Last reply
                                  0
                                  • T ticaki

                                    v0.94.3

                                    Alle gemeldeten Fehler behoben

                                    Geht:
                                    SayIt?
                                    ioGo?
                                    pushover?

                                    sigi234S Online
                                    sigi234S Online
                                    sigi234
                                    Forum Testing Most Active
                                    wrote on last edited by sigi234
                                    #147

                                    @ticaki

                                    Test:

                                    Alexa

                                    • Warnung der Unwetterzentrale Alpha

                                    IoGo:

                                    iogo.0	2020-03-06 22:17:44.827	warn	(10984) 1 of 1 recipients are unknown!
                                    

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

                                    1 Reply Last reply
                                    0
                                    • T Do not disturb
                                      T Do not disturb
                                      ticaki
                                      wrote on last edited by ticaki
                                      #148
                                      1. gefunden und behoben
                                      2. ist mir schleierhaft. Richtige Kennung eingegeben?

                                      nur Alpha entfernt und Version angehoben
                                      v0.93.4

                                      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                      Spenden

                                      sigi234S 2 Replies Last reply
                                      0
                                      • T ticaki
                                        1. gefunden und behoben
                                        2. ist mir schleierhaft. Richtige Kennung eingegeben?

                                        nur Alpha entfernt und Version angehoben
                                        v0.93.4

                                        sigi234S Online
                                        sigi234S Online
                                        sigi234
                                        Forum Testing Most Active
                                        wrote on last edited by
                                        #149

                                        @ticaki sagte in [Script] DWD/UWZ Warnungen als Pushnachrichten:

                                        ist mir schleierhaft. Richtige Kennung eingegeben?

                                        Ja

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

                                        T 1 Reply Last reply
                                        0
                                        • T ticaki
                                          1. gefunden und behoben
                                          2. ist mir schleierhaft. Richtige Kennung eingegeben?

                                          nur Alpha entfernt und Version angehoben
                                          v0.93.4

                                          sigi234S Online
                                          sigi234S Online
                                          sigi234
                                          Forum Testing Most Active
                                          wrote on last edited by
                                          #150

                                          @ticaki sagte in [Script] DWD/UWZ Warnungen als Pushnachrichten:

                                          nur Alpha entfernt und Version angehoben
                                          v0.93.4

                                          Genügt ein austausch ab Konfiguration Ende

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

                                          T 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          322

                                          Online

                                          32.7k

                                          Users

                                          82.5k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe