Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Blockly: JSON mit Regex aus Variable auslesen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] Blockly: JSON mit Regex aus Variable auslesen

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

      @mickym Ja, ich möchte diese (AirQuality) Werte unter "EF00/02xx" selektiv zugreifen.

      Und nein, das ist so kein Array, sonsern beispielhaft aus dem Log heraus geschnippelt. Es kommt immer nur ein JSON an.

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

        @chris-1 Und diese Objekte sind in einem Array oder willst Du jetzt nur aus einem solchen Wert EF00/02xx zugreifen?

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

          @chris-1 sagte in [gelöst] Blockly: JSON mit Regex aus Variable auslesen:

          @mickym Ja, ich möchte diese (AirQuality) Werte unter "EF00/02xx" selektiv zugreifen.

          Und nein, das ist so kein Array, sonsern beispielhaft aus dem Log heraus geschnippelt. Es kommt immer nur ein JSON an.

          Dann verstehe ich Dein Problem glaube ich nicht???

          a48483f3-e848-47b3-bb2f-f71dd93a664b-image.png

          Oder willst Du das Attribut mit JSONATA extrahieren?

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

            @mickym Der Sensor liefert 6? unterschiedliche Werte.
            Diese stehen an 2ter Stelle des JSON in der Form "EF00/02<xx>" : Value

            Ich möchte also a) wissen welcher Wert (zB "EF00/0212") übermittelt wird,
            b) Value ergibt sich danach leichter.

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

              @chris-1 Ok das ist schon etwas herausfordernder, aber es beginnt immer mit EF00/02?

              Chris 1 1 Reply Last reply Reply Quote 1
              • Chris 1
                Chris 1 @mickym last edited by Chris 1

                @mickym Ja

                Ob man dies ggf einfacher als "SubString" extrahiert?
                Bis einschliesslich SubString-ID hat es ja immer die selbe Länge...

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

                  @chris-1 Ich habs gleich - etwas Geduld bitte

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

                    @chris-1 So hier die Lösung:

                    03825a4b-a92d-475c-a2d5-190e066d45db-image.png

                    Der JSONATA Ausdruck erzeugt ein neues Objekt mit den Attributen key und value auf dass Du dann normal mit den Blockly Attributen zugreifen kannst.

                    Der JSONATA Ausdruck lautet:

                    $.$sift(function($v, $k) {$k ~> /^EF00\/02/}){"key": $keys(),"value":$.*}
                    

                    Hier das Ganze zum Import und Testen

                    <xml xmlns="https://developers.google.com/blockly/xml">
                     <variables>
                       <variable id=";po#/$v(8.UbHdHNkx[6">Objekt</variable>
                     </variables>
                     <block type="variables_set" id="W@hg1tE.68iwuYzK2!uN" x="-1263" y="-835">
                       <field name="VAR" id=";po#/$v(8.UbHdHNkx[6">Objekt</field>
                       <value name="VALUE">
                         <block type="convert_json2object" id="(0IX6:]p|*y3zL7||zBw">
                           <value name="VALUE">
                             <block type="text" id="cj9Q,eiBn6QVld(V7kV2">
                               <field name="TEXT">{"Device":"0x0D73","EF00/0214":83,"Endpoint":1,"LinkQuality":136}</field>
                             </block>
                           </value>
                         </block>
                       </value>
                       <next>
                         <block type="variables_set" id="9+M],oEz;U^a+N[vt#`g">
                           <field name="VAR" id=";po#/$v(8.UbHdHNkx[6">Objekt</field>
                           <value name="VALUE">
                             <block type="convert_jsonata" id="N^%KxZ{%,3GmzsQvn+c(">
                               <value name="EXPRESSION">
                                 <shadow type="text" id="g]4!|~f.(-MAU?:dXi)?">
                                   <field name="TEXT">$.$sift(function($v, $k) {$k ~&gt; /^EF00\/02/}){"key": $keys(),"value":$.*}</field>
                                 </shadow>
                               </value>
                               <value name="TARGET">
                                 <block type="variables_get" id="70c4ESN`7hWTUT-(49y!">
                                   <field name="VAR" id=";po#/$v(8.UbHdHNkx[6">Objekt</field>
                                 </block>
                               </value>
                             </block>
                           </value>
                           <next>
                             <block type="debug" id="n7%]r/8E9.7*=Yc/SwqD">
                               <field name="Severity">log</field>
                               <value name="TEXT">
                                 <shadow type="text" id="_OZ+{6nC[=m9DhEs.K[]">
                                   <field name="TEXT">test</field>
                                 </shadow>
                                 <block type="variables_get" id="-Q_F|i0gY.V`q1:_DGZj">
                                   <field name="VAR" id=";po#/$v(8.UbHdHNkx[6">Objekt</field>
                                 </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="get_attr" id="s8LY=qPscr-My@k|c-.l">
                                       <value name="PATH">
                                         <shadow type="text" id="[}UnHmrmR:{xN!J)0KlB">
                                           <field name="TEXT">key</field>
                                         </shadow>
                                       </value>
                                       <value name="OBJECT">
                                         <block type="variables_get" id="R_[5TjBBSEIu*I=Xk-SJ">
                                           <field name="VAR" id=";po#/$v(8.UbHdHNkx[6">Objekt</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="debug" id="$|g.Yy_[6Qity9{lgt{#">
                                       <field name="Severity">log</field>
                                       <value name="TEXT">
                                         <shadow type="text" id="3Ym?y,.KIM6gAqn4!z4e">
                                           <field name="TEXT">test</field>
                                         </shadow>
                                         <block type="get_attr" id="d_i|9]ucU.,jP7d;WRR)">
                                           <value name="PATH">
                                             <shadow type="text" id=",eAl@_h]7=Nna@c5r-3t">
                                               <field name="TEXT">value</field>
                                             </shadow>
                                           </value>
                                           <value name="OBJECT">
                                             <block type="variables_get" id="r|%-}(FGnhMNQwQaC/rH">
                                               <field name="VAR" id=";po#/$v(8.UbHdHNkx[6">Objekt</field>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                     </block>
                                   </next>
                                 </block>
                               </next>
                             </block>
                           </next>
                         </block>
                       </next>
                     </block>
                    </xml>
                    

                    Chris 1 1 Reply Last reply Reply Quote 1
                    • Chris 1
                      Chris 1 @mickym last edited by Chris 1

                      @mickym Wow, spitze 👍 Kotau!

                      Freu-Freu-Freu... läuft!

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

                        @chris-1 Mit Node-Red würdest Du Dir halt soviel leichter tun, als mit dem Puzzeln - aber ehrlich gesagt, bin ich es langsam müde mich da zu wiederholen. 😉

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        1.1k
                        Online

                        31.7k
                        Users

                        79.7k
                        Topics

                        1.3m
                        Posts

                        2
                        26
                        1625
                        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