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. Hilfe für Schleife

NEWS

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

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

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

Hilfe für Schleife

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
22 Beiträge 8 Kommentatoren 3.4k Aufrufe 5 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
    tempestas
    schrieb am zuletzt editiert von
    #12

    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)>

    <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

    1 Antwort Letzte Antwort
    0
    • P Offline
      P Offline
      pix
      schrieb am zuletzt editiert von
      #13

      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: :o ). Daher kann ich nicht tiefer einsteigen.

      'Works for me' reicht mir in diesem Fall.

      Pix

      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

      1 Antwort Letzte Antwort
      0
      • T Offline
        T Offline
        tempestas
        schrieb am zuletzt editiert von
        #14

        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.

        <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

        1 Antwort Letzte Antwort
        0
        • AlCalzoneA Offline
          AlCalzoneA Offline
          AlCalzone
          Developer
          schrieb am zuletzt editiert von
          #15
          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);
          
          

          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

          1 Antwort Letzte Antwort
          0
          • P Offline
            P Offline
            pix
            schrieb am zuletzt editiert von
            #16

            Ja, stimmt. Danke!

            Verschlimmbessert…

            ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

            1 Antwort Letzte Antwort
            0
            • P Offline
              P Offline
              pix
              schrieb am zuletzt editiert von
              #17

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

              ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

              1 Antwort Letzte Antwort
              0
              • B Offline
                B Offline
                brufi
                schrieb am zuletzt editiert von
                #18

                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 Antwort Letzte Antwort
                0
                • P Offline
                  P Offline
                  pix
                  schrieb am zuletzt editiert von pix
                  #19

                  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

                  ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                  crunchipC 1 Antwort Letzte Antwort
                  2
                  • P 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

                    crunchipC Abwesend
                    crunchipC Abwesend
                    crunchip
                    Forum Testing Most Active
                    schrieb am zuletzt editiert von
                    #20

                    @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

                    umgestiegen von Proxmox auf Unraid

                    1 Antwort Letzte Antwort
                    1
                    • P Offline
                      P Offline
                      pix
                      schrieb am zuletzt editiert von
                      #21

                      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

                      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                      NegaleinN 1 Antwort Letzte Antwort
                      2
                      • P pix

                        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

                        NegaleinN Offline
                        NegaleinN Offline
                        Negalein
                        Global Moderator
                        schrieb am zuletzt editiert von
                        #22

                        @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?

                        ° Node.js: 20.17.0 NPM: 10.8.2
                        ° Proxmox, Ubuntu 22.04.3 LTS
                        ° Fixer ---> iob fix

                        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

                        545

                        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