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. JavaScript
  5. Wo ist der Fehler?

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Wo ist der Fehler?

Geplant Angeheftet Gesperrt Verschoben JavaScript
19 Beiträge 3 Kommentatoren 1.3k Aufrufe 2 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.
  • paul53P paul53

    @ticaki sagte: Hat es einen Grund

    Nein, man kann es so oder so machen. Du bist mit der ausgabe um 1 zu hoch.

    let ausgabe = 12;
    if (wetterdaten <= 1)  ausgabe = 0;
    else if (wetterdaten <= 5)  ausgabe = 1;
    else if (wetterdaten <= 11) ausgabe = 2;
    else if (wetterdaten <= 19) ausgabe = 3;
    ...
    
    T Nicht stören
    T Nicht stören
    ticaki
    schrieb am zuletzt editiert von
    #10

    @paul53
    hast recht, Danke

    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

    Spenden

    1 Antwort Letzte Antwort
    1
    • S Offline
      S Offline
      skorpil
      schrieb am zuletzt editiert von
      #11

      @paul53 @ticaki ihr seid schneller als der Schall! Vielen, vielen Dank.
      Ich kann gerade nicht an den beiden Scripten arbeiten. Morgen vormittag habe ich Zeit. Nachdem ich Eure Anpassungen und Vorschläge eingearbeitet habe, werde ich sie nochmals komplett posten. Und Infos geben, ob’s funktioniert.

      1 Antwort Letzte Antwort
      0
      • S Offline
        S Offline
        skorpil
        schrieb am zuletzt editiert von
        #12

        wie versprochen hier nun das gesamte angepasste Script:

        // #########################################################################
        //    Wetterdaten aus openweathermap holen und in homematic Variable setzen
        // #########################################################################
        
        
        // Aktualisierung der homematic Variable bei Aktualisierung openweathermap
        on ({id:'weatherunderground.0.forecast.current.observationTimeRFC822'/*Observation time (rfc822)*/, change: 'any'}, function(data) {
        var wetterdaten;
        
        //Werte holen und setzen
        
        //Wetter Bedingung als String
        var idOpenWeater = 'yr.0.forecastHourly.6h.6h_summary_text'/*6h summary text*/;
        var idVariable = 'hm-rega.0.11465'/*Wetter Bedingungen*/;
        wetterdaten = getState(idOpenWeater).val
        
        if (wetterdaten) setState(idVariable, wetterdaten); 
        
        //Wetter Richtung als Zahl
        var idOpenWeater = 'weatherunderground.0.forecast.current.windDegrees'/*Wind direction Degrees*/;
        // log(JSON.stringify(getState(idOpenWeater).val));
        var idVariable = 'hm-rega.0.11466'/*Wetter Windrichtg*/;
        Wetterdatenholenundsetzen();
        // wenn keine Daten
        if (!wetterdaten) {
                wetterdaten = 0;
                setState(idVariable, wetterdaten);
        };
        
        //Wind Richtung als Angabe 
        var idOpenWeater = 'weatherunderground.0.forecast.current.windDegrees'/*Wind direction Degrees*/;
        var idVariable = 'hm-rega.0.11467'/*Wetter Windrichtung*/;  
            
            //******************* Windrichtung bestimmen***************
            //*******************Nord 339-23, Nordost 24-68, Ost 69-113, SüdOst 114-158, Süd 159-203, SüdWest 204-248, West 249-293, NordWest 394-338***************
        
            wetterdaten = getState(idOpenWeater).val
        
            if (wetterdaten > 23 && wetterdaten <= 68){
                wetterdaten = "NordOst";
                };
        
            if (wetterdaten > 68 && wetterdaten <= 113){
                wetterdaten = "Ost";
                };
        
            if (wetterdaten > 113 && wetterdaten <= 158){
                wetterdaten = "SüdOst";
                };
        
            if (wetterdaten > 158 && wetterdaten <= 203){
                wetterdaten = "Süd";
                };
        
            if (wetterdaten > 203 && wetterdaten <= 248){
                wetterdaten = "SüdWest";
                };
        
            if (wetterdaten > 248 && wetterdaten <= 293){
                wetterdaten = "West";
                };
        
            if (wetterdaten > 293 && wetterdaten <= 338){
                wetterdaten = "NordWest";
                };
        
            if (wetterdaten > 338 && wetterdaten <= 360){
                wetterdaten = "Nord";
                };
        
            if (wetterdaten > 0 && wetterdaten <= 23){
                wetterdaten = "Nord";
                };
            
            if (!wetterdaten) {
                wetterdaten = 0;
                setState(idVariable, wetterdaten);
            };
        
            if (wetterdaten) setState(idVariable, wetterdaten);
        
        //Temperatur als Zahl
        var idOpenWeater = 'weatherunderground.0.forecast.current.temp'/*Temperature*/;
        var idVariable = 'hm-rega.0.11468'/*Wetter Temperatur*/;
        Wetterdatenholenundsetzen();
        
        //Luftfeuchtigkeit als Zahl
        var idOpenWeater = 'weatherunderground.0.forecast.current.relativeHumidity'/*Relative humidity*/;
        var idVariable = 'hm-rega.0.11469'/*Wetter Luftfeuchte*/;
        Wetterdatenholenundsetzen();
        
        //Windgeschwindigkeit als Zahl
        var idOpenWeater = 'weatherunderground.0.forecast.current.wind'/*Wind speed*/;
        var idVariable = 'hm-rega.0.11474'/*Wetter Windgeschw*/;
        Wetterdatenholenundsetzen();
        // wenn keine Daten
        if (!wetterdaten) {
                wetterdaten = 0;
                setState(idVariable, wetterdaten);
        };
        
        //Wind Geschwindigkeit als Angabe (Beaufort); 
        var idOpenWeater = 'weatherunderground.0.forecast.current.wind'/*Wind speed*/;
        var idVariable = 'hm-rega.0.11470'/*Wetter Windgeschwindigkeit*/;
        
        
        //******************* Windgeschwindigkeit in Beaufort bestimmen***************
            
            wetterdaten = getState(idOpenWeater).val;
            if(wetterdaten != null) {
                let ausgabe = 0;
                if (wetterdaten > 1)  ausgabe = 1;
                if (wetterdaten > 5)  ausgabe = 2;
                if (wetterdaten > 11) ausgabe = 3;
                if (wetterdaten > 19) ausgabe = 4;
                if (wetterdaten > 28) ausgabe = 5;
                if (wetterdaten > 38) ausgabe = 6;
                if (wetterdaten > 49) ausgabe = 7;
                if (wetterdaten > 61) ausgabe = 8;
                if (wetterdaten > 74) ausgabe = 9;
                if (wetterdaten > 88) ausgabe = 10;
                if (wetterdaten > 102) ausgabe = 11;
                if (wetterdaten > 117) ausgabe = 12;
                setState(idVariable, ausgabe);
            }
        
        
        //Luftdruck als Zahl
        var idOpenWeater = 'weatherunderground.0.forecast.current.pressure'/*Air pressure (mbar)*/;
        var idVariable = 'hm-rega.0.11471'/*Wetter Luftdruck*/;
        Wetterdatenholenundsetzen();
        
        //Aktualisierung (Zeit)
        var idOpenWeater = 'weatherunderground.0.forecast.current.observationTimeRFC822'/*Observation time (rfc822)*/;
        var idVariable = 'hm-rega.0.11472'/*Wetter Aktualisierung*/;
        wetterdaten = getState(idOpenWeater).val;
        
        let ausgabe = formatDate(wetterdaten, 'DD.MM.YYYY hh:mm:ss');
        
        setState(idVariable, ausgabe);
        
        // ##################################################################
        //                  FUNKTION Holen und setzen     
        // ##################################################################
        
         function Wetterdatenholenundsetzen() {
            wetterdaten = getState(idOpenWeater).val;
            //if (wetterdaten) setState(idVariable, wetterdaten);
            if (wetterdaten != null) setState(idVariable, wetterdaten);
         };
        
        
        });
        

        Zeilen 179 bis 221 kann man durch eine Zeile ersetzen: ein bisschen traurig bin ich schon, woich mir doch soooviel Mühe gegeben hatte...;-) aber das ist natürlich viel besser.

        Durch Prüfung auf != null. Das habe ich so jetzt auch berücksichtigt.

        Wo ich noch auf dem Schlauch stehe ist:

        Du solltest außerdem die gesamten Abfragen mit etwas Verzögerung (100 ms) starten, da der Trigger "Observation time (rfc822)" nicht als letzter Datenpunkt vom Adapter geschrieben wird. Sonst passen einige Werte nicht zum Zeitpunkt der letzten Abfrage.

        a) wie würde die Verzögerung programmiert?
        b) der Adapter weatherunderground liefert zwei potentielle trigger, Observation time (rfc822) und Observation time. Mir kommt es hier nicht auf die letzte Akkuratesse an, sondern einfach um die Zeit der Beobachtung und ebe den trigger zur Auslösung des Scripts Welchen sollte ich nehmen?

        paul53P 1 Antwort Letzte Antwort
        0
        • S skorpil

          wie versprochen hier nun das gesamte angepasste Script:

          // #########################################################################
          //    Wetterdaten aus openweathermap holen und in homematic Variable setzen
          // #########################################################################
          
          
          // Aktualisierung der homematic Variable bei Aktualisierung openweathermap
          on ({id:'weatherunderground.0.forecast.current.observationTimeRFC822'/*Observation time (rfc822)*/, change: 'any'}, function(data) {
          var wetterdaten;
          
          //Werte holen und setzen
          
          //Wetter Bedingung als String
          var idOpenWeater = 'yr.0.forecastHourly.6h.6h_summary_text'/*6h summary text*/;
          var idVariable = 'hm-rega.0.11465'/*Wetter Bedingungen*/;
          wetterdaten = getState(idOpenWeater).val
          
          if (wetterdaten) setState(idVariable, wetterdaten); 
          
          //Wetter Richtung als Zahl
          var idOpenWeater = 'weatherunderground.0.forecast.current.windDegrees'/*Wind direction Degrees*/;
          // log(JSON.stringify(getState(idOpenWeater).val));
          var idVariable = 'hm-rega.0.11466'/*Wetter Windrichtg*/;
          Wetterdatenholenundsetzen();
          // wenn keine Daten
          if (!wetterdaten) {
                  wetterdaten = 0;
                  setState(idVariable, wetterdaten);
          };
          
          //Wind Richtung als Angabe 
          var idOpenWeater = 'weatherunderground.0.forecast.current.windDegrees'/*Wind direction Degrees*/;
          var idVariable = 'hm-rega.0.11467'/*Wetter Windrichtung*/;  
              
              //******************* Windrichtung bestimmen***************
              //*******************Nord 339-23, Nordost 24-68, Ost 69-113, SüdOst 114-158, Süd 159-203, SüdWest 204-248, West 249-293, NordWest 394-338***************
          
              wetterdaten = getState(idOpenWeater).val
          
              if (wetterdaten > 23 && wetterdaten <= 68){
                  wetterdaten = "NordOst";
                  };
          
              if (wetterdaten > 68 && wetterdaten <= 113){
                  wetterdaten = "Ost";
                  };
          
              if (wetterdaten > 113 && wetterdaten <= 158){
                  wetterdaten = "SüdOst";
                  };
          
              if (wetterdaten > 158 && wetterdaten <= 203){
                  wetterdaten = "Süd";
                  };
          
              if (wetterdaten > 203 && wetterdaten <= 248){
                  wetterdaten = "SüdWest";
                  };
          
              if (wetterdaten > 248 && wetterdaten <= 293){
                  wetterdaten = "West";
                  };
          
              if (wetterdaten > 293 && wetterdaten <= 338){
                  wetterdaten = "NordWest";
                  };
          
              if (wetterdaten > 338 && wetterdaten <= 360){
                  wetterdaten = "Nord";
                  };
          
              if (wetterdaten > 0 && wetterdaten <= 23){
                  wetterdaten = "Nord";
                  };
              
              if (!wetterdaten) {
                  wetterdaten = 0;
                  setState(idVariable, wetterdaten);
              };
          
              if (wetterdaten) setState(idVariable, wetterdaten);
          
          //Temperatur als Zahl
          var idOpenWeater = 'weatherunderground.0.forecast.current.temp'/*Temperature*/;
          var idVariable = 'hm-rega.0.11468'/*Wetter Temperatur*/;
          Wetterdatenholenundsetzen();
          
          //Luftfeuchtigkeit als Zahl
          var idOpenWeater = 'weatherunderground.0.forecast.current.relativeHumidity'/*Relative humidity*/;
          var idVariable = 'hm-rega.0.11469'/*Wetter Luftfeuchte*/;
          Wetterdatenholenundsetzen();
          
          //Windgeschwindigkeit als Zahl
          var idOpenWeater = 'weatherunderground.0.forecast.current.wind'/*Wind speed*/;
          var idVariable = 'hm-rega.0.11474'/*Wetter Windgeschw*/;
          Wetterdatenholenundsetzen();
          // wenn keine Daten
          if (!wetterdaten) {
                  wetterdaten = 0;
                  setState(idVariable, wetterdaten);
          };
          
          //Wind Geschwindigkeit als Angabe (Beaufort); 
          var idOpenWeater = 'weatherunderground.0.forecast.current.wind'/*Wind speed*/;
          var idVariable = 'hm-rega.0.11470'/*Wetter Windgeschwindigkeit*/;
          
          
          //******************* Windgeschwindigkeit in Beaufort bestimmen***************
              
              wetterdaten = getState(idOpenWeater).val;
              if(wetterdaten != null) {
                  let ausgabe = 0;
                  if (wetterdaten > 1)  ausgabe = 1;
                  if (wetterdaten > 5)  ausgabe = 2;
                  if (wetterdaten > 11) ausgabe = 3;
                  if (wetterdaten > 19) ausgabe = 4;
                  if (wetterdaten > 28) ausgabe = 5;
                  if (wetterdaten > 38) ausgabe = 6;
                  if (wetterdaten > 49) ausgabe = 7;
                  if (wetterdaten > 61) ausgabe = 8;
                  if (wetterdaten > 74) ausgabe = 9;
                  if (wetterdaten > 88) ausgabe = 10;
                  if (wetterdaten > 102) ausgabe = 11;
                  if (wetterdaten > 117) ausgabe = 12;
                  setState(idVariable, ausgabe);
              }
          
          
          //Luftdruck als Zahl
          var idOpenWeater = 'weatherunderground.0.forecast.current.pressure'/*Air pressure (mbar)*/;
          var idVariable = 'hm-rega.0.11471'/*Wetter Luftdruck*/;
          Wetterdatenholenundsetzen();
          
          //Aktualisierung (Zeit)
          var idOpenWeater = 'weatherunderground.0.forecast.current.observationTimeRFC822'/*Observation time (rfc822)*/;
          var idVariable = 'hm-rega.0.11472'/*Wetter Aktualisierung*/;
          wetterdaten = getState(idOpenWeater).val;
          
          let ausgabe = formatDate(wetterdaten, 'DD.MM.YYYY hh:mm:ss');
          
          setState(idVariable, ausgabe);
          
          // ##################################################################
          //                  FUNKTION Holen und setzen     
          // ##################################################################
          
           function Wetterdatenholenundsetzen() {
              wetterdaten = getState(idOpenWeater).val;
              //if (wetterdaten) setState(idVariable, wetterdaten);
              if (wetterdaten != null) setState(idVariable, wetterdaten);
           };
          
          
          });
          

          Zeilen 179 bis 221 kann man durch eine Zeile ersetzen: ein bisschen traurig bin ich schon, woich mir doch soooviel Mühe gegeben hatte...;-) aber das ist natürlich viel besser.

          Durch Prüfung auf != null. Das habe ich so jetzt auch berücksichtigt.

          Wo ich noch auf dem Schlauch stehe ist:

          Du solltest außerdem die gesamten Abfragen mit etwas Verzögerung (100 ms) starten, da der Trigger "Observation time (rfc822)" nicht als letzter Datenpunkt vom Adapter geschrieben wird. Sonst passen einige Werte nicht zum Zeitpunkt der letzten Abfrage.

          a) wie würde die Verzögerung programmiert?
          b) der Adapter weatherunderground liefert zwei potentielle trigger, Observation time (rfc822) und Observation time. Mir kommt es hier nicht auf die letzte Akkuratesse an, sondern einfach um die Zeit der Beobachtung und ebe den trigger zur Auslösung des Scripts Welchen sollte ich nehmen?

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #13

          @skorpil sagte: wie würde die Verzögerung programmiert?

          Alle Daten - außer der Triggerwert selbst - sollten verzögert per getState(id).val geholt werden. Außerdem sollte die Variablendeklaration der 3 immer wieder verwendeten Variablen global ganz zu Anfang erfolgen. Auch die Funktion Wetterdatenholenundsetzen() sollte vor dem Trigger deklariert werden.

          // #########################################################################
          //    Wetterdaten aus openweathermap holen und in homematic Variable setzen
          // #########################################################################
           
          var idOpenWeater, idVariable, wetterdaten;
          
          // ##################################################################
          //                  FUNKTION Holen und setzen     
          // ##################################################################
          function Wetterdatenholenundsetzen() {
              let wetterwert = getState(idOpenWeater).val;
              if (wetterwert != null) setState(idVariable, wetterwert);
          }
          
          // Aktualisierung der homematic Variable bei Aktualisierung openweathermap
          on ('weatherunderground.0.forecast.current.observationTimeRFC822'/*Observation time (rfc822)*/, function(dp) {
              let ausgabe = formatDate(dp.state.val, 'DD.MM.YYYY hh:mm:ss');
              setState('hm-rega.0.11472'/*Wetter Aktualisierung*/, ausgabe);
          
              setTimeout(function() {
                  // Hier alle anderen Daten für SV verarbeiten
              }, 100); // 100 ms Verzögerung
          });
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          S 1 Antwort Letzte Antwort
          1
          • paul53P paul53

            @skorpil sagte: wie würde die Verzögerung programmiert?

            Alle Daten - außer der Triggerwert selbst - sollten verzögert per getState(id).val geholt werden. Außerdem sollte die Variablendeklaration der 3 immer wieder verwendeten Variablen global ganz zu Anfang erfolgen. Auch die Funktion Wetterdatenholenundsetzen() sollte vor dem Trigger deklariert werden.

            // #########################################################################
            //    Wetterdaten aus openweathermap holen und in homematic Variable setzen
            // #########################################################################
             
            var idOpenWeater, idVariable, wetterdaten;
            
            // ##################################################################
            //                  FUNKTION Holen und setzen     
            // ##################################################################
            function Wetterdatenholenundsetzen() {
                let wetterwert = getState(idOpenWeater).val;
                if (wetterwert != null) setState(idVariable, wetterwert);
            }
            
            // Aktualisierung der homematic Variable bei Aktualisierung openweathermap
            on ('weatherunderground.0.forecast.current.observationTimeRFC822'/*Observation time (rfc822)*/, function(dp) {
                let ausgabe = formatDate(dp.state.val, 'DD.MM.YYYY hh:mm:ss');
                setState('hm-rega.0.11472'/*Wetter Aktualisierung*/, ausgabe);
            
                setTimeout(function() {
                    // Hier alle anderen Daten für SV verarbeiten
                }, 100); // 100 ms Verzögerung
            });
            
            S Offline
            S Offline
            skorpil
            schrieb am zuletzt editiert von
            #14

            @paul53 dankeschön.

            1 Antwort Letzte Antwort
            0
            • S Offline
              S Offline
              skorpil
              schrieb am zuletzt editiert von
              #15

              @paul53 so?

              // #########################################################################
              //    Wetterdaten aus openweathermap holen und in homematic Variable setzen
              // #########################################################################
               
              var idOpenWeater, idVariable, wetterdaten;
               
              // ##################################################################
              //                  FUNKTION Holen und setzen     
              // ##################################################################
              function Wetterdatenholenundsetzen() {
                  let wetterwert = getState(idOpenWeater).val;
                  if (wetterwert != null) setState(idVariable, wetterwert);
              }
               
              // Aktualisierung der homematic Variable bei Aktualisierung openweathermap
              on ('weatherunderground.0.forecast.current.observationTimeRFC822'/*Observation time (rfc822)*/, function(dp) {
                  
                  //Aktualisierung (Zeit)
                  let ausgabe = formatDate(dp.state.val, 'DD.MM.YYYY hh:mm:ss');
                  setState('hm-rega.0.11472'/*Wetter Aktualisierung*/, ausgabe);
               
                  setTimeout(function() {
                      
                      
                  //Werte holen und setzen
              
              //Wetter Bedingung als String
              var idOpenWeater = 'yr.0.forecastHourly.6h.6h_summary_text'/*6h summary text*/;
              var idVariable = 'hm-rega.0.11465'/*Wetter Bedingungen*/;
              wetterdaten = getState(idOpenWeater).val
              
              if (wetterdaten) setState(idVariable, wetterdaten); 
              
              //Wetter Richtung als Zahl
              var idOpenWeater = 'weatherunderground.0.forecast.current.windDegrees'/*Wind direction Degrees*/;
              // log(JSON.stringify(getState(idOpenWeater).val));
              var idVariable = 'hm-rega.0.11466'/*Wetter Windrichtg*/;
              Wetterdatenholenundsetzen();
              // wenn keine Daten
              if (!wetterdaten) {
                      wetterdaten = 0;
                      setState(idVariable, wetterdaten);
              };
              
              //Wind Richtung als Angabe 
              var idOpenWeater = 'weatherunderground.0.forecast.current.windDegrees'/*Wind direction Degrees*/;
              var idVariable = 'hm-rega.0.11467'/*Wetter Windrichtung*/;  
                  
                  //******************* Windrichtung bestimmen***************
                  //*******************Nord 339-23, Nordost 24-68, Ost 69-113, SüdOst 114-158, Süd 159-203, SüdWest 204-248, West 249-293, NordWest 394-338***************
              
                  wetterdaten = getState(idOpenWeater).val
              
                  if (wetterdaten > 23 && wetterdaten <= 68){
                      wetterdaten = "NordOst";
                      };
              
                  if (wetterdaten > 68 && wetterdaten <= 113){
                      wetterdaten = "Ost";
                      };
              
                  if (wetterdaten > 113 && wetterdaten <= 158){
                      wetterdaten = "SüdOst";
                      };
              
                  if (wetterdaten > 158 && wetterdaten <= 203){
                      wetterdaten = "Süd";
                      };
              
                  if (wetterdaten > 203 && wetterdaten <= 248){
                      wetterdaten = "SüdWest";
                      };
              
                  if (wetterdaten > 248 && wetterdaten <= 293){
                      wetterdaten = "West";
                      };
              
                  if (wetterdaten > 293 && wetterdaten <= 338){
                      wetterdaten = "NordWest";
                      };
              
                  if (wetterdaten > 338 && wetterdaten <= 360){
                      wetterdaten = "Nord";
                      };
              
                  if (wetterdaten > 0 && wetterdaten <= 23){
                      wetterdaten = "Nord";
                      };
                  
                  if (!wetterdaten) {
                      wetterdaten = 0;
                      setState(idVariable, wetterdaten);
                  };
              
                  if (wetterdaten) setState(idVariable, wetterdaten);
              
              //Temperatur als Zahl
              var idOpenWeater = 'weatherunderground.0.forecast.current.temp'/*Temperature*/;
              var idVariable = 'hm-rega.0.11468'/*Wetter Temperatur*/;
              Wetterdatenholenundsetzen();
              
              //Luftfeuchtigkeit als Zahl
              var idOpenWeater = 'weatherunderground.0.forecast.current.relativeHumidity'/*Relative humidity*/;
              var idVariable = 'hm-rega.0.11469'/*Wetter Luftfeuchte*/;
              Wetterdatenholenundsetzen();
              
              //Windgeschwindigkeit als Zahl
              var idOpenWeater = 'weatherunderground.0.forecast.current.wind'/*Wind speed*/;
              var idVariable = 'hm-rega.0.11474'/*Wetter Windgeschw*/;
              Wetterdatenholenundsetzen();
              // wenn keine Daten
              if (!wetterdaten) {
                      wetterdaten = 0;
                      setState(idVariable, wetterdaten);
              };
              
              //Wind Geschwindigkeit als Angabe (Beaufort); 
              var idOpenWeater = 'weatherunderground.0.forecast.current.wind'/*Wind speed*/;
              var idVariable = 'hm-rega.0.11470'/*Wetter Windgeschwindigkeit*/;
              
              
              //******************* Windgeschwindigkeit in Beaufort bestimmen***************
                  
                  wetterdaten = getState(idOpenWeater).val;
                  if(wetterdaten != null) {
                      let ausgabe = 0;
                      if (wetterdaten > 1)  ausgabe = 1;
                      if (wetterdaten > 5)  ausgabe = 2;
                      if (wetterdaten > 11) ausgabe = 3;
                      if (wetterdaten > 19) ausgabe = 4;
                      if (wetterdaten > 28) ausgabe = 5;
                      if (wetterdaten > 38) ausgabe = 6;
                      if (wetterdaten > 49) ausgabe = 7;
                      if (wetterdaten > 61) ausgabe = 8;
                      if (wetterdaten > 74) ausgabe = 9;
                      if (wetterdaten > 88) ausgabe = 10;
                      if (wetterdaten > 102) ausgabe = 11;
                      if (wetterdaten > 117) ausgabe = 12;
                      setState(idVariable, ausgabe);
                  }
              
              
              //Luftdruck als Zahl
              var idOpenWeater = 'weatherunderground.0.forecast.current.pressure'/*Air pressure (mbar)*/;
              var idVariable = 'hm-rega.0.11471'/*Wetter Luftdruck*/;
              Wetterdatenholenundsetzen();
              
              
                  }, 100); // 100 ms Verzögerung
              });
              
              
              paul53P 1 Antwort Letzte Antwort
              0
              • S skorpil

                @paul53 so?

                // #########################################################################
                //    Wetterdaten aus openweathermap holen und in homematic Variable setzen
                // #########################################################################
                 
                var idOpenWeater, idVariable, wetterdaten;
                 
                // ##################################################################
                //                  FUNKTION Holen und setzen     
                // ##################################################################
                function Wetterdatenholenundsetzen() {
                    let wetterwert = getState(idOpenWeater).val;
                    if (wetterwert != null) setState(idVariable, wetterwert);
                }
                 
                // Aktualisierung der homematic Variable bei Aktualisierung openweathermap
                on ('weatherunderground.0.forecast.current.observationTimeRFC822'/*Observation time (rfc822)*/, function(dp) {
                    
                    //Aktualisierung (Zeit)
                    let ausgabe = formatDate(dp.state.val, 'DD.MM.YYYY hh:mm:ss');
                    setState('hm-rega.0.11472'/*Wetter Aktualisierung*/, ausgabe);
                 
                    setTimeout(function() {
                        
                        
                    //Werte holen und setzen
                
                //Wetter Bedingung als String
                var idOpenWeater = 'yr.0.forecastHourly.6h.6h_summary_text'/*6h summary text*/;
                var idVariable = 'hm-rega.0.11465'/*Wetter Bedingungen*/;
                wetterdaten = getState(idOpenWeater).val
                
                if (wetterdaten) setState(idVariable, wetterdaten); 
                
                //Wetter Richtung als Zahl
                var idOpenWeater = 'weatherunderground.0.forecast.current.windDegrees'/*Wind direction Degrees*/;
                // log(JSON.stringify(getState(idOpenWeater).val));
                var idVariable = 'hm-rega.0.11466'/*Wetter Windrichtg*/;
                Wetterdatenholenundsetzen();
                // wenn keine Daten
                if (!wetterdaten) {
                        wetterdaten = 0;
                        setState(idVariable, wetterdaten);
                };
                
                //Wind Richtung als Angabe 
                var idOpenWeater = 'weatherunderground.0.forecast.current.windDegrees'/*Wind direction Degrees*/;
                var idVariable = 'hm-rega.0.11467'/*Wetter Windrichtung*/;  
                    
                    //******************* Windrichtung bestimmen***************
                    //*******************Nord 339-23, Nordost 24-68, Ost 69-113, SüdOst 114-158, Süd 159-203, SüdWest 204-248, West 249-293, NordWest 394-338***************
                
                    wetterdaten = getState(idOpenWeater).val
                
                    if (wetterdaten > 23 && wetterdaten <= 68){
                        wetterdaten = "NordOst";
                        };
                
                    if (wetterdaten > 68 && wetterdaten <= 113){
                        wetterdaten = "Ost";
                        };
                
                    if (wetterdaten > 113 && wetterdaten <= 158){
                        wetterdaten = "SüdOst";
                        };
                
                    if (wetterdaten > 158 && wetterdaten <= 203){
                        wetterdaten = "Süd";
                        };
                
                    if (wetterdaten > 203 && wetterdaten <= 248){
                        wetterdaten = "SüdWest";
                        };
                
                    if (wetterdaten > 248 && wetterdaten <= 293){
                        wetterdaten = "West";
                        };
                
                    if (wetterdaten > 293 && wetterdaten <= 338){
                        wetterdaten = "NordWest";
                        };
                
                    if (wetterdaten > 338 && wetterdaten <= 360){
                        wetterdaten = "Nord";
                        };
                
                    if (wetterdaten > 0 && wetterdaten <= 23){
                        wetterdaten = "Nord";
                        };
                    
                    if (!wetterdaten) {
                        wetterdaten = 0;
                        setState(idVariable, wetterdaten);
                    };
                
                    if (wetterdaten) setState(idVariable, wetterdaten);
                
                //Temperatur als Zahl
                var idOpenWeater = 'weatherunderground.0.forecast.current.temp'/*Temperature*/;
                var idVariable = 'hm-rega.0.11468'/*Wetter Temperatur*/;
                Wetterdatenholenundsetzen();
                
                //Luftfeuchtigkeit als Zahl
                var idOpenWeater = 'weatherunderground.0.forecast.current.relativeHumidity'/*Relative humidity*/;
                var idVariable = 'hm-rega.0.11469'/*Wetter Luftfeuchte*/;
                Wetterdatenholenundsetzen();
                
                //Windgeschwindigkeit als Zahl
                var idOpenWeater = 'weatherunderground.0.forecast.current.wind'/*Wind speed*/;
                var idVariable = 'hm-rega.0.11474'/*Wetter Windgeschw*/;
                Wetterdatenholenundsetzen();
                // wenn keine Daten
                if (!wetterdaten) {
                        wetterdaten = 0;
                        setState(idVariable, wetterdaten);
                };
                
                //Wind Geschwindigkeit als Angabe (Beaufort); 
                var idOpenWeater = 'weatherunderground.0.forecast.current.wind'/*Wind speed*/;
                var idVariable = 'hm-rega.0.11470'/*Wetter Windgeschwindigkeit*/;
                
                
                //******************* Windgeschwindigkeit in Beaufort bestimmen***************
                    
                    wetterdaten = getState(idOpenWeater).val;
                    if(wetterdaten != null) {
                        let ausgabe = 0;
                        if (wetterdaten > 1)  ausgabe = 1;
                        if (wetterdaten > 5)  ausgabe = 2;
                        if (wetterdaten > 11) ausgabe = 3;
                        if (wetterdaten > 19) ausgabe = 4;
                        if (wetterdaten > 28) ausgabe = 5;
                        if (wetterdaten > 38) ausgabe = 6;
                        if (wetterdaten > 49) ausgabe = 7;
                        if (wetterdaten > 61) ausgabe = 8;
                        if (wetterdaten > 74) ausgabe = 9;
                        if (wetterdaten > 88) ausgabe = 10;
                        if (wetterdaten > 102) ausgabe = 11;
                        if (wetterdaten > 117) ausgabe = 12;
                        setState(idVariable, ausgabe);
                    }
                
                
                //Luftdruck als Zahl
                var idOpenWeater = 'weatherunderground.0.forecast.current.pressure'/*Air pressure (mbar)*/;
                var idVariable = 'hm-rega.0.11471'/*Wetter Luftdruck*/;
                Wetterdatenholenundsetzen();
                
                
                    }, 100); // 100 ms Verzögerung
                });
                
                
                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von paul53
                #16

                @skorpil sagte: so?

                Nein, ohne var innerhalb der Funktion:

                // #########################################################################
                //    Wetterdaten aus openweathermap holen und in homematic Variable setzen
                // #########################################################################
                 
                var idOpenWeater, idVariable, wetterdaten;
                 
                // ##################################################################
                //                  FUNKTION Holen und setzen     
                // ##################################################################
                function Wetterdatenholenundsetzen() {
                    let wetterwert = getState(idOpenWeater).val;
                    if (wetterwert != null) setState(idVariable, wetterwert);
                }
                 
                // Aktualisierung der homematic Variable bei Aktualisierung openweathermap
                on ('weatherunderground.0.forecast.current.observationTimeRFC822'/*Observation time (rfc822)*/, function(dp) {
                    
                    //Aktualisierung (Zeit)
                    let ausgabe = formatDate(dp.state.val, 'DD.MM.YYYY hh:mm:ss');
                    setState('hm-rega.0.11472'/*Wetter Aktualisierung*/, ausgabe);
                 
                    setTimeout(function() {
                        //Werte holen und setzen
                 
                        //Wetter Bedingung als String
                        idOpenWeater = 'yr.0.forecastHourly.6h.6h_summary_text'/*6h summary text*/;
                        idVariable = 'hm-rega.0.11465'/*Wetter Bedingungen*/;
                        Wetterdatenholenundsetzen();
                 
                        //Wetter Richtung als Zahl
                        idOpenWeater = 'weatherunderground.0.forecast.current.windDegrees'/*Wind direction Degrees*/;
                        idVariable = 'hm-rega.0.11466'/*Wetter Windrichtg*/;
                        Wetterdatenholenundsetzen();
                 
                        //Wind Richtung als Angabe 
                        idVariable = 'hm-rega.0.11467'/*Wetter Windrichtung*/;  
                    
                        //******************* Windrichtung bestimmen***************
                        //*******************Nord 339-23, Nordost 24-68, Ost 69-113, SüdOst 114-158, Süd 159-203, SüdWest 204-248, West 249-293, NordWest 394-338***************
                 
                        wetterdaten = getState(idOpenWeater).val
                        if(wetterdaten != null) {
                            let ausgabe = "Nord";
                            if (wetterdaten > 23) ausgabe = "NordOst";
                            if (wetterdaten > 68) ausgabe = "Ost";
                            if (wetterdaten > 113) ausgabe = "SüdOst";
                            if (wetterdaten > 158) ausgabe = "Süd";
                            if (wetterdaten > 203) ausgabe = "SüdWest";
                            if (wetterdaten > 248) ausgabe = "West";
                            if (wetterdaten > 293) ausgabe = "NordWest";
                            if (wetterdaten > 338) ausgabe = "Nord";
                            setState(idVariable, ausgabe);
                        }
                
                        //Temperatur als Zahl
                        idOpenWeater = 'weatherunderground.0.forecast.current.temp'/*Temperature*/;
                        idVariable = 'hm-rega.0.11468'/*Wetter Temperatur*/;
                        Wetterdatenholenundsetzen();
                 
                        //Luftfeuchtigkeit als Zahl
                        idOpenWeater = 'weatherunderground.0.forecast.current.relativeHumidity'/*Relative humidity*/;
                        idVariable = 'hm-rega.0.11469'/*Wetter Luftfeuchte*/;
                        Wetterdatenholenundsetzen();
                 
                        //Windgeschwindigkeit als Zahl
                        idOpenWeater = 'weatherunderground.0.forecast.current.wind'/*Wind speed*/;
                        idVariable = 'hm-rega.0.11474'/*Wetter Windgeschw*/;
                        Wetterdatenholenundsetzen();
                 
                        //Wind Geschwindigkeit als Angabe (Beaufort); 
                        idVariable = 'hm-rega.0.11470'/*Wetter Windgeschwindigkeit*/;
                  
                        //******************* Windgeschwindigkeit in Beaufort bestimmen***************
                        wetterdaten = getState(idOpenWeater).val;
                        if(wetterdaten != null) {
                            let ausgabe = 0;
                            if (wetterdaten > 1)  ausgabe = 1;
                            if (wetterdaten > 5)  ausgabe = 2;
                            if (wetterdaten > 11) ausgabe = 3;
                            if (wetterdaten > 19) ausgabe = 4;
                            if (wetterdaten > 28) ausgabe = 5;
                            if (wetterdaten > 38) ausgabe = 6;
                            if (wetterdaten > 49) ausgabe = 7;
                            if (wetterdaten > 61) ausgabe = 8;
                            if (wetterdaten > 74) ausgabe = 9;
                            if (wetterdaten > 88) ausgabe = 10;
                            if (wetterdaten > 102) ausgabe = 11;
                            if (wetterdaten > 117) ausgabe = 12;
                            setState(idVariable, ausgabe);
                        }
                 
                        //Luftdruck als Zahl
                        idOpenWeater = 'weatherunderground.0.forecast.current.pressure'/*Air pressure (mbar)*/;
                        idVariable = 'hm-rega.0.11471'/*Wetter Luftdruck*/;
                        Wetterdatenholenundsetzen();
                
                    }, 100); // 100 ms Verzögerung
                });
                

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                S 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @skorpil sagte: so?

                  Nein, ohne var innerhalb der Funktion:

                  // #########################################################################
                  //    Wetterdaten aus openweathermap holen und in homematic Variable setzen
                  // #########################################################################
                   
                  var idOpenWeater, idVariable, wetterdaten;
                   
                  // ##################################################################
                  //                  FUNKTION Holen und setzen     
                  // ##################################################################
                  function Wetterdatenholenundsetzen() {
                      let wetterwert = getState(idOpenWeater).val;
                      if (wetterwert != null) setState(idVariable, wetterwert);
                  }
                   
                  // Aktualisierung der homematic Variable bei Aktualisierung openweathermap
                  on ('weatherunderground.0.forecast.current.observationTimeRFC822'/*Observation time (rfc822)*/, function(dp) {
                      
                      //Aktualisierung (Zeit)
                      let ausgabe = formatDate(dp.state.val, 'DD.MM.YYYY hh:mm:ss');
                      setState('hm-rega.0.11472'/*Wetter Aktualisierung*/, ausgabe);
                   
                      setTimeout(function() {
                          //Werte holen und setzen
                   
                          //Wetter Bedingung als String
                          idOpenWeater = 'yr.0.forecastHourly.6h.6h_summary_text'/*6h summary text*/;
                          idVariable = 'hm-rega.0.11465'/*Wetter Bedingungen*/;
                          Wetterdatenholenundsetzen();
                   
                          //Wetter Richtung als Zahl
                          idOpenWeater = 'weatherunderground.0.forecast.current.windDegrees'/*Wind direction Degrees*/;
                          idVariable = 'hm-rega.0.11466'/*Wetter Windrichtg*/;
                          Wetterdatenholenundsetzen();
                   
                          //Wind Richtung als Angabe 
                          idVariable = 'hm-rega.0.11467'/*Wetter Windrichtung*/;  
                      
                          //******************* Windrichtung bestimmen***************
                          //*******************Nord 339-23, Nordost 24-68, Ost 69-113, SüdOst 114-158, Süd 159-203, SüdWest 204-248, West 249-293, NordWest 394-338***************
                   
                          wetterdaten = getState(idOpenWeater).val
                          if(wetterdaten != null) {
                              let ausgabe = "Nord";
                              if (wetterdaten > 23) ausgabe = "NordOst";
                              if (wetterdaten > 68) ausgabe = "Ost";
                              if (wetterdaten > 113) ausgabe = "SüdOst";
                              if (wetterdaten > 158) ausgabe = "Süd";
                              if (wetterdaten > 203) ausgabe = "SüdWest";
                              if (wetterdaten > 248) ausgabe = "West";
                              if (wetterdaten > 293) ausgabe = "NordWest";
                              if (wetterdaten > 338) ausgabe = "Nord";
                              setState(idVariable, ausgabe);
                          }
                  
                          //Temperatur als Zahl
                          idOpenWeater = 'weatherunderground.0.forecast.current.temp'/*Temperature*/;
                          idVariable = 'hm-rega.0.11468'/*Wetter Temperatur*/;
                          Wetterdatenholenundsetzen();
                   
                          //Luftfeuchtigkeit als Zahl
                          idOpenWeater = 'weatherunderground.0.forecast.current.relativeHumidity'/*Relative humidity*/;
                          idVariable = 'hm-rega.0.11469'/*Wetter Luftfeuchte*/;
                          Wetterdatenholenundsetzen();
                   
                          //Windgeschwindigkeit als Zahl
                          idOpenWeater = 'weatherunderground.0.forecast.current.wind'/*Wind speed*/;
                          idVariable = 'hm-rega.0.11474'/*Wetter Windgeschw*/;
                          Wetterdatenholenundsetzen();
                   
                          //Wind Geschwindigkeit als Angabe (Beaufort); 
                          idVariable = 'hm-rega.0.11470'/*Wetter Windgeschwindigkeit*/;
                    
                          //******************* Windgeschwindigkeit in Beaufort bestimmen***************
                          wetterdaten = getState(idOpenWeater).val;
                          if(wetterdaten != null) {
                              let ausgabe = 0;
                              if (wetterdaten > 1)  ausgabe = 1;
                              if (wetterdaten > 5)  ausgabe = 2;
                              if (wetterdaten > 11) ausgabe = 3;
                              if (wetterdaten > 19) ausgabe = 4;
                              if (wetterdaten > 28) ausgabe = 5;
                              if (wetterdaten > 38) ausgabe = 6;
                              if (wetterdaten > 49) ausgabe = 7;
                              if (wetterdaten > 61) ausgabe = 8;
                              if (wetterdaten > 74) ausgabe = 9;
                              if (wetterdaten > 88) ausgabe = 10;
                              if (wetterdaten > 102) ausgabe = 11;
                              if (wetterdaten > 117) ausgabe = 12;
                              setState(idVariable, ausgabe);
                          }
                   
                          //Luftdruck als Zahl
                          idOpenWeater = 'weatherunderground.0.forecast.current.pressure'/*Air pressure (mbar)*/;
                          idVariable = 'hm-rega.0.11471'/*Wetter Luftdruck*/;
                          Wetterdatenholenundsetzen();
                  
                      }, 100); // 100 ms Verzögerung
                  });
                  
                  S Offline
                  S Offline
                  skorpil
                  schrieb am zuletzt editiert von
                  #17

                  @paul53 sagte in Wo ist der Fehler?:

                  Nein, ohne var innerhalb der Funktion:

                  Damit ich es verstehe: WARUM?

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • S skorpil

                    @paul53 sagte in Wo ist der Fehler?:

                    Nein, ohne var innerhalb der Funktion:

                    Damit ich es verstehe: WARUM?

                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von paul53
                    #18

                    @skorpil sagte: Damit ich es verstehe: WARUM?

                    Damit die Werte in die globalen Variablen (Zeile 5) für die Übergabe an die Funktion Wetterdatenholenundsetzen() geschrieben werden. Wenn eine Variable mit dem gleichen Bezeichner innerhalb der Trigger-Callback-Funktion neu deklariert wird (var), ist sie nur innerhalb der Callback-Funktion gültig.

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    S 1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      @skorpil sagte: Damit ich es verstehe: WARUM?

                      Damit die Werte in die globalen Variablen (Zeile 5) für die Übergabe an die Funktion Wetterdatenholenundsetzen() geschrieben werden. Wenn eine Variable mit dem gleichen Bezeichner innerhalb der Trigger-Callback-Funktion neu deklariert wird (var), ist sie nur innerhalb der Callback-Funktion gültig.

                      S Offline
                      S Offline
                      skorpil
                      schrieb am zuletzt editiert von
                      #19

                      @paul53 ich verstehe

                      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

                      710

                      Online

                      32.6k

                      Benutzer

                      82.2k

                      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