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

  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.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

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

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

Geplant Angeheftet Gesperrt Verschoben JavaScript
1.5k Beiträge 53 Kommentatoren 570.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.
  • T ticaki

    @d4ve
    Kurz: Bug.
    Lang: Das sollte eigentlich nicht passieren, aber es passiert bei mir auch, muß mal bei Gelegenheit nachschauen wieso der Code nicht das macht, was er machen soll.

    EDIT: Beim Testen funktioniert es so wie es soll. Dann muß ich wohl auf ein echtes Ereignis warten.

    Ach noch erwähnenswert: Nicht das Skript schickt dir einfach so ne Verlängerung, sondern DWD schickt am laufenden Band Gewitterwarnungen mit geänderten Start und/oder Endzeiten. Die werden eigentlich rausgefiltert. Also Warnung dann 1 x wurde verlängert - dann nix mehr. Kann mir gerade nicht erklären wie diese mehrfachen Verlängerungen zustande kommen und ich habe die auch in meiner Telegram history gefunden.

    Vielleicht sind es mehrfache Gewitterwarnungen mit unterschiedlichen höhen Angaben und Leveln.

    D4vED Offline
    D4vED Offline
    D4vE
    schrieb am zuletzt editiert von
    #591

    @ticaki das könnte möglich sein :) mal gucken wie es weiter geht... ich bin erstmal froh das es überhaupt geht :) hab schon lange sowas gesucht!
    da steckt sicher viel Arbeit dahinter...

    Iobroker Installation date 2021-08-16
    Platform: linux init system: Docker
    cod.m Zigbee Coordinator: CZC v1.0

    D4vED 1 Antwort Letzte Antwort
    0
    • D4vED D4vE

      @ticaki das könnte möglich sein :) mal gucken wie es weiter geht... ich bin erstmal froh das es überhaupt geht :) hab schon lange sowas gesucht!
      da steckt sicher viel Arbeit dahinter...

      D4vED Offline
      D4vED Offline
      D4vE
      schrieb am zuletzt editiert von
      #592

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

      @ticaki das könnte möglich sein :) mal gucken wie es weiter geht... ich bin erstmal froh das es überhaupt geht :) hab schon lange sowas gesucht!
      da steckt sicher viel Arbeit dahinter...

      DFK-IO BOT, [28.08.21 17:25]
      ⚡️ Amtliche WARNUNG vor STARKEM GEWITTER des DWD für Kreis Bad Kissingen wurde verlängert.

      DFK-IO BOT, [28.08.21 17:44]
      🧶 Wäschetrockner gestartet!

      DFK-IO BOT, [28.08.21 17:44]
      🧺 Waschmaschine gestartet!

      DFK-IO BOT, [28.08.21 18:00]
      Alle Warnmeldungen des DWD wurden aufgehoben.

      von 17:25 bis 18:00 war auch keine Meldung mehr!

      Iobroker Installation date 2021-08-16
      Platform: linux init system: Docker
      cod.m Zigbee Coordinator: CZC v1.0

      1 Antwort Letzte Antwort
      0
      • T ticaki

        @d4ve
        Kurz: Bug.
        Lang: Das sollte eigentlich nicht passieren, aber es passiert bei mir auch, muß mal bei Gelegenheit nachschauen wieso der Code nicht das macht, was er machen soll.

        EDIT: Beim Testen funktioniert es so wie es soll. Dann muß ich wohl auf ein echtes Ereignis warten.

        Ach noch erwähnenswert: Nicht das Skript schickt dir einfach so ne Verlängerung, sondern DWD schickt am laufenden Band Gewitterwarnungen mit geänderten Start und/oder Endzeiten. Die werden eigentlich rausgefiltert. Also Warnung dann 1 x wurde verlängert - dann nix mehr. Kann mir gerade nicht erklären wie diese mehrfachen Verlängerungen zustande kommen und ich habe die auch in meiner Telegram history gefunden.

        Vielleicht sind es mehrfache Gewitterwarnungen mit unterschiedlichen höhen Angaben und Leveln.

        crunchipC Abwesend
        crunchipC Abwesend
        crunchip
        Forum Testing Most Active
        schrieb am zuletzt editiert von crunchip
        #593

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

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

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

        umgestiegen von Proxmox auf Unraid

        1 Antwort Letzte Antwort
        0
        • D4vED Offline
          D4vED Offline
          D4vE
          schrieb am zuletzt editiert von
          #594

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

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

          Iobroker Installation date 2021-08-16
          Platform: linux init system: Docker
          cod.m Zigbee Coordinator: CZC v1.0

          crunchipC 1 Antwort Letzte Antwort
          0
          • D4vED D4vE

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

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

            crunchipC Abwesend
            crunchipC Abwesend
            crunchip
            Forum Testing Most Active
            schrieb am zuletzt editiert von
            #595

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

            umgestiegen von Proxmox auf Unraid

            D4vED T 2 Antworten Letzte Antwort
            0
            • crunchipC crunchip

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

              D4vED Offline
              D4vED Offline
              D4vE
              schrieb am zuletzt editiert von
              #596

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

              Iobroker Installation date 2021-08-16
              Platform: linux init system: Docker
              cod.m Zigbee Coordinator: CZC v1.0

              T 1 Antwort Letzte Antwort
              0
              • D4vED D4vE

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

                T Nicht stören
                T Nicht stören
                ticaki
                schrieb am zuletzt editiert von ticaki
                #597

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

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

                Das wird in allen Versionen so sein.

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

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

                w.repeatCounter += w2.repeatCounter + 1;
                

                in

                w.repeatCounter += w2.repeatCounter + 2;
                

                Damit gibt es kein verlängern mehr.

                und am besten gleich auch noch:

                if (w.repeatCounter > 30 ) {
                

                in

                if (w.repeatCounter > 300 ) {
                

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

                Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                Spenden

                D4vED 1 Antwort Letzte Antwort
                0
                • T ticaki

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

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

                  Das wird in allen Versionen so sein.

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

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

                  w.repeatCounter += w2.repeatCounter + 1;
                  

                  in

                  w.repeatCounter += w2.repeatCounter + 2;
                  

                  Damit gibt es kein verlängern mehr.

                  und am besten gleich auch noch:

                  if (w.repeatCounter > 30 ) {
                  

                  in

                  if (w.repeatCounter > 300 ) {
                  

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

                  D4vED Offline
                  D4vED Offline
                  D4vE
                  schrieb am zuletzt editiert von
                  #598

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

                  w.repeatCounter

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

                  Iobroker Installation date 2021-08-16
                  Platform: linux init system: Docker
                  cod.m Zigbee Coordinator: CZC v1.0

                  T 1 Antwort Letzte Antwort
                  0
                  • D4vED D4vE

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

                    w.repeatCounter

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

                    T Nicht stören
                    T Nicht stören
                    ticaki
                    schrieb am zuletzt editiert von
                    #599

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

                    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                    Spenden

                    D4vED 2 Antworten Letzte Antwort
                    0
                    • T ticaki

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

                      D4vED Offline
                      D4vED Offline
                      D4vE
                      schrieb am zuletzt editiert von D4vE
                      #600

                      //Version 13.6

                      //nachbearbeitet von ticaki

                      Iobroker Installation date 2021-08-16
                      Platform: linux init system: Docker
                      cod.m Zigbee Coordinator: CZC v1.0

                      1 Antwort Letzte Antwort
                      0
                      • T ticaki

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

                        D4vED Offline
                        D4vED Offline
                        D4vE
                        schrieb am zuletzt editiert von
                        #601

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

                        kommt nun

                        Iobroker Installation date 2021-08-16
                        Platform: linux init system: Docker
                        cod.m Zigbee Coordinator: CZC v1.0

                        T 1 Antwort Letzte Antwort
                        0
                        • D4vED D4vE

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

                          kommt nun

                          T Nicht stören
                          T Nicht stören
                          ticaki
                          schrieb am zuletzt editiert von
                          #602

                          @d4ve
                          dann hast du nicht die Zeile ersetzt

                          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                          Spenden

                          D4vED 1 Antwort Letzte Antwort
                          0
                          • T ticaki

                            @d4ve
                            dann hast du nicht die Zeile ersetzt

                            D4vED Offline
                            D4vED Offline
                            D4vE
                            schrieb am zuletzt editiert von D4vE
                            #603

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

                                            w.repeatCounter += w2.repeatCounter + 2;
                                        }
                                        if (w.repeatCounter > 300 ) {
                            

                            Iobroker Installation date 2021-08-16
                            Platform: linux init system: Docker
                            cod.m Zigbee Coordinator: CZC v1.0

                            T 1 Antwort Letzte Antwort
                            0
                            • D4vED D4vE

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

                                              w.repeatCounter += w2.repeatCounter + 2;
                                          }
                                          if (w.repeatCounter > 300 ) {
                              
                              T Nicht stören
                              T Nicht stören
                              ticaki
                              schrieb am zuletzt editiert von ticaki
                              #604

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

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

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

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

                              Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                              Spenden

                              D4vED 1 Antwort Letzte Antwort
                              0
                              • T ticaki

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

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

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

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

                                D4vED Offline
                                D4vED Offline
                                D4vE
                                schrieb am zuletzt editiert von
                                #605

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

                                Iobroker Installation date 2021-08-16
                                Platform: linux init system: Docker
                                cod.m Zigbee Coordinator: CZC v1.0

                                1 Antwort Letzte Antwort
                                0
                                • T Nicht stören
                                  T Nicht stören
                                  ticaki
                                  schrieb am zuletzt editiert von ticaki
                                  #606

                                  Hallo,

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

                                  // Version 1.04
                                  // Author: dwm
                                  // Änderungen ticaki
                                  // 1.01 debuglevel keine Ausgabe bei 1;
                                  // 1.02 let und variable "Fehler" behoben (wurde als Syntaxfehler angezeigt)
                                  // 1.03 logausgabe fehler bei keiner Verbindung behoben
                                  // 1.03 schedule gegen setInterval() getauscht.
                                  // 1.04 umgestellt auf Axios.
                                  
                                  var intervalMinutes = 5;
                                  var debuglevel = 4;
                                  var debugchannel = 'info';
                                  
                                  const axios = require('axios');
                                  
                                  function dwmlog( message, level, channel) {
                                    if (typeof channel === 'undefined') {
                                        channel = debugchannel;
                                    }
                                    if ( typeof level === 'undefined')
                                    {
                                        level = debuglevel;
                                    }
                                    if ( debuglevel >= level ) {
                                        log (message, channel );
                                    }
                                  }
                                  
                                  var AdapterId = "javascript."+instance;
                                  var ChannelId = "UWZ";
                                  
                                  var forceInitStates = false;
                                  var numOfWarnings = 7;
                                  
                                  var url='http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=XXXAREAXXX';
                                  
                                  
                                  /********************* Hier die Warnzellen-Id's eintragen *****************************/
                                  var warncellid = ['UWZxxxxxxx'];
                                  /**************************************************************************************/
                                  
                                  
                                  var UWZTypesArray=["n/a","unbekannt","Sturm/Orkan","Schneefall","Starkregen","Extremfrost","Waldbrandgefahr","Gewitter","Glätte","Hitze","Glatteisregen","Bodenfrost"];
                                  
                                  function createStates(n){
                                    var areaChannelId = null;
                                  
                                    for (var j=0; j<warncellid.length; j++) {
                                        areaChannelId=ChannelId+"."+warncellid[j];
                                        for (let i=0; i<n; i++) {
                                            createState(areaChannelId+".warning."+i+".ShortText","",forceInitStates,{type: 'string'});
                                            createState(areaChannelId+".warning."+i+".LongText","",forceInitStates,{type: 'string'});
                                            createState(areaChannelId+".warning."+i+".object","",forceInitStates,{type: 'string'});
                                            createState(areaChannelId+".warning."+i+".begin","",forceInitStates,{type: 'string'});
                                            createState(areaChannelId+".warning."+i+".end","",forceInitStates,{type: 'string'});
                                            createState(areaChannelId+".warning."+i+".severity",0,forceInitStates,{min:0, max:6, type: 'number'});
                                            createState(areaChannelId+".warning."+i+".type",0,forceInitStates,{min:0, max:11, type: 'number',states:UWZTypesArray});
                                            createState(areaChannelId+".warning."+i+".uwzLevel",0,forceInitStates,{min:0, max:5, type: 'number'});
                                            createState(areaChannelId+".warning."+i+".uwzColor",0,forceInitStates,{type:'number'});
                                            createState(areaChannelId+".warning."+i+".HTMLShort","",forceInitStates,{type: 'string'});
                                            createState(areaChannelId+".warning."+i+".HTMLLong","",forceInitStates,{type: 'string'});
                                        }
                                    }
                                  }
                                  
                                  function getUWZLevel (warnName){
                                    var result = -1; // -1 is an error!
                                    var alert = warnName.split("_");
                                    var colors = ["green","darkgreen","yellow","orange","red","violet"];
                                  
                                    if (alert[0]=="notice") { result = 1; }
                                    else if (alert[1] == "forewarn") { result = 2; }
                                    else {
                                        result = colors.indexOf(alert[2]);
                                    }
                                    return result;
                                  }
                                  
                                  function getUWZUrgency (warnName){
                                    var result = 0;
                                  
                                    var alert = warnName.split("_");
                                    if (alert[1] == "forewarn") {
                                        result = 1;
                                    }
                                    else {
                                        result = 2; // immediate;
                                    }
                                    return result;
                                  }
                                  
                                  function getLevelColor(uwzLevel) {
                                    var uwzColor = [
                                        0x00ff00, // 0 - Grün
                                        0x009b00, // 1 - Dunkelgrün
                                        0xffff00, // 2 - Gelb Wetterwarnungen (Stufe 1)
                                        0xffb400, // 3 - Orange Warnungen vor markantem Wetter (Stufe 2)
                                        0xff0000, // 4 - Rot Unwetterwarnungen (Stufe 3)
                                        0xff00ff, // 5 - Violett Warnungen vor extremem Unwetter (Stufe 4)
                                    ];
                                    if (uwzLevel>=0 && uwzLevel<=5)
                                        return uwzColor[uwzLevel];
                                    else
                                        return 0;
                                  }
                                  
                                  function createHTMLShort(w){
                                    var html = '<div style="background: #'+w.uwzColor.toString(16)+'" border:"10px">';
                                  
                                    var theData = JSON.parse(w.object);
                                  
                                    html += '<h3>';
                                    if (w.uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
                                    html += UWZTypesArray[w.type];
                                    html +="</h3>";
                                    html += "<p>Zeitraum von "+formatDate(new Date(theData.dtgStart*1000),"WW, DD. OO YYYY hh:mm")+" Uhr bis "+formatDate(new Date(theData.dtgEnd*1000),"WW, DD. OO YYYY hh:mm")+" Uhr </p>";
                                    html += '<p>'+w.ShortText+'</p>';
                                    html += "</div>";
                                    return html;
                                  }
                                  
                                  function createHTMLLong(w){
                                    var html = '<div style="background: #'+w.uwzColor.toString(16)+'" border:"10px">';
                                  
                                    var theData = JSON.parse(w.object);
                                  
                                    html += '<h3>';
                                    if (w.uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
                                    html += UWZTypesArray[w.type];
                                    html +="</h3>";
                                    html += "<p>Zeitraum von "+formatDate(new Date(theData.dtgStart*1000),"WW, DD. OO YYYY hh:mm")+" Uhr bis "+formatDate(new Date(theData.dtgEnd*1000),"WW, DD. OO YYYY hh:mm")+" Uhr </p>";
                                    html += '<p>'+w.LongText+'</p>';
                                    html += "</div>";
                                    return html;
                                  }
                                  
                                  function processResultEntry(w) {
                                    this.object = JSON.stringify(w);
                                  
                                    this.begin=formatDate(new Date(w.dtgStart*1000),"DD.MM.YYYY hh:mm");
                                    this.end=formatDate(new Date(w.dtgEnd*1000),"DD.MM.YYYY hh:mm");
                                  
                                    // dwmlog (formatDate(this.begin,"DD.MM.YYYY hh:mm"),4);
                                    // dwmlog (formatDate(this.end,"DD.MM.YYYY hh:mm"),4);
                                  
                                    this.LongText = w.payload.translationsLongText.DE;
                                    this.ShortText = w.payload.translationsShortText.DE;
                                  
                                    this.severity = w.severity;
                                    this.type = w.type;
                                    this.uwzLevel = getUWZLevel(w.payload.levelName);
                                    this.uwzUrgency = getUWZUrgency(w.payload.levelName);
                                    this.uwzColor = getLevelColor(this.uwzLevel);
                                    var x = this;
                                    this.HTMLShort = createHTMLShort(x);
                                    this.HTMLLong  = createHTMLLong(x);
                                  }
                                  
                                  function processData(Area, thedata) {
                                     if (!thedata) {
                                        return;
                                     }
                                  
                                     var warnings= [];
                                     if (thedata.results.length>0) {
                                         for (let i=0; i<thedata.results.length; i++) {
                                             warnings.push(new processResultEntry(thedata.results[i]));
                                         }
                                     }
                                  
                                     warnings.sort(function(a,b){
                                         var asort = a.severity;
                                         var bsort = b.severity;
                                         return bsort-asort;
                                     });
                                  
                                     dwmlog(JSON.stringify(warnings),2);
                                     let areaChannelId=ChannelId+"."+Area;
                                     for (let i=0; i<numOfWarnings; i++) {
                                        if (i<warnings.length) {
                                            setState(areaChannelId+".warning."+i+".LongText",warnings[i].LongText);
                                            setState(areaChannelId+".warning."+i+".ShortText",warnings[i].ShortText);
                                            setState(areaChannelId+".warning."+i+".object",warnings[i].object);
                                            setState(areaChannelId+".warning."+i+".begin",warnings[i].begin);
                                            setState(areaChannelId+".warning."+i+".end",warnings[i].end);
                                            setState(areaChannelId+".warning."+i+".severity",warnings[i].severity);
                                            setState(areaChannelId+".warning."+i+".type",warnings[i].type);
                                            setState(areaChannelId+".warning."+i+".uwzLevel",warnings[i].uwzLevel);
                                            setState(areaChannelId+".warning."+i+".uwzColor",warnings[i].uwzColor);
                                            setState(areaChannelId+".warning."+i+".HTMLShort",warnings[i].HTMLShort);
                                            setState(areaChannelId+".warning."+i+".HTMLLong",warnings[i].HTMLLong);
                                        } else {
                                            setState(areaChannelId+".warning."+i+".LongText","");
                                            setState(areaChannelId+".warning."+i+".ShortText","");
                                            setState(areaChannelId+".warning."+i+".object","{}");
                                            setState(areaChannelId+".warning."+i+".begin","");
                                            setState(areaChannelId+".warning."+i+".end","");
                                            setState(areaChannelId+".warning."+i+".severity",0);
                                            setState(areaChannelId+".warning."+i+".type",0);
                                            setState(areaChannelId+".warning."+i+".uwzLevel",0);
                                            setState(areaChannelId+".warning."+i+".uwzColor",0);
                                            setState(areaChannelId+".warning."+i+".HTMLShort","");
                                            setState(areaChannelId+".warning."+i+".HTMLLong","");
                                      }
                                    }
                                  }
                                  
                                  function getAreaFromURI(uri) {
                                    var searchstr = "&areaID=";
                                    var n = uri.search(searchstr);
                                    var result = uri.slice(n+searchstr.length,uri.length);
                                    return result;
                                  }
                                  
                                  createStates(numOfWarnings);
                                  
                                  setInterval(work,intervalMinutes * 60 * 1000);
                                  work();
                                  
                                  async function work() {
                                     for (var i=0; i<warncellid.length; i++) {
                                         try {
                                             const res = await axios.get(url.replace("XXXAREAXXX",warncellid[i]));
                                             dwmlog("AREA: "+getAreaFromURI(res.config.url),4);
                                             dwmlog("UWZ Body: " + JSON.stringify(res.data),4);
                                             dwmlog("Status: " + res.status,4);
                                             if (res.status == 200) {
                                                 processData(getAreaFromURI(res.config.url),res.data);
                                             }
                                         } catch (error) {
                                             // Error 😨
                                             if (error.response) {
                                                 /*
                                                 * The request was made and the server responded with a
                                                 * status code that falls out of the range of 2xx
                                                 */
                                                 dwmlog(error.response.data, 1);
                                                 dwmlog(error.response.status, 1);
                                                 dwmlog(error.response.headers, 1);
                                             } else if (error.request) {
                                                 /*
                                                 * The request was made but no response was received, `error.request`
                                                 * is an instance of XMLHttpRequest in the browser and an instance
                                                 * of http.ClientRequest in Node.js
                                                 */
                                                 dwmlog("Server antwortet nicht", 1);
                                             } else {
                                                 // Something happened in setting up the request and triggered an Error
                                                 dwmlog(error.message, 1, 'warn');
                                             }
                                             dwmlog(error,1);
                                         }
                                     }
                                  }
                                  
                                  

                                  Danke

                                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                  Spenden

                                  Thomas BraunT sigi234S 2 Antworten Letzte Antwort
                                  0
                                  • T ticaki

                                    Hallo,

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

                                    // Version 1.04
                                    // Author: dwm
                                    // Änderungen ticaki
                                    // 1.01 debuglevel keine Ausgabe bei 1;
                                    // 1.02 let und variable "Fehler" behoben (wurde als Syntaxfehler angezeigt)
                                    // 1.03 logausgabe fehler bei keiner Verbindung behoben
                                    // 1.03 schedule gegen setInterval() getauscht.
                                    // 1.04 umgestellt auf Axios.
                                    
                                    var intervalMinutes = 5;
                                    var debuglevel = 4;
                                    var debugchannel = 'info';
                                    
                                    const axios = require('axios');
                                    
                                    function dwmlog( message, level, channel) {
                                      if (typeof channel === 'undefined') {
                                          channel = debugchannel;
                                      }
                                      if ( typeof level === 'undefined')
                                      {
                                          level = debuglevel;
                                      }
                                      if ( debuglevel >= level ) {
                                          log (message, channel );
                                      }
                                    }
                                    
                                    var AdapterId = "javascript."+instance;
                                    var ChannelId = "UWZ";
                                    
                                    var forceInitStates = false;
                                    var numOfWarnings = 7;
                                    
                                    var url='http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=XXXAREAXXX';
                                    
                                    
                                    /********************* Hier die Warnzellen-Id's eintragen *****************************/
                                    var warncellid = ['UWZxxxxxxx'];
                                    /**************************************************************************************/
                                    
                                    
                                    var UWZTypesArray=["n/a","unbekannt","Sturm/Orkan","Schneefall","Starkregen","Extremfrost","Waldbrandgefahr","Gewitter","Glätte","Hitze","Glatteisregen","Bodenfrost"];
                                    
                                    function createStates(n){
                                      var areaChannelId = null;
                                    
                                      for (var j=0; j<warncellid.length; j++) {
                                          areaChannelId=ChannelId+"."+warncellid[j];
                                          for (let i=0; i<n; i++) {
                                              createState(areaChannelId+".warning."+i+".ShortText","",forceInitStates,{type: 'string'});
                                              createState(areaChannelId+".warning."+i+".LongText","",forceInitStates,{type: 'string'});
                                              createState(areaChannelId+".warning."+i+".object","",forceInitStates,{type: 'string'});
                                              createState(areaChannelId+".warning."+i+".begin","",forceInitStates,{type: 'string'});
                                              createState(areaChannelId+".warning."+i+".end","",forceInitStates,{type: 'string'});
                                              createState(areaChannelId+".warning."+i+".severity",0,forceInitStates,{min:0, max:6, type: 'number'});
                                              createState(areaChannelId+".warning."+i+".type",0,forceInitStates,{min:0, max:11, type: 'number',states:UWZTypesArray});
                                              createState(areaChannelId+".warning."+i+".uwzLevel",0,forceInitStates,{min:0, max:5, type: 'number'});
                                              createState(areaChannelId+".warning."+i+".uwzColor",0,forceInitStates,{type:'number'});
                                              createState(areaChannelId+".warning."+i+".HTMLShort","",forceInitStates,{type: 'string'});
                                              createState(areaChannelId+".warning."+i+".HTMLLong","",forceInitStates,{type: 'string'});
                                          }
                                      }
                                    }
                                    
                                    function getUWZLevel (warnName){
                                      var result = -1; // -1 is an error!
                                      var alert = warnName.split("_");
                                      var colors = ["green","darkgreen","yellow","orange","red","violet"];
                                    
                                      if (alert[0]=="notice") { result = 1; }
                                      else if (alert[1] == "forewarn") { result = 2; }
                                      else {
                                          result = colors.indexOf(alert[2]);
                                      }
                                      return result;
                                    }
                                    
                                    function getUWZUrgency (warnName){
                                      var result = 0;
                                    
                                      var alert = warnName.split("_");
                                      if (alert[1] == "forewarn") {
                                          result = 1;
                                      }
                                      else {
                                          result = 2; // immediate;
                                      }
                                      return result;
                                    }
                                    
                                    function getLevelColor(uwzLevel) {
                                      var uwzColor = [
                                          0x00ff00, // 0 - Grün
                                          0x009b00, // 1 - Dunkelgrün
                                          0xffff00, // 2 - Gelb Wetterwarnungen (Stufe 1)
                                          0xffb400, // 3 - Orange Warnungen vor markantem Wetter (Stufe 2)
                                          0xff0000, // 4 - Rot Unwetterwarnungen (Stufe 3)
                                          0xff00ff, // 5 - Violett Warnungen vor extremem Unwetter (Stufe 4)
                                      ];
                                      if (uwzLevel>=0 && uwzLevel<=5)
                                          return uwzColor[uwzLevel];
                                      else
                                          return 0;
                                    }
                                    
                                    function createHTMLShort(w){
                                      var html = '<div style="background: #'+w.uwzColor.toString(16)+'" border:"10px">';
                                    
                                      var theData = JSON.parse(w.object);
                                    
                                      html += '<h3>';
                                      if (w.uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
                                      html += UWZTypesArray[w.type];
                                      html +="</h3>";
                                      html += "<p>Zeitraum von "+formatDate(new Date(theData.dtgStart*1000),"WW, DD. OO YYYY hh:mm")+" Uhr bis "+formatDate(new Date(theData.dtgEnd*1000),"WW, DD. OO YYYY hh:mm")+" Uhr </p>";
                                      html += '<p>'+w.ShortText+'</p>';
                                      html += "</div>";
                                      return html;
                                    }
                                    
                                    function createHTMLLong(w){
                                      var html = '<div style="background: #'+w.uwzColor.toString(16)+'" border:"10px">';
                                    
                                      var theData = JSON.parse(w.object);
                                    
                                      html += '<h3>';
                                      if (w.uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
                                      html += UWZTypesArray[w.type];
                                      html +="</h3>";
                                      html += "<p>Zeitraum von "+formatDate(new Date(theData.dtgStart*1000),"WW, DD. OO YYYY hh:mm")+" Uhr bis "+formatDate(new Date(theData.dtgEnd*1000),"WW, DD. OO YYYY hh:mm")+" Uhr </p>";
                                      html += '<p>'+w.LongText+'</p>';
                                      html += "</div>";
                                      return html;
                                    }
                                    
                                    function processResultEntry(w) {
                                      this.object = JSON.stringify(w);
                                    
                                      this.begin=formatDate(new Date(w.dtgStart*1000),"DD.MM.YYYY hh:mm");
                                      this.end=formatDate(new Date(w.dtgEnd*1000),"DD.MM.YYYY hh:mm");
                                    
                                      // dwmlog (formatDate(this.begin,"DD.MM.YYYY hh:mm"),4);
                                      // dwmlog (formatDate(this.end,"DD.MM.YYYY hh:mm"),4);
                                    
                                      this.LongText = w.payload.translationsLongText.DE;
                                      this.ShortText = w.payload.translationsShortText.DE;
                                    
                                      this.severity = w.severity;
                                      this.type = w.type;
                                      this.uwzLevel = getUWZLevel(w.payload.levelName);
                                      this.uwzUrgency = getUWZUrgency(w.payload.levelName);
                                      this.uwzColor = getLevelColor(this.uwzLevel);
                                      var x = this;
                                      this.HTMLShort = createHTMLShort(x);
                                      this.HTMLLong  = createHTMLLong(x);
                                    }
                                    
                                    function processData(Area, thedata) {
                                       if (!thedata) {
                                          return;
                                       }
                                    
                                       var warnings= [];
                                       if (thedata.results.length>0) {
                                           for (let i=0; i<thedata.results.length; i++) {
                                               warnings.push(new processResultEntry(thedata.results[i]));
                                           }
                                       }
                                    
                                       warnings.sort(function(a,b){
                                           var asort = a.severity;
                                           var bsort = b.severity;
                                           return bsort-asort;
                                       });
                                    
                                       dwmlog(JSON.stringify(warnings),2);
                                       let areaChannelId=ChannelId+"."+Area;
                                       for (let i=0; i<numOfWarnings; i++) {
                                          if (i<warnings.length) {
                                              setState(areaChannelId+".warning."+i+".LongText",warnings[i].LongText);
                                              setState(areaChannelId+".warning."+i+".ShortText",warnings[i].ShortText);
                                              setState(areaChannelId+".warning."+i+".object",warnings[i].object);
                                              setState(areaChannelId+".warning."+i+".begin",warnings[i].begin);
                                              setState(areaChannelId+".warning."+i+".end",warnings[i].end);
                                              setState(areaChannelId+".warning."+i+".severity",warnings[i].severity);
                                              setState(areaChannelId+".warning."+i+".type",warnings[i].type);
                                              setState(areaChannelId+".warning."+i+".uwzLevel",warnings[i].uwzLevel);
                                              setState(areaChannelId+".warning."+i+".uwzColor",warnings[i].uwzColor);
                                              setState(areaChannelId+".warning."+i+".HTMLShort",warnings[i].HTMLShort);
                                              setState(areaChannelId+".warning."+i+".HTMLLong",warnings[i].HTMLLong);
                                          } else {
                                              setState(areaChannelId+".warning."+i+".LongText","");
                                              setState(areaChannelId+".warning."+i+".ShortText","");
                                              setState(areaChannelId+".warning."+i+".object","{}");
                                              setState(areaChannelId+".warning."+i+".begin","");
                                              setState(areaChannelId+".warning."+i+".end","");
                                              setState(areaChannelId+".warning."+i+".severity",0);
                                              setState(areaChannelId+".warning."+i+".type",0);
                                              setState(areaChannelId+".warning."+i+".uwzLevel",0);
                                              setState(areaChannelId+".warning."+i+".uwzColor",0);
                                              setState(areaChannelId+".warning."+i+".HTMLShort","");
                                              setState(areaChannelId+".warning."+i+".HTMLLong","");
                                        }
                                      }
                                    }
                                    
                                    function getAreaFromURI(uri) {
                                      var searchstr = "&areaID=";
                                      var n = uri.search(searchstr);
                                      var result = uri.slice(n+searchstr.length,uri.length);
                                      return result;
                                    }
                                    
                                    createStates(numOfWarnings);
                                    
                                    setInterval(work,intervalMinutes * 60 * 1000);
                                    work();
                                    
                                    async function work() {
                                       for (var i=0; i<warncellid.length; i++) {
                                           try {
                                               const res = await axios.get(url.replace("XXXAREAXXX",warncellid[i]));
                                               dwmlog("AREA: "+getAreaFromURI(res.config.url),4);
                                               dwmlog("UWZ Body: " + JSON.stringify(res.data),4);
                                               dwmlog("Status: " + res.status,4);
                                               if (res.status == 200) {
                                                   processData(getAreaFromURI(res.config.url),res.data);
                                               }
                                           } catch (error) {
                                               // Error 😨
                                               if (error.response) {
                                                   /*
                                                   * The request was made and the server responded with a
                                                   * status code that falls out of the range of 2xx
                                                   */
                                                   dwmlog(error.response.data, 1);
                                                   dwmlog(error.response.status, 1);
                                                   dwmlog(error.response.headers, 1);
                                               } else if (error.request) {
                                                   /*
                                                   * The request was made but no response was received, `error.request`
                                                   * is an instance of XMLHttpRequest in the browser and an instance
                                                   * of http.ClientRequest in Node.js
                                                   */
                                                   dwmlog("Server antwortet nicht", 1);
                                               } else {
                                                   // Something happened in setting up the request and triggered an Error
                                                   dwmlog(error.message, 1, 'warn');
                                               }
                                               dwmlog(error,1);
                                           }
                                       }
                                    }
                                    
                                    

                                    Danke

                                    Thomas BraunT Online
                                    Thomas BraunT Online
                                    Thomas Braun
                                    Most Active
                                    schrieb am zuletzt editiert von
                                    #607

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

                                    Linux-Werkzeugkasten:
                                    https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                                    NodeJS Fixer Skript:
                                    https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                                    iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                                    T 1 Antwort Letzte Antwort
                                    0
                                    • Thomas BraunT Thomas Braun

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

                                      T Nicht stören
                                      T Nicht stören
                                      ticaki
                                      schrieb am zuletzt editiert von ticaki
                                      #608

                                      @thomas-braun
                                      Ja es ist normal. Wenn du

                                      var uLogAusgabe=        false;
                                      

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

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

                                      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                      Spenden

                                      1 Antwort Letzte Antwort
                                      0
                                      • T ticaki

                                        Hallo,

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

                                        // Version 1.04
                                        // Author: dwm
                                        // Änderungen ticaki
                                        // 1.01 debuglevel keine Ausgabe bei 1;
                                        // 1.02 let und variable "Fehler" behoben (wurde als Syntaxfehler angezeigt)
                                        // 1.03 logausgabe fehler bei keiner Verbindung behoben
                                        // 1.03 schedule gegen setInterval() getauscht.
                                        // 1.04 umgestellt auf Axios.
                                        
                                        var intervalMinutes = 5;
                                        var debuglevel = 4;
                                        var debugchannel = 'info';
                                        
                                        const axios = require('axios');
                                        
                                        function dwmlog( message, level, channel) {
                                          if (typeof channel === 'undefined') {
                                              channel = debugchannel;
                                          }
                                          if ( typeof level === 'undefined')
                                          {
                                              level = debuglevel;
                                          }
                                          if ( debuglevel >= level ) {
                                              log (message, channel );
                                          }
                                        }
                                        
                                        var AdapterId = "javascript."+instance;
                                        var ChannelId = "UWZ";
                                        
                                        var forceInitStates = false;
                                        var numOfWarnings = 7;
                                        
                                        var url='http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=XXXAREAXXX';
                                        
                                        
                                        /********************* Hier die Warnzellen-Id's eintragen *****************************/
                                        var warncellid = ['UWZxxxxxxx'];
                                        /**************************************************************************************/
                                        
                                        
                                        var UWZTypesArray=["n/a","unbekannt","Sturm/Orkan","Schneefall","Starkregen","Extremfrost","Waldbrandgefahr","Gewitter","Glätte","Hitze","Glatteisregen","Bodenfrost"];
                                        
                                        function createStates(n){
                                          var areaChannelId = null;
                                        
                                          for (var j=0; j<warncellid.length; j++) {
                                              areaChannelId=ChannelId+"."+warncellid[j];
                                              for (let i=0; i<n; i++) {
                                                  createState(areaChannelId+".warning."+i+".ShortText","",forceInitStates,{type: 'string'});
                                                  createState(areaChannelId+".warning."+i+".LongText","",forceInitStates,{type: 'string'});
                                                  createState(areaChannelId+".warning."+i+".object","",forceInitStates,{type: 'string'});
                                                  createState(areaChannelId+".warning."+i+".begin","",forceInitStates,{type: 'string'});
                                                  createState(areaChannelId+".warning."+i+".end","",forceInitStates,{type: 'string'});
                                                  createState(areaChannelId+".warning."+i+".severity",0,forceInitStates,{min:0, max:6, type: 'number'});
                                                  createState(areaChannelId+".warning."+i+".type",0,forceInitStates,{min:0, max:11, type: 'number',states:UWZTypesArray});
                                                  createState(areaChannelId+".warning."+i+".uwzLevel",0,forceInitStates,{min:0, max:5, type: 'number'});
                                                  createState(areaChannelId+".warning."+i+".uwzColor",0,forceInitStates,{type:'number'});
                                                  createState(areaChannelId+".warning."+i+".HTMLShort","",forceInitStates,{type: 'string'});
                                                  createState(areaChannelId+".warning."+i+".HTMLLong","",forceInitStates,{type: 'string'});
                                              }
                                          }
                                        }
                                        
                                        function getUWZLevel (warnName){
                                          var result = -1; // -1 is an error!
                                          var alert = warnName.split("_");
                                          var colors = ["green","darkgreen","yellow","orange","red","violet"];
                                        
                                          if (alert[0]=="notice") { result = 1; }
                                          else if (alert[1] == "forewarn") { result = 2; }
                                          else {
                                              result = colors.indexOf(alert[2]);
                                          }
                                          return result;
                                        }
                                        
                                        function getUWZUrgency (warnName){
                                          var result = 0;
                                        
                                          var alert = warnName.split("_");
                                          if (alert[1] == "forewarn") {
                                              result = 1;
                                          }
                                          else {
                                              result = 2; // immediate;
                                          }
                                          return result;
                                        }
                                        
                                        function getLevelColor(uwzLevel) {
                                          var uwzColor = [
                                              0x00ff00, // 0 - Grün
                                              0x009b00, // 1 - Dunkelgrün
                                              0xffff00, // 2 - Gelb Wetterwarnungen (Stufe 1)
                                              0xffb400, // 3 - Orange Warnungen vor markantem Wetter (Stufe 2)
                                              0xff0000, // 4 - Rot Unwetterwarnungen (Stufe 3)
                                              0xff00ff, // 5 - Violett Warnungen vor extremem Unwetter (Stufe 4)
                                          ];
                                          if (uwzLevel>=0 && uwzLevel<=5)
                                              return uwzColor[uwzLevel];
                                          else
                                              return 0;
                                        }
                                        
                                        function createHTMLShort(w){
                                          var html = '<div style="background: #'+w.uwzColor.toString(16)+'" border:"10px">';
                                        
                                          var theData = JSON.parse(w.object);
                                        
                                          html += '<h3>';
                                          if (w.uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
                                          html += UWZTypesArray[w.type];
                                          html +="</h3>";
                                          html += "<p>Zeitraum von "+formatDate(new Date(theData.dtgStart*1000),"WW, DD. OO YYYY hh:mm")+" Uhr bis "+formatDate(new Date(theData.dtgEnd*1000),"WW, DD. OO YYYY hh:mm")+" Uhr </p>";
                                          html += '<p>'+w.ShortText+'</p>';
                                          html += "</div>";
                                          return html;
                                        }
                                        
                                        function createHTMLLong(w){
                                          var html = '<div style="background: #'+w.uwzColor.toString(16)+'" border:"10px">';
                                        
                                          var theData = JSON.parse(w.object);
                                        
                                          html += '<h3>';
                                          if (w.uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
                                          html += UWZTypesArray[w.type];
                                          html +="</h3>";
                                          html += "<p>Zeitraum von "+formatDate(new Date(theData.dtgStart*1000),"WW, DD. OO YYYY hh:mm")+" Uhr bis "+formatDate(new Date(theData.dtgEnd*1000),"WW, DD. OO YYYY hh:mm")+" Uhr </p>";
                                          html += '<p>'+w.LongText+'</p>';
                                          html += "</div>";
                                          return html;
                                        }
                                        
                                        function processResultEntry(w) {
                                          this.object = JSON.stringify(w);
                                        
                                          this.begin=formatDate(new Date(w.dtgStart*1000),"DD.MM.YYYY hh:mm");
                                          this.end=formatDate(new Date(w.dtgEnd*1000),"DD.MM.YYYY hh:mm");
                                        
                                          // dwmlog (formatDate(this.begin,"DD.MM.YYYY hh:mm"),4);
                                          // dwmlog (formatDate(this.end,"DD.MM.YYYY hh:mm"),4);
                                        
                                          this.LongText = w.payload.translationsLongText.DE;
                                          this.ShortText = w.payload.translationsShortText.DE;
                                        
                                          this.severity = w.severity;
                                          this.type = w.type;
                                          this.uwzLevel = getUWZLevel(w.payload.levelName);
                                          this.uwzUrgency = getUWZUrgency(w.payload.levelName);
                                          this.uwzColor = getLevelColor(this.uwzLevel);
                                          var x = this;
                                          this.HTMLShort = createHTMLShort(x);
                                          this.HTMLLong  = createHTMLLong(x);
                                        }
                                        
                                        function processData(Area, thedata) {
                                           if (!thedata) {
                                              return;
                                           }
                                        
                                           var warnings= [];
                                           if (thedata.results.length>0) {
                                               for (let i=0; i<thedata.results.length; i++) {
                                                   warnings.push(new processResultEntry(thedata.results[i]));
                                               }
                                           }
                                        
                                           warnings.sort(function(a,b){
                                               var asort = a.severity;
                                               var bsort = b.severity;
                                               return bsort-asort;
                                           });
                                        
                                           dwmlog(JSON.stringify(warnings),2);
                                           let areaChannelId=ChannelId+"."+Area;
                                           for (let i=0; i<numOfWarnings; i++) {
                                              if (i<warnings.length) {
                                                  setState(areaChannelId+".warning."+i+".LongText",warnings[i].LongText);
                                                  setState(areaChannelId+".warning."+i+".ShortText",warnings[i].ShortText);
                                                  setState(areaChannelId+".warning."+i+".object",warnings[i].object);
                                                  setState(areaChannelId+".warning."+i+".begin",warnings[i].begin);
                                                  setState(areaChannelId+".warning."+i+".end",warnings[i].end);
                                                  setState(areaChannelId+".warning."+i+".severity",warnings[i].severity);
                                                  setState(areaChannelId+".warning."+i+".type",warnings[i].type);
                                                  setState(areaChannelId+".warning."+i+".uwzLevel",warnings[i].uwzLevel);
                                                  setState(areaChannelId+".warning."+i+".uwzColor",warnings[i].uwzColor);
                                                  setState(areaChannelId+".warning."+i+".HTMLShort",warnings[i].HTMLShort);
                                                  setState(areaChannelId+".warning."+i+".HTMLLong",warnings[i].HTMLLong);
                                              } else {
                                                  setState(areaChannelId+".warning."+i+".LongText","");
                                                  setState(areaChannelId+".warning."+i+".ShortText","");
                                                  setState(areaChannelId+".warning."+i+".object","{}");
                                                  setState(areaChannelId+".warning."+i+".begin","");
                                                  setState(areaChannelId+".warning."+i+".end","");
                                                  setState(areaChannelId+".warning."+i+".severity",0);
                                                  setState(areaChannelId+".warning."+i+".type",0);
                                                  setState(areaChannelId+".warning."+i+".uwzLevel",0);
                                                  setState(areaChannelId+".warning."+i+".uwzColor",0);
                                                  setState(areaChannelId+".warning."+i+".HTMLShort","");
                                                  setState(areaChannelId+".warning."+i+".HTMLLong","");
                                            }
                                          }
                                        }
                                        
                                        function getAreaFromURI(uri) {
                                          var searchstr = "&areaID=";
                                          var n = uri.search(searchstr);
                                          var result = uri.slice(n+searchstr.length,uri.length);
                                          return result;
                                        }
                                        
                                        createStates(numOfWarnings);
                                        
                                        setInterval(work,intervalMinutes * 60 * 1000);
                                        work();
                                        
                                        async function work() {
                                           for (var i=0; i<warncellid.length; i++) {
                                               try {
                                                   const res = await axios.get(url.replace("XXXAREAXXX",warncellid[i]));
                                                   dwmlog("AREA: "+getAreaFromURI(res.config.url),4);
                                                   dwmlog("UWZ Body: " + JSON.stringify(res.data),4);
                                                   dwmlog("Status: " + res.status,4);
                                                   if (res.status == 200) {
                                                       processData(getAreaFromURI(res.config.url),res.data);
                                                   }
                                               } catch (error) {
                                                   // Error 😨
                                                   if (error.response) {
                                                       /*
                                                       * The request was made and the server responded with a
                                                       * status code that falls out of the range of 2xx
                                                       */
                                                       dwmlog(error.response.data, 1);
                                                       dwmlog(error.response.status, 1);
                                                       dwmlog(error.response.headers, 1);
                                                   } else if (error.request) {
                                                       /*
                                                       * The request was made but no response was received, `error.request`
                                                       * is an instance of XMLHttpRequest in the browser and an instance
                                                       * of http.ClientRequest in Node.js
                                                       */
                                                       dwmlog("Server antwortet nicht", 1);
                                                   } else {
                                                       // Something happened in setting up the request and triggered an Error
                                                       dwmlog(error.message, 1, 'warn');
                                                   }
                                                   dwmlog(error,1);
                                               }
                                           }
                                        }
                                        
                                        

                                        Danke

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

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

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

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

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

                                        T 1 Antwort Letzte Antwort
                                        0
                                        • sigi234S sigi234

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

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

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

                                          T Nicht stören
                                          T Nicht stören
                                          ticaki
                                          schrieb am zuletzt editiert von ticaki
                                          #610

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

                                          // Version 1.05
                                          // Author: dwm
                                          // Änderungen ticaki
                                          // 1.01 debuglevel keine Ausgabe bei 1;
                                          // 1.02 let und variable "Fehler" behoben (wurde als Syntaxfehler angezeigt)
                                          // 1.03 logausgabe fehler bei keiner Verbindung behoben
                                          // 1.03 schedule gegen setInterval() getauscht.
                                          // 1.04 umgestellt auf Axios.
                                          // 1.05 Fehler in dwmlog behoben
                                          
                                          var intervalMinutes = 5;
                                          var debuglevel = 1;
                                          var debugchannel = 'info';
                                          
                                          const axios = require('axios');
                                          
                                          function dwmlog( message, level, channel) {
                                            if (channel === undefined) {
                                                channel = debugchannel;
                                            }
                                            if (level === undefined)
                                            {
                                                level = debuglevel;
                                            }
                                            if ( debuglevel >= level ) {
                                                log (message, channel );
                                            }
                                          }
                                          
                                          var AdapterId = "javascript."+instance;
                                          var ChannelId = "UWZ";
                                          
                                          var forceInitStates = false;
                                          var numOfWarnings = 7;
                                          
                                          var url='http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=XXXAREAXXX';
                                          
                                          
                                          /********************* Hier die Warnzellen-Id's eintragen *****************************/
                                          var warncellid = ['UWZxxxxxxx'];
                                          /**************************************************************************************/
                                          
                                          
                                          var UWZTypesArray=["n/a","unbekannt","Sturm/Orkan","Schneefall","Starkregen","Extremfrost","Waldbrandgefahr","Gewitter","Glätte","Hitze","Glatteisregen","Bodenfrost"];
                                          
                                          function createStates(n){
                                            var areaChannelId = null;
                                          
                                            for (var j=0; j<warncellid.length; j++) {
                                                areaChannelId=ChannelId+"."+warncellid[j];
                                                for (let i=0; i<n; i++) {
                                                    createState(areaChannelId+".warning."+i+".ShortText","",forceInitStates,{type: 'string'});
                                                    createState(areaChannelId+".warning."+i+".LongText","",forceInitStates,{type: 'string'});
                                                    createState(areaChannelId+".warning."+i+".object","",forceInitStates,{type: 'string'});
                                                    createState(areaChannelId+".warning."+i+".begin","",forceInitStates,{type: 'string'});
                                                    createState(areaChannelId+".warning."+i+".end","",forceInitStates,{type: 'string'});
                                                    createState(areaChannelId+".warning."+i+".severity",0,forceInitStates,{min:0, max:6, type: 'number'});
                                                    createState(areaChannelId+".warning."+i+".type",0,forceInitStates,{min:0, max:11, type: 'number',states:UWZTypesArray});
                                                    createState(areaChannelId+".warning."+i+".uwzLevel",0,forceInitStates,{min:0, max:5, type: 'number'});
                                                    createState(areaChannelId+".warning."+i+".uwzColor",0,forceInitStates,{type:'number'});
                                                    createState(areaChannelId+".warning."+i+".HTMLShort","",forceInitStates,{type: 'string'});
                                                    createState(areaChannelId+".warning."+i+".HTMLLong","",forceInitStates,{type: 'string'});
                                                }
                                            }
                                          }
                                          
                                          function getUWZLevel (warnName){
                                            var result = -1; // -1 is an error!
                                            var alert = warnName.split("_");
                                            var colors = ["green","darkgreen","yellow","orange","red","violet"];
                                          
                                            if (alert[0]=="notice") { result = 1; }
                                            else if (alert[1] == "forewarn") { result = 2; }
                                            else {
                                                result = colors.indexOf(alert[2]);
                                            }
                                            return result;
                                          }
                                          
                                          function getUWZUrgency (warnName){
                                            var result = 0;
                                          
                                            var alert = warnName.split("_");
                                            if (alert[1] == "forewarn") {
                                                result = 1;
                                            }
                                            else {
                                                result = 2; // immediate;
                                            }
                                            return result;
                                          }
                                          
                                          function getLevelColor(uwzLevel) {
                                            var uwzColor = [
                                                0x00ff00, // 0 - Grün
                                                0x009b00, // 1 - Dunkelgrün
                                                0xffff00, // 2 - Gelb Wetterwarnungen (Stufe 1)
                                                0xffb400, // 3 - Orange Warnungen vor markantem Wetter (Stufe 2)
                                                0xff0000, // 4 - Rot Unwetterwarnungen (Stufe 3)
                                                0xff00ff, // 5 - Violett Warnungen vor extremem Unwetter (Stufe 4)
                                            ];
                                            if (uwzLevel>=0 && uwzLevel<=5)
                                                return uwzColor[uwzLevel];
                                            else
                                                return 0;
                                          }
                                          
                                          function createHTMLShort(w){
                                            var html = '<div style="background: #'+w.uwzColor.toString(16)+'" border:"10px">';
                                          
                                            var theData = JSON.parse(w.object);
                                          
                                            html += '<h3>';
                                            if (w.uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
                                            html += UWZTypesArray[w.type];
                                            html +="</h3>";
                                            html += "<p>Zeitraum von "+formatDate(new Date(theData.dtgStart*1000),"WW, DD. OO YYYY hh:mm")+" Uhr bis "+formatDate(new Date(theData.dtgEnd*1000),"WW, DD. OO YYYY hh:mm")+" Uhr </p>";
                                            html += '<p>'+w.ShortText+'</p>';
                                            html += "</div>";
                                            return html;
                                          }
                                          
                                          function createHTMLLong(w){
                                            var html = '<div style="background: #'+w.uwzColor.toString(16)+'" border:"10px">';
                                          
                                            var theData = JSON.parse(w.object);
                                          
                                            html += '<h3>';
                                            if (w.uwzUrgency==1) html+="Vorwarnung vor "; else html+="Warnung vor ";
                                            html += UWZTypesArray[w.type];
                                            html +="</h3>";
                                            html += "<p>Zeitraum von "+formatDate(new Date(theData.dtgStart*1000),"WW, DD. OO YYYY hh:mm")+" Uhr bis "+formatDate(new Date(theData.dtgEnd*1000),"WW, DD. OO YYYY hh:mm")+" Uhr </p>";
                                            html += '<p>'+w.LongText+'</p>';
                                            html += "</div>";
                                            return html;
                                          }
                                          
                                          function processResultEntry(w) {
                                            this.object = JSON.stringify(w);
                                          
                                            this.begin=formatDate(new Date(w.dtgStart*1000),"DD.MM.YYYY hh:mm");
                                            this.end=formatDate(new Date(w.dtgEnd*1000),"DD.MM.YYYY hh:mm");
                                          
                                            // dwmlog (formatDate(this.begin,"DD.MM.YYYY hh:mm"),4);
                                            // dwmlog (formatDate(this.end,"DD.MM.YYYY hh:mm"),4);
                                          
                                            this.LongText = w.payload.translationsLongText.DE;
                                            this.ShortText = w.payload.translationsShortText.DE;
                                          
                                            this.severity = w.severity;
                                            this.type = w.type;
                                            this.uwzLevel = getUWZLevel(w.payload.levelName);
                                            this.uwzUrgency = getUWZUrgency(w.payload.levelName);
                                            this.uwzColor = getLevelColor(this.uwzLevel);
                                            var x = this;
                                            this.HTMLShort = createHTMLShort(x);
                                            this.HTMLLong  = createHTMLLong(x);
                                          }
                                          
                                          function processData(Area, thedata) {
                                             if (!thedata) {
                                                return;
                                             }
                                          
                                             var warnings= [];
                                             if (thedata.results.length>0) {
                                                 for (let i=0; i<thedata.results.length; i++) {
                                                     warnings.push(new processResultEntry(thedata.results[i]));
                                                 }
                                             }
                                          
                                             warnings.sort(function(a,b){
                                                 var asort = a.severity;
                                                 var bsort = b.severity;
                                                 return bsort-asort;
                                             });
                                          
                                             dwmlog(JSON.stringify(warnings),2);
                                             let areaChannelId=ChannelId+"."+Area;
                                             for (let i=0; i<numOfWarnings; i++) {
                                                if (i<warnings.length) {
                                                    setState(areaChannelId+".warning."+i+".LongText",warnings[i].LongText);
                                                    setState(areaChannelId+".warning."+i+".ShortText",warnings[i].ShortText);
                                                    setState(areaChannelId+".warning."+i+".object",warnings[i].object);
                                                    setState(areaChannelId+".warning."+i+".begin",warnings[i].begin);
                                                    setState(areaChannelId+".warning."+i+".end",warnings[i].end);
                                                    setState(areaChannelId+".warning."+i+".severity",warnings[i].severity);
                                                    setState(areaChannelId+".warning."+i+".type",warnings[i].type);
                                                    setState(areaChannelId+".warning."+i+".uwzLevel",warnings[i].uwzLevel);
                                                    setState(areaChannelId+".warning."+i+".uwzColor",warnings[i].uwzColor);
                                                    setState(areaChannelId+".warning."+i+".HTMLShort",warnings[i].HTMLShort);
                                                    setState(areaChannelId+".warning."+i+".HTMLLong",warnings[i].HTMLLong);
                                                } else {
                                                    setState(areaChannelId+".warning."+i+".LongText","");
                                                    setState(areaChannelId+".warning."+i+".ShortText","");
                                                    setState(areaChannelId+".warning."+i+".object","{}");
                                                    setState(areaChannelId+".warning."+i+".begin","");
                                                    setState(areaChannelId+".warning."+i+".end","");
                                                    setState(areaChannelId+".warning."+i+".severity",0);
                                                    setState(areaChannelId+".warning."+i+".type",0);
                                                    setState(areaChannelId+".warning."+i+".uwzLevel",0);
                                                    setState(areaChannelId+".warning."+i+".uwzColor",0);
                                                    setState(areaChannelId+".warning."+i+".HTMLShort","");
                                                    setState(areaChannelId+".warning."+i+".HTMLLong","");
                                              }
                                            }
                                          }
                                          
                                          function getAreaFromURI(uri) {
                                            var searchstr = "&areaID=";
                                            var n = uri.search(searchstr);
                                            var result = uri.slice(n+searchstr.length,uri.length);
                                            return result;
                                          }
                                          
                                          createStates(numOfWarnings);
                                          
                                          setInterval(work,intervalMinutes * 60 * 1000);
                                          work();
                                          
                                          async function work() {
                                             for (var i=0; i<warncellid.length; i++) {
                                                 try {
                                                     const res = await axios.get(url.replace("XXXAREAXXX",warncellid[i]));
                                                     dwmlog("AREA: "+getAreaFromURI(res.config.url),4);
                                                     dwmlog("UWZ Body: " + JSON.stringify(res.data),4);
                                                     dwmlog("Status: " + res.status,4);
                                                     if (res.status == 200) {
                                                         processData(getAreaFromURI(res.config.url),res.data);
                                                     }
                                                 } catch (error) {
                                                     // Error 😨
                                                     if (error.response) {
                                                         /*
                                                         * The request was made and the server responded with a
                                                         * status code that falls out of the range of 2xx
                                                         */
                                                         dwmlog(error.response.data, 1);
                                                         dwmlog(error.response.status, 1);
                                                         dwmlog(error.response.headers, 1);
                                                     } else if (error.request) {
                                                         /*
                                                         * The request was made but no response was received, `error.request`
                                                         * is an instance of XMLHttpRequest in the browser and an instance
                                                         * of http.ClientRequest in Node.js
                                                         */
                                                         dwmlog("Server antwortet nicht", 1);
                                                     } else {
                                                         // Something happened in setting up the request and triggered an Error
                                                         dwmlog(error.message, 1, 'warn');
                                                     }
                                                     dwmlog(error,1);
                                                 }
                                             }
                                          }
                                          

                                          Änderungen:
                                          debuglevel auf 1 gesetzt

                                          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                          Spenden

                                          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

                                          611

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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