Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Projekt WetterView von sigi234

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Projekt WetterView von sigi234

    This topic has been deleted. Only users with topic management privileges can see it.
    • sigi234
      sigi234 Forum Testing Most Active @heli-wolf last edited by

      @heli-wolf sagte in Projekt WetterView von sigi234:

      Modul jetzt erfasst.

      Ok, zeig mal dein Skript vom UWZ

      Bitte benutzt die Code Tags Funktion -> </>
      Hier gehts zur Hilfe.

      1 Reply Last reply Reply Quote 0
      • H
        heli-wolf last edited by

        Ok, sorry aber man lernt NIE aus !!

        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 = 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 = ['UWZAT01026'];
        /**************************************************************************************/
        
        
        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 ("3 * * * *", 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);
                        }
                    });    
            }
        });
        
         
        
        
        sigi234 1 Reply Last reply Reply Quote 0
        • sigi234
          sigi234 Forum Testing Most Active @heli-wolf last edited by sigi234

          @heli-wolf

          Getestet, bei mir geht es.

          AHA!

          script.js.common.uwz

          Du hast es in common! Da gehört es nicht hin.

          Negalein 1 Reply Last reply Reply Quote 0
          • Negalein
            Negalein Global Moderator @sigi234 last edited by

            @sigi234 sagte in Projekt WetterView von sigi234:

            Da gehört es nicht hin.

            meins läuft auch Common. Das passt normal schon so.

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

              @Negalein sagte in Projekt WetterView von sigi234:

              meins läuft auch Common. Das passt normal schon so.

              Ja, verwechselt mit Global

              1 Reply Last reply Reply Quote 0
              • crunchip
                crunchip Forum Testing Most Active @heli-wolf last edited by

                @heli-wolf du hast ein typeScript erstellt, anstatt ein JS-Script

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

                  @crunchip sagte in Projekt WetterView von sigi234:

                  @heli-wolf du hast ein typeScript erstellt, anstatt ein JS-Script

                  Ja, gerade gesehen

                  29.11.2019, 19:44:50.277	[warn ]: javascript.0 script.js.common.uwz: TypeScript compilation had errors: 
                  
                  1 Reply Last reply Reply Quote 0
                  • H
                    heli-wolf last edited by

                    AHA, ich habe doch irgendwo gelesen, dass alle deine Skripte für dieses Projekt als TypeSkript erstellt wurden ???
                    Deshalb habe ich dieses ausgewählt.

                    Müssen alle anderen Skripte (Zeitplanung und Biowetter) auch in JS erstellt werden.
                    Alle Skipte in JS und GLOBAL - Oder??

                    Negalein sigi234 2 Replies Last reply Reply Quote 0
                    • Negalein
                      Negalein Global Moderator @heli-wolf last edited by

                      @heli-wolf sagte in Projekt WetterView von sigi234:

                      GLOBAL

                      Nein, in COMMON

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

                        @heli-wolf sagte in Projekt WetterView von sigi234:

                        Alle Skipte in JS und GLOBAL - Oder??

                        In JS und nicht in Global!

                        Nur das POLLENSKRIPT ist ein TS Skript!

                        1 Reply Last reply Reply Quote 0
                        • H
                          heli-wolf last edited by

                          OK, vielen Dank!
                          das habe ich jetzt einmal alles umgestellt, Adapter und PI neu gestartet und jetzt werde ich das ganze ein bisschen beobachten und hoffe, dass es jetzt richtig läuft.
                          Andernfalls ersuche ich euch nochmals um eure Hilfe.

                          Danke vorerst einmal !!

                          1 Reply Last reply Reply Quote 0
                          • H
                            heli-wolf last edited by

                            Das Pollenskript habe ich noch gar nicht implementiert, aber wo du es sagst.
                            Ich habe ja 2 Skripte

                            • pollen_css.txt
                            • pollen_css_Ampeln.txt

                            ich dachte dass ich die beiden in der Vis unter CSS einfügen muss?

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

                              @heli-wolf sagte in Projekt WetterView von sigi234:

                              Das Pollenskript habe ich noch gar nicht implementiert, aber wo du es sagst.
                              Ich habe ja 2 Skripte

                              • pollen_css.txt
                              • pollen_css_Ampeln.txt

                              ich dachte dass ich die beiden in der Vis unter CSS einfügen muss?

                              Vergiss die Skripte, es gibt einen Adapter

                              Pollen risk index

                              1 Reply Last reply Reply Quote 0
                              • H
                                heli-wolf last edited by

                                den Pollenflug Adapter habe ich schon installiert

                                1 Reply Last reply Reply Quote 0
                                • H
                                  Hoschi575 last edited by

                                  wetter.JPG

                                  Moin zusammen.... hab jetzt lange in diesem Forum gelesen und dieses geniale aber für mich etwas zu umfangreiche script von Sigi234 meinen Vorstellungen hin reduziert. Aber ich bekomme die Mondgrafiken einfach nicht angezeigt ... ich geb echt auf und brauche jetzt etwas Hilfe 😬

                                  Danke im Vorraus (auch für die super Vorarbeit)

                                  Gruss Hoschi

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

                                    @Hoschi575

                                    Hallo,
                                    hast du in DasWetter Adapter den Icons Pfad angepasst?

                                    Screenshot (886)_LI.jpg

                                    1 Reply Last reply Reply Quote 0
                                    • H
                                      Hoschi575 last edited by

                                      Ja hab ich ... mir fällt gerade auf das bei dir 1.png steht und bei mir nur 1png .... aber warum und wie kann ich das ändern !?!?moon.JPG

                                      1 Reply Last reply Reply Quote 0
                                      • H
                                        Hoschi575 last edited by

                                        auch wenn
                                        ich unten .png hineinschreibe .... keine änderung

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

                                          @Hoschi575 sagte in Projekt WetterView von sigi234:

                                          auch wenn
                                          ich unten .png hineinschreibe .... keine änderung

                                          Abwarten und neu starten, cron ausführen

                                          1 Reply Last reply Reply Quote 0
                                          • H
                                            Hoschi575 last edited by

                                            moon2.JPG moon3.JPG
                                            hab neu gestartet aber ... nein geht noch nicht... wenn ich das richtig sehe besteht echt das problem mit dem . vor dem png ....

                                            aber wo muss ich da ran 🙄

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            666
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            wetter wetterview sigi234
                                            60
                                            497
                                            121077
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo