Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [Gelöst]Batteriespeichersimulation mit AMIS-Daten in Blockly

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Gelöst]Batteriespeichersimulation mit AMIS-Daten in Blockly

    This topic has been deleted. Only users with topic management privileges can see it.
    • dslraser
      dslraser Forum Testing Most Active @GOETSCHHOFER last edited by

      @goetschhofer
      ich kann Deinen Blockly Export nicht importieren ? (Fehler)

      G 1 Reply Last reply Reply Quote 1
      • G
        GOETSCHHOFER @dslraser last edited by GOETSCHHOFER

        @dslraser said in Batteriespeichersimulation mit AMIS-Daten in Blockly:

        @goetschhofer
        ich kann Deinen Blockly Export nicht importieren ? (Fehler)

        Habe es jetzt nochmals exportiert, in eine Textdatei eingefügt und von dort wieder herauskopiert u. eingefügt.

        Hoffe es passt, habe es jetzt als .txt-Datei angehängt.

        <xml xmlns="https://developers.google.com/blockly/xml">
          <variables>
            <variable id="5k}(y]MVDRUNbOxECkJt">summe</variable>
          </variables>
          <block type="schedule" id="**{}]7ei59`(N*|ou37v" x="-212" y="-1362">
            <field name="SCHEDULE">*/2 * * * * *</field>
            <statement name="STATEMENT">
              <block type="variables_set" id="04CEwCi/(d1*/(^%z-|X">
                <field name="VAR" id="5k}(y]MVDRUNbOxECkJt">summe</field>
                <value name="VALUE">
                  <block type="math_arithmetic" id="O)XOn2w+2MEYKh+_i^T6" inline="false">
                    <field name="OP">ADD</field>
                    <value name="A">
                      <shadow type="math_number" id="Vv3iW}5G,a%,hF?iO4dq">
                        <field name="NUM">1</field>
                      </shadow>
                      <block type="get_value" id="1MV.[J[?Vxe;s2g@VT9`">
                        <field name="ATTR">val</field>
                        <field name="OID">0_userdata.0.AMIS.170</field>
                      </block>
                    </value>
                    <value name="B">
                      <shadow type="math_number" id="aNx(u#^_(su!4Pyla9C!">
                        <field name="NUM">1</field>
                      </shadow>
                      <block type="get_value" id="0W[V_Lxj$oW6%y|FyPon">
                        <field name="ATTR">val</field>
                        <field name="OID">0_userdata.0.AMIS.270</field>
                      </block>
                    </value>
                  </block>
                </value>
                <next>
                  <block type="update" id=",]R8%D@+}|rm/}OUVPer">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                    <field name="OID">0_userdata.0.AMIS.SUMME_170_270</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE">
                      <block type="variables_get" id="QWFsuL1-Xs)gB#NnSAC?">
                        <field name="VAR" id="5k}(y]MVDRUNbOxECkJt">summe</field>
                      </block>
                    </value>
                    <next>
                      <block type="comment" id="4DYxTs/C!iUnSa6-`k/_">
                        <field name="COMMENT">Positiver Saldo = BEZUG:  1.7.0 + (-)2.7.0 &gt;0</field>
                        <next>
                          <block type="controls_if" id="8zbXYVm0}s=QnE=v:77[">
                            <value name="IF0">
                              <block type="logic_compare" id="D*Fx%^xShdM9Pu;L@Ahl">
                                <field name="OP">GT</field>
                                <value name="A">
                                  <block type="variables_get" id="2u[OL@uB6dK%HS#@]1*j">
                                    <field name="VAR" id="5k}(y]MVDRUNbOxECkJt">summe</field>
                                  </block>
                                </value>
                                <value name="B">
                                  <block type="math_number" id="0o._sWu/g~JgC2Y:2!R)">
                                    <field name="NUM">0</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <statement name="DO0">
                              <block type="update" id="_e.hWhkcBFf:XJC+_7Tx">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                <field name="OID">0_userdata.0.AMIS.SUMME_170_270_+</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                  <block type="variables_get" id="kUdx$9hAck0M7pw`JM.A">
                                    <field name="VAR" id="5k}(y]MVDRUNbOxECkJt">summe</field>
                                  </block>
                                </value>
                                <next>
                                  <block type="update" id="21a.`nyEyg+|qz`#Zq^%">
                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                    <field name="OID">0_userdata.0.AMIS.SUMME_170_270_-</field>
                                    <field name="WITH_DELAY">FALSE</field>
                                    <value name="VALUE">
                                      <block type="math_number" id="uj$;dI3bc6[~|;qY!UaM">
                                        <field name="NUM">0</field>
                                      </block>
                                    </value>
                                  </block>
                                </next>
                              </block>
                            </statement>
                            <next>
                              <block type="comment" id="LmYu;egZ=y]/lUN}J%Aq">
                                <field name="COMMENT">Negativer Saldo = EINSPEIS.:  1.7.0 + (-)2.7.0 &lt;0</field>
                                <next>
                                  <block type="controls_if" id=";HAm$Sqa4[({BH4i;D`S">
                                    <value name="IF0">
                                      <block type="logic_compare" id="th+%T3f4K%/3tFBWg(xd">
                                        <field name="OP">LT</field>
                                        <value name="A">
                                          <block type="variables_get" id="?;j-RwSm+Vao(r]}uJyk">
                                            <field name="VAR" id="5k}(y]MVDRUNbOxECkJt">summe</field>
                                          </block>
                                        </value>
                                        <value name="B">
                                          <block type="math_number" id="Jsx#h?Ttx!vT5GVP{hcU">
                                            <field name="NUM">0</field>
                                          </block>
                                        </value>
                                      </block>
                                    </value>
                                    <statement name="DO0">
                                      <block type="update" id="3ge#`3!wvdBO$8!h)?%p">
                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                        <field name="OID">0_userdata.0.AMIS.SUMME_170_270_-</field>
                                        <field name="WITH_DELAY">FALSE</field>
                                        <value name="VALUE">
                                          <block type="variables_get" id="I7Wr/ggQT|l$Avqg~JQt">
                                            <field name="VAR" id="5k}(y]MVDRUNbOxECkJt">summe</field>
                                          </block>
                                        </value>
                                        <next>
                                          <block type="update" id="m5xv07hzh^D$h3K|;,5^">
                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                            <field name="OID">0_userdata.0.AMIS.SUMME_170_270_+</field>
                                            <field name="WITH_DELAY">FALSE</field>
                                            <value name="VALUE">
                                              <block type="math_number" id="C7%azoZ@V38KF+6!6sTy">
                                                <field name="NUM">0</field>
                                              </block>
                                            </value>
                                          </block>
                                        </next>
                                      </block>
                                    </statement>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
            </statement>
          </block>
        </xml>
        

        Hätte den Import jetzt auch aus der Text-Datei versucht, bekomme aber eine Fehlermeldung.
        Diese bekomme ich öfters.

        c63b7d7b-f578-422e-bc46-f377f914b17a-image.pngBLOCKLY ERSTELLUNG DP SUMME_170_280_+- 18.9.2021.txtBLOCKLY ERSTELLUNG DP SUMME_170_280_+- 18.9.2021.txt

        dslraser 1 Reply Last reply Reply Quote 0
        • dslraser
          dslraser Forum Testing Most Active @GOETSCHHOFER last edited by dslraser

          @goetschhofer

          ich kann mich da schwer rein denken, hilf mir mal...

          wenn das hier

          Bildschirmfoto 2021-09-18 um 15.43.41.png

          z.B. in dem DP das hier stünde (-100W)

          Bildschirmfoto 2021-09-18 um 15.44.32.png

          dann müßte da was rauskommen ?

          Das hier ?

          Bildschirmfoto 2021-09-18 um 15.49.44.png

          Bildschirmfoto 2021-09-18 um 15.51.24.png

          G 2 Replies Last reply Reply Quote 1
          • G
            GOETSCHHOFER @dslraser last edited by GOETSCHHOFER

            @dslraser

            Im Grunde ist es ganz einfach, wie ein Batteriespeicher funktioniert, ich erkläre dies gerne anhand eines Sparbuches.
            Funktioniert genauso wie ein Sparbuch wo es Ein- und Auszahlungen gibt. Zusätzlich kommt noch dazu, dass man für die Einzahlungen- u. Auszahlungen in das und aus dem Sparbuch Spesen verrechnet bekommt. In der Realität Negativzinsen u. Bankspesen.
            Die Spesen entsprechen den Be- und Entladeverlusten von ca. je 10 %.

            Beispiel Beladung:
            Das Sparbuch=Speicherstand wird immer in kWh, noch besser in Wh (1 kWh=1.000 Wh) gerechnet, aber mit positiven Werten, da der Saldo des Speichers oder Sparbuchs nie ins minus rutschen kann. Entnehmen kann ich nur das, was ich vorher eingelegt (angespart) habe.

            Der DP SUMME_170_270_- = EINSPEISUNG in das NETZ liefert aktuell -400 W.
            b55a11be-0877-4101-b2ad-8f06750e4a9d-image.png
            Diesen Leistungswert (Überschuss aus der PV-Anlage) mit -400 W kann ich nur mit 90 % in den Speicher einlegen, da ich Beladeverluste in Höhe von 10 % habe, ergibt -360 W. Bruttoladeleistung in W x 0,9 = Nettoladeleistung in W.
            Weiters muss ich diese Netto-Ladeleistung noch vorher in Wh umrechnen, da dieser Leistungswert nur für 2 Sekunden zur Verfügung steht. D. h. 360 W Netto-Lade-Leistung / 3600 Sek. / 2 = entspricht 0,05 Wh Einlage/Beladung in den Speicher für die 2 Sekunden. Ein realer Speicher funktioniert genauso.
            In den nächsten 2 Sekunden liefert der DP SUMME_170_270_- z. B. 1000 W Überschuss, da z. B. die Solarstrahlung so stark ansteigt. Berechnung erfolgt gleich wie vorhin mit -400 W. -1000 W x 0,9 = (-900 W x -1) -20 = 890 Netto-Ladeleistung und Umrechnung in Wh, 890/3600/2=0,1236 Wh.

            Ich multipliziere den Minus-Wert deshalb mit -1, da ich anschließend die positive Zahl leicht zum bestehenden Speicher-Saldo (+) am Speicher (Sparbuch) hinzuaddieren kann.
            Der Wert mit -20 (W) soll Kleinladeleistungen bei der Vergleichsfunktion von vornherein unterbinden, gilt auch für die Entladung.

            Beispiel Entladung: Funktioniert vollkommen gleich, nur mit anderen Vorzeichen.
            Der DP SUMME_170_270_+ = BEZUG aus dem NETZ liefert z. B. aktuell + 400 W.
            Hier würde ich nicht aus dem Netz beziehen, sondern auf das angesparte Speicherguthaben (Sparbuch) zugreifen, falls vorhanden und hier auch mit Vorzeichendrehung den postiven Wert mit -1 multiplizieren, damit ich diesen Netto-Entnahme-Entladewert als Minuswert zum Speichersaldo hinzuaddieren kann. 5000 Wh Speichersaldo - 10 Wh Entladung = 4.990 Wh Speichersaldo.

            Folgende Datenpunkte benötige ich auch, damit ich den kumulierten Saldo Be- und Entladung in den Speicher visualisieren kann. Beispiel: Summe Beladungen 1.1.-31.1. = 80.000 Wh, Summe Entladungen: 75.000 Wh.
            07ef31de-9f94-4e78-98c3-a855e0cc2863-image.png

            Hoffe, dass ich dich mit meinen Erläuterungen nicht zu viel verwirrt habe.

            Danke

            1 Reply Last reply Reply Quote 0
            • G
              GOETSCHHOFER @dslraser last edited by GOETSCHHOFER

              @dslraser

              Sorry, habe alles wunderbar erläutert, aber anschließend wurde ich vom Internet getrennt.
              Hat doch funktioniert.

              G 1 Reply Last reply Reply Quote 0
              • G
                GOETSCHHOFER @GOETSCHHOFER last edited by GOETSCHHOFER

                @dslraser

                Mit diesem Blockly schreibt er mit zumindest mal die Ladeleistung BELADEN_W in den DP.
                Aber das war es auch schon.
                Nur stimmt das Ergebnis mit (Ladeleistung * -1) -20 W nicht ?
                Hier habe ich ein Syntaxproblem.

                Ich kann die Berechnung auch auf 5 Sek. ändern.

                284985a6-3973-4a50-8612-45f1cc439015-image.png

                5268918c-ceb4-45a8-bacb-1920b4ec0233-image.png

                a2dce661-2731-4544-998c-10bd85a29078-image.png

                dslraser 1 Reply Last reply Reply Quote 0
                • dslraser
                  dslraser Forum Testing Most Active @GOETSCHHOFER last edited by

                  @goetschhofer
                  Und jetzt beantwortest Du bitte noch meine Frage von hier

                  https://forum.iobroker.net/post/678474

                  G 1 Reply Last reply Reply Quote 1
                  • G
                    GOETSCHHOFER @dslraser last edited by

                    @dslraser said in Batteriespeichersimulation mit AMIS-Daten in Blockly:

                    @goetschhofer
                    Und jetzt beantwortest Du bitte noch meine Frage von hier

                    https://forum.iobroker.net/post/678474

                    Sorry, das habe ich überlesen.

                    dann müßte da was rauskommen ?

                    Das hier ? Ja, korrekt 80 W.
                    Beladung:
                    (-100 W x -1)-20 W = 80 W.

                    f7a17480-c160-4c5a-9fa2-3dbd47e56209-image.png

                    dslraser 1 Reply Last reply Reply Quote 0
                    • dslraser
                      dslraser Forum Testing Most Active @GOETSCHHOFER last edited by dslraser

                      @goetschhofer

                      Ich habe mal das hier "versucht" (aber ich habe ja keine Daten die dafür kommen) Der andere Teil, der noch fehlt, wäre ja der gleiche Weg.

                      Bildschirmfoto 2021-09-18 um 21.10.50.png

                      Du kannst das Blockly ja mal importieren und ausführen. Zum testen kannst Du die DP ja auf javascript.0 probieren (ist im Blockly schon eingestellt)

                      Bildschirmfoto 2021-09-18 um 21.15.04.png


                      Blockly_Export 2.zip

                      G 2 Replies Last reply Reply Quote 1
                      • G
                        GOETSCHHOFER @dslraser last edited by

                        @dslraser

                        Bumm !!

                        Da habe ich ganz schön zu knabbern.

                        Vielen Dank, werde ich ausprobieren.

                        1 Reply Last reply Reply Quote 0
                        • G
                          GOETSCHHOFER @dslraser last edited by

                          @dslraser

                          Ich glaube du hast die falsche Datei angehängt.
                          Im Inhalt geht es um Pumpen.

                          6ff45884-fb06-4034-b76b-e85a64b36d62-image.png

                          dslraser 1 Reply Last reply Reply Quote 0
                          • dslraser
                            dslraser Forum Testing Most Active @GOETSCHHOFER last edited by

                            @goetschhofer sagte in Batteriespeichersimulation mit AMIS-Daten in Blockly:

                            Ich glaube du hast die falsche Datei angehängt.
                            Im Inhalt geht es um Pumpen.

                            sorry, ja war die falsche Datei. Ich habe es eben ausgetauscht.

                            G 1 Reply Last reply Reply Quote 1
                            • G
                              GOETSCHHOFER @dslraser last edited by

                              @dslraser

                              Kein Problem, danke.

                              Wie schafft man es denn, dass man so eine verschachtelte Funktion bastelt ?
                              dc14df20-3e98-4b5c-8d19-c9d4bbd48d9b-image.png

                              dslraser 1 Reply Last reply Reply Quote 0
                              • dslraser
                                dslraser Forum Testing Most Active @GOETSCHHOFER last edited by

                                @goetschhofer sagte in Batteriespeichersimulation mit AMIS-Daten in Blockly:

                                Wie schafft man es denn, dass man so eine verschachtelte Funktion bastelt ?

                                Quasi Deine "Excel Formel" von "innen nach aussen", immer einen Mathe Baustein mit + oder - oder × oder ÷ usw....dazu.
                                Kannst ja mal die Bausteine auseinander nehmen, ich weiß nicht wie ich es besser beschreiben kann.

                                Aber, ist die Berechnung so von Dir gemeint, also passt das so ?

                                G 2 Replies Last reply Reply Quote 1
                                • G
                                  GOETSCHHOFER @dslraser last edited by

                                  @dslraser said in Batteriespeichersimulation mit AMIS-Daten in Blockly:

                                  @goetschhofer sagte in Batteriespeichersimulation mit AMIS-Daten in Blockly:

                                  Wie schafft man es denn, dass man so eine verschachtelte Funktion bastelt ?

                                  Quasi Deine "Excel Formel" von "innen nach aussen", immer einen Mathe Baustein mit + oder - oder × oder ÷ usw....dazu.
                                  Kannst ja mal die Bausteine auseinander nehmen, ich weiß nicht wie ich es besser beschreiben kann.

                                  Aber, ist die Berechnung so von Dir gemeint, also passt das so ?

                                  O.k. dann glaube ich, dass ich klar komme, den Entscheidende Hinweis ist von von "innen nach aussen".
                                  Ja, die Berechnung passt meines Erachtens auf jeden Fall.

                                  G 1 Reply Last reply Reply Quote 0
                                  • G
                                    GOETSCHHOFER @dslraser last edited by

                                    @dslraser

                                    Das mit dem Zerlegen der Bausteine, war ein guter Tipp, so verstehe ich die Logik besser. 👍

                                    Danke:

                                    1 Reply Last reply Reply Quote 1
                                    • G
                                      GOETSCHHOFER @GOETSCHHOFER last edited by

                                      @dslraser

                                      Wie kriege ich denn hier den Datenpunkt hinein ?
                                      4713d3e4-18af-4357-8be8-26d8600eea17-image.png

                                      Bei mir schaut dies so aus, wenn ich auf Objekt-ID klicke komme ich nicht zum Datenpunkt ?
                                      de16d39f-27c9-42cc-8bf7-529778e41e54-image.png

                                      dslraser 1 Reply Last reply Reply Quote 0
                                      • dslraser
                                        dslraser Forum Testing Most Active @GOETSCHHOFER last edited by dslraser

                                        @goetschhofer sagte in Batteriespeichersimulation mit AMIS-Daten in Blockly:

                                        Wie kriege ich denn hier den Datenpunkt hinein ?

                                        In meinem Blockly ist das schon der Datenpunkt. Die Datenpunkte werden hier (in meinem Blockly) "variabel" ermittelt und zusammengebaut.

                                        Daraus
                                        Bildschirmfoto 2021-09-18 um 22.29.29.png
                                        und daraus
                                        Bildschirmfoto 2021-09-18 um 22.29.39.png
                                        und daraus
                                        Bildschirmfoto 2021-09-18 um 22.30.23.png
                                        und aus dem hier entsteht der Bezug zum Datenpunkt.
                                        Bildschirmfoto 2021-09-18 um 22.27.40.png

                                        das ist dann die ID in den Datenpunkten

                                        javascript.0.BATTERIE_SPEICHER.BELADEN_W
                                        

                                        Das ist dann dieser Datenpunkt
                                        Bildschirmfoto 2021-09-18 um 22.34.35.png

                                        Bei mir schaut dies so aus, wenn ich auf Objekt-ID klicke komme ich nicht zum Datenpunkt ?

                                        Lösche den roten Objekt ID Baustein und dann klicke darunter rein.
                                        (dann verwendest Du mein Blockly nicht, sondern ein anderes ? Deshalb fragte ich welches Blockly Du verwendest)

                                        G 1 Reply Last reply Reply Quote 1
                                        • G
                                          GOETSCHHOFER @dslraser last edited by

                                          @dslraser

                                          Ja, davor habe ich mächtig Angst, dass ich mir meine AMIS-Datenpunkte demoliere, denn diese funktionieren bis jetzt einwandfrei.

                                          Ich werde deine Berechnung bis morgen in mein Blockly einbauen, nachbasteln und würde mich morgen wieder melden.

                                          Danke einstweilen.

                                          1 Reply Last reply Reply Quote 0
                                          • G
                                            GOETSCHHOFER last edited by GOETSCHHOFER

                                            @dslraser

                                            Du hast mir so eine tolle Vorlage geliefert, dass ich dies relativ einfach, aber doch mit einer grossen Herausforderung in mein Blockly einbauen konnte. 😁

                                            Nochmals vielen Dank für deine Hilfestellung.

                                            Mit dem Tipp die Mathematik-Formel von innen nach außen zu bauen, hast du mir ein ein großes Tor an Möglichkeiten aufgemacht. 👍 👍 👍
                                            Ich komme aus der Excel-Welt und da sehe ich hier sehr viele Möglichkeiten.
                                            Macht echt Spaß !

                                            Um die Richtigkeit der Werte auch rechnerisch nachvollziehen zu können, habe ich den Be- und Entladefaktor mal auf 1 belassen u. den Abzug für Minimalwerte von 20 auf null, Bei Be- und Entladung, gestellt.

                                            Wenn ich hier im Blockly noch etwas einfacher, effizienter, in der Programmierung machen könnte, bitte ich dich dies mir mitzuteilen. Ich habe halt versucht als Anfänger zu einer Lösung zu kommen.

                                            Die BAT_SIMU_1 wird ja noch um 2 Facetten komplexer bei der Abfrage der Be- und Entladeleistung und des Speicherstandes.

                                            2 Punkte muss ich in der Abfrage noch einbauen.

                                            1. Ein Batteriespeicher hat eine maximale Be- und Entladeleistung z. B. von 3.000 W, d. h. wäre der Überschuss 3.200 W, kann nur mit 3.000 W beladen werden.
                                            2. Wie bereits erwähnt kann man aus einem Batteriespeicher nur etwas entnehmen, wenn der Speicherstand >0 Wh ist und weiters kann man nur beladen, wenn die maximale Speicherkapazität z. B. 5 kWh=5.000 Wh nicht überschritten ist.

                                            BAT_SIMU_1-19.9.2021.gif

                                            BLOCKLY_BAT_SMU_19.9.2021-11h50.txt


                                            8b53dd32-27f1-49c8-836d-26c19e948e09-image.png


                                            f2958743-ae49-4b54-880f-2aeb553c3033-image.png

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            907
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            2
                                            120
                                            6861
                                            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