Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. ModBus-Scale Factor Problem

    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

    ModBus-Scale Factor Problem

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

      Ihr redet von verschiedenen Dingen!!!

      Bei dem gerät von valbuz gibt es im Modbus Register die den anzuwendenden Skalierungsfaktor angeben. Ob das wirklich so gemeint ist das der sich plötzlich ändern kann oder ob der faktisch immer statisch ist weiss ich nicht.

      Der modbus-Adapter unterstützt keine dynamischen Skalierungsfaktoren, sondern hat diese (das ist der Screenshot von wendy2702) statisch bei der Definition der Register und Namen einzustellen in Form eines Multiplikators. Das heisst Deine "8" kannst Du statisch als 100000000 eintragen (wenn es denn Sinn macht)

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

        Hallo,

        der Scale Factor ist der Exponent (ich hoffe das ist der richtige Ausdruck, Mathevorlesung ist schon was länger her…)

        Das bedeutet hier:

        40083_I_AC_Power *10^40084_I_AC_Power_SF

        die PV produziert 7430 W*10^-1

        also 743W bzw. 0,743 kW

        Die Werte decken sich mit den Werten im SolarEdge Online Portal.

        In der ModBus Adapterconfig habe ich nur für die Gesamtproduktion einen Faktor eingegeben, damit die Zahlen nicht zu groß werden.
        358_pic2.png
        Mit einem einfachen Skript kann man dann die Tatsächlichen Werte in javascript oder so wie ich es mache, in Wrapper Objekte schreiben.

        // Werte die alle 30s ermittelt werden sollen
        
        schedule("* * * * *", function () {
        
          //log("Setzte History Werte fuer Counter start");
            // Werte in kWh
            var waschmaschine       = Number(getState("hm-rpc.0.XXXXXXXXX.2.POWER").val)/1000;
            var trockner            = Number(getState("hm-rpc.0.XXXXXXXXX.2.POWER").val)/1000;
            var itschrank           = Number(getState("hm-rpc.0.XXXXXXXXX.2.POWER").val)/1000;
            var schreibtisch_ao     = Number(getState("hm-rpc.0.XXXXXXXXX.2.POWER").val)/1000;
            var wallbox             = Number(getState("kecontact.0.p"/*Power*/).val)/1000000;
            var wallbox_current     = Number(getState("kecontact.0.currentUser"/*Current User*/).val)/1000;
            var pv_power_aktuell    = Number(getState("modbus.0.holdingRegisters.40083_I_AC_Power").val*Math.pow(10,getState("modbus.0.holdingRegisters.40084_I_AC_Power_SF").val))/1000;
            var hausanschluss_bezug = Number(getState("modbus.0.holdingRegisters.40206_M_AC_Power").val*Math.pow(10,getState("modbus.0.holdingRegisters.40210_M_AC_Power_SF").val))/1000;
        
            var hausanschluss_verbrauch=round(pv_power_aktuell-hausanschluss_bezug,1000);
        
            waschmaschine=round(waschmaschine,100);
            trockner=round(trockner,100);
            itschrank=round(itschrank,100);
        
            setState("wrapper.0.Strom.power_pv_aktuell"/*Power PV aktuell*/,pv_power_aktuell,true);
            setState("wrapper.0.Strom.power_waschmaschine",waschmaschine,true);
            setState("wrapper.0.Strom.power_trockner",trockner,true);
            setState("wrapper.0.Strom.power_it-schrank",itschrank,true);
            setState("wrapper.0.Strom.power_schreibtisch-olli",schreibtisch_ao,true);
            setState("wrapper.0.Strom.power_wallbox",wallbox,true);
            setState("wrapper.0.Strom.current_wallbox_set"/*Stromstaerke Wallbox eingestellt*/,wallbox_current,true);
            setState("wrapper.0.Strom.power_hausanschluss_bezug"/*Power Hausanschluss Bezug*/,hausanschluss_bezug,true);
            setState("wrapper.0.Strom.power_haus_verbrauch"/*Power Hausanschluss Bezug*/,hausanschluss_verbrauch,true);
        
          //log ("Setzte History Werte fuer Temperaturen ende");
        
        });
        
        function round(zahl,n_stelle) {
            zahl = (Math.round(zahl * n_stelle) / n_stelle);
            return zahl;
        }
        
        
        1 Reply Last reply Reply Quote 0
        • wendy2702
          wendy2702 last edited by

          Und dieser Scale Factor ist variabel!?

          Weil wenn nicht kannst du doch einfach einen festen Faktor im Adapter angeben und musst nicht extra mit einem Script arbeiten.

          1 Reply Last reply Reply Quote 0
          • V
            valbuz last edited by

            Meiner Meinung nach, ändert dieser eben…

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

              Im kurzen Testlauf meines SE5k mit Modbus-Zähler habe ich auch feststellen müssen, dass der Skalierungsfaktor von der aktuellen Leistung abhängt.

              Ich würde schätzen - aktuelle Leistung * 10 hoch (Skalierungsfaktor-65536)

              Da ich noch keinen Zweirichtungszähler / Endabnahme durch EVU habe, kann ich noch nicht weiter testen.

              Wäre also toll, wenn jemand entweder einen SolarEdge-Adapter auf Basis des Modbus-Adapters oder auf Basis des ?? Webseiten-Auslese-Adapters ?? (Wie heißt der gleich?) bauen könnte - ich kanns nicht.

              Letzteres wäre u.U. umfangreicher, aber vom SolarEdge-Server abhängig. Dafür ist dann keine Umrechnerrei erforderlich 😉

              verlinkte API und PHP-Schnipsel siehe https://www.photovoltaikforum.com/wechselrichter-f3/solaredge-api-nutzen-t122938.html

              1 Reply Last reply Reply Quote 0
              • V
                valbuz last edited by

                Das Problem bei der API-Abfrage ist, dass der Intervall der Daten auf 15Min. beschränkt ist. 😉

                Auch die Abfrage ist begrenzt pro 24Std.!

                1 Reply Last reply Reply Quote 0
                • wendy2702
                  wendy2702 last edited by

                  Das mit dem variablem Scale Factor ist natürlich "dumm".

                  Kann man das eventuell irgendwie weg konfigurieren? Macht aus meiner Sicht eh keinen großen Sinn den variabel zu machen, aber wenn es so implementiert ist.

                  1 Reply Last reply Reply Quote 0
                  • S
                    sol21 last edited by

                    ehome hat weiter oben die Verwendung des Scalefaktors ja schön beschrieben.

                    Gibt es trotzdem noch Probleme? Wo genau und welchen Wert wollt Ihr konkret lesen?

                    1 Reply Last reply Reply Quote 0
                    • V
                      valbuz last edited by

                      @MeisterF:

                      Ich würde schätzen - aktuelle Leistung * 10 hoch (Skalierungsfaktor-65536) `

                      Wie würde dann die Rechnung aussehen?

                      Das wäre ja ein enormer Exponent 😉

                      1 Reply Last reply Reply Quote 0
                      • apollon77
                        apollon77 last edited by

                        Wenn ihr rausgefunden habt wie genau die Berechnung s in muss kann man den modbus Adapter normal laufen lassen, beide Werte auslesen lassen und bei Aktualisierung per JavaScript den richtig errechneten wert in einen State schreiben. Sind 3 Zeilen JavaScript und braucht keinen extra Adapter ;-))

                        1 Reply Last reply Reply Quote 0
                        • Bluefox
                          Bluefox last edited by

                          @apollon77:

                          Wenn ihr rausgefunden habt wie genau die Berechnung s in muss kann man den modbus Adapter normal laufen lassen, beide Werte auslesen lassen und bei Aktualisierung per JavaScript den richtig errechneten wert in einen State schreiben. Sind 3 Zeilen JavaScript und braucht keinen extra Adapter ;-)) `

                          Ich habe gleiche Meinung

                          1 Reply Last reply Reply Quote 0
                          • V
                            valbuz last edited by

                            @ehome:

                            Mit einem einfachen Skript kann man dann die Tatsächlichen Werte in javascript oder so wie ich es mache, in Wrapper Objekte schreiben. `

                            Hallo Olli.

                            Muss beim Wrapper im voraus eine Struktur etc. definiert werden oder schreibt das Skript alles automatisch korrekt in den Wrapper?

                            Mach mich noch etwas schwer damit… 🙂

                            Danke

                            Patrick

                            1 Reply Last reply Reply Quote 0
                            • ChristianM
                              ChristianM last edited by

                              @Bluefox:

                              @apollon77:

                              Wenn ihr rausgefunden habt wie genau die Berechnung s in muss kann man den modbus Adapter normal laufen lassen, beide Werte auslesen lassen und bei Aktualisierung per JavaScript den richtig errechneten wert in einen State schreiben. Sind 3 Zeilen JavaScript und braucht keinen extra Adapter ;-)) `

                              Ich habe gleiche Meinung `

                              Schade, auch ich hab damit leider ein paar Probleme.

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

                                @Bluefox:

                                @apollon77:

                                Wenn ihr rausgefunden habt wie genau die Berechnung s in muss kann man den modbus Adapter normal laufen lassen, beide Werte auslesen lassen und bei Aktualisierung per JavaScript den richtig errechneten wert in einen State schreiben. Sind 3 Zeilen JavaScript und braucht keinen extra Adapter ;-)) `

                                Ich habe gleiche Meinung `

                                Also - wie ich geschrieben habe - benutze ich ja ein paar Zeilen javascript Code um die Werte zu berechnen.

                                Ich habe nie gesagt, dass man dafür einen extra Adapter braucht! Nichts spricht dagegen einfach Javascript Variablen zu nutzen.

                                Den Wrapper-Adapter nutze ich halt gerne, da er aus meiner Sicht einige praktische Vorteile hat.

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

                                  @valbuz:

                                  @MeisterF:

                                  Ich würde schätzen - aktuelle Leistung * 10 hoch (Skalierungsfaktor-65536) `

                                  Wie würde dann die Rechnung aussehen?

                                  Das wäre ja ein enormer Exponent 😉 `

                                  Hmm, der Scale Factor würde mich auch überraschen ….

                                  Wie https://forum.iobroker.net/viewtopic.php?f=20&t=6887&p=85299#p85299 kann es sein, dass man die Adressen etwas verschieben muss um sinnvolle Werte zu bekommen. Man kann seine Berechnungen ja aktuell immer mit dem SolarEge Portal vergleichen um zu sehen, ob man richtig liegt …

                                  1 Reply Last reply Reply Quote 0
                                  • ChristianM
                                    ChristianM last edited by

                                    Ich habs mittlerweile auch hinbekommen mit deinem Script. Ein Adapter wäre natürlich aber trotzdem toll.

                                    Christian

                                    1 Reply Last reply Reply Quote 0
                                    • V
                                      valbuz last edited by

                                      Also ich habe hier noch ein Problem mit der Darstellung im Wrapper…..

                                      Wenn ich in den Einstellungen der Modbus Register meine entsprechendes Register mit einem Faktor 0.1 einsetze so erhalte ich im Wrapper eine Darstellung auch mit 0.xxxx

                                      Gerne möchte ich jedoch, dass im Wrapper keine Kommazahl erscheint. So habe ich in den Einstellungen der Register den Faktor auf 1 gesetzt. Danach erhalte ich im Wrapper nur noch als Wert "true". Siehe Fotos.

                                      Was mache ich da falsch?
                                      6494_modbus1.jpg

                                      1 Reply Last reply Reply Quote 0
                                      • I
                                        ibins last edited by

                                        Hallo zusammen,

                                        ich habe seit Mai eine PV mit SE7K Wechselrichter. Mein Problem ist, das der Ertragswert 40083 I_AC_Power springt. Damit meine ich, dass scheinbar der Skalierungswert (Faktor) zwischen 0.1 und 1 pendelt. Gibt es eine Möglichkeit, dies zu unterbinden, bzw. die Einstellungen entsprechend anzupassen?

                                        Über eure Unterstützung würde ich mich freuen.

                                        Danke und Grüße,

                                        Ralf

                                        1 Reply Last reply Reply Quote 0
                                        • V
                                          valbuz last edited by

                                          Hallo Ralf.

                                          Also ich lese mit dem Register 40101 die aktuelle Produktion aus und verwende dazu den SF von 40102.

                                          Versuche es mal damit.

                                          Pat

                                          1 Reply Last reply Reply Quote 0
                                          • I
                                            ibins last edited by

                                            Hallo Pat,

                                            vielen Dank für die Nachricht. Ich hatte ein Verständnisproblem mit der Berechnungsweise. Man benötigt immer Wert x Faktor, dann funktioniert es. Trotzdem vielen Dank für deine Nachricht.

                                            Grüße

                                            Ralf

                                            P.S: Mit den Registern 40083 und 40084 bekomme ich meine benötigten Daten.

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

                                            Support us

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

                                            868
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            12
                                            29
                                            5788
                                            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