Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Daten aus XML URL auslesen und verwenden

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    Daten aus XML URL auslesen und verwenden

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      MiSchu 0 last edited by

      Ist es möglich über eine URL die folgendes anzeigt, die markierten Daten auszulesen und in Blockly zu verwenden ?

      Screenshot 2024-04-21 223245.png

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

        @mischu-0 sagte in Daten aus XML URL auslesen und verwenden:

        in Blockly zu verwenden

        Mit Blockly nicht.
        Mit JavaScript sollte das relativ gut machbar sein.
        Dafür gibt's passende Pakete, um das entweder nach JSON zu konvertieren oder mit XPath zu lesen.

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

          Mir Blockly nicht, aber mit Node-Red gibts eine XML Node.

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

            @codierknecht Diese Solarprognosen API basiert auf HTTP-Anfragen. Die Antworten erfolgen in JSON (JavaScript Object Notation) oder XML.

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

              @mischu-0 Na mit JSON - kannst Du doch direkt im Blockly arbeiten.

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

                @mickym said in Daten aus XML URL auslesen und verwenden:

                @mischu-0 Na mit JSON - kannst Du doch direkt im Blockly arbeiten.

                Ja, nur wie ?

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

                  @mischu-0 Du hast doch die Konvertierung von JSON String in ein Objekt - wobei ich glaube, dass man sogar implizit eine Objektkonvertierung vorgenommen wird.

                  Über die Attribute kannst Du doch auf die Eigenschaften des Objektes zugreifen

                  25c502ba-de10-46ec-8928-c23594debfd3-image.png

                  Dann kopiere halt mal das GESAMTE JSON-Objekt in code-tags hier rein.

                  Code-Tags.gif

                  Objekte und JSON sind IMMER einer XML Ausgabe vorzuziehen.

                  Das Ganze ist wahrscheinlich ein 2 fach verschachteltes Array. Sprich über das Attribut data bekommst Du das übergeordnete Array raus und durch das iterierst Du einfach nochmal.

                  Codierknecht 1 Reply Last reply Reply Quote 2
                  • Codierknecht
                    Codierknecht Developer Most Active @mickym last edited by

                    @mickym
                    Das XML da sieht jedenfalls ziemlich schräg aus.
                    Mehrfach verschachtelte arrays mit identischen Tags.
                    Mag zwar wohlgeformt sein, sieht aber seltsam aus.
                    Da ist man auf Gedeih und Verderb darauf angewiesen, dass die Daten immer auf dem gleichen Index liegen.

                    @MiSchu-0
                    Das JSON sieht hoffentlich besser aus. Können wir aber erst sagen, wenn wir es sehen 😉

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

                      @codierknecht Na ich gehe von sowas aus:

                      {"data":[[20240421,74.515],[20240422,69.46]]}
                      

                      Ist halt schade - dass der Response bzw. die Bestätigug immer so lange dauert - ich werde mal das annehmen.

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

                        @mickym ja, also ab jetzt verstehe ich nur noch Bahnhof. Ich bin erst seit einigen Tagen dabei.

                        Codierknecht mickym 2 Replies Last reply Reply Quote 0
                        • Codierknecht
                          Codierknecht Developer Most Active @MiSchu 0 last edited by

                          @mischu-0
                          Dann fangen wir doch mal ganz langsam an.

                          Poste mal hier das JSON was da rauskommt.

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

                            @mischu-0 Na Du brauchst nur den JSON den Du rausbekommst hier mal in code-Tags einstellen. Dann stellen wir dir ein paar Puzzleteile zusammen.

                            Schau wenn der JSON so ähnlich aussieht, wie eben von mir gepostet:

                            Dann bekommst Du so alle Werte raus.

                            4599563f-2e8d-499b-a674-74295219f00e-image.png

                            Du kannst aber auch auf das 1. und 2. Element direkt über das Listenpuuzleteil zugreifen.

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

                              @mickym Wenn das ganze in ein Objekt response eingebettet ist, dann greifst Du über das Attribut "response.data" auf das Objekt/Array zu. Aber kopiere einfach die Ausgabe Deiner HTTP Ausgabe als JSON hier in Codetags rein.

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

                                Ich konnte zumindest den einen Tag rausfiltern den ich benötige.
                                Ich benötige den Wert: 74.515

                                Screenshot 2024-04-21 233602.png

                                Codierknecht mickym 2 Replies Last reply Reply Quote 0
                                • Codierknecht
                                  Codierknecht Developer Most Active @MiSchu 0 last edited by

                                  @mischu-0
                                  Mit 'nem Bildchen können wir wenig anfangen.

                                  Wie @mickym schon schrieb: In Code-Tags einbetten.

                                  6906f15e-0b05-43d3-9a33-39098379b2f0-grafik.png

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

                                    @mischu-0 Sehr gut. Und nun markiere das Ganze - kopiere es mit Strg+C in die Zwischenablage und dann hier in Codetags wie hier beschrieben mit Strg+V rein.

                                    Code-Tags.gif

                                    Achte darauf dass die 3 Hochkommas in der ersten und letzten Zeile erhalten bleiben.
                                    Dann können wir das rauskopieren und selbst verwenden:

                                    Ich befürchte aber wir werden JSONATA verwenden. 🙄 aber ich zeigs Dir wenn Du das hier reinkopiert hast.

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

                                      {
                                          "preferredNextApiRequestAt": {
                                              "secondOfHour": 794,
                                              "epochTimeUtc": 1713737594
                                          },
                                          "status": 0,
                                          "iLastPredictionGenerationEpochTime": 1713735201,
                                          "weather_source_text": "<a target=\"_blank\" href=\"https://www.dwd.de/DE/service/copyright/copyright_node.html\"><img src=\"https://www.solarprognose.de/web/img/dwd_logo_258x69.png\"></a>",
                                          "datalinename": "Germany > Ohlenbüttel",
                                          "data": {
                                              "20240421": 74.515
                                          }
                                      }
                                      
                                      mickym 1 Reply Last reply Reply Quote 1
                                      • mickym
                                        mickym Most Active @MiSchu 0 last edited by mickym

                                        Super ja so funktioniert es!!! 👍 👍 👍

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

                                          Sehr gut. Ich habe nicht den neuesten Javascript Adapter drauf - der kann mehr Objektbearbeitung.

                                          5bf3cb7f-167e-469a-91fb-930369a4edd0-image.png

                                          Aber hier mal eine JSONATA Lösung. Wenn es mehrere Werte sind, bekommst Du ein Array/Liste.
                                          Wenn Dir die Eigenschaft bekannt ist, kannst Du wie eins weiter unten auch über das Attribut auf den Wert zugreifen.

                                          Hier das Blockly zum Import:

                                          <xml xmlns="https://developers.google.com/blockly/xml">
                                           <variables>
                                             <variable id="Zz(+DtU$uPpEY:Mgo{C~">input</variable>
                                             <variable id="8=$*!H(xy1^`AZEQeNE~">Objekt</variable>
                                           </variables>
                                           <block type="variables_set" id="i@E%AUGXpX;`=JuQumE*" x="-1037" y="-512">
                                             <field name="VAR" id="Zz(+DtU$uPpEY:Mgo{C~">input</field>
                                             <value name="VALUE">
                                               <block type="text" id="}PEXHXxBDJcv/OF#=4|3">
                                                 <field name="TEXT">{     "preferredNextApiRequestAt": {         "secondOfHour": 794,         "epochTimeUtc": 1713737594     },     "status": 0,     "iLastPredictionGenerationEpochTime": 1713735201,     "weather_source_text": "&lt;a target=\"_blank\" href=\"https://www.dwd.de/DE/service/copyright/copyright_node.html\"&gt;&lt;img src=\"https://www.solarprognose.de/web/img/dwd_logo_258x69.png\"&gt;&lt;/a&gt;",     "datalinename": "Germany &gt; Ohlenbüttel",     "data": {         "20240421": 74.515     } }</field>
                                               </block>
                                             </value>
                                             <next>
                                               <block type="variables_set" id="765/wUu!s58uh0I_gH(-">
                                                 <field name="VAR" id="8=$*!H(xy1^`AZEQeNE~">Objekt</field>
                                                 <value name="VALUE">
                                                   <block type="get_attr" id="Qr)T/h2jra_zYko_$T{=">
                                                     <value name="PATH">
                                                       <shadow type="text" id="U!ym|5$}*dIpoTyCS^H@">
                                                         <field name="TEXT">data</field>
                                                       </shadow>
                                                     </value>
                                                     <value name="OBJECT">
                                                       <block type="variables_get" id="i,D8WS38zv_n#y`DuZyQ">
                                                         <field name="VAR" id="Zz(+DtU$uPpEY:Mgo{C~">input</field>
                                                       </block>
                                                     </value>
                                                   </block>
                                                 </value>
                                                 <next>
                                                   <block type="debug" id="h36.2[I}R`=v`,|uz~%_">
                                                     <field name="Severity">log</field>
                                                     <value name="TEXT">
                                                       <shadow type="text" id="V-n!Em:i+u+~7EZl#o:p">
                                                         <field name="TEXT">test</field>
                                                       </shadow>
                                                       <block type="variables_get" id="z1fV)iBgJq7n!Hfk;;D6">
                                                         <field name="VAR" id="8=$*!H(xy1^`AZEQeNE~">Objekt</field>
                                                       </block>
                                                     </value>
                                                     <next>
                                                       <block type="debug" id="UGFUJqPd{S+@hd9xcfS%">
                                                         <field name="Severity">log</field>
                                                         <value name="TEXT">
                                                           <shadow type="text" id="XJi1WK{gHhP=Yv#Wi=?3">
                                                             <field name="TEXT">test</field>
                                                           </shadow>
                                                           <block type="convert_jsonata" id="$,zuxsq(^[:9@-cHs(8g">
                                                             <value name="EXPRESSION">
                                                               <shadow type="text" id="1zurDIuQyI-K,qys$w0Z">
                                                                 <field name="TEXT">$.*</field>
                                                               </shadow>
                                                             </value>
                                                             <value name="TARGET">
                                                               <block type="variables_get" id="})8i.I6Q#G`[n`vS?0;t">
                                                                 <field name="VAR" id="8=$*!H(xy1^`AZEQeNE~">Objekt</field>
                                                               </block>
                                                             </value>
                                                           </block>
                                                         </value>
                                                         <next>
                                                           <block type="debug" id=",svsp;khW{!T$+BV*(c}">
                                                             <field name="Severity">log</field>
                                                             <value name="TEXT">
                                                               <shadow type="text" id=")9%NhZ9}C(]{SsWQp~OE">
                                                                 <field name="TEXT">test</field>
                                                               </shadow>
                                                               <block type="get_attr" id="xHiM0scKFVv[.SafIhs#">
                                                                 <value name="PATH">
                                                                   <shadow type="text" id="{N1rfGmojLyWd?m,kK9|">
                                                                     <field name="TEXT">20240421</field>
                                                                   </shadow>
                                                                 </value>
                                                                 <value name="OBJECT">
                                                                   <block type="variables_get" id="-huXr#6}lL6HM@]yP%yb">
                                                                     <field name="VAR" id="8=$*!H(xy1^`AZEQeNE~">Objekt</field>
                                                                   </block>
                                                                 </value>
                                                               </block>
                                                             </value>
                                                           </block>
                                                         </next>
                                                       </block>
                                                     </next>
                                                   </block>
                                                 </next>
                                               </block>
                                             </next>
                                           </block>
                                          </xml>
                                          

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

                                            @mickym OK, wie füge ich jetzt die url ein, bzw frag die ab

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            30
                                            923
                                            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