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

                            945
                            Online

                            31.7k
                            Users

                            79.7k
                            Topics

                            1.3m
                            Posts

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