Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Werte aus Text und Mittelwert berechnen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Werte aus Text und Mittelwert berechnen

    This topic has been deleted. Only users with topic management privileges can see it.
    • haus-automatisierung
      haus-automatisierung Developer Most Active @JoJo58 last edited by

      @jojo58 So z.B.

      Geht aber bestimmt auch eleganter

      Screenshot 2025-04-24 at 13.20.23.png

      <xml xmlns="https://developers.google.com/blockly/xml">
        <variables>
          <variable id="0qMo2W}Kq_]r}pKv?1vm">text</variable>
          <variable id="x7~jx3L$wieq,D+zr=!(">temps</variable>
          <variable id="MLf-it[+Dt[|c@mAEe4(">zeile</variable>
        </variables>
        <block type="variables_set" id="7Ucg_OX_*N)bq0%Kl_a)" x="163" y="63">
          <field name="VAR" id="0qMo2W}Kq_]r}pKv?1vm">text</field>
          <value name="VALUE">
            <block type="text_multiline" id="cy;o?qx~`eF^UN]UqZul">
              <field name="TEXT">Package id 0:&amp;#10;Core 0: +59.0°C&amp;#10;Core 1: +58.0°C&amp;#10;Core 2: +64.0°C&amp;#10;Core 3: +62.0°C&amp;#10;Core 4: +58.0°C&amp;#10;Core 5: +54.0°C</field>
            </block>
          </value>
          <next>
            <block type="variables_set" id="IH)|e{lmuaE)T]`@I^?a">
              <field name="VAR" id="x7~jx3L$wieq,D+zr=!(">temps</field>
              <value name="VALUE">
                <block type="lists_create_with" id="=|s:yEwawraI%,*eZ9H/">
                  <mutation items="0"></mutation>
                </block>
              </value>
              <next>
                <block type="controls_forEach" id="J_ad`K%~~2dNftid)]P)">
                  <field name="VAR" id="MLf-it[+Dt[|c@mAEe4(">zeile</field>
                  <value name="LIST">
                    <block type="lists_split" id="~F$]Wk0FMe,c)^2h3@K?">
                      <mutation mode="SPLIT"></mutation>
                      <field name="MODE">SPLIT</field>
                      <value name="INPUT">
                        <block type="variables_get" id="=o8Hj9[I8fwhA:o_lf+z">
                          <field name="VAR" id="0qMo2W}Kq_]r}pKv?1vm">text</field>
                        </block>
                      </value>
                      <value name="DELIM">
                        <shadow type="text" id="c%6LCj4K8ve~$$wD$m|X">
                          <field name="TEXT">,</field>
                        </shadow>
                        <block type="text_newline" id="n~rV|d@73=w?eZH2gnra">
                          <field name="Type">\n</field>
                        </block>
                      </value>
                    </block>
                  </value>
                  <statement name="DO">
                    <block type="controls_if" id="v]2Q`|tZh4mqq%7=-h-)">
                      <value name="IF0">
                        <block type="text_contains" id="fm:,r?W2bP3^!SDLwOKN">
                          <value name="VALUE">
                            <block type="variables_get" id="R|}r:]vxm8.]0_d/`tVx">
                              <field name="VAR" id="MLf-it[+Dt[|c@mAEe4(">zeile</field>
                            </block>
                          </value>
                          <value name="FIND">
                            <shadow type="text" id="B;Qv*h90:L8HiNMh#*W(">
                              <field name="TEXT">Core </field>
                            </shadow>
                          </value>
                        </block>
                      </value>
                      <statement name="DO0">
                        <block type="lists_setIndex" id="eMS@W;3A2[OeDKBTII!B">
                          <mutation at="false"></mutation>
                          <field name="MODE">INSERT</field>
                          <field name="WHERE">LAST</field>
                          <value name="LIST">
                            <block type="variables_get" id="K6K?kt4G_-$McHeXdr1b">
                              <field name="VAR" id="x7~jx3L$wieq,D+zr=!(">temps</field>
                            </block>
                          </value>
                          <value name="TO">
                            <block type="convert_tonumber" id="K`iJtTg^1c%cbK?=Rl)0">
                              <value name="VALUE">
                                <block type="text_getSubstring" id="pm7jmow)[[g=`U^Sv2ZA" inline="false">
                                  <mutation at1="true" at2="true"></mutation>
                                  <field name="WHERE1">FROM_START</field>
                                  <field name="WHERE2">FROM_START</field>
                                  <value name="STRING">
                                    <block type="variables_get" id="LC[^)s9n=+eRjpY$$m73">
                                      <field name="VAR" id="MLf-it[+Dt[|c@mAEe4(">zeile</field>
                                    </block>
                                  </value>
                                  <value name="AT1">
                                    <block type="math_arithmetic" id="C_=(CgSmAJLu}7^q%.=q">
                                      <field name="OP">ADD</field>
                                      <value name="A">
                                        <shadow type="math_number" id=",@QKm_VOfV.Smev`PfNS">
                                          <field name="NUM">1</field>
                                        </shadow>
                                        <block type="text_indexOf" id="6+agAoxdPGQr15}plp|g">
                                          <field name="END">FIRST</field>
                                          <value name="VALUE">
                                            <block type="variables_get" id="9TfSPs[3$eFU=@Fi`v6*">
                                              <field name="VAR" id="MLf-it[+Dt[|c@mAEe4(">zeile</field>
                                            </block>
                                          </value>
                                          <value name="FIND">
                                            <shadow type="text" id=";aX65G3Gjkzv}4t^vIrk">
                                              <field name="TEXT">+</field>
                                            </shadow>
                                          </value>
                                        </block>
                                      </value>
                                      <value name="B">
                                        <shadow type="math_number" id="19L}i~!w}b%7(p^$aY+w">
                                          <field name="NUM">1</field>
                                        </shadow>
                                      </value>
                                    </block>
                                  </value>
                                  <value name="AT2">
                                    <block type="math_arithmetic" id="WqSv1/!M4VF=h,po@jzT">
                                      <field name="OP">MINUS</field>
                                      <value name="A">
                                        <shadow type="math_number" id="6f#D0qeMn7wuECIxM+o0">
                                          <field name="NUM">1</field>
                                        </shadow>
                                        <block type="text_indexOf" id="ZC!j*$!D(SQ(B1?`M({c">
                                          <field name="END">FIRST</field>
                                          <value name="VALUE">
                                            <block type="variables_get" id="/8m[T=GWFR99Z=|*+tH#">
                                              <field name="VAR" id="MLf-it[+Dt[|c@mAEe4(">zeile</field>
                                            </block>
                                          </value>
                                          <value name="FIND">
                                            <shadow type="text" id="3:oJ2zHC}31[^9jGLs{i">
                                              <field name="TEXT">°C</field>
                                            </shadow>
                                          </value>
                                        </block>
                                      </value>
                                      <value name="B">
                                        <shadow type="math_number" id="_sHFhGfp6/o-k7UvGy$s">
                                          <field name="NUM">1</field>
                                        </shadow>
                                      </value>
                                    </block>
                                  </value>
                                </block>
                              </value>
                            </block>
                          </value>
                        </block>
                      </statement>
                    </block>
                  </statement>
                  <next>
                    <block type="debug" id="%Yk%{UA$F03t$BnC3FWE">
                      <field name="Severity">info</field>
                      <value name="TEXT">
                        <shadow type="text" id="FhVtLn]]J=wJtP`=tv]9">
                          <field name="TEXT">test</field>
                        </shadow>
                        <block type="math_rndfixed" id="hZ8W0k{Jt/ICe_9Ab5Ui">
                          <field name="n">2</field>
                          <value name="x">
                            <shadow type="math_number" id="]80=H[TgUUt[jq:Z2whZ">
                              <field name="NUM">3.1234</field>
                            </shadow>
                            <block type="math_on_list" id="I7Z)L3kX|jp@uzt~|;9L">
                              <mutation op="AVERAGE"></mutation>
                              <field name="OP">AVERAGE</field>
                              <value name="LIST">
                                <block type="variables_get" id="He)C|$TZ3m*3Ll_?)3C=">
                                  <field name="VAR" id="x7~jx3L$wieq,D+zr=!(">temps</field>
                                </block>
                              </value>
                            </block>
                          </value>
                        </block>
                      </value>
                    </block>
                  </next>
                </block>
              </next>
            </block>
          </next>
        </block>
      </xml>
      
      haus-automatisierung Homoran 2 Replies Last reply Reply Quote 1
      • haus-automatisierung
        haus-automatisierung Developer Most Active @haus-automatisierung last edited by

        Per JavaScript natürlich deutlich kürzer:

        const text = `
        Package id 0:
        Core 0: +59.0°C
        Core 1: +58.0°C
        Core 2: +64.0°C
        Core 3: +62.0°C
        Core 4: +58.0°C
        Core 5: +54.0°C
        `;
        
        const temps = [...text.matchAll(/Core \d+: \+([\d.]+)°C/g)].map(match => parseFloat(match[1]));
        const average = temps.reduce((sum, temp) => sum + temp, 0) / temps.length;
        
        console.log(`Durchschnittstemperatur: ${average.toFixed(2)}`);
        
        1 Reply Last reply Reply Quote 1
        • paul53
          paul53 @JoJo58 last edited by paul53

          @jojo58 sagte: Wie bekomme ich da jetzt den Mittelwert raus?

          Eine Version:

          Blockly_temp.JPG

          1 Reply Last reply Reply Quote 2
          • Homoran
            Homoran Global Moderator Administrators @haus-automatisierung last edited by Homoran

            @haus-automatisierung sagte in Werte aus Text und Mittelwert berechnen:

            Geht aber bestimmt auch eleganter

            warum dann nicht doch

            @jojo58 sagte in Werte aus Text und Mittelwert berechnen:

            Einfach alle Werte addieren und dann durch 6 teilen

            ich halte das Arbeiten mit der Liste in diesem Fall für zu umständlich.

            EDIT:
            Wenn ich auf die Lösung von @Paul53 gekommen wäte, sähe die Aussage anders aus 😁

            haus-automatisierung 1 Reply Last reply Reply Quote 0
            • haus-automatisierung
              haus-automatisierung Developer Most Active @Homoran last edited by haus-automatisierung

              @homoran sagte in Werte aus Text und Mittelwert berechnen:

              ich halte das Arbeiten mit der Liste in diesem Fall für zu umständlich.

              Vorteil ist halt, dass man die Länge / Anzahl der Elemente auch direkt kennt und nicht noch eine Zähl-Variable mitschleppen muss. Also einfach zur Liste hinzufügen und am Ende mit dem Baustein den Mittelwert holen...

              Screenshot 2025-04-24 at 13.32.20.png

              Meine Variante funktioniert immer. Egal ob 2 oder 24 Cores. Und ob die erste Zeile des Textes enthalten ist oder nicht spielt auch keine Rolle.

              JoJo58 1 Reply Last reply Reply Quote 1
              • JoJo58
                JoJo58 @haus-automatisierung last edited by JoJo58

                @haus-automatisierung

                Das Blockly von dir verstehe ich nach kurzem Nachdenken sogar 😉 (und es funktioniert), bei dem von @paul53 sieht es schon anders aus, das wird bestimmt auch funktionieren, aber ich verstehe nicht wie? 😲

                @haus-automatisierung Kann ich die Liste "temps" auch direkt nutzen um daraus den JSON DP zu erzeugen?

                EDIT:
                Ist Quatsch, das geht nicht so einfach, da ich dann nur die Spalte mit Werte ohne Zuordnung zu Core oder Mittelwert habe. Sorry, zu kurz gedacht. 😞

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

                  Mitt JSONATA und Blockly gehts noch kürzer, aber bevor ich dann wieder Kritik ernte, werde ich die Lösung nur auf Wunsch vorstellen.

                  JoJo58 1 Reply Last reply Reply Quote 0
                  • JoJo58
                    JoJo58 @mickym last edited by

                    @mickym

                    Wüßte nicht, warum ich deinen Vorschlag kritisieren sollte? Oder war das allgemein gemeint?

                    Ich habe es jetzt mit der Version von @haus-automatisierung gelöst und das läuft erst mal.

                    Danke für die schnelle Hilfe und eure Vorschläge. Hab gerade gesehen das @paul53 das noch mal angepasst hat, ich baue das auch noch nach, alleine schon um etwas zu lernen. 🙂

                    mickym 1 Reply Last reply Reply Quote 1
                    • paul53
                      paul53 @JoJo58 last edited by paul53

                      @jojo58 sagte: JSON erstellen, so das ich die aktuellen Werte inklusive Mittelwert in VIS darstellen kann.

                      Vorschlag:

                      Blockly_temp.JPG

                      JoJo58 2 Replies Last reply Reply Quote 0
                      • mickym
                        mickym Most Active @JoJo58 last edited by

                        @jojo58 sagte in Werte aus Text und Mittelwert berechnen:

                        Wüßte nicht, warum ich deinen Vorschlag kritisieren sollte? Oder war das allgemein gemeint?

                        Dann hier mal meine Lösung - ein neues Objekt zu erstellen ist damit auch sehr einfach, aber keine Ahnung, wie Du das haben willst.

                        Hier das JSONATA:

                        $match($,/\d+\.\d/).$number(match)~>$average()~>$round(2)
                        

                        c9a5be24-baf8-4e6a-98f8-b5aa3baea3e3-image.png

                        und hier das Blockly zum Import:

                        <xml xmlns="https://developers.google.com/blockly/xml">
                         <variables>
                           <variable id="hu+F[F+=/+n6(w#b!bkk">Text</variable>
                         </variables>
                         <block type="variables_set" id="^~Sv#fxrrEl3v%:$_j(K" x="-137" y="63">
                           <field name="VAR" id="hu+F[F+=/+n6(w#b!bkk">Text</field>
                           <value name="VALUE">
                             <block type="text" id="}KJz}$Rs!%XxMZl%j4_w">
                               <field name="TEXT">Package id 0: Core 0: +59.0°C Core 1: +58.0°C Core 2: +64.0°C Core 3: +62.0°C Core 4: +58.0°C Core 5: +54.0°C</field>
                             </block>
                           </value>
                           <next>
                             <block type="debug" id="k08ZC410l/7`T|+g_+w@">
                               <field name="Severity">info</field>
                               <value name="TEXT">
                                 <shadow type="text" id=",T!NCf4e|u/ADp:g1bn[">
                                   <field name="TEXT">test</field>
                                 </shadow>
                                 <block type="text_join" id="~F~v3J+nR#hK*ocxCF#X">
                                   <mutation items="2"></mutation>
                                   <value name="ADD0">
                                     <block type="text" id="C}wpA(/bWjvr.r;!:{9q">
                                       <field name="TEXT">Mittelwert (gerundet 2 Dezimalstellen): </field>
                                     </block>
                                   </value>
                                   <value name="ADD1">
                                     <block type="convert_jsonata" id="u}[_Z`KWHAeHkdE@@V?=">
                                       <value name="EXPRESSION">
                                         <shadow type="text" id="eg-6.rV=oGTM`RArquVg">
                                           <field name="TEXT">$match($,/\d+\.\d/).$number(match)~&gt;$average()~&gt;$round(2)</field>
                                         </shadow>
                                       </value>
                                       <value name="TARGET">
                                         <block type="variables_get" id="n+aI}jp_T]nxZ439rGaK">
                                           <field name="VAR" id="hu+F[F+=/+n6(w#b!bkk">Text</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                             </block>
                           </next>
                         </block>
                         <block type="convert_json2object" id="1-ME3y(y.YrZvl:v}Pb`" x="388" y="438"></block>
                        </xml>
                        

                        JoJo58 1 Reply Last reply Reply Quote 0
                        • JoJo58
                          JoJo58 @mickym last edited by

                          @mickym

                          Danke, werde ich auch ausprobieren. 🙂

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

                            @paul53 sagte in Werte aus Text und Mittelwert berechnen:

                            Vorschlag:

                            Das wird ja immer besser. Danke... 🙂 👍 Ich sage Bescheid, sobald ich es nachgebaut habe. Werde aber wohl erst Montag dazu kommen, da wir ab morgen früh für ein paar Tage weg sind.

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

                              @paul53

                              Moin, bin eben erst dazu gekommen, das aus deinem Post nachzubauen. Es hat auf Anhieb funktioniert und hier mal das Blockly und das Ergebnis:
                              Blockly Core Temp.jpg
                              Temperatur VIS.jpg

                              Danke für die Vorlage. Wieder etwas dazugelernt. 👍

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              917
                              Online

                              31.7k
                              Users

                              79.7k
                              Topics

                              1.3m
                              Posts

                              5
                              14
                              222
                              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