Skip to content
  • 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
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Gleitender Durchschnitt mit Blockly

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    224

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

Gleitender Durchschnitt mit Blockly

Gleitender Durchschnitt mit Blockly

Scheduled Pinned Locked Moved Blockly
blockly
67 Posts 15 Posters 13.8k Views 15 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.
  • J jaenes

    @paul53 oder es ist an der Zeit das mir jemand JS näherbringt....... haha.

    Zum Verständnis:

    Ich brauche eine gewisse Anzahl an variablen im Vorfeld, die lege ich mir an sagen wir 10. Mein Skript schreibt dann alle 10 Sekunden in eine neue Variable meinen Wert. wenn diese Liste voll ist, also nach 100 Sekunden gehts weiter.... oder ?

    paul53P Offline
    paul53P Offline
    paul53
    wrote on last edited by paul53
    #5

    @jaenes sagte:

    wenn diese Liste voll ist, also nach 100 Sekunden gehts weiter.... oder ?

    Nein, bei einem gleitenden Durchschnitt wird der älteste Wert aus der Liste entfernt und der aktuelle Wert der Liste hinzugefügt (Schieberegister). Anschließend erfolgt eine Mittelwertbildung über alle Werte der Liste.

    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

    1 Reply Last reply
    0
    • J jaenes

      @paul53 oder es ist an der Zeit das mir jemand JS näherbringt....... haha.

      Zum Verständnis:

      Ich brauche eine gewisse Anzahl an variablen im Vorfeld, die lege ich mir an sagen wir 10. Mein Skript schreibt dann alle 10 Sekunden in eine neue Variable meinen Wert. wenn diese Liste voll ist, also nach 100 Sekunden gehts weiter.... oder ?

      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by paul53
      #6

      @jaenes Schieberegister kann man mit Blockly leider nicht realisieren, aber so sollte die gleitende Mittelwertbildung über 10 Werte funktionieren:

      Blockly_movingavr.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

      1 Reply Last reply
      1
      • K Offline
        K Offline
        kaybau
        wrote on last edited by
        #7

        Hallo,
        ich habe Dein Beispiel mal umgesetzt, um verschiedensten Messwerte zu glätten, z.b. die Windmessung
        6f9c4c8d-0c7c-417f-96ec-e45687a9f469-grafik.png

        Ich bin der Meinung die Reihenfolge der Befüllung der Liste passt nicht.
        Jedenfalls stimmen in meinem Beispiel die Werte nur in ca. 60% der Fälle (nach Gefühl), dann hab ich Ausreißer nach oben, die niemals dem (gleitenden) Durchschnitt entsprechen können.

        Hat jemand eine Idee?

        <xml xmlns="http://www.w3.org/1999/xhtml">
          <variables>
            <variable type="" id=",w^.=D}$CQ[V7pzCL72J">Liste</variable>
            <variable type="" id="|nsSA#%f}nMpDF9f[%s~">Index</variable>
            <variable type="" id="y/U;,Qb.Nr8Oo+/`~hP~">Summe</variable>
            <variable type="" id="hGz@,GqUkjk#,:XaV}MP">i</variable>
          </variables>
          <block type="variables_set" id="RTUA!,2m0j#}}ko7OBoB" x="-662" y="138">
            <field name="VAR" id=",w^.=D}$CQ[V7pzCL72J" variabletype="">Liste</field>
            <value name="VALUE">
              <block type="lists_repeat" id="(=LzJ5)|$oc[A);}JvJS">
                <value name="NUM">
                  <shadow type="math_number" id="87]Qx,xmkMD!$Q@/1@;)">
                    <field name="NUM">10</field>
                  </shadow>
                </value>
                <value name="ITEM">
                  <block type="get_value" id="3~*kY|^$rA,s(p,qczz[">
                    <field name="ATTR">val</field>
                    <field name="OID">javascript.0.Wetterstation.Wind</field>
                  </block>
                </value>
              </block>
            </value>
            <next>
              <block type="variables_set" id="iW%C^9/JhHumbS#zg3)C">
                <field name="VAR" id="|nsSA#%f}nMpDF9f[%s~" variabletype="">Index</field>
                <value name="VALUE">
                  <block type="math_number" id="AugG5vuP%[LOm2@_M+HJ">
                    <field name="NUM">1</field>
                  </block>
                </value>
                <next>
                  <block type="on_ext" id="vFE,)!c?~Z$=KJQ[l.d`">
                    <mutation items="1"></mutation>
                    <field name="CONDITION">any</field>
                    <field name="ACK_CONDITION"></field>
                    <value name="OID0">
                      <shadow type="field_oid" id="OSi=yG(ihidHOz.CC{,,">
                        <field name="oid">javascript.0.Wetterstation.Wind</field>
                      </shadow>
                    </value>
                    <statement name="STATEMENT">
                      <block type="lists_setIndex" id="Ue,2EJHPrBq4j%LV^^P.">
                        <mutation at="true"></mutation>
                        <field name="MODE">SET</field>
                        <field name="WHERE">FROM_START</field>
                        <value name="LIST">
                          <block type="variables_get" id="9Y5|dAIiYW;jqyDV^.12">
                            <field name="VAR" id=",w^.=D}$CQ[V7pzCL72J" variabletype="">Liste</field>
                          </block>
                        </value>
                        <value name="AT">
                          <block type="variables_get" id="(cD0-P+rOdV7[+VxX:;w">
                            <field name="VAR" id="|nsSA#%f}nMpDF9f[%s~" variabletype="">Index</field>
                          </block>
                        </value>
                        <value name="TO">
                          <block type="get_value" id="X?~@4ti8Sr@d4P;=*/Gg">
                            <field name="ATTR">val</field>
                            <field name="OID">javascript.0.Wetterstation.Wind</field>
                          </block>
                        </value>
                        <next>
                          <block type="math_change" id="iHM7|{2:7es8frET@lbV">
                            <field name="VAR" id="|nsSA#%f}nMpDF9f[%s~" variabletype="">Index</field>
                            <value name="DELTA">
                              <shadow type="math_number" id="Op~gK+*i3yG,NxAnX#E^">
                                <field name="NUM">1</field>
                              </shadow>
                            </value>
                            <next>
                              <block type="controls_if" id="Ev=u_,#:ITq@sH4OiERd">
                                <value name="IF0">
                                  <block type="logic_compare" id="DQ,9UZd*Y1s:1wALu{Gj">
                                    <field name="OP">GT</field>
                                    <value name="A">
                                      <block type="variables_get" id="#IdY8V@(1Ndfy0Oy;}O?">
                                        <field name="VAR" id="|nsSA#%f}nMpDF9f[%s~" variabletype="">Index</field>
                                      </block>
                                    </value>
                                    <value name="B">
                                      <block type="math_number" id="1|5;Drd+s?+T}.0{*S7U">
                                        <field name="NUM">10</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                                <statement name="DO0">
                                  <block type="variables_set" id="!1H^6U]iK*T`dKg}_^_u">
                                    <field name="VAR" id="|nsSA#%f}nMpDF9f[%s~" variabletype="">Index</field>
                                    <value name="VALUE">
                                      <block type="math_number" id="8SOkC-(XJySD(`SNe`d2">
                                        <field name="NUM">1</field>
                                      </block>
                                    </value>
                                  </block>
                                </statement>
                                <next>
                                  <block type="variables_set" id="Pl1+j/wdFvVs[QD$eE-X">
                                    <field name="VAR" id="y/U;,Qb.Nr8Oo+/`~hP~" variabletype="">Summe</field>
                                    <value name="VALUE">
                                      <block type="math_number" id="fYZ5!wFM9_*Bt#+5KLOw">
                                        <field name="NUM">0</field>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="controls_for" id="HyJ*RpPrKT@0MdcOx^^e">
                                        <field name="VAR" id="hGz@,GqUkjk#,:XaV}MP" variabletype="">i</field>
                                        <value name="FROM">
                                          <shadow type="math_number" id="5HJ!2;[nfS,}XAw*nUMi">
                                            <field name="NUM">1</field>
                                          </shadow>
                                        </value>
                                        <value name="TO">
                                          <shadow type="math_number" id="ImZnUR}.I*E/h}#.|wy4">
                                            <field name="NUM">10</field>
                                          </shadow>
                                        </value>
                                        <value name="BY">
                                          <shadow type="math_number" id="K`1U_LE#RLKcqF!kwOE3">
                                            <field name="NUM">1</field>
                                          </shadow>
                                        </value>
                                        <statement name="DO">
                                          <block type="variables_set" id="}rJ2rUz6;aDQOHmvK@Oe">
                                            <field name="VAR" id="y/U;,Qb.Nr8Oo+/`~hP~" variabletype="">Summe</field>
                                            <value name="VALUE">
                                              <block type="math_arithmetic" id="%Y+JtUD?c46n_[O(n`8S">
                                                <field name="OP">ADD</field>
                                                <value name="A">
                                                  <shadow type="math_number" id="Nurdy}zCf#G45e8womn.">
                                                    <field name="NUM">1</field>
                                                  </shadow>
                                                  <block type="variables_get" id="-A8H3G,#Tg4dBOKVy=Cv">
                                                    <field name="VAR" id="y/U;,Qb.Nr8Oo+/`~hP~" variabletype="">Summe</field>
                                                  </block>
                                                </value>
                                                <value name="B">
                                                  <shadow type="math_number" id="GS5E8aL*]O^Y6JVG?9LT">
                                                    <field name="NUM">1</field>
                                                  </shadow>
                                                  <block type="lists_getIndex" id="1}bWK9uFo;24|WfTq*@b">
                                                    <mutation statement="false" at="true"></mutation>
                                                    <field name="MODE">GET</field>
                                                    <field name="WHERE">FROM_START</field>
                                                    <value name="VALUE">
                                                      <block type="variables_get" id="uJ59NT:qhOr?$9ji*YM;">
                                                        <field name="VAR" id=",w^.=D}$CQ[V7pzCL72J" variabletype="">Liste</field>
                                                      </block>
                                                    </value>
                                                    <value name="AT">
                                                      <block type="variables_get" id=":FZ]]msyos78Mjekn;Ac">
                                                        <field name="VAR" id="hGz@,GqUkjk#,:XaV}MP" variabletype="">i</field>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </value>
                                              </block>
                                            </value>
                                          </block>
                                        </statement>
                                        <next>
                                          <block type="update" id="5B:FCNmeZN+Qu{^R`z=Q">
                                            <mutation delay_input="true"></mutation>
                                            <field name="OID">0_userdata.0.Wetter.avg-Wind</field>
                                            <field name="WITH_DELAY">TRUE</field>
                                            <field name="DELAY_MS">10</field>
                                            <field name="UNIT">sec</field>
                                            <field name="CLEAR_RUNNING">FALSE</field>
                                            <value name="VALUE">
                                              <block type="math_arithmetic" id="wONJ/pl_}L6Q0!xpIwS$">
                                                <field name="OP">DIVIDE</field>
                                                <value name="A">
                                                  <shadow type="math_number" id=";%/}}]`uw?T22_tdBqT5">
                                                    <field name="NUM">1</field>
                                                  </shadow>
                                                  <block type="variables_get" id="_z`SsbiwcJJ1td:gT1{[">
                                                    <field name="VAR" id="y/U;,Qb.Nr8Oo+/`~hP~" variabletype="">Summe</field>
                                                  </block>
                                                </value>
                                                <value name="B">
                                                  <shadow type="math_number" id=")FtUw``uljgXg$jxR@;U">
                                                    <field name="NUM">10</field>
                                                  </shadow>
                                                </value>
                                              </block>
                                            </value>
                                          </block>
                                        </next>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </statement>
                  </block>
                </next>
              </block>
            </next>
          </block>
        </xml>
        

        Grüße,
        Kay

        paul53P 1 Reply Last reply
        0
        • K kaybau

          Hallo,
          ich habe Dein Beispiel mal umgesetzt, um verschiedensten Messwerte zu glätten, z.b. die Windmessung
          6f9c4c8d-0c7c-417f-96ec-e45687a9f469-grafik.png

          Ich bin der Meinung die Reihenfolge der Befüllung der Liste passt nicht.
          Jedenfalls stimmen in meinem Beispiel die Werte nur in ca. 60% der Fälle (nach Gefühl), dann hab ich Ausreißer nach oben, die niemals dem (gleitenden) Durchschnitt entsprechen können.

          Hat jemand eine Idee?

          <xml xmlns="http://www.w3.org/1999/xhtml">
            <variables>
              <variable type="" id=",w^.=D}$CQ[V7pzCL72J">Liste</variable>
              <variable type="" id="|nsSA#%f}nMpDF9f[%s~">Index</variable>
              <variable type="" id="y/U;,Qb.Nr8Oo+/`~hP~">Summe</variable>
              <variable type="" id="hGz@,GqUkjk#,:XaV}MP">i</variable>
            </variables>
            <block type="variables_set" id="RTUA!,2m0j#}}ko7OBoB" x="-662" y="138">
              <field name="VAR" id=",w^.=D}$CQ[V7pzCL72J" variabletype="">Liste</field>
              <value name="VALUE">
                <block type="lists_repeat" id="(=LzJ5)|$oc[A);}JvJS">
                  <value name="NUM">
                    <shadow type="math_number" id="87]Qx,xmkMD!$Q@/1@;)">
                      <field name="NUM">10</field>
                    </shadow>
                  </value>
                  <value name="ITEM">
                    <block type="get_value" id="3~*kY|^$rA,s(p,qczz[">
                      <field name="ATTR">val</field>
                      <field name="OID">javascript.0.Wetterstation.Wind</field>
                    </block>
                  </value>
                </block>
              </value>
              <next>
                <block type="variables_set" id="iW%C^9/JhHumbS#zg3)C">
                  <field name="VAR" id="|nsSA#%f}nMpDF9f[%s~" variabletype="">Index</field>
                  <value name="VALUE">
                    <block type="math_number" id="AugG5vuP%[LOm2@_M+HJ">
                      <field name="NUM">1</field>
                    </block>
                  </value>
                  <next>
                    <block type="on_ext" id="vFE,)!c?~Z$=KJQ[l.d`">
                      <mutation items="1"></mutation>
                      <field name="CONDITION">any</field>
                      <field name="ACK_CONDITION"></field>
                      <value name="OID0">
                        <shadow type="field_oid" id="OSi=yG(ihidHOz.CC{,,">
                          <field name="oid">javascript.0.Wetterstation.Wind</field>
                        </shadow>
                      </value>
                      <statement name="STATEMENT">
                        <block type="lists_setIndex" id="Ue,2EJHPrBq4j%LV^^P.">
                          <mutation at="true"></mutation>
                          <field name="MODE">SET</field>
                          <field name="WHERE">FROM_START</field>
                          <value name="LIST">
                            <block type="variables_get" id="9Y5|dAIiYW;jqyDV^.12">
                              <field name="VAR" id=",w^.=D}$CQ[V7pzCL72J" variabletype="">Liste</field>
                            </block>
                          </value>
                          <value name="AT">
                            <block type="variables_get" id="(cD0-P+rOdV7[+VxX:;w">
                              <field name="VAR" id="|nsSA#%f}nMpDF9f[%s~" variabletype="">Index</field>
                            </block>
                          </value>
                          <value name="TO">
                            <block type="get_value" id="X?~@4ti8Sr@d4P;=*/Gg">
                              <field name="ATTR">val</field>
                              <field name="OID">javascript.0.Wetterstation.Wind</field>
                            </block>
                          </value>
                          <next>
                            <block type="math_change" id="iHM7|{2:7es8frET@lbV">
                              <field name="VAR" id="|nsSA#%f}nMpDF9f[%s~" variabletype="">Index</field>
                              <value name="DELTA">
                                <shadow type="math_number" id="Op~gK+*i3yG,NxAnX#E^">
                                  <field name="NUM">1</field>
                                </shadow>
                              </value>
                              <next>
                                <block type="controls_if" id="Ev=u_,#:ITq@sH4OiERd">
                                  <value name="IF0">
                                    <block type="logic_compare" id="DQ,9UZd*Y1s:1wALu{Gj">
                                      <field name="OP">GT</field>
                                      <value name="A">
                                        <block type="variables_get" id="#IdY8V@(1Ndfy0Oy;}O?">
                                          <field name="VAR" id="|nsSA#%f}nMpDF9f[%s~" variabletype="">Index</field>
                                        </block>
                                      </value>
                                      <value name="B">
                                        <block type="math_number" id="1|5;Drd+s?+T}.0{*S7U">
                                          <field name="NUM">10</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                  <statement name="DO0">
                                    <block type="variables_set" id="!1H^6U]iK*T`dKg}_^_u">
                                      <field name="VAR" id="|nsSA#%f}nMpDF9f[%s~" variabletype="">Index</field>
                                      <value name="VALUE">
                                        <block type="math_number" id="8SOkC-(XJySD(`SNe`d2">
                                          <field name="NUM">1</field>
                                        </block>
                                      </value>
                                    </block>
                                  </statement>
                                  <next>
                                    <block type="variables_set" id="Pl1+j/wdFvVs[QD$eE-X">
                                      <field name="VAR" id="y/U;,Qb.Nr8Oo+/`~hP~" variabletype="">Summe</field>
                                      <value name="VALUE">
                                        <block type="math_number" id="fYZ5!wFM9_*Bt#+5KLOw">
                                          <field name="NUM">0</field>
                                        </block>
                                      </value>
                                      <next>
                                        <block type="controls_for" id="HyJ*RpPrKT@0MdcOx^^e">
                                          <field name="VAR" id="hGz@,GqUkjk#,:XaV}MP" variabletype="">i</field>
                                          <value name="FROM">
                                            <shadow type="math_number" id="5HJ!2;[nfS,}XAw*nUMi">
                                              <field name="NUM">1</field>
                                            </shadow>
                                          </value>
                                          <value name="TO">
                                            <shadow type="math_number" id="ImZnUR}.I*E/h}#.|wy4">
                                              <field name="NUM">10</field>
                                            </shadow>
                                          </value>
                                          <value name="BY">
                                            <shadow type="math_number" id="K`1U_LE#RLKcqF!kwOE3">
                                              <field name="NUM">1</field>
                                            </shadow>
                                          </value>
                                          <statement name="DO">
                                            <block type="variables_set" id="}rJ2rUz6;aDQOHmvK@Oe">
                                              <field name="VAR" id="y/U;,Qb.Nr8Oo+/`~hP~" variabletype="">Summe</field>
                                              <value name="VALUE">
                                                <block type="math_arithmetic" id="%Y+JtUD?c46n_[O(n`8S">
                                                  <field name="OP">ADD</field>
                                                  <value name="A">
                                                    <shadow type="math_number" id="Nurdy}zCf#G45e8womn.">
                                                      <field name="NUM">1</field>
                                                    </shadow>
                                                    <block type="variables_get" id="-A8H3G,#Tg4dBOKVy=Cv">
                                                      <field name="VAR" id="y/U;,Qb.Nr8Oo+/`~hP~" variabletype="">Summe</field>
                                                    </block>
                                                  </value>
                                                  <value name="B">
                                                    <shadow type="math_number" id="GS5E8aL*]O^Y6JVG?9LT">
                                                      <field name="NUM">1</field>
                                                    </shadow>
                                                    <block type="lists_getIndex" id="1}bWK9uFo;24|WfTq*@b">
                                                      <mutation statement="false" at="true"></mutation>
                                                      <field name="MODE">GET</field>
                                                      <field name="WHERE">FROM_START</field>
                                                      <value name="VALUE">
                                                        <block type="variables_get" id="uJ59NT:qhOr?$9ji*YM;">
                                                          <field name="VAR" id=",w^.=D}$CQ[V7pzCL72J" variabletype="">Liste</field>
                                                        </block>
                                                      </value>
                                                      <value name="AT">
                                                        <block type="variables_get" id=":FZ]]msyos78Mjekn;Ac">
                                                          <field name="VAR" id="hGz@,GqUkjk#,:XaV}MP" variabletype="">i</field>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </value>
                                                </block>
                                              </value>
                                            </block>
                                          </statement>
                                          <next>
                                            <block type="update" id="5B:FCNmeZN+Qu{^R`z=Q">
                                              <mutation delay_input="true"></mutation>
                                              <field name="OID">0_userdata.0.Wetter.avg-Wind</field>
                                              <field name="WITH_DELAY">TRUE</field>
                                              <field name="DELAY_MS">10</field>
                                              <field name="UNIT">sec</field>
                                              <field name="CLEAR_RUNNING">FALSE</field>
                                              <value name="VALUE">
                                                <block type="math_arithmetic" id="wONJ/pl_}L6Q0!xpIwS$">
                                                  <field name="OP">DIVIDE</field>
                                                  <value name="A">
                                                    <shadow type="math_number" id=";%/}}]`uw?T22_tdBqT5">
                                                      <field name="NUM">1</field>
                                                    </shadow>
                                                    <block type="variables_get" id="_z`SsbiwcJJ1td:gT1{[">
                                                      <field name="VAR" id="y/U;,Qb.Nr8Oo+/`~hP~" variabletype="">Summe</field>
                                                    </block>
                                                  </value>
                                                  <value name="B">
                                                    <shadow type="math_number" id=")FtUw``uljgXg$jxR@;U">
                                                      <field name="NUM">10</field>
                                                    </shadow>
                                                  </value>
                                                </block>
                                              </value>
                                            </block>
                                          </next>
                                        </block>
                                      </next>
                                    </block>
                                  </next>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </statement>
                    </block>
                  </next>
                </block>
              </next>
            </block>
          </xml>
          

          Grüße,
          Kay

          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by
          #8

          @kaybau
          Besseres Beispiel.

          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

          K 1 Reply Last reply
          0
          • paul53P paul53

            @kaybau
            Besseres Beispiel.

            K Offline
            K Offline
            kaybau
            wrote on last edited by
            #9

            @paul53 : Besten Dank für das neue Beispiel. Sieht gut aus 😉

            Marius_90M 1 Reply Last reply
            0
            • K kaybau

              @paul53 : Besten Dank für das neue Beispiel. Sieht gut aus 😉

              Marius_90M Offline
              Marius_90M Offline
              Marius_90
              wrote on last edited by
              #10

              Ich hatte eben auch das Problem mit einem Schieberegister.
              Habe es mir als Funktion mal eben selbst gebaut.

              Ich glätte damit meinen PH-Messwert von Pool, der sprang mir einfach zu sehr auf und ab.
              Ist etwas aufwändiger, aber nachvollziehbar

              d5edaa58-35c0-4c10-bdc9-34869ff4254a-image.png

              AsgothianA 1 Reply Last reply
              0
              • Marius_90M Marius_90

                Ich hatte eben auch das Problem mit einem Schieberegister.
                Habe es mir als Funktion mal eben selbst gebaut.

                Ich glätte damit meinen PH-Messwert von Pool, der sprang mir einfach zu sehr auf und ab.
                Ist etwas aufwändiger, aber nachvollziehbar

                d5edaa58-35c0-4c10-bdc9-34869ff4254a-image.png

                AsgothianA Offline
                AsgothianA Offline
                Asgothian
                Developer
                wrote on last edited by Asgothian
                #11

                @marius-kossinna sagte in Gleitender Durchschnitt mit Blockly:

                Ich glätte damit meinen PH-Messwert von Pool, der sprang mir einfach zu sehr auf und ab.
                Ist etwas aufwändiger, aber nachvollziehbar

                Etwas aufwändiger ? Das ist ein Understatement.

                • Warum nutzt du überhaupt eine Liste wenn du sowieso jede variable einzeln hältst. Du kannst doch beim Umschreiben auch gleich addieren
                • 10 Variablen von Hand "schieben" ? meh.

                Wenn schon Schieberegister, dann wenigstens so:

                Screenshot 2021-07-12 at 16.02.09.png

                A.

                Korrektur: Fehler im screenshot.

                ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                ChrisNettC paul53P K 3 Replies Last reply
                1
                • AsgothianA Asgothian

                  @marius-kossinna sagte in Gleitender Durchschnitt mit Blockly:

                  Ich glätte damit meinen PH-Messwert von Pool, der sprang mir einfach zu sehr auf und ab.
                  Ist etwas aufwändiger, aber nachvollziehbar

                  Etwas aufwändiger ? Das ist ein Understatement.

                  • Warum nutzt du überhaupt eine Liste wenn du sowieso jede variable einzeln hältst. Du kannst doch beim Umschreiben auch gleich addieren
                  • 10 Variablen von Hand "schieben" ? meh.

                  Wenn schon Schieberegister, dann wenigstens so:

                  Screenshot 2021-07-12 at 16.02.09.png

                  A.

                  Korrektur: Fehler im screenshot.

                  ChrisNettC Offline
                  ChrisNettC Offline
                  ChrisNett
                  wrote on last edited by
                  #12

                  @asgothian

                  Hi, kannst du das mal als export hochladen?

                  Christian

                  AsgothianA 1 Reply Last reply
                  0
                  • ChrisNettC ChrisNett

                    @asgothian

                    Hi, kannst du das mal als export hochladen?

                    Christian

                    AsgothianA Offline
                    AsgothianA Offline
                    Asgothian
                    Developer
                    wrote on last edited by
                    #13

                    @christian-sandkaulen

                    Könnte ich.

                    Selberbauen lehrt. Also bau mal 🙂 Letztendlich sollten alle Blöcke eindeutig sein. Einzig der "state value" ist kritisch - dieser stammt aus dem "trigger" Bereich und ist da mit "Objekt ID" vorgesetzt.

                    A.

                    ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                    "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                    1 Reply Last reply
                    1
                    • AsgothianA Asgothian

                      @marius-kossinna sagte in Gleitender Durchschnitt mit Blockly:

                      Ich glätte damit meinen PH-Messwert von Pool, der sprang mir einfach zu sehr auf und ab.
                      Ist etwas aufwändiger, aber nachvollziehbar

                      Etwas aufwändiger ? Das ist ein Understatement.

                      • Warum nutzt du überhaupt eine Liste wenn du sowieso jede variable einzeln hältst. Du kannst doch beim Umschreiben auch gleich addieren
                      • 10 Variablen von Hand "schieben" ? meh.

                      Wenn schon Schieberegister, dann wenigstens so:

                      Screenshot 2021-07-12 at 16.02.09.png

                      A.

                      Korrektur: Fehler im screenshot.

                      paul53P Offline
                      paul53P Offline
                      paul53
                      wrote on last edited by paul53
                      #14

                      @asgothian sagte: Wenn schon Schieberegister, dann wenigstens so:

                      Ein Trigger auf "wurde geändert" ist für einen gleitenden Durchschnitt ungeeignet, da so Werte, die längere Zeit konstant sind, untergewichtet werden.
                      Bei Adaptern, die zyklisch aktualisieren (pollen), kann auf "wurde aktualisiert" getriggert werden. Andernfalls muss ein Zeitplan als Trigger verwendet werden.

                      Da nach Skriptstart die Liste erst einmal wächst, darf zur Mittelwertbildung nicht durch die Konstante 10, sondern es muss durch die Länge der Liste dividiert werden. Oder man verwendet gleich die mathematische Funktion "Mittelwert der Liste".

                      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

                      S 1 Reply Last reply
                      0
                      • paul53P paul53

                        @asgothian sagte: Wenn schon Schieberegister, dann wenigstens so:

                        Ein Trigger auf "wurde geändert" ist für einen gleitenden Durchschnitt ungeeignet, da so Werte, die längere Zeit konstant sind, untergewichtet werden.
                        Bei Adaptern, die zyklisch aktualisieren (pollen), kann auf "wurde aktualisiert" getriggert werden. Andernfalls muss ein Zeitplan als Trigger verwendet werden.

                        Da nach Skriptstart die Liste erst einmal wächst, darf zur Mittelwertbildung nicht durch die Konstante 10, sondern es muss durch die Länge der Liste dividiert werden. Oder man verwendet gleich die mathematische Funktion "Mittelwert der Liste".

                        S Offline
                        S Offline
                        schweiger2
                        wrote on last edited by
                        #15

                        @paul53

                        Hallo,

                        ich habe mir nach den angegebenen Hinweisen in diesen Thread die Steuerung gebaut, doch ich erhalte Fehlermeldungen und das Skript funktioniert nicht. Ich freue mich, wenn ihr einmal auf das Skript sehen könnt. Wo liegt der Hund begraben ?

                        dc0cfb1a-587e-4ef1-95f7-f68995d48096-image.png

                        Hier die Fehlermeldungen:

                        e4589a19-b741-4679-822d-0d15752cddac-image.png

                        Was mache ich falsch ?

                        Beste Grüße
                        schweiger2

                        paul53P 2 Replies Last reply
                        0
                        • S schweiger2

                          @paul53

                          Hallo,

                          ich habe mir nach den angegebenen Hinweisen in diesen Thread die Steuerung gebaut, doch ich erhalte Fehlermeldungen und das Skript funktioniert nicht. Ich freue mich, wenn ihr einmal auf das Skript sehen könnt. Wo liegt der Hund begraben ?

                          dc0cfb1a-587e-4ef1-95f7-f68995d48096-image.png

                          Hier die Fehlermeldungen:

                          e4589a19-b741-4679-822d-0d15752cddac-image.png

                          Was mache ich falsch ?

                          Beste Grüße
                          schweiger2

                          paul53P Offline
                          paul53P Offline
                          paul53
                          wrote on last edited by paul53
                          #16

                          @schweiger2 sagte: Was mache ich falsch ?

                          Verwende für "WIND_SPEED" und "ILLUMINATION" jeweils nur einen Trigger und arbeite die Befehle dort in der richtigen Reihenfolge ab.

                          Für den Teil "windig":

                          Bild_2021-07-19_134446.png

                          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

                          1 Reply Last reply
                          0
                          • S schweiger2

                            @paul53

                            Hallo,

                            ich habe mir nach den angegebenen Hinweisen in diesen Thread die Steuerung gebaut, doch ich erhalte Fehlermeldungen und das Skript funktioniert nicht. Ich freue mich, wenn ihr einmal auf das Skript sehen könnt. Wo liegt der Hund begraben ?

                            dc0cfb1a-587e-4ef1-95f7-f68995d48096-image.png

                            Hier die Fehlermeldungen:

                            e4589a19-b741-4679-822d-0d15752cddac-image.png

                            Was mache ich falsch ?

                            Beste Grüße
                            schweiger2

                            paul53P Offline
                            paul53P Offline
                            paul53
                            wrote on last edited by paul53
                            #17

                            @schweiger2 sagte: ich erhalte Fehlermeldungen

                            Anstelle von "setze für Letzte ein" selektiere "füge als Letzte ein":

                            Bild_2021-07-19_131423.png

                            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

                            S 1 Reply Last reply
                            0
                            • paul53P paul53

                              @schweiger2 sagte: ich erhalte Fehlermeldungen

                              Anstelle von "setze für Letzte ein" selektiere "füge als Letzte ein":

                              Bild_2021-07-19_131423.png

                              S Offline
                              S Offline
                              schweiger2
                              wrote on last edited by
                              #18

                              @paul53

                              Ich habe das jetzt so gebaut (letzten 2 Zeilen unten nur als Kennzeichen für den Beginn des anderen Blocks):

                              d96193a4-265a-4e83-8046-392714c8e2f0-image.png

                              Jetzt warte ich, ob neue Fehler im Log auftreten. Die Funktion - darum geht es ja eigentlich - des Skripts sehe ich mir im Nachhinein an, wenn keine Syntax-Fehler mehr aftauchen.

                              Besten Dank erst einmal.

                              paul53P 1 Reply Last reply
                              0
                              • S schweiger2

                                @paul53

                                Ich habe das jetzt so gebaut (letzten 2 Zeilen unten nur als Kennzeichen für den Beginn des anderen Blocks):

                                d96193a4-265a-4e83-8046-392714c8e2f0-image.png

                                Jetzt warte ich, ob neue Fehler im Log auftreten. Die Funktion - darum geht es ja eigentlich - des Skripts sehe ich mir im Nachhinein an, wenn keine Syntax-Fehler mehr aftauchen.

                                Besten Dank erst einmal.

                                paul53P Offline
                                paul53P Offline
                                paul53
                                wrote on last edited by paul53
                                #19

                                @schweiger2 sagte: Ich habe das jetzt so gebaut

                                Den Wert, den der Trigger-Datenpunkt übergibt, magst Du wohl nicht?

                                Blockly_DP_Props.JPG

                                Zur Funktion "markise": Wenn level einmal auf 100 gesetzt wurde, bleibt er auf 100. Nach Skriptstart ist level erst einmal undefined, womit "steuere" meckern wird.

                                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

                                S 1 Reply Last reply
                                0
                                • paul53P paul53

                                  @schweiger2 sagte: Ich habe das jetzt so gebaut

                                  Den Wert, den der Trigger-Datenpunkt übergibt, magst Du wohl nicht?

                                  Blockly_DP_Props.JPG

                                  Zur Funktion "markise": Wenn level einmal auf 100 gesetzt wurde, bleibt er auf 100. Nach Skriptstart ist level erst einmal undefined, womit "steuere" meckern wird.

                                  S Offline
                                  S Offline
                                  schweiger2
                                  wrote on last edited by
                                  #20

                                  @paul53

                                  Hallo paul53,

                                  sorry, den ersten Punkt kann ich fachlich nicht verstehen. Ich übergebe der Liste doch als letzten Listeneintrag den aktualisierten Wert aus dem Objekt "Wind Speed" des Wettersensors durch

                                  2131dee1-8a27-422e-abee-b06551d76a91-image.png ,

                                  oder wie meinst Du das ?

                                  Im Protokoll finde ich jetzt keine errors mehr, das ist schonmal ein Teilerfolg dank Deiner Hilfe.

                                  Zu level: verstehe ich, hoffe ich. Wenn ich "level" zu Beginn der Funktion "=0" setze, würde die Markise - wenn Sie z.B. auf 30% ausgefahren ist und "windig" und "dunkel" NICHT wahr sind, auf Null % (=komplett zu) fahren, oder ?

                                  paul53P 1 Reply Last reply
                                  0
                                  • S schweiger2

                                    @paul53

                                    Hallo paul53,

                                    sorry, den ersten Punkt kann ich fachlich nicht verstehen. Ich übergebe der Liste doch als letzten Listeneintrag den aktualisierten Wert aus dem Objekt "Wind Speed" des Wettersensors durch

                                    2131dee1-8a27-422e-abee-b06551d76a91-image.png ,

                                    oder wie meinst Du das ?

                                    Im Protokoll finde ich jetzt keine errors mehr, das ist schonmal ein Teilerfolg dank Deiner Hilfe.

                                    Zu level: verstehe ich, hoffe ich. Wenn ich "level" zu Beginn der Funktion "=0" setze, würde die Markise - wenn Sie z.B. auf 30% ausgefahren ist und "windig" und "dunkel" NICHT wahr sind, auf Null % (=komplett zu) fahren, oder ?

                                    paul53P Offline
                                    paul53P Offline
                                    paul53
                                    wrote on last edited by paul53
                                    #21

                                    @schweiger2 sagte: oder wie meinst Du das ?

                                    Den identischen Wert wie "Wert vom Objekt WIND_SPEED" liefert die lokale Trigger-Variable Wert. Ist nur etwas eleganter (Ressourcen schonender).

                                    @schweiger2 sagte in Gleitender Durchschnitt mit Blockly:

                                    "windig" und "dunkel" NICHT wahr sind, auf Null % (=komplett zu) fahren, oder ?

                                    Wahrscheinlich würde eine Warnung oder einer Error erzeugt. Was ist "0 % = komplett zu" bei einer Markise? Voll ausgefahren?
                                    Soll die Markise nicht wieder ausfahren, wenn sich der Wind gelegt hat? Wenn doch, dann versuche es mal so:

                                    Bild_2021-07-19_150915.png

                                    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

                                    S 1 Reply Last reply
                                    1
                                    • paul53P paul53

                                      @schweiger2 sagte: oder wie meinst Du das ?

                                      Den identischen Wert wie "Wert vom Objekt WIND_SPEED" liefert die lokale Trigger-Variable Wert. Ist nur etwas eleganter (Ressourcen schonender).

                                      @schweiger2 sagte in Gleitender Durchschnitt mit Blockly:

                                      "windig" und "dunkel" NICHT wahr sind, auf Null % (=komplett zu) fahren, oder ?

                                      Wahrscheinlich würde eine Warnung oder einer Error erzeugt. Was ist "0 % = komplett zu" bei einer Markise? Voll ausgefahren?
                                      Soll die Markise nicht wieder ausfahren, wenn sich der Wind gelegt hat? Wenn doch, dann versuche es mal so:

                                      Bild_2021-07-19_150915.png

                                      S Offline
                                      S Offline
                                      schweiger2
                                      wrote on last edited by
                                      #22

                                      @paul53

                                      ahaaa, danke, ist schon geändert.

                                      Zum "level": 0% = 0% Helligkeit = komplett herausgefahren. Ja, dies ist für mich nur eine Schutzschaltung, wenn das Schließen mal vergessen wurde; das Öffnen möchte ich manuell selbst bestimmen.

                                      paul53P 1 Reply Last reply
                                      0
                                      • S schweiger2

                                        @paul53

                                        ahaaa, danke, ist schon geändert.

                                        Zum "level": 0% = 0% Helligkeit = komplett herausgefahren. Ja, dies ist für mich nur eine Schutzschaltung, wenn das Schließen mal vergessen wurde; das Öffnen möchte ich manuell selbst bestimmen.

                                        paul53P Offline
                                        paul53P Offline
                                        paul53
                                        wrote on last edited by
                                        #23

                                        @schweiger2 sagte: nur eine Schutzschaltung, wenn das Schließen mal vergessen wurde; das Öffnen möchte ich manuell selbst bestimmen.

                                        Dann mache es so (ohne Probleme mit undefined) :

                                        Bild_2021-07-19_152317.png

                                        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

                                        S 1 Reply Last reply
                                        1
                                        • paul53P paul53

                                          @schweiger2 sagte: nur eine Schutzschaltung, wenn das Schließen mal vergessen wurde; das Öffnen möchte ich manuell selbst bestimmen.

                                          Dann mache es so (ohne Probleme mit undefined) :

                                          Bild_2021-07-19_152317.png

                                          S Offline
                                          S Offline
                                          schweiger2
                                          wrote on last edited by
                                          #24

                                          @paul53

                                          es ist so einfach - wenn man den Wald vor lauter Bäumen sehen würde.

                                          Danke vielmals für Deine Hilfe.

                                          schweiger2

                                          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

                                          54

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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