Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Rechenfehler - Denkfehler bei "Klammerfunktionen"?

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    12
    1
    134

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.3k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

Rechenfehler - Denkfehler bei "Klammerfunktionen"?

Scheduled Pinned Locked Moved Blockly
9 Posts 6 Posters 2.1k Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • HomoranH Do not disturb
    HomoranH Do not disturb
    Homoran
    Global Moderator Administrators
    wrote on last edited by
    #1

    Ich habe das bereits auf der CCU geregelt, dass ich mir einen fließenden "Mittelwert für Arme" bilde indem ich einen Wert durch eine Anzahl Teile, dann mit einem weniger Multipliziere und anschließend den aktuellen Wert dazu addiere und das gesamte wieder durch die Anzahl Teile.
    Also (sicherheitshalber zu viele Klammern):

    neuer Mittelwert = ((((alter Mittelwert : 4)*3)+ neuer Wert)/4)

    in Blockly umgesetzt ist es so:
    Mittel-Hitze.png

    Die Werte passten nicht, also die Debug eingebaut.

    Das kommt dabei raus:

    2019-03-04 11:41:57.769 - info: javascript.0 script.js.Rollladen.Hilfsprogramme: Inhalt von mittlerer Hitze hinten: 0.9256038654802249
    2019-03-04 11:41:57.769 - info: javascript.0 script.js.Rollladen.Hilfsprogramme: aktueller Hitzestatus: 2.3
    2019-03-04 11:41:57.769 - info: javascript.0 script.js.Rollladen.Hilfsprogramme: Variable Mittelhitze: 0.7485507247775421
    2019-03-04 11:41:59.771 - info: javascript.0 script.js.Rollladen.Hilfsprogramme: neuer Inhalt von mittlerer Hitze hinten: 0.7485507247775421
    

    Wo ist mein Denkfehler?

    kein Support per PN! - Fragen im Forum stellen -

    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

    ioBroker freut sich auch über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

    L 1 Reply Last reply
    0
    • HomoranH Homoran

      Ich habe das bereits auf der CCU geregelt, dass ich mir einen fließenden "Mittelwert für Arme" bilde indem ich einen Wert durch eine Anzahl Teile, dann mit einem weniger Multipliziere und anschließend den aktuellen Wert dazu addiere und das gesamte wieder durch die Anzahl Teile.
      Also (sicherheitshalber zu viele Klammern):

      neuer Mittelwert = ((((alter Mittelwert : 4)*3)+ neuer Wert)/4)

      in Blockly umgesetzt ist es so:
      Mittel-Hitze.png

      Die Werte passten nicht, also die Debug eingebaut.

      Das kommt dabei raus:

      2019-03-04 11:41:57.769 - info: javascript.0 script.js.Rollladen.Hilfsprogramme: Inhalt von mittlerer Hitze hinten: 0.9256038654802249
      2019-03-04 11:41:57.769 - info: javascript.0 script.js.Rollladen.Hilfsprogramme: aktueller Hitzestatus: 2.3
      2019-03-04 11:41:57.769 - info: javascript.0 script.js.Rollladen.Hilfsprogramme: Variable Mittelhitze: 0.7485507247775421
      2019-03-04 11:41:59.771 - info: javascript.0 script.js.Rollladen.Hilfsprogramme: neuer Inhalt von mittlerer Hitze hinten: 0.7485507247775421
      

      Wo ist mein Denkfehler?

      L Offline
      L Offline
      lonsimbt
      wrote on last edited by
      #2

      @Homoran
      Da wird m. E. einmal zu oft durch vier geteilt.

      Das bisherige Mittel sollte mit dem Gewicht drei einfließen, der neue Wert mit Gewicht eins und anschließend wird durch vier geteilt. Oder: das bisherige Mittel mit Gewicht 3/4 und der neue Wert mit Gewicht 1/4. Dann sollte es passen.

      Gruß Marco

      iobroker im Container (debian Bullseye) unter proxmox 7.1
      debmatic in VM (debian Buster) unter proxmox 7.1 mit HB-RF-USB und RPI-RF-MOD
      40 HomeMatic Geräte, Phillips Hue, Ikea Tradfri, Logitech Harmony Hub, Botvac Connected, Robonect

      1 Reply Last reply
      1
      • I Offline
        I Offline
        I-Punkt
        wrote on last edited by
        #3

        n = Anzahl der gewünschten Stützstellen
        Neuer MW = (alter MW * (n-1) + neuer Wert ) / n

        Dein alter Mittelwert "ersetzt" quasi 3 Einzelwerte (deshalb *3) dann den vierten Wert noch dazu und am Ende wieder durch 4 teilen um auf den neuen Mittelwert zu kommen.

        Ist nicht ganz ein gleitender Mittelwert, kommt dem aber für die meisten Anwendungen hinreichend nahe.
        Unbenannt.PNG

        1 Reply Last reply
        1
        • M Offline
          M Offline
          mehrwiedu
          wrote on last edited by mehrwiedu
          #4

          Es kommt raus, was bei der Berechnung oben rauskommen muss.
          Du teilst oben im Blockly nicht den neuen Wert 2.3 durch 4, sondern addierst ihn zuerst zum errechneten neuen Drittel.

          In Zahlen ist Deine Rechnung so:

          0,92560387 / 4 = 0,23140097
          0,23140097 * 3 = 0,6942029
          0,6942029 + 2,3 = 2,9942029
          2,9942029 / 4 = 0,74855072

          Da liegt der Fehler im Blockly
          Du musst zuerst 2,3 / 4 teilen = 0,575 und dies dann zum errechneten Drittel addieren. 0,6942029 + 0,575 = 1,2692029

          Also anstelle:
          ((((alter Mittelwert : 4) * 3) + neuer Wert) :4)
          ((alter Mittelwert : 4) * 3) + (neuer Wert :4)

          Was ja exakt das gleiche ist wie die Rechnung von @I-Punkt, wenn man die 4 oder bei ihm n ausklammert. So kommt man mit immer weniger Klammern und Berechnungen aus. In Zahlen:

          (alter Mittelwert * (4-1) + neuer Wert) / 4

          oder wenn n bei Dir konstant 4 ist, läuft das auch so.

          (alter Mittelwert * 3 + neuer Wert) / 4

          Nur wie das in ein Blockly jetzt gesetzt wird?...keine Ahnung.

          HomoranH 1 Reply Last reply
          1
          • M mehrwiedu

            Es kommt raus, was bei der Berechnung oben rauskommen muss.
            Du teilst oben im Blockly nicht den neuen Wert 2.3 durch 4, sondern addierst ihn zuerst zum errechneten neuen Drittel.

            In Zahlen ist Deine Rechnung so:

            0,92560387 / 4 = 0,23140097
            0,23140097 * 3 = 0,6942029
            0,6942029 + 2,3 = 2,9942029
            2,9942029 / 4 = 0,74855072

            Da liegt der Fehler im Blockly
            Du musst zuerst 2,3 / 4 teilen = 0,575 und dies dann zum errechneten Drittel addieren. 0,6942029 + 0,575 = 1,2692029

            Also anstelle:
            ((((alter Mittelwert : 4) * 3) + neuer Wert) :4)
            ((alter Mittelwert : 4) * 3) + (neuer Wert :4)

            Was ja exakt das gleiche ist wie die Rechnung von @I-Punkt, wenn man die 4 oder bei ihm n ausklammert. So kommt man mit immer weniger Klammern und Berechnungen aus. In Zahlen:

            (alter Mittelwert * (4-1) + neuer Wert) / 4

            oder wenn n bei Dir konstant 4 ist, läuft das auch so.

            (alter Mittelwert * 3 + neuer Wert) / 4

            Nur wie das in ein Blockly jetzt gesetzt wird?...keine Ahnung.

            HomoranH Do not disturb
            HomoranH Do not disturb
            Homoran
            Global Moderator Administrators
            wrote on last edited by Homoran
            #5

            @mehrwiedu sagte in Rechenfehler - Denkfehler bei "Klammerfunktionen"?:

            (alter Mittelwert * 3 + neuer Wert) / 4

            So sollte es sein! - Danke.
            das passt zu

            @lonsimbt sagte in Rechenfehler - Denkfehler bei "Klammerfunktionen"?:

            Da wird m. E. einmal zu oft durch vier geteilt.

            und ja:

            @I-Punkt sagte in Rechenfehler - Denkfehler bei "Klammerfunktionen"?:

            Ist nicht ganz ein gleitender Mittelwert, kommt dem aber für die meisten Anwendungen hinreichend nahe.

            das ist mir bewusst.
            Extrem wird diese Umgenauigkeit bei großen Sprüngen

            4-4-4-4-0-0-0-0

            sollte als echter Mittelwert der letzten 4 Werte 0 ergeben, nach disere Methode ist er deutlich höher

            Danke erstmal!
            sieht jetzt so aus:
            Mittel-Hitze_neu.png

            kein Support per PN! - Fragen im Forum stellen -

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            ioBroker freut sich auch über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            1 Reply Last reply
            1
            • paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by
              #6

              Für einen gleitenden Mittelwert sollte auf Aktualisierung getriggert werden. Bei nur 4 Werten ist eine echte gleitende Mittelwertbildung auch nicht so schwierig (nicht getestet):
              Blockly_gleitend_Mittel4.JPG

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              HomoranH 1 Reply Last reply
              1
              • rantanplanR Online
                rantanplanR Online
                rantanplan
                wrote on last edited by
                #7

                Komplexe Berechnungen in einen Baustein packen ist in Blockly fast nicht möglich.
                Mit der Klammersetzung hapert es da irgendwo.
                Am Besten sieht man das, wenn man kurz auf die JavaScript Anzeige umschaltet.
                Um mir weitere graue Haare zu ersparen, habe ich mir es angewöhnt solche Dinge "aufzudröseln".
                Ich packe mir die Berechnungen immer in eine Funktion. Da bleibt das Blockly übersichtlicher.

                Rechnen_001.png

                Export:

                <xml xmlns="http://www.w3.org/1999/xhtml">
                  <variables>
                    <variable type="" id=";n:cqW_i{Wk?|i^b;r?q">akt_Hitzestatus_hinten</variable>
                    <variable type="" id="pHw}S)9MWPUzWt|+t*Y0">akt_mittlere_hitze_hinten</variable>
                    <variable type="" id="-xwNt2JMiJNB9J5-`qz:">Ergebnis</variable>
                  </variables>
                  <block type="debug" id="im^Q,7`S8l.0.(#]I(lM" x="88" y="38">
                    <field name="Severity">log</field>
                    <value name="TEXT">
                      <shadow type="text" id=";I0^nqg~DTVQ_$x9;~zr">
                        <field name="TEXT">test</field>
                      </shadow>
                      <block type="text_join" id="qRg.ODbKt)#`+~SKQ@Zy">
                        <mutation items="2"></mutation>
                        <value name="ADD0">
                          <block type="text" id="$*PvA17(=%pD)0F@@bm~">
                            <field name="TEXT">ERGEBNIS: </field>
                          </block>
                        </value>
                        <value name="ADD1">
                          <block type="procedures_callreturn" id="th-xDe6~}Am.hm_ld:@g">
                            <mutation name="Berechnung">
                              <arg name="akt_Hitzestatus_hinten"></arg>
                              <arg name="akt_mittlere_hitze_hinten"></arg>
                            </mutation>
                            <value name="ARG0">
                              <block type="math_number" id="C=Sh?|pb:Ifr|Z}UYflq">
                                <field name="NUM">0.923</field>
                              </block>
                            </value>
                            <value name="ARG1">
                              <block type="math_number" id="7LTb0YCoM=A3SG530Mri">
                                <field name="NUM">2.3</field>
                              </block>
                            </value>
                          </block>
                        </value>
                      </block>
                    </value>
                  </block>
                  <block type="procedures_defreturn" id="{!kE%gWB@.4D,:uA~A|R" x="263" y="188">
                    <mutation>
                      <arg name="akt_Hitzestatus_hinten" varid=";n:cqW_i{Wk?|i^b;r?q"></arg>
                      <arg name="akt_mittlere_hitze_hinten" varid="pHw}S)9MWPUzWt|+t*Y0"></arg>
                    </mutation>
                    <field name="NAME">Berechnung</field>
                    <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                    <statement name="STACK">
                      <block type="variables_set" id="U8zMu6^VE2:Hj~_!jp/{">
                        <field name="VAR" id="-xwNt2JMiJNB9J5-`qz:" variabletype="">Ergebnis</field>
                        <value name="VALUE">
                          <block type="math_arithmetic" id="KsD=}R)(|t7J:k|]U{jb">
                            <field name="OP">DIVIDE</field>
                            <value name="A">
                              <shadow type="math_number" id="dI7QFQzZJ6mbea!7ih=B">
                                <field name="NUM">1</field>
                              </shadow>
                              <block type="variables_get" id="vIrP^63=%(cf(*]WkVzt">
                                <field name="VAR" id=";n:cqW_i{Wk?|i^b;r?q" variabletype="">akt_Hitzestatus_hinten</field>
                              </block>
                            </value>
                            <value name="B">
                              <shadow type="math_number" id="j}T2)LZ[h!^$%7,IHGzj">
                                <field name="NUM">4</field>
                              </shadow>
                            </value>
                          </block>
                        </value>
                        <next>
                          <block type="variables_set" id=":(s+3}_$xmBwOmnTm=z@">
                            <field name="VAR" id="-xwNt2JMiJNB9J5-`qz:" variabletype="">Ergebnis</field>
                            <value name="VALUE">
                              <block type="math_arithmetic" id="S#uK:v/gGiem[{FsoU}q">
                                <field name="OP">MULTIPLY</field>
                                <value name="A">
                                  <shadow type="math_number" id="dI7QFQzZJ6mbea!7ih=B">
                                    <field name="NUM">1</field>
                                  </shadow>
                                  <block type="variables_get" id="zizO+?_W^}rFW:]6=oYH">
                                    <field name="VAR" id="-xwNt2JMiJNB9J5-`qz:" variabletype="">Ergebnis</field>
                                  </block>
                                </value>
                                <value name="B">
                                  <shadow type="math_number" id=")%H!WlNdC_4mYQxmkZ)L">
                                    <field name="NUM">3</field>
                                  </shadow>
                                </value>
                              </block>
                            </value>
                            <next>
                              <block type="variables_set" id="JvfqQFeOcmviH#PjJP~W">
                                <field name="VAR" id="-xwNt2JMiJNB9J5-`qz:" variabletype="">Ergebnis</field>
                                <value name="VALUE">
                                  <block type="math_arithmetic" id="HQJm-8~hoBqt0W3RsK]y">
                                    <field name="OP">ADD</field>
                                    <value name="A">
                                      <shadow type="math_number" id="C0zQ*[UNi5^5`,/jy~x]">
                                        <field name="NUM">1</field>
                                      </shadow>
                                      <block type="variables_get" id="hcqlTglgFbtl}q@GrE^L">
                                        <field name="VAR" id="-xwNt2JMiJNB9J5-`qz:" variabletype="">Ergebnis</field>
                                      </block>
                                    </value>
                                    <value name="B">
                                      <shadow type="math_number" id="8E2x_A:r=Ro)i+cW*uI{">
                                        <field name="NUM">0</field>
                                      </shadow>
                                      <block type="variables_get" id="!9bzw:H6o`UCV]-f_Q(R">
                                        <field name="VAR" id="pHw}S)9MWPUzWt|+t*Y0" variabletype="">akt_mittlere_hitze_hinten</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                                <next>
                                  <block type="variables_set" id="Z_i*_BG5FlotNXTWry6+">
                                    <field name="VAR" id="-xwNt2JMiJNB9J5-`qz:" variabletype="">Ergebnis</field>
                                    <value name="VALUE">
                                      <block type="math_arithmetic" id="WG5lc2%J}s/K^,p!cOM[">
                                        <field name="OP">DIVIDE</field>
                                        <value name="A">
                                          <shadow type="math_number" id="C0zQ*[UNi5^5`,/jy~x]">
                                            <field name="NUM">1</field>
                                          </shadow>
                                          <block type="variables_get" id="$5,magvf.znfy9F3YY!C">
                                            <field name="VAR" id="-xwNt2JMiJNB9J5-`qz:" variabletype="">Ergebnis</field>
                                          </block>
                                        </value>
                                        <value name="B">
                                          <shadow type="math_number" id="]V.4I@|8rn?m5@o%-XnK">
                                            <field name="NUM">4</field>
                                          </shadow>
                                        </value>
                                      </block>
                                    </value>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </statement>
                    <value name="RETURN">
                      <block type="variables_get" id="p5V*jU]q%:*/7+(z[B:I">
                        <field name="VAR" id="-xwNt2JMiJNB9J5-`qz:" variabletype="">Ergebnis</field>
                      </block>
                    </value>
                  </block>
                </xml>
                

                Grüße

                Rantanplan

                CCU3 / MS Server 2019(VM) / Scripten mit Blockly

                1 Reply Last reply
                2
                • paul53P paul53

                  Für einen gleitenden Mittelwert sollte auf Aktualisierung getriggert werden. Bei nur 4 Werten ist eine echte gleitende Mittelwertbildung auch nicht so schwierig (nicht getestet):
                  Blockly_gleitend_Mittel4.JPG

                  HomoranH Do not disturb
                  HomoranH Do not disturb
                  Homoran
                  Global Moderator Administrators
                  wrote on last edited by
                  #8

                  @paul53
                  Danke Paul.

                  mit arrays beschäftige ich mich gerade erst.

                  Auf der CCU hatte ich es noch nicht. Und erst einmal die Formel von dort (falsch) übernommen :(

                  kein Support per PN! - Fragen im Forum stellen -

                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                  ioBroker freut sich auch über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                  HomoranH 1 Reply Last reply
                  0
                  • HomoranH Homoran

                    @paul53
                    Danke Paul.

                    mit arrays beschäftige ich mich gerade erst.

                    Auf der CCU hatte ich es noch nicht. Und erst einmal die Formel von dort (falsch) übernommen :(

                    HomoranH Do not disturb
                    HomoranH Do not disturb
                    Homoran
                    Global Moderator Administrators
                    wrote on last edited by
                    #9

                    Ihr zwei schafft mich noch ;-)

                    kein Support per PN! - Fragen im Forum stellen -

                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                    ioBroker freut sich auch über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

                    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                    1 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    549

                    Online

                    32.7k

                    Users

                    82.4k

                    Topics

                    1.3m

                    Posts
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Home
                    • Recent
                    • Tags
                    • Unread 0
                    • Categories
                    • Unreplied
                    • Popular
                    • GitHub
                    • Docu
                    • Hilfe