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. JavaScript
  5. Result-Funktion von InfluxDB-Adapter richtig nutzen

NEWS

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

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

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

Result-Funktion von InfluxDB-Adapter richtig nutzen

Scheduled Pinned Locked Moved JavaScript
15 Posts 3 Posters 973 Views 3 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.
  • E Offline
    E Offline
    etzeste13
    wrote on last edited by
    #4

    @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
    0
    • E etzeste13

      @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 Offline
      E Offline
      etzeste13
      wrote on last edited by
      #5

      @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
      0
      • M Online
        M Online
        MCU
        wrote on last edited by
        #6

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

        NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
        Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

        E 1 Reply Last reply
        0
        • M MCU

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

          E Offline
          E Offline
          etzeste13
          wrote on last edited by etzeste13
          #7

          @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
          0
          • M Online
            M Online
            MCU
            wrote on last edited by
            #8

            @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
                });
            
                });    
            
                });
             
            });
            
            

            NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
            Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

            E 1 Reply Last reply
            0
            • M MCU

              @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 Offline
              E Offline
              etzeste13
              wrote on last edited by
              #9

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

              M 1 Reply Last reply
              0
              • E etzeste13

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

                M Online
                M Online
                MCU
                wrote on last edited by MCU
                #10

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

                NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
                Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                E 1 Reply Last reply
                0
                • M 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 Offline
                  E Offline
                  etzeste13
                  wrote on last edited by etzeste13
                  #11

                  @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
                  0
                  • E 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 Online
                    M Online
                    MCU
                    wrote on last edited by MCU
                    #12

                    @etzeste13
                    Also es sind 3 sendTo

                    Vorher:

                    sendTo{
                    }
                    sendTo{
                    }
                    sendTo{
                    }
                    

                    Nachher:

                    sendTo{
                          sendTo{
                              sendTo{
                              }
                         }
                    }
                    

                    NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
                    Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                    E 1 Reply Last reply
                    0
                    • M MCU

                      @etzeste13
                      Also es sind 3 sendTo

                      Vorher:

                      sendTo{
                      }
                      sendTo{
                      }
                      sendTo{
                      }
                      

                      Nachher:

                      sendTo{
                            sendTo{
                                sendTo{
                                }
                           }
                      }
                      
                      E Offline
                      E Offline
                      etzeste13
                      wrote on last edited by
                      #13

                      @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
                      0
                      • E etzeste13

                        @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 Offline
                        E Offline
                        etzeste13
                        wrote on last edited by
                        #14

                        @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
                        0
                        • M Online
                          M Online
                          MCU
                          wrote on last edited by
                          #15

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

                          NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
                          Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                          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

                          442

                          Online

                          32.4k

                          Users

                          81.5k

                          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