Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [gelöst] Werte aus einem Textfeld in Liste übergeben

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Werte aus einem Textfeld in Liste übergeben

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      ManfredHi @mickym last edited by

      Hallo @mickym kannst du mir bitte nochmals mit dem regex helfen. ich komm damit einfach nicht klar:

      Ich möchte aus diesem Text:

      <tr> <td rowspan="1" class="first">00:00 - 01:00</td> <td class="dv-value-cell"><span onclick="showDetail('eu.entsoe.emfip.transmission_domain.r2.presentation.entity.DayAheadPricesMongoEntity', '65a12a32dafea7778dc3c2fa', '2024-01-13T23:00:00.000Z', 'PRICE', 'CET');" class="data-view-detail-link">69.56</span></td> </tr> <tr> <td rowspan="1" class="first">01:00 - 02:00</td> <td class="dv-value-cell"><span onclick="showDetail('eu.entsoe.emfip.transmission_domain.r2.presentation.entity.DayAheadPricesMongoEntity', '65a27c6c55592d197e768cc0', '2024-01-14T00:00:00.000Z', 'PRICE', 'CET');" class="data-view-detail-link">67.53</span></td> </tr> <tr> <td rowspan="1" class="first">02:00 - 03:00</td> <td class="dv-value-cell"><span onclick="showDetail('eu.entsoe.emfip.transmission_domain.r2.presentation.entity.DayAheadPricesMongoEntity', '65a27c6c55592d197e768cc0', '2024-01-14T01:00:00.000Z', 'PRICE', 'CET');" class="data-view-detail-link">66.78</span></td> </tr> <tr> <td rowspan="1" class="first">03:00 - 04:00</td> <td class="dv-value-cell"><span onclick="showDetail('eu.entsoe.emfip.transmission_domain.r2.presentation.entity.DayAheadPricesMongoEntity', '65a27c6c55592d197e768cc0', '2024-01-14T02:00:00.000Z', 'PRICE', 'CET');" class="data-view-detail-link">66.32</span></td> </tr> <tr> <td rowspan="1" class="first">04:00 - 05:00</td> <td class="dv-value-cell"><span onclick="showDetail('eu.entsoe.emfip.transmission_domain.r2.presentation.entity.DayAheadPricesMongoEntity', '65a27c6c55592d197e768cc0', '2024-01-14T03:00:00.000Z', 'PRICE', 'CET');" class="data-view-detail-link">66.54</span></td> </tr> 
      

      Das Datum mit der Uhrzeit "2024-01-13T23:00:00.000Z" und den Wert dazu "69.56" (durch 10 dividieren mit 3 Kommas) auslesen und das aus allen Einträgen und in eine liste übergeben.

      M 1 Reply Last reply Reply Quote 0
      • M
        ManfredHi @ManfredHi last edited by ManfredHi

        @mickym
        ich kann zwar mit

        $match(/(?:\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z)/).match
        

        Das Datum mit der Uhrzeit (z.b. 2024-01-13T23:00:00.000Z) extrahieren, aber wie mach ich es mit den Beträgen, also 69.56, 67.53 usw. ? Vor allem könnte das auch um eine stelle mehr haben bzw. ein minuszeichen davor.

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

          @manfredhi sagte in [gelöst] Werte aus einem Textfeld in Liste übergeben:

          /(?:\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z)

          Warum nutzt Du eigentlich nicht diese Seite: https://regex101.com/ bzw. da es konstant ist das Forward Lookup brauchst du erstmal nicht,

          Wie Du siehst bekommst Du ja Dein Datum richtig raus: https://regex101.com/r/6wBOu4/1

          Ich weiss aber nicht warum Du da Datum brauchst? oder ob Du es brauchst? - Dein Wert steht doch in der class="data-view-detail-link">69.56< , warun checjst Du das Datum oder willst Du das haben? Oder Beides?

          Ich gehe mal davon aus, Du willst beides.

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

            @mickym
            habs eh mit regex versucht.
            mit dem

            ($match(/(?:)?-?\d+\.\d+/).match)#$i[$i%2=1].$round(($number()/10),3)
            

            bekomm ich die zahl nun raus.

            eigentlich wollte ich in einer liste beides haben, erst das datum, dann den betrag. aber das geht glaub ich nicht.

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

              @manfredhi Doch schau mal - ob Dir as gefällt?

              https://regex101.com/r/d9FrcN/1

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

                @mickym

                @mickym sagte in [gelöst] Werte aus einem Textfeld in Liste übergeben:

                Doch schau mal - ob Dir as gefällt?

                ja und in der Liste möchte ich dann immer abwechselnd das datum und den betrag

                d7ff0289-d431-4287-a21e-edbe9be982d9-image.png

                also so soll das z.b. dann aussehen:
                ['2024-01-13T23:00:00.000Z',6.956,'2024-01-14T00:00:000Z',6.753, .......]

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

                  @manfredhi Na also - also siehst Du regEx geht, aber ein Objekt wäre doch sicher sinnvoller - also wieder so ein Stringchaos.

                  Wäre das den nicht viel schöner:

                  : https://try.jsonata.org/bz5mJZ3T_

                  Warum löst ihr euch nicht von diesen blöden Strings?

                  [
                    {
                      "date": "2024-01-13T23:00:00.000Z",
                      "value": "69.56"
                    },
                    {
                      "date": "2024-01-14T00:00:00.000Z",
                      "value": "67.53"
                    },
                    {
                      "date": "2024-01-14T01:00:00.000Z",
                      "value": "66.78"
                    },
                    {
                      "date": "2024-01-14T02:00:00.000Z",
                      "value": "66.32"
                    },
                    {
                      "date": "2024-01-14T03:00:00.000Z",
                      "value": "66.54"
                    }
                  ]
                  
                  M 2 Replies Last reply Reply Quote 0
                  • M
                    ManfredHi @mickym last edited by

                    @mickym sagte in [gelöst] Werte aus einem Textfeld in Liste übergeben:

                    Warum löst ihr euch nicht von diesen blöden Strings?

                    im Grunde würden ja auch nur die Werte genügen, ohne Datumszuordnung. Es sind jeden Tag 24. also von 0 Uhr bis 23 Uhr.
                    Probleme sehe ich nur bei Wechsel auf Sommerzeit da sinds plötzlich nur 23 Werte bzw. im Herbst dann mal 25 Werte und da wäre die Zuordnung ideal.

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

                      @manfredhi Ja aber deswegen habe ich dir doch Objekte gemacht - wenn Du willst kannst ja dann schauen, ob Du nur die Werte oder das Objekt haben willst - aber warum willst Du weiter mit dem string Chaos weiterarbeiten?

                      Wenn du lieber Dein Stringchaos behalten möchtest, dann halt so: https://try.jsonata.org/g1gX0dk1Y

                      f22625df-4418-4b59-9561-4127d21874c6-image.png

                      [
                        "2024-01-13T23:00:00.000Z",
                        "69.56",
                        "2024-01-14T00:00:00.000Z",
                        "67.53",
                        "2024-01-14T01:00:00.000Z",
                        "66.78",
                        "2024-01-14T02:00:00.000Z",
                        "66.32",
                        "2024-01-14T03:00:00.000Z",
                        "66.54"
                      ]
                      

                      So wie Du es wünschst.

                      Oder so wenn Du ein Array mit Strings und in Zahl konvertierten Wert haben möchest:
                      : https://try.jsonata.org/5AZsbw1r9

                      [
                        "2024-01-13T23:00:00.000Z,69.56",
                        "2024-01-14T00:00:00.000Z,67.53",
                        "2024-01-14T01:00:00.000Z,66.78",
                        "2024-01-14T02:00:00.000Z,66.32",
                        "2024-01-14T03:00:00.000Z,66.54"
                      ]
                      

                      oder wenn Du Strings so sehr liebst dann halt alles in einem String:
                      https://try.jsonata.org/RvEH4MzlH

                      "2024-01-13T23:00:00.000Z,69.56,2024-01-14T00:00:00.000Z,67.53,2024-01-14T01:00:00.000Z,66.78,2024-01-14T02:00:00.000Z,66.32,2024-01-14T03:00:00.000Z,66.54"
                      

                      Und wenn du halt unbedingt ein Array mit Deinem String haben willst dann machst halt um das Join noch eine eckige Klammer. Macht aber alles in meinen Augen keinen Sinn.

                      Nun hast Du alle möglichen Ausgaben - von Objekten oder diversen Strings.

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

                        @mickym sagte in [gelöst] Werte aus einem Textfeld in Liste übergeben:

                        Wäre das den nicht viel schöner:
                        : https://try.jsonata.org/bz5mJZ3T_

                        meinst du ich soll es so machen ?
                        Wenn ja, wenn ich das in den jsonata eintrage, bekomme ich einen Fehler.

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

                          @manfredhi Ich würde es mit Objekten machen - aber wenn Du nur die Werte haben willst. Ich hab doch keine Ahnung was Du willst. Ich habe Dir doch alle Möglichkeiten gezeigt - was willst Du denn machen - warum willst du überhaupt das Datum, wenn Du es nicht weiterverarbeitest?

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

                            @manfredhi sagte in [gelöst] Werte aus einem Textfeld in Liste übergeben:

                            @mickym sagte in [gelöst] Werte aus einem Textfeld in Liste übergeben:

                            Warum löst ihr euch nicht von diesen blöden Strings?

                            im Grunde würden ja auch nur die Werte genügen, ohne Datumszuordnung. Es sind jeden Tag 24. also von 0 Uhr bis 23 Uhr.
                            Probleme sehe ich nur bei Wechsel auf Sommerzeit da sinds plötzlich nur 23 Werte bzw. im Herbst dann mal 25 Werte und da wäre die Zuordnung ideal.

                            Die Anzahl der Werte spielen doch für JSONATA oder regex keine Rolle. Wenn Du das Datum prüfen willst, dann würde ich die Objekte nehmen.

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

                              @mickym
                              du hast mir jetzt mal verschiedene wege aufgezeigt. vielen dank dafür.
                              derzeit lese ich die daten von epexspot aus, da hab ich auch nur die 24 Werte ohne Datum und die Aufbereitung eines Json mit Datum und diversen Berechnungen läuft derzeit eh einwandfrei.
                              Mit den Daten von jetzt will ich mir nur eine zweite Quelle für das Auslesen der Daten von einer anderen Homepage schaffen und vorbereiten, sollte das andere nicht funktionieren, und da ist halt jetzt auch das Datum mit dabei.
                              Danke jedenfalls mal dass Du so geduldig mit mir bist und soviel zeit dafür investierst.
                              Wenn ich mal wieder nicht weiter weiß, darf ich mich hoffentlich bitte wieder bei dir melden.

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

                                @manfredhi Also hier hast Du alles mit Datum und Wert

                                20292507-5568-4b1c-98c6-bff8a6f515b8-image.png

                                Und das Blockly zum Import. Nach dem Objekt kannst Du über die Attribute auf das Datum mit dem zugehörigen Wert zugreifen.

                                <xml xmlns="https://developers.google.com/blockly/xml">
                                 <variables>
                                   <variable id="C*(%s2V?l2/ZMsDD,BM,">Liste</variable>
                                   <variable id="d`)?8*7%K1}V`kUC1;/B">i</variable>
                                 </variables>
                                 <block type="variables_set" id="v(j/%p78,qDwA0}A=FwF" x="-1313" y="-962">
                                   <field name="VAR" id="C*(%s2V?l2/ZMsDD,BM,">Liste</field>
                                   <value name="VALUE">
                                     <block type="convert_jsonata" id="xz5ijXAFL3gB`SY##:zK">
                                       <value name="EXPRESSION">
                                         <shadow type="text" id="JZ*(!0?Y2d1j]_jS^.(W">
                                           <field name="TEXT">$match($,/(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z).*?&gt;(-?\d+\.\d+)/).{"date":groups[0],"value":groups[1]}</field>
                                         </shadow>
                                       </value>
                                       <value name="TARGET">
                                         <block type="text" id="g=?.U|g3!nPIM8!Okui4">
                                           <field name="TEXT">&lt;tr&gt; &lt;td rowspan="1" class="first"&gt;00:00 - 01:00&lt;/td&gt; &lt;td class="dv-value-cell"&gt;&lt;span onclick="showDetail('eu.entsoe.emfip.transmission_domain.r2.presentation.entity.DayAheadPricesMongoEntity', '65a12a32dafea7778dc3c2fa', '2024-01-13T23:00:00.000Z', 'PRICE', 'CET');" class="data-view-detail-link"&gt;69.56&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td rowspan="1" class="first"&gt;01:00 - 02:00&lt;/td&gt; &lt;td class="dv-value-cell"&gt;&lt;span onclick="showDetail('eu.entsoe.emfip.transmission_domain.r2.presentation.entity.DayAheadPricesMongoEntity', '65a27c6c55592d197e768cc0', '2024-01-14T00:00:00.000Z', 'PRICE', 'CET');" class="data-view-detail-link"&gt;67.53&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td rowspan="1" class="first"&gt;02:00 - 03:00&lt;/td&gt; &lt;td class="dv-value-cell"&gt;&lt;span onclick="showDetail('eu.entsoe.emfip.transmission_domain.r2.presentation.entity.DayAheadPricesMongoEntity', '65a27c6c55592d197e768cc0', '2024-01-14T01:00:00.000Z', 'PRICE', 'CET');" class="data-view-detail-link"&gt;66.78&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td rowspan="1" class="first"&gt;03:00 - 04:00&lt;/td&gt; &lt;td class="dv-value-cell"&gt;&lt;span onclick="showDetail('eu.entsoe.emfip.transmission_domain.r2.presentation.entity.DayAheadPricesMongoEntity', '65a27c6c55592d197e768cc0', '2024-01-14T02:00:00.000Z', 'PRICE', 'CET');" class="data-view-detail-link"&gt;66.32&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td rowspan="1" class="first"&gt;04:00 - 05:00&lt;/td&gt; &lt;td class="dv-value-cell"&gt;&lt;span onclick="showDetail('eu.entsoe.emfip.transmission_domain.r2.presentation.entity.DayAheadPricesMongoEntity', '65a27c6c55592d197e768cc0', '2024-01-14T03:00:00.000Z', 'PRICE', 'CET');" class="data-view-detail-link"&gt;66.54&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt;</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="debug" id="$mUXBli_e}bd4hA?t2Ls">
                                       <field name="Severity">log</field>
                                       <value name="TEXT">
                                         <shadow type="text" id="+:$J:sSMpe_Z8M4p0YYN">
                                           <field name="TEXT">test</field>
                                         </shadow>
                                         <block type="variables_get" id="l5qP~-]nz`1`-58R/5nZ">
                                           <field name="VAR" id="C*(%s2V?l2/ZMsDD,BM,">Liste</field>
                                         </block>
                                       </value>
                                       <next>
                                         <block type="controls_forEach" id="!7jgA`{UL-[r:;!@yoXJ">
                                           <field name="VAR" id="d`)?8*7%K1}V`kUC1;/B">i</field>
                                           <value name="LIST">
                                             <block type="variables_get" id="77ohO+SY?J6?{a=%]aA/">
                                               <field name="VAR" id="C*(%s2V?l2/ZMsDD,BM,">Liste</field>
                                             </block>
                                           </value>
                                           <statement name="DO">
                                             <block type="debug" id="~tgZ^)%;8xrn5R9kJXH[">
                                               <field name="Severity">log</field>
                                               <value name="TEXT">
                                                 <shadow type="text" id="h/,HHch?qZVXTZx2rTjj">
                                                   <field name="TEXT">test</field>
                                                 </shadow>
                                                 <block type="text_join" id="~!lR(NC)7]j,n;R^Hh=;">
                                                   <mutation items="2"></mutation>
                                                   <value name="ADD0">
                                                     <block type="text" id="(sue[4in3N@Hopwbh_.G">
                                                       <field name="TEXT">Datum: </field>
                                                     </block>
                                                   </value>
                                                   <value name="ADD1">
                                                     <block type="get_attr" id="6.V#XH?Y;R`Z$Wn~$ISY">
                                                       <value name="PATH">
                                                         <shadow type="text" id="t$xv8DI1M/HM?6T+8eZ|">
                                                           <field name="TEXT">date</field>
                                                         </shadow>
                                                       </value>
                                                       <value name="OBJECT">
                                                         <block type="variables_get" id="xN@oWcn#X!fKqf{si,4M">
                                                           <field name="VAR" id="d`)?8*7%K1}V`kUC1;/B">i</field>
                                                         </block>
                                                       </value>
                                                     </block>
                                                   </value>
                                                 </block>
                                               </value>
                                               <next>
                                                 <block type="debug" id="XTkoukmL*_xw27D]QS=$">
                                                   <field name="Severity">log</field>
                                                   <value name="TEXT">
                                                     <shadow type="text" id="L(OeR6i31|-=rxy%-k[#">
                                                       <field name="TEXT">test</field>
                                                     </shadow>
                                                     <block type="text_join" id="g{yGW$$%DHW(8xTQEZR$">
                                                       <mutation items="2"></mutation>
                                                       <value name="ADD0">
                                                         <block type="text" id="Jat$dX8m[%pw4O1Zf0Sy">
                                                           <field name="TEXT">Wert: </field>
                                                         </block>
                                                       </value>
                                                       <value name="ADD1">
                                                         <block type="get_attr" id="5*X=Ftz:vj*/G2|(Qk.W">
                                                           <value name="PATH">
                                                             <shadow type="text" id="rnLpZXy5eD5,GMrU6=}|">
                                                               <field name="TEXT">value</field>
                                                             </shadow>
                                                           </value>
                                                           <value name="OBJECT">
                                                             <block type="variables_get" id="o9Q8nv:{!xjqMPErJ#64">
                                                               <field name="VAR" id="d`)?8*7%K1}V`kUC1;/B">i</field>
                                                             </block>
                                                           </value>
                                                         </block>
                                                       </value>
                                                     </block>
                                                   </value>
                                                 </block>
                                               </next>
                                             </block>
                                           </statement>
                                         </block>
                                       </next>
                                     </block>
                                   </next>
                                 </block>
                                </xml>
                                

                                Wenn Du die Werte ohne Datum willst - dann kannst Du das ganze ja mit oder ohne Datum machen.

                                Warum zum Schluss ein undefined rauskommt - weiß ich nicht. Das scheint wieder so ein Blockly Mist zu sein. Da muss ggf. @paul53 Aufschluss geben - Eigentlich enthält die Liste nur 5 Objekte. Warum die Schleife noch ein 6. Mal durchlaufen wird - ist mir wieder ein Rätsel - aber wie gesagt ich bin eh kein Puzzlefan.

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

                                  @manfredhi sagte in [gelöst] Werte aus einem Textfeld in Liste übergeben:

                                  @mickym
                                  du hast mir jetzt mal verschiedene wege aufgezeigt. vielen dank dafür.
                                  derzeit lese ich die daten von epexspot aus, da hab ich auch nur die 24 Werte ohne Datum und die Aufbereitung eines Json mit Datum und diversen Berechnungen läuft derzeit eh einwandfrei.
                                  Mit den Daten von jetzt will ich mir nur eine zweite Quelle für das Auslesen der Daten von einer anderen Homepage schaffen und vorbereiten, sollte das andere nicht funktionieren, und da ist halt jetzt auch das Datum mit dabei.
                                  Danke jedenfalls mal dass Du so geduldig mit mir bist und soviel zeit dafür investierst.
                                  Wenn ich mal wieder nicht weiter weiß, darf ich mich hoffentlich bitte wieder bei dir melden.

                                  Wenn Du nur die Werte haben willst ohne das Datum dann halt einfach das regex anpassen

                                  https://regex101.com/r/QaP4lf/1

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

                                    @mickym sagte in [gelöst] Werte aus einem Textfeld in Liste übergeben:

                                    Warum zum Schluss ein undefined rauskommt - weiß ich nicht. Das scheint wieder so ein Blockly Mist zu sein. Da muss ggf. @paul53 Aufschluss geben - Eigentlich enthält die Liste nur 5 Objekte. Warum die Schleife noch ein 6. Mal durchlaufen wird - ist mir wieder ein Rätsel - aber wie gesagt ich bin eh kein Puzzlefan.

                                    Danke. Ich mach das immer so, damit dieses undefined nicht kommt:

                                    91ef6fc1-7104-4ce8-96dd-4eaf541080a9-image.png

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

                                      @mickym sagte in [gelöst] Werte aus einem Textfeld in Liste übergeben:

                                      Wenn Du nur die Werte haben willst ohne das Datum dann halt einfach das regex anpassen

                                      Vielen Dank. Hab mir jetzt mal alle möglichkeiten angelegt und nachgebaut. So dass mal jede Variante funktioniert. Für welche ich mich dann endgültig entscheide überlege ich noch.

                                      Auf jeden Fall großes DANKE an dich.

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

                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      631
                                      Online

                                      32.0k
                                      Users

                                      80.4k
                                      Topics

                                      1.3m
                                      Posts

                                      3
                                      30
                                      612
                                      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