Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. lookup Table?

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    lookup Table?

    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      bernd33-1 last edited by

      @Cinimod, die Watt sind Datenpunkte von meinem Stromzähler. Die DAC müssten als Liste(?) oder Datenpunkte angelegt werden.

      @Armilar, das sieht nach Fleißarbeit aus aber das könnte eine Lösung sein. Werd ich morgen mal ausprobieren. Vielen Dank! 🙂

      Grüße, Bernd

      1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active last edited by mickym

        Ich finde diese Blockly einfach nur hölzern und unelegant. Aber hier mal eine Lösung mit Schleifen und lookup in der Liste.

        Du musst halt statt der Variablen Wert den Block in den Trigger einbauen und statt der Variable Wert, den Wert des Datenpunktes nehmen:

        4615e7ed-c436-476e-8b8c-014908c03554-image.png

        <xml xmlns="https://developers.google.com/blockly/xml">
         <variables>
           <variable id="Wqo5FE;MB;[3_)v8?6s5">DAC</variable>
           <variable id="JX,)Y-QS8ms|Sa5]2U]-">Watt</variable>
           <variable id="EHWEfLVEPv^We=lb@x_~">Wert</variable>
           <variable id="uH,[DIk81Sg+-D!;FeJr">zaehler</variable>
           <variable id="K^3+h^sIl+C[Db}~X/$,">i</variable>
           <variable id="gt!.a2yE1).:JuhAPBjk">lookup</variable>
         </variables>
         <block type="variables_set" id="I~lAf/@a%n1sMuHN%qiu" x="-662" y="-312">
           <field name="VAR" id="Wqo5FE;MB;[3_)v8?6s5">DAC</field>
           <value name="VALUE">
             <block type="lists_create_with" id="9{n|a2vgwCZ%`WV30b@e">
               <mutation items="8"></mutation>
               <value name="ADD0">
                 <block type="math_number" id="Y9`S2Lf3;Qt6/g]cblMu">
                   <field name="NUM">500</field>
                 </block>
               </value>
               <value name="ADD1">
                 <block type="math_number" id="A)6,%~Vo/hvkvS=?wD[]">
                   <field name="NUM">600</field>
                 </block>
               </value>
               <value name="ADD2">
                 <block type="math_number" id="sI{bJiPkhID$l#Z,R`H?">
                   <field name="NUM">700</field>
                 </block>
               </value>
               <value name="ADD3">
                 <block type="math_number" id="2GxbPfL[.78NV86SXZ^4">
                   <field name="NUM">800</field>
                 </block>
               </value>
               <value name="ADD4">
                 <block type="math_number" id="R_C{Bg-te].?rNrdqLC{">
                   <field name="NUM">900</field>
                 </block>
               </value>
               <value name="ADD5">
                 <block type="math_number" id="S.RR1/]073awX@s66Sm!">
                   <field name="NUM">1000</field>
                 </block>
               </value>
               <value name="ADD6">
                 <block type="math_number" id="Le;$v%Sgmv^BB?iP}1][">
                   <field name="NUM">2000</field>
                 </block>
               </value>
               <value name="ADD7">
                 <block type="math_number" id="1Bx|go|0w7;+kf#bJyoq">
                   <field name="NUM">2250</field>
                 </block>
               </value>
             </block>
           </value>
         </block>
         <block type="variables_set" id="DAz42x!CO*{xwuFMW~[{" x="-262" y="-312">
           <field name="VAR" id="JX,)Y-QS8ms|Sa5]2U]-">Watt</field>
           <value name="VALUE">
             <block type="lists_create_with" id="kV06SmksNrRoHp+L#QJ6">
               <mutation items="8"></mutation>
               <value name="ADD0">
                 <block type="math_number" id="`W=0`9H=sPT0Uy/w^xh0">
                   <field name="NUM">53</field>
                 </block>
               </value>
               <value name="ADD1">
                 <block type="math_number" id="|=4:apyd5jCIk(3z7g=)">
                   <field name="NUM">56</field>
                 </block>
               </value>
               <value name="ADD2">
                 <block type="math_number" id="Z?vj=7r+4Rpi{8gqb$3.">
                   <field name="NUM">61</field>
                 </block>
               </value>
               <value name="ADD3">
                 <block type="math_number" id="BeuVquD+f]{[swM!v}X4">
                   <field name="NUM">67</field>
                 </block>
               </value>
               <value name="ADD4">
                 <block type="math_number" id="P7LJrYzs|/v044(02BhZ">
                   <field name="NUM">72</field>
                 </block>
               </value>
               <value name="ADD5">
                 <block type="math_number" id="VfKw0`p$WT}N8e1m$D??">
                   <field name="NUM">78</field>
                 </block>
               </value>
               <value name="ADD6">
                 <block type="math_number" id="@eHL:1lL0|:nC0r+@hpu">
                   <field name="NUM">160</field>
                 </block>
               </value>
               <value name="ADD7">
                 <block type="math_number" id="b8u2`}%2xa3AUModg+uq">
                   <field name="NUM">167</field>
                 </block>
               </value>
             </block>
           </value>
         </block>
         <block type="variables_set" id="0UY?$#sZrK?gDhCGHh@b" x="-662" y="-62">
           <field name="VAR" id="EHWEfLVEPv^We=lb@x_~">Wert</field>
           <value name="VALUE">
             <block type="math_number" id="`6qKzr]f+V+clg0bomNX">
               <field name="NUM">160</field>
             </block>
           </value>
           <next>
             <block type="variables_set" id="{FbWt*L[#YPaYiA|y,7K">
               <field name="VAR" id="uH,[DIk81Sg+-D!;FeJr">zaehler</field>
               <value name="VALUE">
                 <block type="math_number" id="%,yfkhynsI(Md$!E/^%E">
                   <field name="NUM">0</field>
                 </block>
               </value>
               <next>
                 <block type="controls_forEach" id="QOgN*AP%mZvN+CLy5/Mq">
                   <field name="VAR" id="K^3+h^sIl+C[Db}~X/$,">i</field>
                   <value name="LIST">
                     <block type="variables_get" id="N3gpMHA[=DSIX5]qe+xK">
                       <field name="VAR" id="JX,)Y-QS8ms|Sa5]2U]-">Watt</field>
                     </block>
                   </value>
                   <statement name="DO">
                     <block type="math_change" id="~ko_`*sq_B]8g$}$}mg)">
                       <field name="VAR" id="uH,[DIk81Sg+-D!;FeJr">zaehler</field>
                       <value name="DELTA">
                         <shadow type="math_number" id="j8~ZY~P#YL`{?6K=/5z}">
                           <field name="NUM">1</field>
                         </shadow>
                       </value>
                       <next>
                         <block type="controls_if" id="]gY~GC[ic*#k|Zzhvr),">
                           <value name="IF0">
                             <block type="logic_compare" id="`qSDFv-Qp3ANVvFUESkg">
                               <field name="OP">LT</field>
                               <value name="A">
                                 <block type="variables_get" id="x*]q2,$_,sSL!`je7`gr">
                                   <field name="VAR" id="K^3+h^sIl+C[Db}~X/$,">i</field>
                                 </block>
                               </value>
                               <value name="B">
                                 <block type="variables_get" id="vv;$=Ovd84*QPgJ=;4x+">
                                   <field name="VAR" id="EHWEfLVEPv^We=lb@x_~">Wert</field>
                                 </block>
                               </value>
                             </block>
                           </value>
                           <statement name="DO0">
                             <block type="variables_set" id="_{n?UTE;f_Onwl*)FCy=">
                               <field name="VAR" id="gt!.a2yE1).:JuhAPBjk">lookup</field>
                               <value name="VALUE">
                                 <block type="lists_getIndex" id="RiOjk`BO8PxK=AL:o$=Q">
                                   <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="0@#GFoVRV}F5c2{CIee9">
                                       <field name="VAR" id="Wqo5FE;MB;[3_)v8?6s5">DAC</field>
                                     </block>
                                   </value>
                                   <value name="AT">
                                     <block type="variables_get" id="U/e{D`I9D,hV6X5nz;F?">
                                       <field name="VAR" id="uH,[DIk81Sg+-D!;FeJr">zaehler</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                             </block>
                           </statement>
                         </block>
                       </next>
                     </block>
                   </statement>
                   <next>
                     <block type="controls_if" id="wt@=gizkDR]}}hp_lCM:">
                       <value name="IF0">
                         <block type="logic_negate" id="!=85H_~g!.|myUFq?F:Q">
                           <value name="BOOL">
                             <block type="variables_get" id="Pov!]Ze.tfIksZ8V7dA:">
                               <field name="VAR" id="gt!.a2yE1).:JuhAPBjk">lookup</field>
                             </block>
                           </value>
                         </block>
                       </value>
                       <statement name="DO0">
                         <block type="variables_set" id="2n+VCGPHl|Tf8|=Upy}.">
                           <field name="VAR" id="gt!.a2yE1).:JuhAPBjk">lookup</field>
                           <value name="VALUE">
                             <block type="lists_getIndex" id="1C?.}d.TvVnUxptUtxQp">
                               <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=",]dgU;;hB#.z2#g%YXq*">
                                   <field name="VAR" id="Wqo5FE;MB;[3_)v8?6s5">DAC</field>
                                 </block>
                               </value>
                               <value name="AT">
                                 <block type="math_number" id="`q{wq`i-LCQt|%9`#17M">
                                   <field name="NUM">1</field>
                                 </block>
                               </value>
                             </block>
                           </value>
                         </block>
                       </statement>
                       <next>
                         <block type="debug" id="y`T*JH-{y#D@@ej|}tnr">
                           <field name="Severity">log</field>
                           <value name="TEXT">
                             <shadow type="text">
                               <field name="TEXT">test</field>
                             </shadow>
                             <block type="variables_get" id="0j,qfuN{Tuo}aU]C2%3J">
                               <field name="VAR" id="gt!.a2yE1).:JuhAPBjk">lookup</field>
                             </block>
                           </value>
                         </block>
                       </next>
                     </block>
                   </next>
                 </block>
               </next>
             </block>
           </next>
         </block>
        </xml>
        

        Du musst eine Wattliste und DAC Liste haben. Die Wattliste dient dazu den aktuellen Wert einzuordnen und die Position in der DAC Liste zu ermitteln.

        Statt dieser unförmigen Blöcke um Listen mit Zahlen zu erzeugen, kann man die JSON Konvertierung misbrauchen, dann ist die Listenerstellung etwas besser lesbar bzw. eben nicht so unförmig:

        73f9811c-1769-49f8-991a-12d659ea85fd-image.png

        ============================================================================================

        So könnte dann die finale Lösung aussehen - muss halt noch die Objekt-ID rein.

        7ad6d09e-3754-42be-b2f2-72930e1b8ddd-image.png

        <xml xmlns="https://developers.google.com/blockly/xml">
         <variables>
           <variable id="JX,)Y-QS8ms|Sa5]2U]-">Watt</variable>
           <variable id="Wqo5FE;MB;[3_)v8?6s5">DAC</variable>
           <variable id="uH,[DIk81Sg+-D!;FeJr">zaehler</variable>
           <variable id="K^3+h^sIl+C[Db}~X/$,">i</variable>
           <variable id="gt!.a2yE1).:JuhAPBjk">lookup</variable>
         </variables>
         <block type="variables_set" id="z-DY]fgjEI5=yQ5zk|ui" x="-1088" y="-238">
           <field name="VAR" id="JX,)Y-QS8ms|Sa5]2U]-">Watt</field>
           <value name="VALUE">
             <block type="convert_json2object" id="yK}nq+giw?[4fx^_n$F?">
               <value name="VALUE">
                 <block type="text" id="p9u+h}rFSK,q$$n=+~[]">
                   <field name="TEXT">[53,56,61,67,72,78,160,167]</field>
                 </block>
               </value>
             </block>
           </value>
           <next>
             <block type="variables_set" id="7po4K-U#{]MJ~l?.4~K`">
               <field name="VAR" id="Wqo5FE;MB;[3_)v8?6s5">DAC</field>
               <value name="VALUE">
                 <block type="convert_json2object" id=":SSI7{vNx=7Q^OL??:+V">
                   <value name="VALUE">
                     <block type="text" id="zleUb+!tXL.qb-!Zej%B">
                       <field name="TEXT">[500,600,700,800,900,1000,2000,2250]</field>
                     </block>
                   </value>
                 </block>
               </value>
               <next>
                 <block type="on" id="dDukh3!MtZyt#N,l.P!Y">
                   <field name="OID">Object ID</field>
                   <field name="CONDITION">ne</field>
                   <field name="ACK_CONDITION"></field>
                   <statement name="STATEMENT">
                     <block type="variables_set" id="{FbWt*L[#YPaYiA|y,7K">
                       <field name="VAR" id="uH,[DIk81Sg+-D!;FeJr">zaehler</field>
                       <value name="VALUE">
                         <block type="math_number" id="%,yfkhynsI(Md$!E/^%E">
                           <field name="NUM">0</field>
                         </block>
                       </value>
                       <next>
                         <block type="controls_forEach" id="QOgN*AP%mZvN+CLy5/Mq">
                           <field name="VAR" id="K^3+h^sIl+C[Db}~X/$,">i</field>
                           <value name="LIST">
                             <block type="variables_get" id="N3gpMHA[=DSIX5]qe+xK">
                               <field name="VAR" id="JX,)Y-QS8ms|Sa5]2U]-">Watt</field>
                             </block>
                           </value>
                           <statement name="DO">
                             <block type="math_change" id="~ko_`*sq_B]8g$}$}mg)">
                               <field name="VAR" id="uH,[DIk81Sg+-D!;FeJr">zaehler</field>
                               <value name="DELTA">
                                 <shadow type="math_number" id="j8~ZY~P#YL`{?6K=/5z}">
                                   <field name="NUM">1</field>
                                 </shadow>
                               </value>
                               <next>
                                 <block type="controls_if" id="]gY~GC[ic*#k|Zzhvr),">
                                   <value name="IF0">
                                     <block type="logic_compare" id="`qSDFv-Qp3ANVvFUESkg">
                                       <field name="OP">LT</field>
                                       <value name="A">
                                         <block type="variables_get" id="x*]q2,$_,sSL!`je7`gr">
                                           <field name="VAR" id="K^3+h^sIl+C[Db}~X/$,">i</field>
                                         </block>
                                       </value>
                                       <value name="B">
                                         <block type="on_source" id="2epWN7;J%ruyg+w;S*=0">
                                           <field name="ATTR">state.val</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                   <statement name="DO0">
                                     <block type="variables_set" id="_{n?UTE;f_Onwl*)FCy=">
                                       <field name="VAR" id="gt!.a2yE1).:JuhAPBjk">lookup</field>
                                       <value name="VALUE">
                                         <block type="lists_getIndex" id="RiOjk`BO8PxK=AL:o$=Q">
                                           <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="0@#GFoVRV}F5c2{CIee9">
                                               <field name="VAR" id="Wqo5FE;MB;[3_)v8?6s5">DAC</field>
                                             </block>
                                           </value>
                                           <value name="AT">
                                             <block type="variables_get" id="U/e{D`I9D,hV6X5nz;F?">
                                               <field name="VAR" id="uH,[DIk81Sg+-D!;FeJr">zaehler</field>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                     </block>
                                   </statement>
                                 </block>
                               </next>
                             </block>
                           </statement>
                           <next>
                             <block type="controls_if" id="wt@=gizkDR]}}hp_lCM:">
                               <value name="IF0">
                                 <block type="logic_negate" id="!=85H_~g!.|myUFq?F:Q">
                                   <value name="BOOL">
                                     <block type="variables_get" id="Pov!]Ze.tfIksZ8V7dA:">
                                       <field name="VAR" id="gt!.a2yE1).:JuhAPBjk">lookup</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                               <statement name="DO0">
                                 <block type="variables_set" id="2n+VCGPHl|Tf8|=Upy}.">
                                   <field name="VAR" id="gt!.a2yE1).:JuhAPBjk">lookup</field>
                                   <value name="VALUE">
                                     <block type="lists_getIndex" id="1C?.}d.TvVnUxptUtxQp">
                                       <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=",]dgU;;hB#.z2#g%YXq*">
                                           <field name="VAR" id="Wqo5FE;MB;[3_)v8?6s5">DAC</field>
                                         </block>
                                       </value>
                                       <value name="AT">
                                         <block type="math_number" id="`q{wq`i-LCQt|%9`#17M">
                                           <field name="NUM">1</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                 </block>
                               </statement>
                               <next>
                                 <block type="comment" id="ZQ*hkT[GjenDOP+tus*3">
                                   <field name="COMMENT">lookup enthält Ergebnis zur Weiterverarbeitung</field>
                                   <next>
                                     <block type="debug" id="y`T*JH-{y#D@@ej|}tnr">
                                       <field name="Severity">log</field>
                                       <value name="TEXT">
                                         <shadow type="text">
                                           <field name="TEXT">test</field>
                                         </shadow>
                                         <block type="variables_get" id="0j,qfuN{Tuo}aU]C2%3J">
                                           <field name="VAR" id="gt!.a2yE1).:JuhAPBjk">lookup</field>
                                         </block>
                                       </value>
                                     </block>
                                   </next>
                                 </block>
                               </next>
                             </block>
                           </next>
                         </block>
                       </next>
                     </block>
                   </statement>
                 </block>
               </next>
             </block>
           </next>
         </block>
        </xml>
        

        Aber ich bin kein Blockly- Spezialist - vielleicht gibts elegantere Lösungen - aber das ist mein Ergebnis nach Ausprobieren. 😉

        Codierknecht 1 Reply Last reply Reply Quote 0
        • Codierknecht
          Codierknecht Developer Most Active @mickym last edited by

          @mickym
          Kleiner "Schönheitsaspekt":
          Bei einer Schleifenvariable i würde jeder Entwickler auf Anhieb einen Index erwarten.
          Hier enthält iaber den Wert und der Index wird in zaehlerhochgezählt.
          Ich persönlich würde hier idurch z.B. value ersetzen.

          Ansonsten finde ich Dein Konstrukt auch deutlich eleganter als dutzende von WENN-SONST

          Armilar 1 Reply Last reply Reply Quote 0
          • Armilar
            Armilar Most Active Forum Testing @Codierknecht last edited by

            @codierknecht

            Ich hatte die Lösung von @mickym ebenfalls im Auge, es soll aber nicht ein Wert aus der Tabelle genommen werden, sondern anscheinend eine Näherung zum nächsten DAC erfolgen. Somit wäre die Lösung mit der Schleife am Ende noch nicht fertig. Anhand welcher Werte soll denn jetzt die Näherung auf die vollen hunderter-Schritte erfolgen?

            Wenn man sich die Tabelle ansieht, entdeckt man sehr schnell, dass Watt und DAC linear in einer Beziehung stehen. Somit wäre statt der Schleife auch ein einfacher Dreisatz möglich. Dann müsste aber ebenfalls eine Näherung (Rundung) auf den nächsten DAC erfolgen.

            Codierknecht 1 Reply Last reply Reply Quote 0
            • Codierknecht
              Codierknecht Developer Most Active @Armilar last edited by Codierknecht

              @armilar
              er prüft "Watt" ja auf "<" und nimmt dann den Wert aus "DAC".
              Wenn der nächste dann größer oder gleich ist, bleibt der zuletzt gelesene korrespondierende Wert und wird am Ende übergeben.
              OK, man könnte dann auch gleich die Schleife abbrechen, aber bei so wenigen Werten fällt da die unnötige Laufzeit wohl kaum ins Gewicht.

              Aber das mit dem Dreisatz klingt interessant. Gibt's vielleicht sogar eine Formel, mit der man anhand von "W" den Wert für "DAC" berechnen kann?
              Schlagt mich, aber ich habe keine Ahnung was "DAC" sein soll 😉

              Armilar 1 Reply Last reply Reply Quote 0
              • Armilar
                Armilar Most Active Forum Testing @Codierknecht last edited by Armilar

                @codierknecht sagte in lookup Table?:

                Schlagt mich, aber ich habe keine Ahnung was "DAC" sein soll

                Ich auch nicht. Wahrscheinlich ein Regler mit festen Werten, kann es aber auch nicht beantworten.

                Wenn du die den höchsten Wert heraussuchst, dann dürfe DAC = Watt * 2250/167 einen ähnliches Ergebis mit einer Zeile Code und ohne Listen und Schleifen liefern. Die Frage ist, ob der DAC auch abweichend von 50er Schritten (1er) erfolgen darf?

                1 Reply Last reply Reply Quote 0
                • B
                  bernd33-1 last edited by

                  Jungs, Ihr seid so gut 👏 😊 Vielen Dank erst mal für euren Support!

                  Also, die Tabelle ist eigentlich deutlich länger und leider nicht linear.
                  fdb8528d-65ee-4790-a53c-04479c4b0673-image.png

                  Hintergrund: Der IOBroker kennt meinen aktuellen Stromverbrauch von meinem Stromzähler (Datenpunkt vorhanden). Nun soll mein Solar Wechselrichter (Sun gti 1000) immer nur so viel Strom in mein Hausnetz einspeisen, wie ich gerade verbrauche. Leider kann ich meinem Wechselrichter nicht sagen "Speise jetzt 153 Watt ein" sondern ich kann ihm nur einen DAC-Wert übergeben. Daher die Tabelle. Leider ist das ganze auch nicht linear 🙄

                  Obiger Screenshot zeigt die Zusammenhänge. Gerade im unteren Bereich ist keine Linearität gegeben und Nachts hält man sich genau in diesem Bereich auf. Dieser Bereich muss also berücksichtigt werden.

                  Ich werde eure Lösungen einfach mal umsetzen und schauen, was für mich am besten passt.

                  Und nochmal: Vielen Dank!

                  Grüße, Bernd

                  Codierknecht Armilar 3 Replies Last reply Reply Quote 0
                  • Codierknecht
                    Codierknecht Developer Most Active @bernd33-1 last edited by Codierknecht

                    @bernd33-1 sagte in lookup Table?:

                    Also, die Tabelle ist eigentlich deutlich länger und leider nicht linear.

                    Dann würde ich bei der JSON-Lösung nach einem gefundenen Wert (also falls dann ein Wert gefunden wurde der nicht < ist) auf jeden Fall die Schleife abbrechen.
                    Muss ja nicht länger laufen als nötig 😉

                    B 1 Reply Last reply Reply Quote 0
                    • Armilar
                      Armilar Most Active Forum Testing @bernd33-1 last edited by Armilar

                      @bernd33-1

                      Kann dir Excel die Funktion dazu ausgeben? Irgendwie im Grafen mit rechtsklick und hier und da mal klicken... Habe es gerade nicht im Kopf, aber ich habe es auch schon für den ein oder anderen Sensor so gemacht...

                      Dann wärst du ebenfalls mit einem Einzeiler fertig.

                      EDIT:
                      sieht dann etwas so aus:

                      6ff840eb-cb77-4485-8328-474d1c12c0c1-image.png

                      1 Reply Last reply Reply Quote 0
                      • B
                        bernd33-1 @Codierknecht last edited by

                        @codierknecht Jup, ich werde (wenn mir möglich 😉 ) diese Regelung so schnell wie möglich halten. Weil, die wird dann pro Sekunde einmal läuft. Ich hab zwar keine Ahnung, wie schnell der IOB auf einem RasPi 4 läuft aber muss ja nicht sein, dass der IOB ins schwitzen kommt.

                        Grüße, Bernd

                        1 Reply Last reply Reply Quote 0
                        • Codierknecht
                          Codierknecht Developer Most Active @bernd33-1 last edited by

                          @bernd33-1 sagte in lookup Table?:

                          Obiger Screenshot zeigt die Zusammenhänge. Gerade im unteren Bereich ist keine Linearität gegeben und Nachts hält man sich genau in diesem Bereich auf. Dieser Bereich muss also berücksichtigt werden.

                          Dann könnte man das vielleicht auch kombinieren:
                          Unter einem bestimmten Grenzwert per Schleife und im linearen Bereich einfach berechnen.
                          Oder einfach mal fünf gerade sein lassen und die ggf. vorhandenen Verluste akzeptieren. Da hängt ja nicht gerade ein Menschenleben von ab o.ä.

                          B 1 Reply Last reply Reply Quote 0
                          • B
                            bernd33-1 @Codierknecht last edited by

                            @codierknecht said in lookup Table?:

                            @bernd33-1 sagte in lookup Table?:

                            Obiger Screenshot zeigt die Zusammenhänge. Gerade im unteren Bereich ist keine Linearität gegeben und Nachts hält man sich genau in diesem Bereich auf. Dieser Bereich muss also berücksichtigt werden.

                            Dann könnte man das vielleicht auch kombinieren:
                            Unter einem bestimmten Grenzwert per Schleife und im linearen Bereich einfach berechnen.
                            Oder einfach mal fünf gerade sein lassen und die ggf. vorhandenen Verluste akzeptieren. Da hängt ja nicht gerade ein Menschenleben von ab o.ä.

                            Klar, wenn mal ein paar Watt raus gehen isses kein Drama.

                            Ok, diese Formel hat Excel ausgegeben: cb029e1f-44a8-4384-9904-6a177379cd55-image.png
                            y = 4E-19x5 - 3E-14x4 + 1E-09x3 - 1E-05x2 + 0,0984x + 0,2186

                            Man sieht die blau-gepunktete line fast nicht, was m. E. eine sehr gute Annäherung ist.
                            939b41e2-e0ca-40be-8a6f-5c41f684ff5a-image.png

                            Ähm... und damit kann man jetzt einen Einzeiler machen? 🤗

                            Grüße, Bernd

                            Armilar paul53 2 Replies Last reply Reply Quote 0
                            • Armilar
                              Armilar Most Active Forum Testing @bernd33-1 last edited by Armilar

                              @bernd33-1

                              Die erste Antwort ist ja - kann man. Mit dem Matheblock (E = exponential).

                              09f96bac-b1e7-426c-8b41-6edf2a9a7375-image.png

                              Etwa so. Habe mal den ersten Term (ungetestet) abgebildet.

                              B 2 Replies Last reply Reply Quote 0
                              • B
                                bernd33-1 @Armilar last edited by

                                @armilar said in lookup Table?:

                                @bernd33-1

                                Die erste Antwort ist ja - kann man. Mit dem Matheblock (E = exponential).

                                09f96bac-b1e7-426c-8b41-6edf2a9a7375-image.png

                                Etwa so. Habe mal den ersten Term (ungetestet) abgebildet.

                                Vielen Dank 😳 🤗 👍 werde ich heute Abend dann mal einbauen.

                                Das Forum hier und die Leute sind einfach geil 😁

                                1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @bernd33-1 last edited by

                                  @bernd33-1 sagte: y = 4E-19x5 - 3E-14x4 + 1E-09x3 - 1E-05x2 + 0,0984x + 0,2186

                                  Die 4. und 5. Potenz kann man sicherlich vernachlässigen.

                                  B 1 Reply Last reply Reply Quote 0
                                  • B
                                    bernd33-1 @paul53 last edited by bernd33-1

                                    @paul53 Gerade im unteren Bereich schmiegt sich die Funktion aber noch etwas besser an die Messwerte an, wenn ich die 4. und 5. dazu nehme.

                                    Ich werde es testen. Sollte der RasPi 4 überlastet werden, kann ich das ja wieder reduzieren 😉

                                    1 Reply Last reply Reply Quote 0
                                    • mickym
                                      mickym Most Active last edited by

                                      Wie gesagt ich mag kein Blockly - das war nur mal ein Versuch. Wenn man das mit einer mathematischen Funktion abbilden kann, ist das natürlich sicher am Besten, aber das ging halt aus dem ursprünglichen Posting nicht hervor, sodass ich davon ausgegangen bin, dass die Schritte willkürlich sind.

                                      @Codierknecht
                                      Ja das mit dem i als Wert anstelle des Index ist blöd (aber war von blockly so vorgegeben, da dachte ich dass Blockly Fans daran gewöhnt sind)

                                      Ich wusste erst nicht, wie man in Blockly Schleifen abbricht - aber habs gefunden:

                                      93bb2592-e199-4d49-8d6d-751fd8eeef26-image.png

                                      Aber - hat sich ja inzwischen erledigt, da das ganze nun mathematisch gelöst wird.

                                      War wie gesagt nur mal ein kleiner Ausflug von mir in die Blockly Welt. 😉

                                      Codierknecht 1 Reply Last reply Reply Quote 0
                                      • Codierknecht
                                        Codierknecht Developer Most Active @mickym last edited by

                                        Mögen tu ich das auch nicht. Alleine die Eindeutschung ist mir ein Graus.
                                        Aber da ich JS nicht so runterschreibe wie andere Sprachen, ist das in der Regel der einfachste Weg.

                                        @mickym sagte in lookup Table?:

                                        das mit dem i als Wert anstelle des Index ist blöd (aber war von blockly so vorgegeben, da dachte ich dass Blockly Fans daran gewöhnt sind)

                                        Man assoziiert halt damit auf den ersten Blick eine Laufvariable ... funktionieren tut's ja trotzdem

                                        Aber - hat sich ja inzwischen erledigt, da das ganze nun mathematisch gelöst wird.

                                        Gut, denn in dem Blockly wird ja jetzt bereits beim ersten Treffer abgebrochen 😉
                                        Könnte man umgehen indem man die Listen andersrum aufsetzt.

                                        Egal - wenn's mathematisch zu lösen ist: Um so besser.
                                        Ich würde die Berechnung in eine Funktion mit sprechendem Namen auslagern. Liest sich dann am besten.
                                        Und in der Funktion entsprechend dokumentieren WARUM das so berechnet wird. Das weiß sonst nach kurzer Zeit kein Mensch mehr 😉

                                        1 Reply Last reply Reply Quote 0
                                        • B
                                          bernd33-1 @Armilar last edited by

                                          @armilar said in lookup Table?:

                                          @bernd33-1

                                          Die erste Antwort ist ja - kann man. Mit dem Matheblock (E = exponential).

                                          09f96bac-b1e7-426c-8b41-6edf2a9a7375-image.png

                                          Etwa so. Habe mal den ersten Term (ungetestet) abgebildet.

                                          Ähm...sorry... ich versuche das gerade zusammen zu klicken und sehe da ganz innen drin in deinem Beispiel:

                                          ..... WATT x e^5 .....

                                          In der Excelformel steht aber glaube ich nur:
                                          .... WATT ^5 ....

                                          oder? Wenn ja, wie kann ich in Blockly z.B. 3^6 formulieren? Ich such mir da einen Wolf.... hat jemand einen Tipp?

                                          B 1 Reply Last reply Reply Quote 0
                                          • B
                                            bernd33-1 @bernd33-1 last edited by

                                            @bernd33-1 ok... ich hab die Potenz gefunden... wie blind kann man sein 🤦 🙄

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            882
                                            Online

                                            32.0k
                                            Users

                                            80.5k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            34
                                            1519
                                            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