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

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Hilfe für Schleife

Scheduled Pinned Locked Moved Skripten / Logik
javascript
22 Posts 8 Posters 3.7k Views 5 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.
  • P Offline
    P Offline
    pix
    wrote on last edited by
    #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 Reply Last reply
    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
      wrote on last edited by
      #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 & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
      ° Node.js Fixer ---> iob nodejs-update
      ° Fixer ---> iob fix

      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

      636

      Online

      32.6k

      Users

      82.3k

      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