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

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

Community Forum

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

NEWS

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

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

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

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

Geplant Angeheftet Gesperrt Verschoben JavaScript
1.5k Beiträge 53 Kommentatoren 571.6k Aufrufe 52 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • T Offline
    T Offline
    ticaki
    schrieb am zuletzt editiert von
    #126

    zu dem Fehler. Ich weiß nicht wie ich das beheben kann, da ist anscheinend bei SayIt was schief gelaufen. (denke ich)

    Zu deiner 2. Frage:

    Du möchtest im laufenden Betrieb von DWD auf UWZ umschalten?

    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

    Spenden

    sigi234S 1 Antwort Letzte Antwort
    0
    • T ticaki

      zu dem Fehler. Ich weiß nicht wie ich das beheben kann, da ist anscheinend bei SayIt was schief gelaufen. (denke ich)

      Zu deiner 2. Frage:

      Du möchtest im laufenden Betrieb von DWD auf UWZ umschalten?

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

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

      Du möchtest im laufenden Betrieb von DWD auf UWZ umschalten?

      Jupp

      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 Warnungen als Pushnachrichten:

        Du möchtest im laufenden Betrieb von DWD auf UWZ umschalten?

        Jupp

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

        @sigi234
        Ok ich überlege mir was

        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

        Spenden

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

          Hab was, aber noch nicht getestet.
          Ich baue einen State ein über den du den Mode einstellen kannst. Anschließend startet das Skript neu... Damit könnte ich auch den manuellen Restart raus bekommen beim ersten Start.

          Wie wäre es, wenn man den Punkt Pushdienst auch über States einstellen könnte? Im Skript stellt man erlaubtes ein und das wird mit den States gegen geprüft. Der Automatikmodus würde da auch Sinn machen.

          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

          Spenden

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

            Neue Version im Testordner.

            dwd_uwz_script_iobroker.js

            Vorweg bitte alte States löschen, hab Command in command umbenannt.

            Was kann die neue Version von "test/dwd_uwz_script_iobroker.js":

            • Autorestart nach Erstellung der States (restart ca. 1,5 sekunden offline)
            • Mode lässt sich über State ändern ohne restart
            • Mode kann 'UWZDWD' 'DWDUWZ enthalten
            • Automode lässt sich über State ein/ausschalten
            • Automode Pushdienste sind über States einstellbar (nur im Rahmen der Grundkonfiguration)
            • Emails sind jetzt html mit Farbe ( Wenn da jemand was schöneres hat, her damit :) )
            • gibt ne alive anzeige, die stimmt aber natürlich nur, wenn das script oder die scripteditor instanz nicht abstürzt
            • die Telegram Ww? Wetterwarnungen? ist mit drin. wenns stört kommts wieder raus.
            • Sprachausgabe 21.03. / 03.03. / l/m werden richtig ausgegeben
            • hab die kleine aber nervige Pause zwischen "60 km/h .... und 70 km/h ... bla bla" behoben
            • .alert in .alert.dwd und .alert.uwz aufgeteilt
            • uwz/dwd level sind jetzt vergleichbar

            bis v0.93.1

            • alert. start umbenannt in begin / Beschreibung, Schlagzeile und Warnlevel abhängige Farbnummer (bgcolor) hinzugefügt
            • duplicate filtern. (konfigurierbar) hatte heute 2 Meldungen wobei eine die andere zeitlich überdeckte und der rest war identisch
            • code umsortiert
            • Fehler in alert. behoben, der war aber lange drin (fehlender . )
            • Sprachausgabe: Wartezeit ist konfigurierbar in ms pro Zeichen die Rechnung für Alexa 85ms * Textlänge + 2 Sekunden(für den Gong)

            bis v0.93.5

            • kosmetische Korrektur
            • Aufgehoben Mitteilung korrigiert von "Die Wetterwarnung'Warnung vor Starkregen" zu "Die Wetterwarnung des DWD 'Warnung vor...'
            • Kleinen Fehler mit großer Wirkung behoben.

            v0.94.1 ist aktuell

            Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

            Spenden

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

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

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

              Das hier ist der Werbetext zu dem Script:

              Unterstützt:

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

              Funktionen:

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

              Kleinkram:

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

              Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

              Spenden

              LatziL 1 Antwort Letzte Antwort
              0
              • T ticaki

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

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

                Das hier ist der Werbetext zu dem Script:

                Unterstützt:

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

                Funktionen:

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

                Kleinkram:

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

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

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

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

                  Danke :)

                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                  Spenden

                  LatziL 1 Antwort Letzte Antwort
                  1
                  • T ticaki

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

                    Danke :)

                    LatziL Online
                    LatziL Online
                    Latzi
                    schrieb am zuletzt editiert von
                    #134

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

                    T 1 Antwort Letzte Antwort
                    0
                    • LatziL Latzi

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

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

                      @Latzi
                      .... ups

                      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                      Spenden

                      LatziL 1 Antwort Letzte Antwort
                      0
                      • T ticaki

                        @Latzi
                        .... ups

                        LatziL Online
                        LatziL Online
                        Latzi
                        schrieb am zuletzt editiert von
                        #136

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

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

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

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

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

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

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

                          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                          Spenden

                          C 1 Antwort Letzte Antwort
                          0
                          • T ticaki

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

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

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

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

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

                            C Offline
                            C Offline
                            CruziX
                            schrieb am zuletzt editiert von
                            #138

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

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

                            T 1 Antwort Letzte Antwort
                            0
                            • C CruziX

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

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

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

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

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

                              Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                              Spenden

                              C 1 Antwort Letzte Antwort
                              1
                              • T ticaki

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

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

                                C Offline
                                C Offline
                                CruziX
                                schrieb am zuletzt editiert von
                                #140

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

                                T 2 Antworten Letzte Antwort
                                0
                                • C CruziX

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

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

                                  @CruziX
                                  Gut zu wissen. :)

                                  @all
                                  behobene Kleinigkeiten bisher ohne Versionsnummernanhebung:

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

                                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                  Spenden

                                  sigi234S 1 Antwort Letzte Antwort
                                  0
                                  • T ticaki

                                    @CruziX
                                    Gut zu wissen. :)

                                    @all
                                    behobene Kleinigkeiten bisher ohne Versionsnummernanhebung:

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

                                    @ticaki

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

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

                                    LatziL 1 Antwort Letzte Antwort
                                    0
                                    • sigi234S sigi234

                                      @ticaki

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

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

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

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

                                      sigi234S 1 Antwort Letzte Antwort
                                      0
                                      • LatziL Latzi

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

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

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

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

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

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

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

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

                                        Ok, dann kommen Folgefehler

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

                                        T 1 Antwort Letzte Antwort
                                        0
                                        • sigi234S sigi234

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

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

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

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

                                          Ok, dann kommen Folgefehler

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

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

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

                                          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                          Spenden

                                          1 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

                                          584

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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