Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. gelöst: Vorzeichen ändern beim Strombezug Smartmeter

    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

    gelöst: Vorzeichen ändern beim Strombezug Smartmeter

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @txixmxo last edited by paul53

      @txixmxo
      Zeile 14:

         RealPower = -dp.state.val;
      

      und Zeile 4:

      var Realpower = -getState(idRealPower).val;
      

      Oder enthält "javascript.0.Solar.Wechselrichter.ACTotalRealPower" einen negativen Wert bei Bezug und einen positiven Wert bei Einspeisung? Dann muss man testen.

      function summe() {
          let bezug = 0;
          let einspeisung = RealPower;
          if(RealPower < 0) {
              bezug = -RealPower;
              einspeisung = 0;
          } 
          setState(idBezug, bezug, true);
          setState(idEinspeisung, einspeisung, true);
      }
      
      T 1 Reply Last reply Reply Quote 0
      • T
        txixmxo @paul53 last edited by

        @paul53 said in Vorzeichen ändern beim Strombezug Smartmeter:

        Oder enthält "javascript.0.Solar.Wechselrichter.ACTotalRealPower" einen negativen Wert bei Bezug und einen positiven Wert bei Einspeisung? Dann muss man testen.

        Genauso ist es ... das obere Funktionier leider nicht ...

        beim unteren habe ich die Funktion in Zeile 9-11 ersetzt ... Richtig?

        Aber da zeigt er mir auch nur den negativen Wert an ...

        paul53 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @txixmxo last edited by

          @txixmxo sagte: beim unteren habe ich die Funktion in Zeile 9-11 ersetzt ... Richtig?

          Richtig, und idEinspeisung oben deklarieren und ID zuweisen.

          @txixmxo sagte in Vorzeichen ändern beim Strombezug Smartmeter:

          Aber da zeigt er mir auch nur den negativen Wert an

          Logge mal die beiden Variablen bezug und einspeisung.

          T 1 Reply Last reply Reply Quote 0
          • T
            txixmxo @paul53 last edited by

            @paul53 said in Vorzeichen ändern beim Strombezug Smartmeter:

            Logge mal die beiden Variablen bezug und einspeisung.

            Sorry für die dumme Frage .... aber wie mache ich das mit dem loggen? Bin leider absoluter Anfänger in ioBroker und JavaScipt

            Bezug und Einspeisung sind ja zusammen eine Variable. Nur durch Vorzeichen zu unterscheiden welcher welches ist.
            Den Wert, der direkt aus dem Wechselrichter kommt über Modbus musste ich schon aufgrund einer Faktorvariable und falscher Kommastelle als Scipt anders ausgeben. Da gab es aber zum Glück ein Beispiel wo ich mich orientieren konnte.

            Bei der Einspeisung klappt es super. Dort habe ich dieses Scipt:

            const idRealPower = 'javascript.0.Solar.Wechselrichter.ACTotalRealPower';
            const idEinspeisung = 'javascript.0.Solar.Einspeisung'; 
             
            var Realpower = getState(idRealPower).val;
            
             
            if(!existsState(idEinspeisung)) createState(idEinspeisung, Realpower, {type: 'number', unit: 'W', min: 0}); 
             
            function summe() {
                setState(idEinspeisung, RealPower , true);
            }
             
            on(idRealPower, function(dp) {
               RealPower = dp.state.val;
               summe();
            });
            
            
            paul53 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @txixmxo last edited by paul53

              @txixmxo sagte: Bei der Einspeisung klappt es super. Dort habe ich dieses Scipt:

              Bitte für Bezug und Einspeisung nur ein Skript verwenden (Ressourcen).

              const idRealPower = 'javascript.0.Solar.Wechselrichter.ACTotalRealPower';
              const idEinspeisung = 'javascript.0.Solar.Einspeisung'; 
              const idBezug = 'javascript.0.Solar.Bezug'; 
               
              var RealPower = getState(idRealPower).val;
              
              if(!existsState(idEinspeisung)) createState(idEinspeisung, RealPower, {type: 'number', unit: 'W', min: 0}); 
              if(!existsState(idBezug)) createState(idBezug, -RealPower, {type: 'number', unit: 'W', min: 0}); 
               
              function summe() {
                  let bezug = 0;
                  let einspeisung = RealPower;
                  if(RealPower < 0) {
                      bezug = -RealPower;
                      einspeisung = 0;
                  } 
                  setState(idBezug, bezug, true);
                  setState(idEinspeisung, einspeisung, true);
                  log('Einspeisung(W): ' + einspeisung);
                  log('Bezug(W): ' + bezug);
              }
               
              on(idRealPower, function(dp) {
                 RealPower = dp.state.val;
                 summe();
              });
              
              T 1 Reply Last reply Reply Quote 0
              • T
                txixmxo @paul53 last edited by

                @paul53

                Bei deinem zusammengeführten Skipt funktioniert die Einspeisung, aber der Bezug bleibt auf 0, egal was ich ändere.
                Woran könnte das noch liegen?

                Grüße und vielen Dank!!

                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @txixmxo last edited by paul53

                  @txixmxo sagte: Woran könnte das noch liegen?

                  common.min, common.max?

                  EDIT: Gerade gesehen: Es gibt die Variablen Realpower und RealPower! Bitte korrigieren.

                  T 1 Reply Last reply Reply Quote 0
                  • T
                    txixmxo @paul53 last edited by txixmxo

                    @paul53

                    Die Einspeisung wird jetzt richtig ausgegeben.

                    Der Bezug steht jedoch weiter auf 0 trotz Bezug . Jedoch sehe ich unten im Skriptlog, dass der richtige Wert ausgegeben wird. Woran kann das liegen, das dieser nicht angezeigt wird?

                    (Die Werte zum Screenshot unterscheiden sich, da die Werte sich nach Einstrahlung und Verbrauch ändern ... also nicht wundern.

                    Hier der Auszug: (Und genau diese ca. 750W werden in der Anzeige Bezug nicht ausgegeben.

                    09:37:15.873 info javascript.0 (17575) script.js.common.PV_Hausverbrauch_Berechnungen.Bezug_Einspeisung: Einspeisung(W): 0
                    09:37:15.873 info javascript.0 (17575) script.js.common.PV_Hausverbrauch_Berechnungen.Bezug_Einspeisung: Bezug(W): 755
                    09:37:16.503 info javascript.0 (17575) script.js.common.PV_Hausverbrauch_Berechnungen.Bezug_Einspeisung: Einspeisung(W): 0
                    09:37:16.504 info javascript.0 (17575) script.js.common.PV_Hausverbrauch_Berechnungen.Bezug_Einspeisung: Bezug(W): 750

                    Bez.png

                    Bei Einspeisung jedoch schon hier nur zum Vergleich.

                    09:42:01.144 info javascript.0 (17575) script.js.common.PV_Hausverbrauch_Berechnungen.Bezug_Einspeisung: Bezug(W): 0
                    09:42:02.253 info javascript.0 (17575) script.js.common.PV_Hausverbrauch_Berechnungen.Bezug_Einspeisung: Einspeisung(W): 1185
                    09:42:02.254 info javascript.0 (17575) script.js.common.PV_Hausverbrauch_Berechnungen.Bezug_Einspeisung: Bezug(W): 0
                    09:42:03.403 info javascript.0 (17575) script.js.common.PV_Hausverbrauch_Berechnungen.Bezug_Einspeisung: Einspeisung(W): 1214
                    09:42:03.403 info javascript.0 (17575) script.js.common.PV_Hausverbrauch_Berechnungen.Bezug_Einspeisung: Bezug(W): 0:

                    Ein.png

                    Viele Grüße
                    Timo

                    EDIT: hier noch einmal das aktuell verwendete Skript:

                    const idRealPower = 'javascript.0.Solar.Wechselrichter.ACTotalRealPower';
                    const idEinspeisung = 'javascript.0.Solar.Einspeisung'; 
                    const idBezug = 'javascript.0.Solar.Bezug'; 
                     
                    var RealPower = getState(idRealPower).val;
                     
                    if(!existsState(idEinspeisung)) createState(idEinspeisung, RealPower, {type: 'number', unit: 'W', min: 0}); 
                    if(!existsState(idBezug)) createState(idBezug, RealPower, {type: 'number', unit: 'W', min:0}); 
                     
                    function summe() {
                        let Bezug = 0;
                        let Einspeisung = RealPower;
                        if(RealPower < 0) {
                            Bezug = -RealPower;
                            Einspeisung = 0;
                        } 
                        setState(idBezug, Bezug, true);
                        setState(idEinspeisung, Einspeisung, true);
                        log('Einspeisung(W): ' + Einspeisung);
                        log('Bezug(W): ' + Bezug);
                    }
                     
                    on(idRealPower, function(dp) {
                       RealPower = dp.state.val;
                       summe();
                    });
                    
                    
                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @txixmxo last edited by

                      @txixmxo sagte: unten im Skriptlog, dass der richtige Wert ausgegeben wird. Woran kann das liegen, das dieser nicht angezeigt wird?

                      "javascript.0.Solar.Bezug": common.max = 0?

                      T 1 Reply Last reply Reply Quote 0
                      • T
                        txixmxo @paul53 last edited by

                        @paul53

                        Das war es 😊 👏 👏

                        Hab den Wert jetzt auf 99999 gesetzt ... müsste reichen 😉

                        Comon.png

                        Vielen vielen Dank noch einmal !!! Die Einstellung kannte ich auch noch gar nicht 🕶

                        Grüße
                        Timo

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        808
                        Online

                        31.9k
                        Users

                        80.1k
                        Topics

                        1.3m
                        Posts

                        3
                        12
                        410
                        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