Navigation

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

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      ticaki Developer @CruziX last edited by 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 1 Reply Last reply Reply Quote 1
      • C
        CruziX @ticaki last edited by

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

        T 2 Replies Last reply Reply Quote 0
        • T
          ticaki Developer @CruziX last edited by 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 🙂
          sigi234 1 Reply Last reply Reply Quote 0
          • sigi234
            sigi234 Forum Testing Most Active @ticaki last edited by 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:
            
            Latzi 1 Reply Last reply Reply Quote 0
            • Latzi
              Latzi @sigi234 last edited by 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);

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

                @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 1 Reply Last reply Reply Quote 0
                • T
                  ticaki Developer @sigi234 last edited by

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

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

                    v0.94.3

                    Alle gemeldeten Fehler behoben

                    Geht:
                    SayIt?
                    ioGo?
                    pushover?

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

                      @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!
                      
                      1 Reply Last reply Reply Quote 0
                      • T
                        ticaki Developer last edited by ticaki

                        1. gefunden und behoben
                        2. ist mir schleierhaft. Richtige Kennung eingegeben?

                        nur Alpha entfernt und Version angehoben
                        v0.93.4

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

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

                          ist mir schleierhaft. Richtige Kennung eingegeben?

                          Ja

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

                            @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

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

                              @sigi234
                              Ja.

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

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

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

                                ist mir schleierhaft. Richtige Kennung eingegeben?

                                Ja

                                habs bei mir ohne ioGo getestet. Die Kennung kommt am Ende so an, wie eingegeben. Und wird dann damit versendet:

                                sendTo(ioGoInstanz, "send", {
                                    user:                   ioGoUser[a],
                                    text:                   topic,
                                    title:                  msgsingle
                                });
                                
                                1 Reply Last reply Reply Quote 0
                                • T
                                  ticaki Developer last edited by

                                  Das (Alpha) war heute doch noch im Code.

                                  kopieren ab Konfigurationsende

                                  • (Alpha) entfernt
                                  • ein 'und' hinzugefügt (DWD und der UWZ)
                                  sigi234 1 Reply Last reply Reply Quote 0
                                  • sigi234
                                    sigi234 Forum Testing Most Active @ticaki last edited by

                                    @ticaki

                                    Screenshot (1936).png

                                    Latzi 1 Reply Last reply Reply Quote 0
                                    • Latzi
                                      Latzi @sigi234 last edited by

                                      @sigi234
                                      ich denke, hier fehlen einige '+'-Zeichen, dann läuft´s

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

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

                                        @sigi234
                                        ich denke, hier fehlen einige '+'-Zeichen, dann läuft´s

                                        sry sry sry
                                        Recht hast du. Hab die Instanz nach meinem Test noch eingebaut und bin dann ins Bett... war gestern wohl zu müde.

                                        @sigi234
                                        wenn du dich überzeugen willst welche Instanz/User bei ioGo abgesendet werden, stelle Debug auf true.

                                        Neue Version ab Konfigende

                                        • compilefehler behoben

                                        Ansonsten keine Fehler?

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

                                          @CruziX
                                          Danke für die Korrektur in Nina... ich verwende das, jedoch nicht weiter, hab eine bessere Version.

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

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

                                            wenn du dich überzeugen willst welche Instanz/User bei ioGo abgesendet werden, stelle Debug auf true.

                                            Hm, Passwort ist bei mir 13 , bei dir 14

                                            javascript.0	2020-03-07 12:38:49.244	info	(3508) script.js.Alexa.Ansage_UWZ3: ioGoInstanz:iogo.0 ioGoUser01:xxxx@xxxx.at length:14
                                            

                                            Ein Blockly Test funktioniert einwandfrei

                                            Screenshot (1938).png

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            670
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

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