Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. lookup Table?

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

lookup Table?

Geplant Angeheftet Gesperrt Verschoben Blockly
34 Beiträge 6 Kommentatoren 2.6k Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • B Offline
    B Offline
    bernd33-1
    schrieb am zuletzt editiert von bernd33-1
    #1

    Hi zusammen,

    iwi finde ich keinen Lösungsansatz für mein Problem. Also, ich habe eine Tabelle mit 2 Spalten:

    DAC Watt
    500 53
    600 56
    700 61
    800 67
    900 72
    1000 78
    2000 160
    2250 167

    Die Spalte Watt bekomme ich von meinem Stromzähler. Nun möchte ich den am besten dazu passenden DAC Wert aus der Tabelle erhalten.

    Beispiel: Ich bekomme 78 Watt vom Zähler und dann soll mir ein Script aus der spalte DAC1000 dazu ausspucken. Ich bekomme vom Zähler 68 Watt und dann soll das Script 800 aus der Spalte DAC ausspucken.

    Leider brauche ich dann nicht genau den korrespondierenden Wert sondern den nächst kleineren Wert. Also wenn der Zähler 160 Watt meldet, dann soll aus der DAC Spalte der Wert 1000 kommen.

    Leider habe ich dazu überhaupt keinen Ansatz, wie ich das in Blockly realisieren könnte. Vielleicht hat da jemand eine Idee? Evtl. auch ein Java-Script?

    Wäre super :-) Grüße, Bernd

    CinimodC ArmilarA 2 Antworten Letzte Antwort
    0
    • B bernd33-1

      Hi zusammen,

      iwi finde ich keinen Lösungsansatz für mein Problem. Also, ich habe eine Tabelle mit 2 Spalten:

      DAC Watt
      500 53
      600 56
      700 61
      800 67
      900 72
      1000 78
      2000 160
      2250 167

      Die Spalte Watt bekomme ich von meinem Stromzähler. Nun möchte ich den am besten dazu passenden DAC Wert aus der Tabelle erhalten.

      Beispiel: Ich bekomme 78 Watt vom Zähler und dann soll mir ein Script aus der spalte DAC1000 dazu ausspucken. Ich bekomme vom Zähler 68 Watt und dann soll das Script 800 aus der Spalte DAC ausspucken.

      Leider brauche ich dann nicht genau den korrespondierenden Wert sondern den nächst kleineren Wert. Also wenn der Zähler 160 Watt meldet, dann soll aus der DAC Spalte der Wert 1000 kommen.

      Leider habe ich dazu überhaupt keinen Ansatz, wie ich das in Blockly realisieren könnte. Vielleicht hat da jemand eine Idee? Evtl. auch ein Java-Script?

      Wäre super :-) Grüße, Bernd

      CinimodC Offline
      CinimodC Offline
      Cinimod
      Most Active
      schrieb am zuletzt editiert von
      #2

      @bernd33-1

      Hast du diese Daten denn nur als Tabelle, oder existieren Datenpunkte die man nutzen kann zur Auswertung?
      Also explizit meine ich natürlich "watt".

      Und das Ergebnis muss wieder in einer Tabelle stehen ? Oder kann die Ausgabe ein Datenpunkt sein den du einfach mit History verfolgst ?

      Synology DS918+, Fritzbox 6690 Cable, #Docker #Blockly #Vis2 #Deconz #Tasmota

      1 Antwort Letzte Antwort
      0
      • B bernd33-1

        Hi zusammen,

        iwi finde ich keinen Lösungsansatz für mein Problem. Also, ich habe eine Tabelle mit 2 Spalten:

        DAC Watt
        500 53
        600 56
        700 61
        800 67
        900 72
        1000 78
        2000 160
        2250 167

        Die Spalte Watt bekomme ich von meinem Stromzähler. Nun möchte ich den am besten dazu passenden DAC Wert aus der Tabelle erhalten.

        Beispiel: Ich bekomme 78 Watt vom Zähler und dann soll mir ein Script aus der spalte DAC1000 dazu ausspucken. Ich bekomme vom Zähler 68 Watt und dann soll das Script 800 aus der Spalte DAC ausspucken.

        Leider brauche ich dann nicht genau den korrespondierenden Wert sondern den nächst kleineren Wert. Also wenn der Zähler 160 Watt meldet, dann soll aus der DAC Spalte der Wert 1000 kommen.

        Leider habe ich dazu überhaupt keinen Ansatz, wie ich das in Blockly realisieren könnte. Vielleicht hat da jemand eine Idee? Evtl. auch ein Java-Script?

        Wäre super :-) Grüße, Bernd

        ArmilarA Offline
        ArmilarA Offline
        Armilar
        Most Active Forum Testing
        schrieb am zuletzt editiert von Armilar
        #3

        @bernd33-1

        So etwa. Die Vergleiche einfach bis 2250 weiter behandeln

        f92820c2-5911-4037-89b2-7d38b7e3db68-image.png

        Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
        https://github.com/joBr99/nspanel-lovelace-ui/wiki

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

        1 Antwort Letzte Antwort
        0
        • B Offline
          B Offline
          bernd33-1
          schrieb am zuletzt editiert von
          #4

          @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 Antwort Letzte Antwort
          0
          • mickymM Online
            mickymM Online
            mickym
            Most Active
            schrieb am zuletzt editiert von mickym
            #5

            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. ;)

            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

            CodierknechtC 1 Antwort Letzte Antwort
            0
            • mickymM 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. ;)

              CodierknechtC Online
              CodierknechtC Online
              Codierknecht
              Developer Most Active
              schrieb am zuletzt editiert von
              #6

              @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

              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

              Proxmox 9.1.1 LXC|8 GB|Core i7-6700
              HmIP|ZigBee|Tasmota|Unifi
              Zabbix Certified Specialist
              Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

              ArmilarA 1 Antwort Letzte Antwort
              0
              • CodierknechtC Codierknecht

                @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

                ArmilarA Offline
                ArmilarA Offline
                Armilar
                Most Active Forum Testing
                schrieb am zuletzt editiert von
                #7

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

                Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                https://github.com/joBr99/nspanel-lovelace-ui/wiki

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

                CodierknechtC 1 Antwort Letzte Antwort
                0
                • ArmilarA Armilar

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

                  CodierknechtC Online
                  CodierknechtC Online
                  Codierknecht
                  Developer Most Active
                  schrieb am zuletzt editiert von Codierknecht
                  #8

                  @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 ;-)

                  "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                  Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                  HmIP|ZigBee|Tasmota|Unifi
                  Zabbix Certified Specialist
                  Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                  ArmilarA 1 Antwort Letzte Antwort
                  0
                  • CodierknechtC 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 ;-)

                    ArmilarA Offline
                    ArmilarA Offline
                    Armilar
                    Most Active Forum Testing
                    schrieb am zuletzt editiert von Armilar
                    #9

                    @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?

                    Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                    https://github.com/joBr99/nspanel-lovelace-ui/wiki

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

                    1 Antwort Letzte Antwort
                    0
                    • B Offline
                      B Offline
                      bernd33-1
                      schrieb am zuletzt editiert von
                      #10

                      Jungs, Ihr seid so gut :clap: :blush: 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 :face_with_rolling_eyes:

                      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

                      CodierknechtC ArmilarA 3 Antworten Letzte Antwort
                      0
                      • B bernd33-1

                        Jungs, Ihr seid so gut :clap: :blush: 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 :face_with_rolling_eyes:

                        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

                        CodierknechtC Online
                        CodierknechtC Online
                        Codierknecht
                        Developer Most Active
                        schrieb am zuletzt editiert von Codierknecht
                        #11

                        @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 ;-)

                        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                        Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                        HmIP|ZigBee|Tasmota|Unifi
                        Zabbix Certified Specialist
                        Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                        B 1 Antwort Letzte Antwort
                        0
                        • B bernd33-1

                          Jungs, Ihr seid so gut :clap: :blush: 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 :face_with_rolling_eyes:

                          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

                          ArmilarA Offline
                          ArmilarA Offline
                          Armilar
                          Most Active Forum Testing
                          schrieb am zuletzt editiert von Armilar
                          #12

                          @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

                          Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                          https://github.com/joBr99/nspanel-lovelace-ui/wiki

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

                          1 Antwort Letzte Antwort
                          0
                          • CodierknechtC 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 Offline
                            B Offline
                            bernd33-1
                            schrieb am zuletzt editiert von
                            #13

                            @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 Antwort Letzte Antwort
                            0
                            • B bernd33-1

                              Jungs, Ihr seid so gut :clap: :blush: 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 :face_with_rolling_eyes:

                              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

                              CodierknechtC Online
                              CodierknechtC Online
                              Codierknecht
                              Developer Most Active
                              schrieb am zuletzt editiert von
                              #14

                              @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.ä.

                              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                              Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                              HmIP|ZigBee|Tasmota|Unifi
                              Zabbix Certified Specialist
                              Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                              B 1 Antwort Letzte Antwort
                              0
                              • CodierknechtC Codierknecht

                                @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 Offline
                                B Offline
                                bernd33-1
                                schrieb am zuletzt editiert von
                                #15

                                @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? :hugging_face:

                                Grüße, Bernd

                                ArmilarA paul53P 2 Antworten Letzte Antwort
                                0
                                • B bernd33-1

                                  @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? :hugging_face:

                                  Grüße, Bernd

                                  ArmilarA Offline
                                  ArmilarA Offline
                                  Armilar
                                  Most Active Forum Testing
                                  schrieb am zuletzt editiert von Armilar
                                  #16

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

                                  Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                                  https://github.com/joBr99/nspanel-lovelace-ui/wiki

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

                                  B 2 Antworten Letzte Antwort
                                  0
                                  • ArmilarA 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 Offline
                                    B Offline
                                    bernd33-1
                                    schrieb am zuletzt editiert von
                                    #17

                                    @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 :flushed: :hugging_face: :+1: werde ich heute Abend dann mal einbauen.

                                    Das Forum hier und die Leute sind einfach geil :grin:

                                    1 Antwort Letzte Antwort
                                    0
                                    • B bernd33-1

                                      @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? :hugging_face:

                                      Grüße, Bernd

                                      paul53P Offline
                                      paul53P Offline
                                      paul53
                                      schrieb am zuletzt editiert von
                                      #18

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

                                      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

                                      B 1 Antwort Letzte Antwort
                                      0
                                      • paul53P paul53

                                        @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 Offline
                                        B Offline
                                        bernd33-1
                                        schrieb am zuletzt editiert von bernd33-1
                                        #19

                                        @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 Antwort Letzte Antwort
                                        0
                                        • mickymM Online
                                          mickymM Online
                                          mickym
                                          Most Active
                                          schrieb am zuletzt editiert von
                                          #20

                                          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. ;)

                                          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                          CodierknechtC 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          694

                                          Online

                                          32.7k

                                          Benutzer

                                          82.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe