Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Hilfe bei Blockly Berechnung (Formel)

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Hilfe bei Blockly Berechnung (Formel)

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

      Hallo zusammen,
      ich habe ein Problem mit der Mathefunktion von Blockly.
      Ich Messe die Temperatur und Rel. Luffeuchte mit einem BME280 und möchte aus diesen Werten den Feuchtkugeltemperaturwert berechnen.
      dazu gibt es eine Näherungsformel (siehe Bild)
      Ich hab jetzt schon einiges versucht die Formel in Blockly umzusetzen leider ohne Erfolg bzw. mit falschen Ergebnissen...
      Ich denke das irgendwas mit den klammern bzw. dem Exponenten nicht stimmt...?

      Wäre super wenn sich da. Mal jemand mit reindenken könnte!

      Liebe Grüße
      Felix

      Screenshot_20201227_145700.jpg

      paul53 amg_666 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @Felix Merk last edited by paul53

        @Felix-Merk
        Die Formel ist ohne Zeichen für die Multiplikation schlecht zu lesen.
        Bei atan() muss man berücksichtigen, ob der Wert in Bogenmaß oder Grad angegeben ist.

        Felix Merk 1 Reply Last reply Reply Quote 0
        • amg_666
          amg_666 @Felix Merk last edited by amg_666

          @Felix-Merk said in Hilfe bei Blockly Berechnung (Formel):

          peratur und Rel. Luffeuchte mit e

          Warum postest du nicht deinen blockly-Versuch, da könnte man sehen was falsch läuft. Ich würde das in mehrere Rechenschritte aufteilen und mit Variablen innerhalb des blockly arbeiten:

          1. var1=Wurzel(RH%+8.313659)
          2. var2=atan (var1)
            usw
            und am Ende dann TW=var2 + var3 +...-4.686035

          und wenn das funktioniert kannst du versuchen es Schritt für Schritt in eine Formel zu basteln.

          Felix Merk 1 Reply Last reply Reply Quote 0
          • Felix Merk
            Felix Merk @amg_666 last edited by

            @amg_666
            guter Ansatz!

            Kann das mal jemand für mich überprüfen? Wie mache ich in Blockly einen Wert hoch 2/3 ? bzw. Wert hoch 1,5?
            Ich habe mir nicht anders zu helfen gewusst als: Wurzel Wert * Wurzel Wert * Wurzel Wert....

            Passen die einzelnen Blöcke so?

            Liebe Grüße
            Felix

            Blocly_Feuchtkugel.JPG

            <xml xmlns="http://www.w3.org/1999/xhtml">
              <block type="math_arithmetic" id="3#^r^xtPlR)Ze(MZhI5`" x="-237" y="63">
                <field name="OP">MULTIPLY</field>
                <value name="A">
                  <shadow type="math_number" id="JQT5tU%]ZecGlU4@*awi">
                    <field name="NUM">1</field>
                  </shadow>
                  <block type="get_value" id="M6U!t21[|XqPe/uk9_1^">
                    <field name="ATTR">val</field>
                    <field name="OID">mqtt.0.lift.Sensoren.Temp</field>
                  </block>
                </value>
                <value name="B">
                  <shadow type="math_number" id="ctjeLIuj!n]T.^UBIQWW">
                    <field name="NUM">1</field>
                  </shadow>
                  <block type="math_trig" id="VGBWu]i-7SAFO9=Uw)z;">
                    <field name="OP">ATAN</field>
                    <value name="NUM">
                      <shadow type="math_number" id="%n@iOcl%Fj,;fghz%OJX">
                        <field name="NUM">45</field>
                      </shadow>
                      <block type="math_arithmetic" id="rGJezh[AMi$A_)kj!NH~">
                        <field name="OP">MULTIPLY</field>
                        <value name="A">
                          <shadow type="math_number" id="!a3k2S)i6glaeNT**OTo">
                            <field name="NUM">0.151977</field>
                          </shadow>
                        </value>
                        <value name="B">
                          <shadow type="math_number" id="Kij3;EDR[Jp!cPk6@Jmn">
                            <field name="NUM">1</field>
                          </shadow>
                          <block type="math_single" id="x)c4WRRD,p?on.q2m~$C">
                            <field name="OP">ROOT</field>
                            <value name="NUM">
                              <shadow type="math_number" id="$iTr9=`)5Q(=Y0Cqi@Ws">
                                <field name="NUM">9</field>
                              </shadow>
                              <block type="math_arithmetic" id="SF4zMNZRd/H,E0MbSpL)">
                                <field name="OP">ADD</field>
                                <value name="A">
                                  <shadow type="math_number" id="k34:6xlfaOTs#H4Egow)">
                                    <field name="NUM">1</field>
                                  </shadow>
                                  <block type="get_value" id="0*I.[p@!RU-;D!Rh/aLr">
                                    <field name="ATTR">val</field>
                                    <field name="OID">mqtt.0.lift.Sensoren.Feuchte</field>
                                  </block>
                                </value>
                                <value name="B">
                                  <shadow type="math_number" id="][=AINKNg[LRBk1_?MKa">
                                    <field name="NUM">8.313659</field>
                                  </shadow>
                                </value>
                              </block>
                            </value>
                          </block>
                        </value>
                      </block>
                    </value>
                  </block>
                </value>
              </block>
              <block type="math_trig" id="+V-kj?2x6$`RZ)f%vW?b" x="-237" y="138">
                <field name="OP">ATAN</field>
                <value name="NUM">
                  <shadow type="math_number" id="%n@iOcl%Fj,;fghz%OJX">
                    <field name="NUM">45</field>
                  </shadow>
                  <block type="math_arithmetic" id="5`SS%x)p_[/{f$77@egm">
                    <field name="OP">ADD</field>
                    <value name="A">
                      <shadow type="math_number" id="_/b$!?#yiwjHynAtuT^W">
                        <field name="NUM">0.151977</field>
                      </shadow>
                      <block type="get_value" id="R_M}a#2AWv/T-p}8]VB4">
                        <field name="ATTR">val</field>
                        <field name="OID">mqtt.0.lift.Sensoren.Temp</field>
                      </block>
                    </value>
                    <value name="B">
                      <shadow type="math_number" id="Kij3;EDR[Jp!cPk6@Jmn">
                        <field name="NUM">1</field>
                      </shadow>
                      <block type="get_value" id="u7PANch2jjl=cS/l9Sdp">
                        <field name="ATTR">val</field>
                        <field name="OID">mqtt.0.lift.Sensoren.Feuchte</field>
                      </block>
                    </value>
                  </block>
                </value>
              </block>
              <block type="math_trig" id="he{#.mO.ew_Jj|@NrNUQ" x="-237" y="188">
                <field name="OP">ATAN</field>
                <value name="NUM">
                  <shadow type="math_number" id="%n@iOcl%Fj,;fghz%OJX">
                    <field name="NUM">45</field>
                  </shadow>
                  <block type="math_arithmetic" id="|rt6:r=iER5-yn==dYAN">
                    <field name="OP">MINUS</field>
                    <value name="A">
                      <shadow type="math_number" id="_/b$!?#yiwjHynAtuT^W">
                        <field name="NUM">0.151977</field>
                      </shadow>
                      <block type="get_value" id="I_YM~GtkSk.ZcItv:lcK">
                        <field name="ATTR">val</field>
                        <field name="OID">mqtt.0.lift.Sensoren.Feuchte</field>
                      </block>
                    </value>
                    <value name="B">
                      <shadow type="math_number" id="Kij3;EDR[Jp!cPk6@Jmn">
                        <field name="NUM">1.676331</field>
                      </shadow>
                    </value>
                  </block>
                </value>
              </block>
              <block type="math_arithmetic" id="JX4]@]aB9c(EwR{oon$3" x="-237" y="238">
                <field name="OP">MULTIPLY</field>
                <value name="A">
                  <shadow type="math_number" id="#vkPUG*123UyF$x)O8?y">
                    <field name="NUM">0.00391838</field>
                  </shadow>
                </value>
                <value name="B">
                  <shadow type="math_number" id="naGvWi=:s9Msgi2RKbp-">
                    <field name="NUM">1</field>
                  </shadow>
                  <block type="math_arithmetic" id="yb0f##.w@mubL`v}d8*V">
                    <field name="OP">MULTIPLY</field>
                    <value name="A">
                      <shadow type="math_number" id="?IE,Lb;Edgdb)uP;G]jW">
                        <field name="NUM">0.00391838</field>
                      </shadow>
                      <block type="math_single" id="BzDMFQe,?5qcF7G0JMWi">
                        <field name="OP">ROOT</field>
                        <value name="NUM">
                          <shadow type="math_number" id="5;Ccguw-S`/%7?(d]gO+">
                            <field name="NUM">9</field>
                          </shadow>
                          <block type="get_value" id="-Ok]}n`!4ZLTdA7OkvmN">
                            <field name="ATTR">val</field>
                            <field name="OID">mqtt.0.lift.Sensoren.Feuchte</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <value name="B">
                      <shadow type="math_number" id="p4=SM5($[5bmYk|{Q@`j">
                        <field name="NUM">1</field>
                      </shadow>
                      <block type="math_arithmetic" id="tg`{E}hi.E*69HEZQV=s">
                        <field name="OP">MULTIPLY</field>
                        <value name="A">
                          <shadow type="math_number" id="14fYOvfMrfVO:38j^HWB">
                            <field name="NUM">1</field>
                          </shadow>
                          <block type="math_single" id="4|UFEN`*Y!7~0Hn^PnV8">
                            <field name="OP">ROOT</field>
                            <value name="NUM">
                              <shadow type="math_number" id="5;Ccguw-S`/%7?(d]gO+">
                                <field name="NUM">9</field>
                              </shadow>
                              <block type="get_value" id=",]75lXE2fU2Z^$ajp%2O">
                                <field name="ATTR">val</field>
                                <field name="OID">mqtt.0.lift.Sensoren.Feuchte</field>
                              </block>
                            </value>
                          </block>
                        </value>
                        <value name="B">
                          <shadow type="math_number" id="*TL0AUxc%{f4`@ma9Xd{">
                            <field name="NUM">1</field>
                          </shadow>
                          <block type="math_single" id="}QdhKQ++%5x:zmZr`/Og">
                            <field name="OP">ROOT</field>
                            <value name="NUM">
                              <shadow type="math_number" id="5;Ccguw-S`/%7?(d]gO+">
                                <field name="NUM">9</field>
                              </shadow>
                              <block type="get_value" id="l0ER*|O4)jsuX#12kC?~">
                                <field name="ATTR">val</field>
                                <field name="OID">mqtt.0.lift.Sensoren.Feuchte</field>
                              </block>
                            </value>
                          </block>
                        </value>
                      </block>
                    </value>
                  </block>
                </value>
              </block>
              <block type="math_arithmetic" id="|!0iKQdnBo|9J-3PG{-~" x="-238" y="313">
                <field name="OP">MINUS</field>
                <value name="A">
                  <shadow type="math_number" id="d$[:Jl#qUw05@:Rg@0*^">
                    <field name="NUM">1</field>
                  </shadow>
                  <block type="math_trig" id="pRz(RdH#(~gNpZ%QNWxB">
                    <field name="OP">ATAN</field>
                    <value name="NUM">
                      <shadow type="math_number" id="%n@iOcl%Fj,;fghz%OJX">
                        <field name="NUM">45</field>
                      </shadow>
                      <block type="math_arithmetic" id="30Gu!y_WBDf#5k}tjL7l">
                        <field name="OP">MULTIPLY</field>
                        <value name="A">
                          <shadow type="math_number" id="_/b$!?#yiwjHynAtuT^W">
                            <field name="NUM">0.23101</field>
                          </shadow>
                        </value>
                        <value name="B">
                          <shadow type="math_number" id="F`tT#{Vi7*)+f4Vj7L?/">
                            <field name="NUM">1.676331</field>
                          </shadow>
                          <block type="get_value" id="GLH{ph7zme7Ak4!.BT`_">
                            <field name="ATTR">val</field>
                            <field name="OID">mqtt.0.lift.Sensoren.Feuchte</field>
                          </block>
                        </value>
                      </block>
                    </value>
                  </block>
                </value>
                <value name="B">
                  <shadow type="math_number" id="|+LJh(sF,bPu-=J]XiBi">
                    <field name="NUM">4</field>
                  </shadow>
                </value>
              </block>
            </xml>
            
            amg_666 1 Reply Last reply Reply Quote 0
            • Felix Merk
              Felix Merk @paul53 last edited by

              @paul53
              Hallo Paul, es geht ums Bogenmaß

              Liebe Grüße

              paul53 1 Reply Last reply Reply Quote 0
              • amg_666
                amg_666 @Felix Merk last edited by

                @Felix-Merk said in Hilfe bei Blockly Berechnung (Formel):

                Ich habe mir nicht anders zu helfen gewusst als: Wurzel Wert * Wurzel Wert * Wurzel Wert....

                irgendwas hoch 2/3 ist dasselbe wie Wurzel aus (irgendwas hoch 3) und hoch 3 scheint in blockly nicht zu gehen, ich hab nirgendwo "hoch x" gefunden, insofern sieht deine Lösung nicht schön aus, scheint aber so "alternativlos" zu sein 🙂

                Felix Merk 1 Reply Last reply Reply Quote 0
                • Felix Merk
                  Felix Merk @amg_666 last edited by

                  @amg_666

                  ...habe ich befürchtet 🙂
                  Könntest du mal überprüfen ob die einzelnen Terme so noch korrekt sind?
                  Wegen Operatorrangfolge usw.?

                  Ich seh den Wald vor Bäumen nicht mehr 🙂

                  Liebe Grüße

                  1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @Felix Merk last edited by paul53

                    @Felix-Merk sagte.

                    es geht ums Bogenmaß

                    Die Blockly-Funktionen verwenden bzw. liefern Grad, müssen also umgerechnet werden (* Math.PI / 180).

                    @Felix-Merk sagte in Hilfe bei Blockly Berechnung (Formel):

                    Wert hoch 1,5?

                    Blockly_temp.JPG

                    Weshalb versuchst Du Blockly zu "vergewaltigen", wenn es in Javascript ganz einfach ist?

                    return t * Math.atan(0.151977 * Math.sqrt(rh + 8.313659)) + Math.atan(t + rh) - Math.atan(rh - 1.676331) + 0.00391838 * Math.pow(rh, 1.5) * Math.atan(0.023101 * rh) - 4.686035;
                    

                    <xml xmlns="https://developers.google.com/blockly/xml">
                     <variables>
                       <variable id="~aFm5k{$2?wI$XW=YnTP">t</variable>
                       <variable id="^n0#nhw9rfhv^H]ms-gl">rh</variable>
                       <variable id=";6~*#rXzT^;lw1zInB=Y">Tw</variable>
                     </variables>
                     <block type="procedures_defcustomreturn" id="$O*c54lA_?exlLWNe?aR" x="-138" y="12">
                       <mutation statements="false">
                         <arg name="t" varid="~aFm5k{$2?wI$XW=YnTP"></arg>
                         <arg name="rh" varid="^n0#nhw9rfhv^H]ms-gl"></arg>
                       </mutation>
                       <field name="NAME">Feuchtkugeltemperatur</field>
                       <field name="SCRIPT">cmV0dXJuIHQgKiBNYXRoLmF0YW4oMC4xNTE5NzcgKiBNYXRoLnNxcnQocmggKyA4LjMxMzY1OSkpICsgTWF0aC5hdGFuKHQgKyByaCkgLSBNYXRoLmF0YW4ocmggLSAxLjY3NjMzMSkgKyAwLjAwMzkxODM4ICogTWF0aC5wb3cocmgsIDEuNSkgKiBNYXRoLmF0YW4oMC4wMjMxMDEgKiByaCkgLSA0LjY4NjAzNTs=</field>
                       <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                     </block>
                     <block type="variables_set" id="@IDbA3X9DV/*,!z6KiJX" x="-313" y="67">
                       <field name="VAR" id=";6~*#rXzT^;lw1zInB=Y">Tw</field>
                       <value name="VALUE">
                         <block type="procedures_callcustomreturn" id="3#.?]O1qD*hI_2Ua;)*V" inline="false">
                           <mutation name="Feuchtkugeltemperatur">
                             <arg name="t"></arg>
                             <arg name="rh"></arg>
                           </mutation>
                           <value name="ARG0">
                             <block type="get_value" id="]jaM-ghvd;yd3By4AD?}">
                               <field name="ATTR">val</field>
                               <field name="OID">ID auswählen</field>
                             </block>
                           </value>
                           <value name="ARG1">
                             <block type="get_value" id="E)mYGrtq4F$*H.1ylE)^">
                               <field name="ATTR">val</field>
                               <field name="OID">ID auswählen</field>
                             </block>
                           </value>
                         </block>
                       </value>
                       <next>
                         <block type="debug" id="a[rx?_XPBCkl_cmFBrsU">
                           <field name="Severity">log</field>
                           <value name="TEXT">
                             <shadow type="text" id="0q7.k0x.q!T9G/Cwft:V">
                               <field name="TEXT">test</field>
                             </shadow>
                             <block type="math_rndfixed" id="4O2lFcRDfzM=wma1L9CG">
                               <field name="n">1</field>
                               <value name="x">
                                 <shadow type="math_number" id="aL81:vw~8|*`EtpvY1Td">
                                   <field name="NUM">3.1234</field>
                                 </shadow>
                                 <block type="variables_get" id="}Rd-qh}*Y*,Ry5Grz+Mq">
                                   <field name="VAR" id=";6~*#rXzT^;lw1zInB=Y">Tw</field>
                                 </block>
                               </value>
                             </block>
                           </value>
                         </block>
                       </next>
                     </block>
                    </xml>
                    

                    Blockly_temp.JPG

                    Felix Merk 1 Reply Last reply Reply Quote 0
                    • Felix Merk
                      Felix Merk @paul53 last edited by

                      @paul53
                      vielen Dank für deine Hilfe!

                      Ich bin absoluter Einsteiger auf dem Gebiet - mit JS kenn ich mich gar nicht aus!
                      Ziel wäre es die ermittelten Werte in ein erstellten Datenpunkt zu schreiben - kannst du mir da helfen?

                      Gruß
                      Felix

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @Felix Merk last edited by paul53

                        @Felix-Merk sagte:

                        ermittelten Werte in ein erstellten Datenpunkt zu schreiben

                        Blockly_temp.JPG

                        <xml xmlns="https://developers.google.com/blockly/xml">
                         <variables>
                           <variable id="~aFm5k{$2?wI$XW=YnTP">t</variable>
                           <variable id="^n0#nhw9rfhv^H]ms-gl">rh</variable>
                           <variable id=";6~*#rXzT^;lw1zInB=Y">Tw</variable>
                         </variables>
                         <block type="on_ext" id="WYu.?[F0%#ZB5B.vSWn8" x="-312" y="12">
                           <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation>
                           <field name="CONDITION">ne</field>
                           <field name="ACK_CONDITION"></field>
                           <value name="OID0">
                             <shadow type="field_oid" id="$v5+W({B;8:Z=T|*TFsu">
                               <field name="oid">default</field>
                             </shadow>
                           </value>
                           <value name="OID1">
                             <shadow type="field_oid" id="9AG`pOEu/3N[Z)}zAh{m">
                               <field name="oid">default</field>
                             </shadow>
                           </value>
                           <statement name="STATEMENT">
                             <block type="variables_set" id="@IDbA3X9DV/*,!z6KiJX">
                               <field name="VAR" id=";6~*#rXzT^;lw1zInB=Y">Tw</field>
                               <value name="VALUE">
                                 <block type="procedures_callcustomreturn" id="3#.?]O1qD*hI_2Ua;)*V" inline="false">
                                   <mutation name="Feuchtkugeltemperatur">
                                     <arg name="t"></arg>
                                     <arg name="rh"></arg>
                                   </mutation>
                                   <value name="ARG0">
                                     <block type="get_value" id="]jaM-ghvd;yd3By4AD?}">
                                       <field name="ATTR">val</field>
                                       <field name="OID">ID auswählen</field>
                                     </block>
                                   </value>
                                   <value name="ARG1">
                                     <block type="get_value" id="E)mYGrtq4F$*H.1ylE)^">
                                       <field name="ATTR">val</field>
                                       <field name="OID">ID auswählen</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                               <next>
                                 <block type="update" id="JkGBb[FL.NogHmAA$6)d">
                                   <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                   <field name="OID">Object ID</field>
                                   <field name="WITH_DELAY">FALSE</field>
                                   <value name="VALUE">
                                     <block type="math_rndfixed" id="4O2lFcRDfzM=wma1L9CG">
                                       <field name="n">1</field>
                                       <value name="x">
                                         <shadow type="math_number" id="aL81:vw~8|*`EtpvY1Td">
                                           <field name="NUM">3.1234</field>
                                         </shadow>
                                         <block type="variables_get" id="}Rd-qh}*Y*,Ry5Grz+Mq">
                                           <field name="VAR" id=";6~*#rXzT^;lw1zInB=Y">Tw</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                 </block>
                               </next>
                             </block>
                           </statement>
                         </block>
                         <block type="procedures_defcustomreturn" id="$O*c54lA_?exlLWNe?aR" x="-112" y="88">
                           <mutation statements="false">
                             <arg name="t" varid="~aFm5k{$2?wI$XW=YnTP"></arg>
                             <arg name="rh" varid="^n0#nhw9rfhv^H]ms-gl"></arg>
                           </mutation>
                           <field name="NAME">Feuchtkugeltemperatur</field>
                           <field name="SCRIPT">cmV0dXJuIHQgKiBNYXRoLmF0YW4oMC4xNTE5NzcgKiBNYXRoLnNxcnQocmggKyA4LjMxMzY1OSkpICsgTWF0aC5hdGFuKHQgKyByaCkgLSBNYXRoLmF0YW4ocmggLSAxLjY3NjMzMSkgKyAwLjAwMzkxODM4ICogTWF0aC5wb3cocmgsIDEuNSkgKiBNYXRoLmF0YW4oMC4wMjMxMDEgKiByaCkgLSA0LjY4NjAzNTs=</field>
                           <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                         </block>
                        </xml>
                        

                        Felix Merk 2 Replies Last reply Reply Quote 0
                        • Felix Merk
                          Felix Merk @paul53 last edited by

                          @paul53

                          VIELEN HERZLICHEN DANK! Ich werde das heute Abend gleich testen

                          1 Reply Last reply Reply Quote 0
                          • Felix Merk
                            Felix Merk @paul53 last edited by

                            @paul53
                            kannst du mir das bitte noch als Blockly exportieren?
                            Ich finde das Objekt "Falls Objekt" mit zwei "Objekt IDs" nicht.... 😞

                            1 Reply Last reply Reply Quote 0
                            • L
                              Linedancer last edited by

                              Einfach auf das Zahnrad im Falls Baustein klicken.

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              845
                              Online

                              31.8k
                              Users

                              80.0k
                              Topics

                              1.3m
                              Posts

                              4
                              13
                              1932
                              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