Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. ioBroker Allgemein
  4. InfluxDB Adapter und Photovoltaik-Leistung

NEWS

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    11
    1
    293

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    1.8k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    11
    1
    776

InfluxDB Adapter und Photovoltaik-Leistung

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
7 Beiträge 2 Kommentatoren 452 Aufrufe 1 Beobachtet
  • Ä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.
  • SKBS Offline
    SKBS Offline
    SKB
    Developer Most Active
    schrieb am zuletzt editiert von
    #1

    Hallo,
    ich habe mal eine Frage zu dem Speichern der Werte, die von meiner PV Anlage kommen - diese müssen via "Timer" alle 100ms syncrhon gelesen werden, damit der Skalierungsfaktor zu dem Wert passt. Dies geschieht via Javascript.

    Leider werden somit jede Sekunde Werte in die influxDB geschrieben - dies würde ich gerne auf 10 Sekunden ändern, da es hier nur um die aktuelle Produktion geht.

    Hier sieht man, wie die Werte Richtung influxDB "fliegen".
    893e8987-2c19-4ff8-93bb-10b160aaa4b0-image.png

    Ich dachte, ich käme mit "log changes minimal delta" weiter - aber der Adapter schreibt munter die Werte weiter.

    Hat hier jemand einen Tipp?

    Vielen Dank!

    ... wer nicht mit der Zeit geht, geht mit der Zeit ...

    Aktuelle Entwicklung: Energiefluss - erweitert (https://forum.iobroker.net/topic/64734)

    paul53P 1 Antwort Letzte Antwort
    0
    • SKBS SKB

      Hallo,
      ich habe mal eine Frage zu dem Speichern der Werte, die von meiner PV Anlage kommen - diese müssen via "Timer" alle 100ms syncrhon gelesen werden, damit der Skalierungsfaktor zu dem Wert passt. Dies geschieht via Javascript.

      Leider werden somit jede Sekunde Werte in die influxDB geschrieben - dies würde ich gerne auf 10 Sekunden ändern, da es hier nur um die aktuelle Produktion geht.

      Hier sieht man, wie die Werte Richtung influxDB "fliegen".
      893e8987-2c19-4ff8-93bb-10b160aaa4b0-image.png

      Ich dachte, ich käme mit "log changes minimal delta" weiter - aber der Adapter schreibt munter die Werte weiter.

      Hat hier jemand einen Tipp?

      Vielen Dank!

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

      @skb sagte: müssen via "Timer" alle 100ms syncrhon gelesen werden, damit der Skalierungsfaktor zu dem Wert passt. Dies geschieht via Javascript.

      ?? Bitte erläutern. Skript?

      @skb sagte in InfluxDB Adapter und Photovoltaik-Leistung:

      dies würde ich gerne auf 10 Sekunden ändern

      Datenpunkt, der alle 10 s mit dem Mittelwert der letzten 10 s geschrieben wird.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

      SKBS 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @skb sagte: müssen via "Timer" alle 100ms syncrhon gelesen werden, damit der Skalierungsfaktor zu dem Wert passt. Dies geschieht via Javascript.

        ?? Bitte erläutern. Skript?

        @skb sagte in InfluxDB Adapter und Photovoltaik-Leistung:

        dies würde ich gerne auf 10 Sekunden ändern

        Datenpunkt, der alle 10 s mit dem Mittelwert der letzten 10 s geschrieben wird.

        SKBS Offline
        SKBS Offline
        SKB
        Developer Most Active
        schrieb am zuletzt editiert von
        #3

        @paul53
        Das Skript sieht so aus:

        // Aktuelle Leistung der Anlage
        createState('Solar.Wechselrichter.PVLeistungAktuell', {
            name: 'Aktuelle Leistung der Anlage in W',
            unit: 'W',
            min: 0,
            type: 'number',
            role: 'value.energy'
        }, function () {
        
            on('modbus.0.holdingRegisters.40083_I_AC_Leistung'/*AC-Leistungswert*/, function (obj) {
                var timeout = setTimeout(function () {
                    clearTimeout(timeout);
                    var factorState = getState('modbus.0.holdingRegisters.40084_I_AC_Leistung_SF'/*AC-Leistung Skalierungsfaktor*/);
                    convertValue(obj.state.val, factorState ? factorState.val : 0, 'PVLeistungAktuell');
                }, 100);
            });
        
            var factorState = getState('modbus.0.holdingRegisters.40084_I_AC_Leistung_SF'/*AC-Leistung Skalierungsfaktor*/);
            var valueState = getState('modbus.0.holdingRegisters.40083_I_AC_Leistung'/*AC-Leistungswert*/);
            convertValue(valueState ? valueState.val : null, factorState ? factorState.val : 0, 'PVLeistungAktuell');
        });
        

        Und nun? ;)

        ... wer nicht mit der Zeit geht, geht mit der Zeit ...

        Aktuelle Entwicklung: Energiefluss - erweitert (https://forum.iobroker.net/topic/64734)

        paul53P 1 Antwort Letzte Antwort
        0
        • SKBS SKB

          @paul53
          Das Skript sieht so aus:

          // Aktuelle Leistung der Anlage
          createState('Solar.Wechselrichter.PVLeistungAktuell', {
              name: 'Aktuelle Leistung der Anlage in W',
              unit: 'W',
              min: 0,
              type: 'number',
              role: 'value.energy'
          }, function () {
          
              on('modbus.0.holdingRegisters.40083_I_AC_Leistung'/*AC-Leistungswert*/, function (obj) {
                  var timeout = setTimeout(function () {
                      clearTimeout(timeout);
                      var factorState = getState('modbus.0.holdingRegisters.40084_I_AC_Leistung_SF'/*AC-Leistung Skalierungsfaktor*/);
                      convertValue(obj.state.val, factorState ? factorState.val : 0, 'PVLeistungAktuell');
                  }, 100);
              });
          
              var factorState = getState('modbus.0.holdingRegisters.40084_I_AC_Leistung_SF'/*AC-Leistung Skalierungsfaktor*/);
              var valueState = getState('modbus.0.holdingRegisters.40083_I_AC_Leistung'/*AC-Leistungswert*/);
              convertValue(valueState ? valueState.val : null, factorState ? factorState.val : 0, 'PVLeistungAktuell');
          });
          

          Und nun? ;)

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

          @skb sagte in: Das Skript sieht so aus:

          Es fehlt die Funktion convertValue().
          Außerdem wird nicht alle 100 ms eingelesen, sondern 100 ms nach dem Trigger die Konvertierung durchgeführt.
          Ist der Wert von "AC-Leistung Skalierungsfaktor" konstant oder variabel?

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

          SKBS 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @skb sagte in: Das Skript sieht so aus:

            Es fehlt die Funktion convertValue().
            Außerdem wird nicht alle 100 ms eingelesen, sondern 100 ms nach dem Trigger die Konvertierung durchgeführt.
            Ist der Wert von "AC-Leistung Skalierungsfaktor" konstant oder variabel?

            SKBS Offline
            SKBS Offline
            SKB
            Developer Most Active
            schrieb am zuletzt editiert von
            #5

            @paul53 Danke für die Rückmeldung. Natürlich wird der Wert nicht alle 100ms neu gelesen, sondern neu berechnet.

            Hier nochmal die komplette Funktion:

            // Funktion, um Werte mit Skalierung zu berechnen
            function convertValue(value, factor, destination) {
                if (value === null) return;
                if (factor === null) factor = 0;
                let num = value * Math.pow(10, factor);
                setState('Solar.Wechselrichter.' + destination, Number(num.toFixed(2)), true);
            }
            // Aktuelle Leistung der Anlage
            createState('Solar.Wechselrichter.PVLeistungAktuell', {
                name: 'Aktuelle Leistung der Anlage in W',
                unit: 'W',
                min: 0,
                type: 'number',
                role: 'value.energy'
            }, function () {
            
                on('modbus.0.holdingRegisters.40083_I_AC_Leistung'/*AC-Leistungswert*/, function (obj) {
                    var timeout = setTimeout(function () {
                        clearTimeout(timeout);
                        var factorState = getState('modbus.0.holdingRegisters.40084_I_AC_Leistung_SF'/*AC-Leistung Skalierungsfaktor*/);
                        convertValue(obj.state.val, factorState ? factorState.val : 0, 'PVLeistungAktuell');
                    }, 100);
                });
            
                var factorState = getState('modbus.0.holdingRegisters.40084_I_AC_Leistung_SF'/*AC-Leistung Skalierungsfaktor*/);
                var valueState = getState('modbus.0.holdingRegisters.40083_I_AC_Leistung'/*AC-Leistungswert*/);
                convertValue(valueState ? valueState.val : null, factorState ? factorState.val : 0, 'PVLeistungAktuell');
            });
            

            @paul53 said in InfluxDB Adapter und Photovoltaik-Leistung:

            Ist der Wert von "AC-Leistung Skalierungsfaktor" konstant oder variabel?

            Der Skalierungsfaktor pro Wert ist immer gleich. Ich verwende die Funktion aber für mehrere Skalierungen. Daher unterscheidet er sich. Bei der Leistung ist er "-1" - bei der Temperatur "-2".

            Das Skript hatte ich hier im Forum gefunden und etwas modifiziert.

            ... wer nicht mit der Zeit geht, geht mit der Zeit ...

            Aktuelle Entwicklung: Energiefluss - erweitert (https://forum.iobroker.net/topic/64734)

            paul53P 1 Antwort Letzte Antwort
            0
            • SKBS SKB

              @paul53 Danke für die Rückmeldung. Natürlich wird der Wert nicht alle 100ms neu gelesen, sondern neu berechnet.

              Hier nochmal die komplette Funktion:

              // Funktion, um Werte mit Skalierung zu berechnen
              function convertValue(value, factor, destination) {
                  if (value === null) return;
                  if (factor === null) factor = 0;
                  let num = value * Math.pow(10, factor);
                  setState('Solar.Wechselrichter.' + destination, Number(num.toFixed(2)), true);
              }
              // Aktuelle Leistung der Anlage
              createState('Solar.Wechselrichter.PVLeistungAktuell', {
                  name: 'Aktuelle Leistung der Anlage in W',
                  unit: 'W',
                  min: 0,
                  type: 'number',
                  role: 'value.energy'
              }, function () {
              
                  on('modbus.0.holdingRegisters.40083_I_AC_Leistung'/*AC-Leistungswert*/, function (obj) {
                      var timeout = setTimeout(function () {
                          clearTimeout(timeout);
                          var factorState = getState('modbus.0.holdingRegisters.40084_I_AC_Leistung_SF'/*AC-Leistung Skalierungsfaktor*/);
                          convertValue(obj.state.val, factorState ? factorState.val : 0, 'PVLeistungAktuell');
                      }, 100);
                  });
              
                  var factorState = getState('modbus.0.holdingRegisters.40084_I_AC_Leistung_SF'/*AC-Leistung Skalierungsfaktor*/);
                  var valueState = getState('modbus.0.holdingRegisters.40083_I_AC_Leistung'/*AC-Leistungswert*/);
                  convertValue(valueState ? valueState.val : null, factorState ? factorState.val : 0, 'PVLeistungAktuell');
              });
              

              @paul53 said in InfluxDB Adapter und Photovoltaik-Leistung:

              Ist der Wert von "AC-Leistung Skalierungsfaktor" konstant oder variabel?

              Der Skalierungsfaktor pro Wert ist immer gleich. Ich verwende die Funktion aber für mehrere Skalierungen. Daher unterscheidet er sich. Bei der Leistung ist er "-1" - bei der Temperatur "-2".

              Das Skript hatte ich hier im Forum gefunden und etwas modifiziert.

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

              @skb Vorschlag für ein Skript, das nur alle 10 s den Mittelwert in einen Datenpunkt schreibt:

              const idAC_Leistung = 'modbus.0.holdingRegisters.40083_I_AC_Leistung';
              const idSF = 'modbus.0.holdingRegisters.40084_I_AC_Leistung_SF'; // Exponent
              const idPV_Leistung = '0_userdata.0.Solar.Wechselrichter.PVLeistung';
              
              createState(idPV_Leistung, 0, {
                  name: 'Aktuelle Leistung der Anlage in W',
                  unit: 'W',
                  min: 0,
                  type: 'number',
                  read: true,
                  write: false,
                  role: 'value.energy'
              });
              
              const factor = Math.pow(10, getState(idSF).val);
              var arr = [];
              
              on({id: idAC_Leistung}, function(dp) {
                  arr.push(dp.state.val);
              });
              
              schedule('*/10 * * * * *', function() {
                  if(arr.length) {
                      let sum = 0;
                      for(let i = 0; i < arr.length; i++) {
                          sum += arr[i];
                      }
                      setState(idPV_Leistung, Math.round(10 * factor * sum / arr.length) / 10, true);
                      arr.length = 0;
                  }
              });
              

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

              SKBS 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @skb Vorschlag für ein Skript, das nur alle 10 s den Mittelwert in einen Datenpunkt schreibt:

                const idAC_Leistung = 'modbus.0.holdingRegisters.40083_I_AC_Leistung';
                const idSF = 'modbus.0.holdingRegisters.40084_I_AC_Leistung_SF'; // Exponent
                const idPV_Leistung = '0_userdata.0.Solar.Wechselrichter.PVLeistung';
                
                createState(idPV_Leistung, 0, {
                    name: 'Aktuelle Leistung der Anlage in W',
                    unit: 'W',
                    min: 0,
                    type: 'number',
                    read: true,
                    write: false,
                    role: 'value.energy'
                });
                
                const factor = Math.pow(10, getState(idSF).val);
                var arr = [];
                
                on({id: idAC_Leistung}, function(dp) {
                    arr.push(dp.state.val);
                });
                
                schedule('*/10 * * * * *', function() {
                    if(arr.length) {
                        let sum = 0;
                        for(let i = 0; i < arr.length; i++) {
                            sum += arr[i];
                        }
                        setState(idPV_Leistung, Math.round(10 * factor * sum / arr.length) / 10, true);
                        arr.length = 0;
                    }
                });
                
                SKBS Offline
                SKBS Offline
                SKB
                Developer Most Active
                schrieb am zuletzt editiert von
                #7

                @paul53 Dake für den Vorschlag.

                Gibt es nicht die Möglichkeit, bei influx "einfach" den Wert nur alle 10 Sekunden schreiben zu lassen bzw. bei Änderung von meh als 10W bspw?

                Danke!

                ... wer nicht mit der Zeit geht, geht mit der Zeit ...

                Aktuelle Entwicklung: Energiefluss - erweitert (https://forum.iobroker.net/topic/64734)

                1 Antwort Letzte Antwort
                0

                Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                Registrieren Anmelden
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

                ioBroker
                Community Adapters
                Donate
                FAQ Cloud / IOT
                HowTo: Node.js-Update
                HowTo: Backup/Restore
                Downloads
                BLOG

                474

                Online

                32.9k

                Benutzer

                83.0k

                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