Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Result-Funktion von InfluxDB-Adapter richtig nutzen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Result-Funktion von InfluxDB-Adapter richtig nutzen

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      MCU @etzeste13 last edited by MCU

      @etzeste13 Mich wunderte, warum du keine Fehlermeldung bekommen hast. Ändere mal die var -> let, dann bekommst du die eventuell auch.
      Man darf die Variablen end, Stundenertrag, Time_to_next_value_in_ms, x_s nicht öfter definieren.
      Du hast sie 3x definiert.
      Du kannst es so versuchen

      
      schedule("*/60 * * * *", function () {     //alle 60Min das Skript starten
       
          // die Werte von Osten abfragen und abspeichern.
          
          let end = new Date().getTime();     // definiert aktuellen Zeitpunkt.
          //console.log(end);
          let Stundenertrag = 0;
          let Time_to_next_value_in_ms = 0;   
          let x_s = 0;
          sendTo('influxdb.0', 'getHistory', {          // ist der Aufruf der Datenbank-Fuktion get History vom Influx.DB Adapter 0
              id: '0_userdata.0.PV_Anlagen.MTBG-38_1.Leistung-OST',   // Datenpunkt der ausgelesen wird
              options: {                                  // die optionen anhand deren ausgelesen werden soll  
                  start:      end - 3600000,                 // Startpunkt ist aktuelle Zeitpunkt - 1Stunde in ms
                  end:        end,                        // auslesen bis jetzt in ms
                  count:      180,                       //bis zu 180 Werte auslesen, da generell alle 30sek geschrieben wird
                  aggregate: 'none' // or 'none' to get raw values    // aggregate: none definiert die eigentlichen Werte ausgegeben werden sollen 
              }
          }, function (result) {
              for (var i = 0; i < result.result.length; i++) {
                  //console.log(result.result[i].ts)        //timestamp des Ergebnisses der Nr[i] ausgeben
                  if (i == 0) {                           // im ersten Durchlauf muss mann die 30sec manuell angeben, da sonst bei der berechnung [i-1] ein Fehler auftritt 
                      Time_to_next_value_in_ms = 30000;
                  } else {
                      Time_to_next_value_in_ms = result.result[i].ts - result.result[i-1].ts;
                  }
                  //console.log(Time_to_next_value_in_ms);
                  Stundenertrag = Stundenertrag + result.result[i].val / (3600000 / Time_to_next_value_in_ms);   //die 3.600.000ms / die MS zum Vorgängerwert addiert, ergeben die W/h
                  x_s = x_s + 1;                                      // x_s nur zur Kontrolle, damit ich sehe wie viele Werte addiert wurden
              }
              Stundenertrag = Math.round(Stundenertrag);                 //Ergebnis auf ganze Zahl runden
              console.log('Stundenertrag_OST: ' + Stundenertrag + ', gelesene Einträge: ' + x_s);                    // PV-Ertrag der letzten Stunde + die Anzahl der Datenpunkte ins LOG schreiben
              setState("0_userdata.0.PV_Anlagen.MTBG-38_1.Leistung-OST_letzte_Stunde", Stundenertrag, true);     //PV-Ertrag der letzten Stunde in Datenpunkt schreiben
          });
       
       
      // die Werte von Süden abfragen und abspeichern.
          
          end = new Date().getTime();     // definiert aktuellen Zeitpunkt.
          //console.log(end);
          Stundenertrag = 0;
          Time_to_next_value_in_ms = 0;   
          x_s = 0;
          sendTo('influxdb.0', 'getHistory', {          // ist der Aufruf der Datenbank-Fuktion get History vom Influx.DB Adapter 0
              id: '0_userdata.0.PV_Anlagen.MTBG-38_1.Leistung-SÜD',   // Datenpunkt der ausgelesen wird
              options: {                                  // die optionen anhand deren ausgelesen werden soll  
                  start:      end - 3600000,                 // Startpunkt ist aktuelle Zeitpunkt - 1Stunde in ms
                  end:        end,                        // auslesen bis jetzt in ms
                  count:      180,                       //bis zu 180 Werte auslesen, da generell alle 30sek geschrieben wird
                  aggregate: 'none' // or 'none' to get raw values    // aggregate: none definiert die eigentlichen Werte ausgegeben werden sollen 
              }
          }, function (result) {
              for (var i = 0; i < result.result.length; i++) {
                  //console.log(result.result[i].ts)        //timestamp des Ergebnisses der Nr[i] ausgeben
                  if (i == 0) {                           // im ersten Durchlauf muss mann die 30sec manuell angeben, da sonst bei der berechnung [i-1] ein Fehler auftritt 
                      Time_to_next_value_in_ms = 30000;
                  } else {
                      Time_to_next_value_in_ms = result.result[i].ts - result.result[i-1].ts;
                  }
                  //console.log(Time_to_next_value_in_ms);
                  Stundenertrag = Stundenertrag + result.result[i].val / (3600000 / Time_to_next_value_in_ms);   //die 3.600.000ms / die MS zum Vorgängerwert addiert, ergeben die W/h
                  x_s = x_s + 1;                                      // x_s nur zur Kontrolle, damit ich sehe wie viele Werte addiert wurden
              }
              Stundenertrag = Math.round(Stundenertrag);                 //Ergebnis auf ganze Zahl runden
              console.log('Stundenertrag_SUED: ' + Stundenertrag + ', gelesene Einträge: ' + x_s);                    // PV-Ertrag der letzten Stunde + die Anzahl der Datenpunkte ins LOG schreiben
              setState("0_userdata.0.PV_Anlagen.MTBG-38_1.Leistung-SÜD_letzte_Stunde", Stundenertrag, true);     //PV-Ertrag der letzten Stunde in Datenpunkt schreiben
          });    
       
      // die Werte von WEST abfragen und abspeichern.
          
          end = new Date().getTime();     // definiert aktuellen Zeitpunkt.
          //console.log(end);
          Stundenertrag = 0;
          Time_to_next_value_in_ms = 0;   
          x_s = 0;
          sendTo('influxdb.0', 'getHistory', {          // ist der Aufruf der Datenbank-Fuktion get History vom Influx.DB Adapter 0
              id: '0_userdata.0.PV_Anlagen.MTBG-38_1.Leistung-WEST',   // Datenpunkt der ausgelesen wird
              options: {                                  // die optionen anhand deren ausgelesen werden soll  
                  start:      end - 3600000,                 // Startpunkt ist aktuelle Zeitpunkt - 1Stunde in ms
                  end:        end,                        // auslesen bis jetzt in ms
                  count:      180,                       //bis zu 180 Werte auslesen, da generell alle 30sek geschrieben wird
                  aggregate: 'none' // or 'none' to get raw values    // aggregate: none definiert die eigentlichen Werte ausgegeben werden sollen 
              }
          }, function (result) {
              for (var i = 0; i < result.result.length; i++) {
                  //console.log(result.result[i].ts)        //timestamp des Ergebnisses der Nr[i] ausgeben
                  if (i == 0) {                           // im ersten Durchlauf muss mann die 30sec manuell angeben, da sonst bei der berechnung [i-1] ein Fehler auftritt 
                      Time_to_next_value_in_ms = 30000;
                  } else {
                      Time_to_next_value_in_ms = result.result[i].ts - result.result[i-1].ts;
                  }
                  //console.log(Time_to_next_value_in_ms);
                  Stundenertrag = Stundenertrag + result.result[i].val / (3600000 / Time_to_next_value_in_ms);   //die 3.600.000ms / die MS zum Vorgängerwert addiert, ergeben die W/h
                  x_s = x_s + 1;                                      // x_s nur zur Kontrolle, damit ich sehe wie viele Werte addiert wurden
              }
              Stundenertrag = Math.round(Stundenertrag);                 //Ergebnis auf ganze Zahl runden
              console.log('Stundenertrag_WEST: ' + Stundenertrag + ', gelesene Einträge: ' + x_s);                   // PV-Ertrag der letzten Stunde + die Anzahl der Datenpunkte ins LOG schreiben
              setState("0_userdata.0.PV_Anlagen.MTBG-38_1.Leistung-WEST_letzte_Stunde", Stundenertrag, true);     //PV-Ertrag der letzten Stunde in Datenpunkt schreiben
          });
       
      });
      
      mcm1957 1 Reply Last reply Reply Quote 0
      • mcm1957
        mcm1957 @MCU last edited by mcm1957

        VAR erlaubt die Redeclaration von Variablen. Bei bleibt der Wert erhalten.

        https://www.w3schools.com/js/js_variables.asp

        Re-Declaring JavaScript Variables
        If you re-declare a JavaScript variable declared with var, it will not lose its value.
        
        The variable carName will still have the value "Volvo" after the execution of these statements:
        
        Example
        var carName = "Volvo";
        var carName;
        

        Man wäre also gut beraten var zu vergessen und die aktuellen Declaartionen let und const zu verwenden.

        1 Reply Last reply Reply Quote 0
        • E
          etzeste13 last edited by

          @mcm57
          @MCU

          besten Dank für die Inputs. Ich habe das Script entsprechend geändert und werden morgen früh sobald die Sonne wieder scheint berichten.

          vG Etze

          E 1 Reply Last reply Reply Quote 0
          • E
            etzeste13 @etzeste13 last edited by

            @mcm57
            @McUles

            Hallo, also ich habe das Scrict entsprechend geändert und getestet, aber es gibt noch immer das gleiche verhalten, dass es scheint das sich die durchläufe bzw Ergebnisse aus den 3 Abfragen aus der InfluxDB aufsummieren...

            hier der eintrag aus dem LOG.... da kann man sehr gut erkenne, dass sich OST und SÜD auf das WEST Ergebniss aufaddieren.

            2023-05-10 16:00:00.223 - info: javascript.0 (1416) script.js.PV-Anlage.MTBG38_OSW-Leistung_stündlich_berechnen: Stundenertrag_SUED: 2408, gelesene Einträge: 133
            2023-05-10 16:00:00.245 - info: javascript.0 (1416) script.js.PV-Anlage.MTBG38_OSW-Leistung_stündlich_berechnen: Stundenertrag_OST: 3982, gelesene Einträge: 310
            2023-05-10 16:00:00.256 - info: javascript.0 (1416) script.js.PV-Anlage.MTBG38_OSW-Leistung_stündlich_berechnen: Stundenertrag_WEST: 6699, gelesene Einträge: 444
            

            habt Ihr hier noch eine Idee, wie ich das "Objekt" result reseten kann vor der nächsten Abfrage?

            1 Reply Last reply Reply Quote 0
            • M
              MCU last edited by

              @etzeste13 Wie hast du das Script verändert, zeig mal.

              E 1 Reply Last reply Reply Quote 0
              • E
                etzeste13 @MCU last edited by etzeste13

                @mcu

                Hi, sry für die späte Antwort, ich kam leider nicht eher dazu hier weiterzumachen...
                Hier das geänderte Script.

                //Die Ost-Süd-West- Leistungen von der letzen Stunde zusammenrechnen und abspeichern
                
                schedule("*/60 * * * *", function () {
                
                    // die Werte von Osten abfragen und abspeichern.
                    
                    let end = new Date().getTime();     // definiert aktuellen Zeitpunkt.
                    //console.log(end);
                    let Stundenertrag = 0;
                    let Time_to_next_value_in_ms = 0;   
                    let x_s = 0;
                    sendTo('influxdb.0', 'getHistory', {          // ist der Aufruf der Datenbank-Fuktion get History vom Influx.DB Adapter 0
                        id: '0_userdata.0.PV_Anlagen.MTBG-38_1.Leistung-OST',   // Datenpunkt der ausgelesen wird
                        options: {                                  // die optionen anhand deren ausgelesen werden soll  
                            start:      end - 3600000,                 // Startpunkt ist aktuelle Zeitpunkt - 1Stunde in ms
                            end:        end,                        // auslesen bis jetzt in ms
                            count:      180,                       //bis zu 180 Werte auslesen, da generell alle 30sek geschrieben wird
                            aggregate: 'none' // or 'none' to get raw values    // aggregate: none definiert die eigentlichen Werte ausgegeben werden sollen 
                        }
                    }, function (result) {
                        for (var i = 0; i < result.result.length; i++) {
                            //console.log(result.result[i].ts)        //timestamp des Ergebnisses der Nr[i] ausgeben
                            if (i == 0) {                           // im ersten Durchlauf muss mann die 30sec manuell angeben, da sonst bei der berechnung [i-1] ein Fehler auftritt 
                                Time_to_next_value_in_ms = 30000;
                            } else {
                                Time_to_next_value_in_ms = result.result[i].ts - result.result[i-1].ts;
                            }
                            //console.log(Time_to_next_value_in_ms);
                            Stundenertrag = Stundenertrag + result.result[i].val / (3600000 / Time_to_next_value_in_ms);   //die 3.600.000ms / die MS zum Vorgängerwert addiert, ergeben die W/h
                            x_s = x_s + 1;                                      // x_s nur zur Kontrolle, damit ich sehe wie viele Werte addiert wurden
                        }
                        Stundenertrag = Math.round(Stundenertrag);                 //Ergebnis auf ganze Zahl runden
                        console.log('Stundenertrag_OST: ' + Stundenertrag + ', gelesene Einträge: ' + x_s);                    // PV-Ertrag der letzten Stunde + die Anzahl der Datenpunkte ins LOG schreiben
                        setState("0_userdata.0.PV_Anlagen.MTBG-38_1.Leistung-OST_letzte_Stunde", Stundenertrag, true);     //PV-Ertrag der letzten Stunde in Datenpunkt schreiben
                    });
                
                
                // die Werte von Süden abfragen und abspeichern.
                    
                    end = new Date().getTime();     // definiert aktuellen Zeitpunkt.
                    //console.log(end);
                    Stundenertrag = 0;
                    Time_to_next_value_in_ms = 0;   
                    x_s = 0;
                    sendTo('influxdb.0', 'getHistory', {          // ist der Aufruf der Datenbank-Fuktion get History vom Influx.DB Adapter 0
                        id: '0_userdata.0.PV_Anlagen.MTBG-38_1.Leistung-SÜD',   // Datenpunkt der ausgelesen wird
                        options: {                                  // die optionen anhand deren ausgelesen werden soll  
                            start:      end - 3600000,                 // Startpunkt ist aktuelle Zeitpunkt - 1Stunde in ms
                            end:        end,                        // auslesen bis jetzt in ms
                            count:      180,                       //bis zu 180 Werte auslesen, da generell alle 30sek geschrieben wird
                            aggregate: 'none' // or 'none' to get raw values    // aggregate: none definiert die eigentlichen Werte ausgegeben werden sollen 
                        }
                    }, function (result) {
                        for (var i = 0; i < result.result.length; i++) {
                            //console.log(result.result[i].ts)        //timestamp des Ergebnisses der Nr[i] ausgeben
                            if (i == 0) {                           // im ersten Durchlauf muss mann die 30sec manuell angeben, da sonst bei der berechnung [i-1] ein Fehler auftritt 
                                Time_to_next_value_in_ms = 30000;
                            } else {
                                Time_to_next_value_in_ms = result.result[i].ts - result.result[i-1].ts;
                            }
                            //console.log(Time_to_next_value_in_ms);
                            Stundenertrag = Stundenertrag + result.result[i].val / (3600000 / Time_to_next_value_in_ms);   //die 3.600.000ms / die MS zum Vorgängerwert addiert, ergeben die W/h
                            x_s = x_s + 1;                                      // x_s nur zur Kontrolle, damit ich sehe wie viele Werte addiert wurden
                        }
                        Stundenertrag = Math.round(Stundenertrag);                 //Ergebnis auf ganze Zahl runden
                        console.log('Stundenertrag_SUED: ' + Stundenertrag + ', gelesene Einträge: ' + x_s);                    // PV-Ertrag der letzten Stunde + die Anzahl der Datenpunkte ins LOG schreiben
                        setState("0_userdata.0.PV_Anlagen.MTBG-38_1.Leistung-SÜD_letzte_Stunde", Stundenertrag, true);     //PV-Ertrag der letzten Stunde in Datenpunkt schreiben
                    });    
                
                // die Werte von WEST abfragen und abspeichern.
                    
                    end = new Date().getTime();     // definiert aktuellen Zeitpunkt.
                    //console.log(end);
                    Stundenertrag = 0;
                    Time_to_next_value_in_ms = 0;   
                    x_s = 0;
                    sendTo('influxdb.0', 'getHistory', {          // ist der Aufruf der Datenbank-Fuktion get History vom Influx.DB Adapter 0
                        id: '0_userdata.0.PV_Anlagen.MTBG-38_1.Leistung-WEST',   // Datenpunkt der ausgelesen wird
                        options: {                                  // die optionen anhand deren ausgelesen werden soll  
                            start:      end - 3600000,                 // Startpunkt ist aktuelle Zeitpunkt - 1Stunde in ms
                            end:        end,                        // auslesen bis jetzt in ms
                            count:      180,                       //bis zu 180 Werte auslesen, da generell alle 30sek geschrieben wird
                            aggregate: 'none' // or 'none' to get raw values    // aggregate: none definiert die eigentlichen Werte ausgegeben werden sollen 
                        }
                    }, function (result) {
                        for (var i = 0; i < result.result.length; i++) {
                            //console.log(result.result[i].ts)        //timestamp des Ergebnisses der Nr[i] ausgeben
                            if (i == 0) {                           // im ersten Durchlauf muss mann die 30sec manuell angeben, da sonst bei der berechnung [i-1] ein Fehler auftritt 
                                Time_to_next_value_in_ms = 30000;
                            } else {
                                Time_to_next_value_in_ms = result.result[i].ts - result.result[i-1].ts;
                            }
                            //console.log(Time_to_next_value_in_ms);
                            Stundenertrag = Stundenertrag + result.result[i].val / (3600000 / Time_to_next_value_in_ms);   //die 3.600.000ms / die MS zum Vorgängerwert addiert, ergeben die W/h
                            x_s = x_s + 1;                                      // x_s nur zur Kontrolle, damit ich sehe wie viele Werte addiert wurden
                        }
                        Stundenertrag = Math.round(Stundenertrag);                 //Ergebnis auf ganze Zahl runden
                        console.log('Stundenertrag_WEST: ' + Stundenertrag + ', gelesene Einträge: ' + x_s);                   // PV-Ertrag der letzten Stunde + die Anzahl der Datenpunkte ins LOG schreiben
                        setState("0_userdata.0.PV_Anlagen.MTBG-38_1.Leistung-WEST_letzte_Stunde", Stundenertrag, true);     //PV-Ertrag der letzten Stunde in Datenpunkt schreiben
                    });
                
                });
                
                1 Reply Last reply Reply Quote 0
                • M
                  MCU last edited by

                  @etzeste13 Ich würde die sendTo ineinander verschachteln.

                  /Die Ost-Süd-West- Leistungen von der letzen Stunde zusammenrechnen und abspeichern
                   
                  schedule("*/60 * * * *", function () {
                   
                      // die Werte von Osten abfragen und abspeichern.
                      
                      let end = new Date().getTime();     // definiert aktuellen Zeitpunkt.
                      //console.log(end);
                      let Stundenertrag = 0;
                      let Time_to_next_value_in_ms = 0;   
                      let x_s = 0;
                      sendTo('influxdb.0', 'getHistory', {          // ist der Aufruf der Datenbank-Fuktion get History vom Influx.DB Adapter 0
                          id: '0_userdata.0.PV_Anlagen.MTBG-38_1.Leistung-OST',   // Datenpunkt der ausgelesen wird
                          options: {                                  // die optionen anhand deren ausgelesen werden soll  
                              start:      end - 3600000,                 // Startpunkt ist aktuelle Zeitpunkt - 1Stunde in ms
                              end:        end,                        // auslesen bis jetzt in ms
                              count:      180,                       //bis zu 180 Werte auslesen, da generell alle 30sek geschrieben wird
                              aggregate: 'none' // or 'none' to get raw values    // aggregate: none definiert die eigentlichen Werte ausgegeben werden sollen 
                          }
                      }, function (result) {
                          for (var i = 0; i < result.result.length; i++) {
                              //console.log(result.result[i].ts)        //timestamp des Ergebnisses der Nr[i] ausgeben
                              if (i == 0) {                           // im ersten Durchlauf muss mann die 30sec manuell angeben, da sonst bei der berechnung [i-1] ein Fehler auftritt 
                                  Time_to_next_value_in_ms = 30000;
                              } else {
                                  Time_to_next_value_in_ms = result.result[i].ts - result.result[i-1].ts;
                              }
                              //console.log(Time_to_next_value_in_ms);
                              Stundenertrag = Stundenertrag + result.result[i].val / (3600000 / Time_to_next_value_in_ms);   //die 3.600.000ms / die MS zum Vorgängerwert addiert, ergeben die W/h
                              x_s = x_s + 1;                                      // x_s nur zur Kontrolle, damit ich sehe wie viele Werte addiert wurden
                          }
                          Stundenertrag = Math.round(Stundenertrag);                 //Ergebnis auf ganze Zahl runden
                          console.log('Stundenertrag_OST: ' + Stundenertrag + ', gelesene Einträge: ' + x_s);                    // PV-Ertrag der letzten Stunde + die Anzahl der Datenpunkte ins LOG schreiben
                          setState("0_userdata.0.PV_Anlagen.MTBG-38_1.Leistung-OST_letzte_Stunde", Stundenertrag, true);     //PV-Ertrag der letzten Stunde in Datenpunkt schreiben
                  // die Werte von Süden abfragen und abspeichern.
                      
                      end = new Date().getTime();     // definiert aktuellen Zeitpunkt.
                      //console.log(end);
                      Stundenertrag = 0;
                      Time_to_next_value_in_ms = 0;   
                      x_s = 0;
                      sendTo('influxdb.0', 'getHistory', {          // ist der Aufruf der Datenbank-Fuktion get History vom Influx.DB Adapter 0
                          id: '0_userdata.0.PV_Anlagen.MTBG-38_1.Leistung-SÜD',   // Datenpunkt der ausgelesen wird
                          options: {                                  // die optionen anhand deren ausgelesen werden soll  
                              start:      end - 3600000,                 // Startpunkt ist aktuelle Zeitpunkt - 1Stunde in ms
                              end:        end,                        // auslesen bis jetzt in ms
                              count:      180,                       //bis zu 180 Werte auslesen, da generell alle 30sek geschrieben wird
                              aggregate: 'none' // or 'none' to get raw values    // aggregate: none definiert die eigentlichen Werte ausgegeben werden sollen 
                          }
                      }, function (result) {
                          for (var i = 0; i < result.result.length; i++) {
                              //console.log(result.result[i].ts)        //timestamp des Ergebnisses der Nr[i] ausgeben
                              if (i == 0) {                           // im ersten Durchlauf muss mann die 30sec manuell angeben, da sonst bei der berechnung [i-1] ein Fehler auftritt 
                                  Time_to_next_value_in_ms = 30000;
                              } else {
                                  Time_to_next_value_in_ms = result.result[i].ts - result.result[i-1].ts;
                              }
                              //console.log(Time_to_next_value_in_ms);
                              Stundenertrag = Stundenertrag + result.result[i].val / (3600000 / Time_to_next_value_in_ms);   //die 3.600.000ms / die MS zum Vorgängerwert addiert, ergeben die W/h
                              x_s = x_s + 1;                                      // x_s nur zur Kontrolle, damit ich sehe wie viele Werte addiert wurden
                          }
                          Stundenertrag = Math.round(Stundenertrag);                 //Ergebnis auf ganze Zahl runden
                          console.log('Stundenertrag_SUED: ' + Stundenertrag + ', gelesene Einträge: ' + x_s);                    // PV-Ertrag der letzten Stunde + die Anzahl der Datenpunkte ins LOG schreiben
                          setState("0_userdata.0.PV_Anlagen.MTBG-38_1.Leistung-SÜD_letzte_Stunde", Stundenertrag, true);     //PV-Ertrag der letzten Stunde in Datenpunkt schreiben
                  // die Werte von WEST abfragen und abspeichern.
                      
                      end = new Date().getTime();     // definiert aktuellen Zeitpunkt.
                      //console.log(end);
                      Stundenertrag = 0;
                      Time_to_next_value_in_ms = 0;   
                      x_s = 0;
                      sendTo('influxdb.0', 'getHistory', {          // ist der Aufruf der Datenbank-Fuktion get History vom Influx.DB Adapter 0
                          id: '0_userdata.0.PV_Anlagen.MTBG-38_1.Leistung-WEST',   // Datenpunkt der ausgelesen wird
                          options: {                                  // die optionen anhand deren ausgelesen werden soll  
                              start:      end - 3600000,                 // Startpunkt ist aktuelle Zeitpunkt - 1Stunde in ms
                              end:        end,                        // auslesen bis jetzt in ms
                              count:      180,                       //bis zu 180 Werte auslesen, da generell alle 30sek geschrieben wird
                              aggregate: 'none' // or 'none' to get raw values    // aggregate: none definiert die eigentlichen Werte ausgegeben werden sollen 
                          }
                      }, function (result) {
                          for (var i = 0; i < result.result.length; i++) {
                              //console.log(result.result[i].ts)        //timestamp des Ergebnisses der Nr[i] ausgeben
                              if (i == 0) {                           // im ersten Durchlauf muss mann die 30sec manuell angeben, da sonst bei der berechnung [i-1] ein Fehler auftritt 
                                  Time_to_next_value_in_ms = 30000;
                              } else {
                                  Time_to_next_value_in_ms = result.result[i].ts - result.result[i-1].ts;
                              }
                              //console.log(Time_to_next_value_in_ms);
                              Stundenertrag = Stundenertrag + result.result[i].val / (3600000 / Time_to_next_value_in_ms);   //die 3.600.000ms / die MS zum Vorgängerwert addiert, ergeben die W/h
                              x_s = x_s + 1;                                      // x_s nur zur Kontrolle, damit ich sehe wie viele Werte addiert wurden
                          }
                          Stundenertrag = Math.round(Stundenertrag);                 //Ergebnis auf ganze Zahl runden
                          console.log('Stundenertrag_WEST: ' + Stundenertrag + ', gelesene Einträge: ' + x_s);                   // PV-Ertrag der letzten Stunde + die Anzahl der Datenpunkte ins LOG schreiben
                          setState("0_userdata.0.PV_Anlagen.MTBG-38_1.Leistung-WEST_letzte_Stunde", Stundenertrag, true);     //PV-Ertrag der letzten Stunde in Datenpunkt schreiben
                      });
                  
                      });    
                  
                      });
                   
                  });
                  
                  
                  E 1 Reply Last reply Reply Quote 0
                  • E
                    etzeste13 @MCU last edited by

                    @mcu
                    wie soll ich das machen? ich muss ja die einzelnen Datenpunkte einzeln aus der influxDB holen... oder nicht ?

                    M 1 Reply Last reply Reply Quote 0
                    • M
                      MCU @etzeste13 last edited by MCU

                      @etzeste13 Ich habe es doch schon gemacht.
                      Damit wird der nächste sendTo-Befehl erst ausgelöst, wenn die Daten vom 1. da sind, usw..

                      E 1 Reply Last reply Reply Quote 0
                      • E
                        etzeste13 @MCU last edited by etzeste13

                        @MCU bitte entschuldige die vlt. blöde Frage, aber ich finde den Unterschied im Code einfach nicht.... kannst du mir kurz schreiben was du geändert hast.... Scheint als ob ich den Wald vor lauter Bäumen nicht finde...

                        M 1 Reply Last reply Reply Quote 0
                        • M
                          MCU @etzeste13 last edited by MCU

                          @etzeste13
                          Also es sind 3 sendTo

                          Vorher:

                          sendTo{
                          }
                          sendTo{
                          }
                          sendTo{
                          }
                          

                          Nachher:

                          sendTo{
                                sendTo{
                                    sendTo{
                                    }
                               }
                          }
                          
                          E 1 Reply Last reply Reply Quote 0
                          • E
                            etzeste13 @MCU last edited by

                            @mcu
                            Alles klar, jetzt hab ichs... danke dir. Ich werde es morgen testen, wenn wieder die Sonne scheint.... bzw. es hell wird, von Sonne aktuell keine Spur... 😞

                            E 1 Reply Last reply Reply Quote 0
                            • E
                              etzeste13 @etzeste13 last edited by

                              @MCU

                              vielen Dank für deinen Input... jetzt funktioniert es wie es gedacht war.
                              Kannst du mir vielleicht noch den Grund erklären warum das jetzt funktioniert?

                              vG Etze

                              1 Reply Last reply Reply Quote 0
                              • M
                                MCU last edited by

                                @etzeste13
                                Vorher wurden die sendTo Funktionen direkt nacheinander ausgelöst. Es wurde nicht darauf gewartet, bis die Daten verarbeitet wurden.

                                Nachher wurden die Funktionen immer erst dann aufgerufen, wenn die Daten aus der vorherigen Funktion, auch wirklich verarbeitet gewesen sind.

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

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                786
                                Online

                                31.9k
                                Users

                                80.1k
                                Topics

                                1.3m
                                Posts

                                3
                                15
                                580
                                Loading More Posts
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes
                                Reply
                                • Reply as topic
                                Log in to reply
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                The ioBroker Community 2014-2023
                                logo