Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Hilfe für Schleife

    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

    Hilfe für Schleife

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      pix last edited by pix

      Danke für die Inspiration.

      Hab mir das mal eingebaut:

      /*
      Wunderground Regen 
      Abfrage des Wunderground Adapters im Bereich Vorhersage,
      wann der nächste Regen erwartet wird.
       http://forum.iobroker.net/viewtopic.php?f=21&t=3447#p31858
       01.08.2016 erstellt von Pix unter Nutzung des obigen Skriptes
      */
      createState('Wunderground.Regenvorschau', {
         name: 'Regenvorschau',
         dec: 'Wieviele Stunden bis zum nächsten Regen',
         type: 'number',
         min: 0,
         max: 24,
         unit: 'Stunden'
      });
       var idRegen = 'javascript.1.Wunderground.Regenvorschau';
       function berechneZeit() {
          var i=0;
          var data;
          for (i=0 ; i<25;i++) {
              if (getState("weatherunderground.0.forecast." + i + "h.qpf").val>0) {
                  data = getState("weatherunderground.0.forecast." + i + "h.qpf").val;
                  break;
              }
          }
           if (i<25 && data) { 
              log("Regen  in  " + i + " Stunden (" + data + " mm)");
              setState(idRegen, parseInt(i,10));
          } else setState(idRegen, null);
      }
       var x = "/weatherunderground\.[0-9]+\.forecast\.[0-9]+h\.qpf";
       on({id: x, change: 'ne'}, berechneZeit);
      

      Wann immer sich einer der Regenvorschauwerte im Adpater ändert (hängt auch ab, vom schedule des Adapters), wird die Funktion aufgerufen. Wenn kein Regen erwartet wird, dann "null". Könnte man noch ein Boolean Objekt mit einbauen (Regen in nächsten 24h ja/nein).

      Gruß

      Pix

      EDIT 02.08.2016 RegEx korrigiert

      EDIT 11.06.2019 Neue Version des Skriptes für weatherunderground-Adapter 3.0.11 https://forum.iobroker.net/post/270546

      EDIT 04.08.2019 Neue Version für Wunderground Adapter 3.1.1 hier https://forum.iobroker.net/post/288011

      1 Reply Last reply Reply Quote 0
      • S
        stephan61 last edited by

        Hallo Nobody und Pix

        Danke für eure Hilfe wieder was dazugelernt.

        Hallo Pix indeinem Script am Ende steht

        var x = "/weatherunderground.[0-9].forecast.[0-9]h.qpf";

        Verstehe ich nicht ganz

        Muss es hinter weatherunderground nicht nur .0 heissen und hinter forecast 0-24

        Gruß Stephan

        1 Reply Last reply Reply Quote 0
        • P
          pix last edited by

          Hallo Stephan,

          schön, dass du es ansprichst. Die Variable x wird mit einem https://wiki.selfhtml.org/wiki/JavaScript/Objekte/RegExp gefüllt. Dieser erlaubt innerhalb seiner Regeln mehrere ID als Auslöser.

          In diesem Fall werden alle Datenpunkte mit on() überwacht, die eine Instanz von weatherunderground haben (Instanz 0 -unendlich, da jede Zahl möglich), danach im channel "forecast" und danach bei jeder Stunde (da wieder jede Zahl möglich) stehen. Sie enden auf ".qpf".

          Im Klartext heisst das: Wenn irgendeiner der Datenpunkte "Regenmenge" innerhalb des Kanals "Vorschau" und egal zu welcher Stunde sich ändert, wird die bleibende Zeit berechnet.

          Ist hier ein wenig mit Kanonen auf Spatzen geschossen, aber ist ein gutes Beispiel. Die Vorhersage kann sich ja über Stunden ändern: Eben wurde noch ab in 12 bis 24 Stunden Regen angezeit, jetzt sagt mir die Vorschau, dass es nur noch in 3 Stunden für eine Stunde regnen soll.

          Zudem hat diese Art der Subscription ( on() ) den Vorteil, dass man keine Zeitsteuerung mehr braucht. Es passt sich dem Abfrageintervall des weatherunderground-Adapters an. Nur wenn der neue Daten hat (also nach Aktualisierung), wird auch das Skript aktiv.

          Gruß

          Pix

          1 Reply Last reply Reply Quote 0
          • N
            nobody last edited by

            @pix:

            In diesem Fall werden alle Datenpunkte mit on() überwacht, die eine Instanz von weatherunderground haben (Instanz 0 -unendlich, da jede Zahl möglich), danach im channel "forecast" und danach bei jeder Stunde (da wieder jede Zahl möglich) stehen. Sie enden auf ".qpf".

            Im Klartext heisst das: Wenn irgendeiner der Datenpunkte "Regenmenge" innerhalb des Kanals "Vorschau" und egal zu welcher Stunde sich ändert, wird die bleibende Zeit berechnet. `

            Hallo pix,

            wenn du auch Zahlen mit mehreren Ziffern haben möchtest solltest du [0..9]+ verwenden. Ansonsten ist nur eine Ziffer erlaubt.

            Gruß

            Markus

            1 Reply Last reply Reply Quote 0
            • P
              pix last edited by

              Völlig korrekt, habe es https://regex101.com. Danke für den Hinweis. Wird oben geändert.

              Pix

              1 Reply Last reply Reply Quote 0
              • S
                stephan61 last edited by

                Hallo Pix

                habe eine Fehler ? gefunden

                setState(idRegen, parseInt(i,10));

                wenn ich parseInt(i) schreibe bekomme ich einen Eintrag unter Objecte

                Gruß Stephan

                1 Reply Last reply Reply Quote 0
                • P
                  pix last edited by Jey Cee

                  @stephan61:

                  wenn ich parseInt(i) schreibe bekomme ich einen Eintrag unter Objecte ` Ist das eine Frage?

                  setState(idRegen, parseInt(i,10));
                  

                  bedeutet, Wert i im Dezimalsystem (,10) zu einem Typ Zahl gewandelt (parseInt) in das Objekt idRegen schreiben (setState).

                  Ob parseInt hier wirklich nötig ist, sei dahingestellt.

                  Gruß

                  Pix

                  1 Reply Last reply Reply Quote 0
                  • T
                    tempestas last edited by

                    Hallo Pix,

                    das Skript funktioniert wunderbar, allein: es wird nicht ausgeführt.

                    Es gibt imho ein Problem mit dem Regex Teil. Da passiert bei mir nichts. Ich habs mal bei Regex101.com eingefügt und da wird mir auch ein Fehler angezeigt. Leider bin ich aber in JS noch viel zu unerfahren um zu verstehen, was genau das Problem ist:

                    Markiert wird das führende Slash in rot und als Fehler kommt:

                    Pattern error

                    / An unescaped delimiter must be escaped with a backslash ()

                    Aktuell behelfe ich mir mit einem Schedule, der die Funktion ausführt; aber deine angedachte Lösung ist natürlich viel viel eleganter.

                    1 Reply Last reply Reply Quote 0
                    • P
                      pix last edited by pix

                      Hallo,

                      habe das Skript mal korrigiert. So läuft es.

                      /* Wunderground Regen
                      
                      Abfrage des Wunderground Adapters im Bereich Vorhersage,
                      wann der nächste Regen erwartet wird.
                      
                      http://forum.iobroker.net/viewtopic.php?f=21&t=3447#p31858
                      
                      01.08.2016 erstellt von Pix unter Nutzung des obigen Skriptes
                      28.06.2017 Korrekturen
                      */
                      var vorstd = 36; // vorschau in Stunden (weatherundergroudn bietet neuerdings 36h Vorschau)
                      var idRegen = 'javascript.1.Wunderground.Regenvorschau';
                      
                      createState(idRegen, {
                         name: 'Regenvorschau',
                         dec: 'Wieviele Stunden bis zum nächsten Regen',
                         type: 'number',
                         min: 0,
                         max: 24,
                         unit: 'Stunden'
                      });
                      
                      function berechneZeit() {
                          //log('Berechne Dauer bis zum nächsten Regen in Stunden');
                          var i = 0;
                          var data;
                          for (i=0 ; i <vorstd; i++)/{/if/(getstate("weatherunderground.0.forecast."/+/i/"h.qpf").val="">0) {
                                  data = getState("weatherunderground.0.forecast." + i + "h.qpf").val;
                                  break;
                              }
                          }
                      
                          if (i < vorstd && data) { // jetzt 36 Stunden
                              log("Regen  in  " + i + " Stunden (" + data + " mm)");
                              setState(idRegen, parseInt(i,10));
                          } else setState(idRegen, null);
                      }
                      
                      var x = "/weatherunderground\.[0-9]\.forecast\.[0-9]+h\.qpf";
                      
                      on({
                          id: x, 
                          change: 'any'
                      }, berechneZeit);</vorstd;>
                      

                      EDIT: 28.6.2017 1715Uhr Code korrigiert

                      Gruß

                      Pix

                      EDIT 04.08.2019 es zählt dieser Post https://forum.iobroker.net/post/48353

                      1 Reply Last reply Reply Quote 0
                      • T
                        tempestas last edited by

                        Danke auch hier!

                        Also war es das "any" statt "not equal" im on Bereich?

                        Wieso wurde es denn vorher nicht ausgeführt? Die Wahrscheinlichkeit, dass über die Stunden immer der exakt gleiche Regen angesagt wird ist doch quasi null?

                        Allein schon durch die Verschiebung der Stunden immer "näher ans jetzt" hätte doch ausgelöst werden müssen, oder? Sprich wenn erst für "in 3 Stunden 2ml Regen" angesagt war und alles bleibt gleich, dann ist es eben eine Stunde später "in 2 Stunden 2ml Regen". Sprich ich hätte doch eine "not equal" Änderung sehen müssen, die das Skript dann triggert?

                        D.h. in meinem Verständnis müsste doch "not equal" quasi immer auch auf "any" rauslaufen faktisch, oder (in diesem Skript, nicht generell)? Wieso funktionierte das nicht?

                        Gruß und Dank

                        der Lernbegierige

                        Nachtrag:

                        imho müsste es, wenn du die Variable "vorStd" aufnimmst, jetzt dann auch im Skript <37 heißen (oder<vorstd) 36/und/der/regenstate/bei/max/haben?</t=""></vorstd)>

                        1 Reply Last reply Reply Quote 0
                        • P
                          pix last edited by

                          Hallo,

                          ich tippe das hier alles einhändig und einäugig während die andere Hand / das andere Auge eine Neunmonatige beaufsichtigt, die gern die Wohnung umdekoriert (inkl. HM-Geräte :shock: 😮 ). Daher kann ich nicht tiefer einsteigen.

                          'Works for me' reicht mir in diesem Fall.

                          Pix

                          1 Reply Last reply Reply Quote 0
                          • T
                            tempestas last edited by

                            Haha, alles klar 🙂

                            war ja auch nur eine reine Interessensfrage bzw Hinweis an andere. Ich versuche ja auch, ab und zu etwas zu geben und nicht nur zu fragen.

                            Viel Spaß mit der Lütten.

                            1 Reply Last reply Reply Quote 0
                            • AlCalzone
                              AlCalzone Developer last edited by

                              on({
                                  id: x, 
                                  change: 'any'
                              }, berechneZeit());
                              
                              

                              Ich fürchte, in diesem Fall hat ein Tippfehler dafür gesorgt, dass es zu funktionieren scheint. Tut es das denn weiterhin?

                              Die zwei Klammern hinter <u>berechneZeit</u> sorgen in diesem Fall dafür, dass die Funktion sofort aufgerufen wird. Der (nicht vorhandene) Rückgabewert wird von <u>on</u> anschließend als Funktion verstanden, die bei einem Trigger aufgerufen werden soll - hier wirds knallen, bzw. der Trigger wird so nicht funktionieren.

                              Korrekt wäre

                              on({
                                  id: x, 
                                  change: 'any'
                              }, berechneZeit);
                              
                              
                              1 Reply Last reply Reply Quote 0
                              • P
                                pix last edited by

                                Ja, stimmt. Danke!

                                Verschlimmbessert…

                                1 Reply Last reply Reply Quote 0
                                • P
                                  pix last edited by

                                  Hab den Code oben korrigiert. Läuft jetzt wirklich.

                                  1 Reply Last reply Reply Quote 0
                                  • B
                                    brufi last edited by

                                    Hallo zusammen,

                                    bei mir wird das Script von PIX nur ausgeführt, wenn ich in der Zeile mit der RegExp die Anführungsstriche weglasse:

                                    var x = /weatherunderground\.[0-9]\.forecast\.[0-9]+h\.qpf;
                                    

                                    Keine Ahnung warum das so ist…

                                    wenn ich den Pfad zum Datenpunkt mit Anführungszeichen ohne RegExp ins Script einfüge

                                    weatherunderground.0.forecast.30h.qpf
                                    

                                    und dann den Datenpunkt qpf in der Stunde 30 verändere funktioniert es :?

                                    Gruß

                                    Brufi

                                    1 Reply Last reply Reply Quote 0
                                    • P
                                      pix last edited by pix

                                      Auch wenn es schon älter ist: Habe mal angepasst, das alte Skript lief nicht mehr, weil die Struktur des weatherground-Adapters sich geändert hat.

                                      Das Skript geht alle ForecastHourly-Datenpuntke des Adapters durch und sucht nach dem ersten Eintrag mit erwarteter Regenmenge über 0mm. Dann gibt es die Stunde und die zugehörige Wahrscheinlichkeit in einen Datenpunkt aus.

                                      Passt ab Weatherunderground-Adapter Version 3.0.11

                                      /* Wunderground Regen
                                      
                                      Abfrage des Weatherunderground Adapters im Bereich Vorhersage,
                                      wann der nächste Regen erwartet wird.
                                      
                                      Findet in den forecastHourly-Datenpunkt den ersten Regen-Eintrag
                                      Ausgabe in Text ("kein Regen", "X Stunden (X% [Wahrscheinlichkeit])")
                                      
                                      
                                      
                                      http://forum.iobroker.net/viewtopic.php?f=21&t=3447#p31858
                                      
                                      01.08.2016 erstellt von Pix unter Nutzung des obigen Skriptes
                                      28.06.2017 Korrekturen
                                      12.07.2017 Fehler abfangen und Typ Variable auf String geändert
                                      06.03.2019 Code optimiert
                                                berücksichtigt Niederschlag in der aktuellen Stunde (Stunde 0)
                                      11.06.2019 auf neue Datenpunkte angepasst für weatherground-Adapter (getestet V3.0.11)
                                      */
                                      
                                      const vorstd = 36; // Vorschau in Stunden (weatherundergroudn bietet neuerdings bis 36h Vorschau), kann hier auch kleiner sein
                                      const idRegen = "Wunderground.Regenvorschau"; // Ziel-Datenpunkt
                                      const wunder_inst = "weatherunderground.0."; // Weatherground-Adapter Instanz
                                      const logging = true;
                                      const fC = false;
                                      
                                      createState(idRegen, "kein Regen", fC, {
                                        name: "Regenvorschau",
                                        dec: "Wann gibt es den nächsten Regen",
                                        type: "string",
                                        role: "text"
                                      });
                                      
                                      function berechneZeit() {
                                         if (logging) log("Berechne Dauer in Stunden bis zum nächsten Regen");
                                         let i = 0;
                                         let data; // leer
                                         let pop; // leer
                                         for (i=0 ; i<vorstd; i++) {
                                             if (getState(wunder_inst + "forecastHourly." + i + "h.precipitationChance").val > 0) {
                                                 data = getState(wunder_inst + "forecastHourly." + i + "h.precipitation").val;
                                                 pop = getState(wunder_inst + "forecastHourly." + i + "h.precipitationChance").val;
                                                 break; // beim ersten Auftreten der Regenwahrscheinlichkeit über 0 abbrechen
                                             }
                                         }
                                      
                                         if (i < vorstd && data) { // jetzt 36 Stunden
                                             if (i == 0) { // wenn jetzt Regen
                                                 if (logging) log("In dieser Stunde werden " + data + "mm Regen erwartet (Wahrscheinlichkeit " + pop + "%)");
                                                 setState(idRegen, "jetzt (" + pop + "%)");
                                             } else {
                                                 if (logging) log("In " + i + " Stunden werden " + data + "mm Regen erwartet (Wahrscheinlichkeit " + pop + "%)");
                                                 setState(idRegen, i + " Stunden (" + pop + "%)");
                                             }
                                         } else {
                                             setState(idRegen, "Kein Regen erwartet (" + pop + "%)");
                                             if (logging) log("Kein Regen erwartet (" + pop + "%)");
                                         }
                                      }
                                      
                                      // bei jeglicher Aktualisierung von Weatherunderground Berechnung starten
                                      on({
                                         id: /^weatherunderground\.[0-9]+\.forecast.*\.[0-9]+h\.qpf$/,  // forecastHourly, forecastDaily, forecast
                                         change: "any"
                                      }, berechneZeit);
                                      
                                      // bei Skriptstart
                                      berechneZeit();
                                      

                                      Gruß
                                      Pix

                                      EDIT: Neueste Version hier: https://forum.iobroker.net/post/48353

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

                                        @pix Nachdem sich ja wieder einiges am Adapter geändert passt das Script nicht mehr.
                                        58d97e92-28f3-48bf-9e47-5f7c39f3588f-image.png
                                        im Adapter
                                        38aa4330-2f7d-4f4f-b3e0-6eb0a3af40ac-image.png
                                        33c9a392-01b0-4a50-b09c-c3fb8a6792fd-image.png

                                        1 Reply Last reply Reply Quote 1
                                        • P
                                          pix last edited by

                                          Habs geändert:

                                          /* Wunderground Regen
                                          
                                          Abfrage des Weatherunderground Adapters im Bereich Vorhersage,
                                          wann der nächste Regen erwartet wird.
                                          
                                          Findet in den forecastHourly-Datenpunkt den ersten Regen-Eintrag
                                          Ausgabe in Text ("kein Regen", "X Stunden (X% [Wahrscheinlichkeit])")
                                          
                                          
                                          
                                          http://forum.iobroker.net/viewtopic.php?f=21&t=3447#p31858
                                          
                                          01.08.2016 erstellt von Pix unter Nutzung des obigen Skriptes
                                          28.06.2017 Korrekturen
                                          12.07.2017 Fehler abfangen und Typ Variable auf String geändert
                                          06.03.2019 Code optimiert
                                                     berücksichtigt Niederschlag in der aktuellen Stunde (Stunde 0)
                                          11.06.2019 auf neue Datenpunkte angepasst für weatherground-Adapter (getestet V3.0.11)
                                          04.08.2019 geändert für Wunderground Adapter 3.1.1
                                          */
                                          
                                          const vorstd = 36; // Vorschau in Stunden (weatherundergroudn bietet neuerdings bis 36h Vorschau), kann hier auch kleiner sein
                                          const idRegen = "javascript."+ instance + ".Wunderground.Regenvorschau"; // Ziel-Datenpunkt
                                          const wunder_inst = "weatherunderground.0."; // Weatherground-Adapter Instanz
                                          const logging = false;
                                          const fC = false; // nicht dauerhaft auf true stehen lassen. Wegen AAsynchronität dann keine Werte.
                                          
                                          createState(idRegen, "kein Regen", fC, {
                                             name: "Regenvorschau",
                                             dec: "Wann gibt es den nächsten Regen",
                                             type: "string",
                                             role: "text"
                                          });
                                          
                                          function berechneZeit() {
                                              if (logging) log("Berechne Dauer in Stunden bis zum nächsten Regen");
                                              let i = 0;
                                              let data; // leer
                                              let pop; // leer
                                              for (i=0 ; i<vorstd; i++) {
                                                  if (getState(wunder_inst + "forecastHourly." + i + "h.precipitation").val > 0) {
                                                      data = getState(wunder_inst + "forecastHourly." + i + "h.precipitation").val;
                                                      pop = getState(wunder_inst + "forecastHourly." + i + "h.precipitationChance").val;
                                                      if (logging) log("Regeneintrag gefunden bei " + i + "h " + data + "mm");
                                          
                                                      if (i == 0) { // wenn jetzt Regen
                                                          if (logging) log("In dieser Stunde werden " + data + "mm Regen erwartet (Wahrscheinlichkeit " + pop + "%)");
                                                          setState(idRegen, "jetzt (" + pop + "%)");
                                                      } else {
                                                          if (logging) log("In " + i + " Stunden werden " + data + "mm Regen erwartet (Wahrscheinlichkeit " + pop + "%)");
                                                          setState(idRegen, i + " Stunden (" + pop + "%)");
                                                      }
                                          
                                                      i=vorstd; // beim ersten Auftreten der Regenwahrscheinlichkeit über 0 abbrechen
                                                  } 
                                                  if ((i == vorstd) && (pop === 0)) {
                                                      setState(idRegen, "Kein Regen erwartet (" + pop + "%)");
                                                      if (logging) log("Kein Regen erwartet (" + pop + "%)");
                                                  }
                                              }
                                              
                                          }
                                          
                                          // bei jeglicher Aktualisierung von Weatherunderground Berechnung starten
                                          on({
                                              id: /^weatherunderground\.[0-9]+\.forecast.*\.[0-9]+h\.precipitation$/,  // forecastHourly, forecastDaily, forecast
                                              change: "any"
                                          }, berechneZeit);
                                          
                                          // bei Skriptstart
                                          
                                          berechneZeit();
                                          

                                          Gruß
                                          Pix

                                          Negalein 1 Reply Last reply Reply Quote 2
                                          • Negalein
                                            Negalein Global Moderator @pix last edited by

                                            @pix sagte in Hilfe für Schleife:

                                            Habs geändert:
                                            neuer Code für Wunderground 3.1.1

                                            Hallo Pix!

                                            Mir ist gerade aufgefallen, dass das Script seit 4.8. 21:50 Uhr nicht mehr aktuakisiert.

                                            Beim DP javascript.0.Wunderground.Regenvorschausteht noch immer der Wert vom 4.8.
                                            objects - ioBroker (8).png

                                            Unter weathunderground.0wird jedoch der aktuelle Wert angezeigt.
                                            objects - ioBroker (7).png

                                            /* Wunderground Regen
                                            {1}
                                            Abfrage des Weatherunderground Adapters im Bereich Vorhersage,
                                            wann der nächste Regen erwartet wird.
                                            {1}
                                            Findet in den forecastHourly-Datenpunkt den ersten Regen-Eintrag
                                            Ausgabe in Text ("kein Regen", "X Stunden (X% [Wahrscheinlichkeit])")
                                            {1}
                                            {1}
                                            {1}
                                            http://forum.iobroker.net/viewtopic.php?f=21&t=3447#p31858
                                            {1}
                                            01.08.2016 erstellt von Pix unter Nutzung des obigen Skriptes
                                            28.06.2017 Korrekturen
                                            12.07.2017 Fehler abfangen und Typ Variable auf String geändert
                                            06.03.2019 Code optimiert
                                                       berücksichtigt Niederschlag in der aktuellen Stunde (Stunde 0)
                                            11.06.2019 auf neue Datenpunkte angepasst für weatherground-Adapter (getestet V3.0.11)
                                            04.08.2019 geändert für Wunderground Adapter 3.1.1
                                            */
                                             
                                            const vorstd = 36; // Vorschau in Stunden (weatherundergroudn bietet neuerdings bis 36h Vorschau), kann hier auch kleiner sein
                                            const idRegen = "javascript."+ instance + ".Wunderground.Regenvorschau"; // Ziel-Datenpunkt
                                            const wunder_inst = "weatherunderground.0."; // Weatherground-Adapter Instanz
                                            const logging = false;
                                            const fC = false; // nicht dauerhaft auf true stehen lassen. Wegen AAsynchronität dann keine Werte.
                                             
                                            createState(idRegen, "kein Regen", fC, {
                                               name: "Regenvorschau",
                                               dec: "Wann gibt es den nächsten Regen",
                                               type: "string",
                                               role: "text"
                                            });
                                             
                                            function berechneZeit() {
                                                if (logging) log("Berechne Dauer in Stunden bis zum nächsten Regen");
                                                let i = 0;
                                                let data; // leer
                                                let pop; // leer
                                                for (i=0 ; i<vorstd; i++) {
                                                    if (getState(wunder_inst + "forecastHourly." + i + "h.precipitation").val > 0) {
                                                        data = getState(wunder_inst + "forecastHourly." + i + "h.precipitation").val;
                                                        pop = getState(wunder_inst + "forecastHourly." + i + "h.precipitationChance").val;
                                                        if (logging) log("Regeneintrag gefunden bei " + i + "h " + data + "mm");
                                             
                                                        if (i == 0) { // wenn jetzt Regen
                                                            if (logging) log("In dieser Stunde werden " + data + "mm Regen erwartet (Wahrscheinlichkeit " + pop + "%)");
                                                            setState(idRegen, "jetzt (" + pop + "%)");
                                                        } else {
                                                            if (logging) log("In " + i + " Stunden werden " + data + "mm Regen erwartet (Wahrscheinlichkeit " + pop + "%)");
                                                            setState(idRegen, i + " Stunden (" + pop + "%)");
                                                        }
                                             
                                                        i=vorstd; // beim ersten Auftreten der Regenwahrscheinlichkeit über 0 abbrechen
                                                    } 
                                                    if ((i == vorstd) && (pop === 0)) {
                                                        setState(idRegen, "Kein Regen erwartet (" + pop + "%)");
                                                        if (logging) log("Kein Regen erwartet (" + pop + "%)");
                                                    }
                                                }
                                                
                                            }
                                             
                                            // bei jeglicher Aktualisierung von Weatherunderground Berechnung starten
                                            on({
                                                id: /^weatherunderground\.[0-9]+\.forecast.*\.[0-9]+h\.precipitation$/,  // forecastHourly, forecastDaily, forecast
                                                change: "any"
                                            }, berechneZeit);
                                             
                                            // bei Skriptstart
                                             
                                            berechneZeit();
                                            

                                            Weatherunderground läuft in 3.2.1

                                            Hast du eine Idee?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            972
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript
                                            8
                                            22
                                            2834
                                            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