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.
    • mickym
      mickym Most Active @txixmxo last edited by mickym

      gelöscht

      1 Reply Last reply Reply Quote 0
      • 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

                          547
                          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