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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. UWZ Script für Europa / Österreich

NEWS

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

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

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

UWZ Script für Europa / Österreich

Scheduled Pinned Locked Moved JavaScript
5 Posts 3 Posters 1.1k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    muckel
    wrote on last edited by
    #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 Reply Last reply
    0
    • sigi234S Online
      sigi234S Online
      sigi234
      Forum Testing Most Active
      wrote on last edited by
      #2

      Skript_UWZ.txt

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

      1 Reply Last reply
      1
      • NashraN Offline
        NashraN Offline
        Nashra
        Most Active Forum Testing
        wrote on last edited by 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 Reply Last reply
        0
        • M Offline
          M Offline
          muckel
          wrote on last edited by
          #4

          Danke, danke, danke! :-)

          NashraN 1 Reply Last reply
          0
          • M muckel

            Danke, danke, danke! :-)

            NashraN Offline
            NashraN Offline
            Nashra
            Most Active Forum Testing
            wrote on last edited by
            #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 Reply Last reply
            0
            Reply
            • Reply as topic
            Log in to reply
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes


            Support us

            ioBroker
            Community Adapters
            Donate

            609

            Online

            32.7k

            Users

            82.5k

            Topics

            1.3m

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

            • Don't have an account? Register

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