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. UWZ Script für Europa / Österreich

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

UWZ Script für Europa / Österreich

Geplant Angeheftet Gesperrt Verschoben JavaScript
5 Beiträge 3 Kommentatoren 1.0k Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Offline
    M Offline
    muckel
    schrieb am zuletzt editiert von
    #1

    Hat noch jemand dieses Script in richtiger Form und könnte es hochladen

    https://forum.iobroker.net/topic/7167/unwetterwarnung-für-österreich-bzw-europa/41

    Danke im Voraus

    Liebe Grüße

    1 Antwort Letzte Antwort
    0
    • sigi234S Online
      sigi234S Online
      sigi234
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #2

      Skript_UWZ.txt

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

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

        Müßte dieses sein...

        var debuglevel = 4;
        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 = 3;
        
        var url='http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=XXXAREAXXX';
        
        
        /********************* Hier die Warnzellen-Id's eintragen *****************************/
        var warncellid = ['UWZDE12345','UWZDE67890'];
        /**************************************************************************************/
        
        
        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 ("*/30 * * * *", 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);
                        }
                    });    
            }
        });
        
        

        Da war Sigi234 schneller :-)

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

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

        1 Antwort Letzte Antwort
        0
        • M Offline
          M Offline
          muckel
          schrieb am zuletzt editiert von
          #4

          Danke, danke, danke! :-)

          NashraN 1 Antwort Letzte Antwort
          0
          • M muckel

            Danke, danke, danke! :-)

            NashraN Offline
            NashraN Offline
            Nashra
            Most Active Forum Testing
            schrieb am zuletzt editiert von
            #5

            @muckel sagte in UWZ Script für Europa / Österreich:

            Danke, danke, danke! :-)

            Bitte, aber das Ganze scheint nicht mehr zu funktionieren, sie hier Link Text

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

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

            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

            768

            Online

            32.6k

            Benutzer

            82.0k

            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