Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. [Gelöst] Werte von Clever Tanken

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    189

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.4k

[Gelöst] Werte von Clever Tanken

Geplant Angeheftet Gesperrt Verschoben Node-Red
29 Beiträge 6 Kommentatoren 2.2k Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • OliverIOO OliverIO

    @homoran sagte in Werte auslesen von Webseite:

    und bitte keine externen Hoster für den Quelltext!

    doch, wenn sie regex101 direkt nehmen dann schon
    dort kann man wunderschön einen link auf seine gespeicherten daten speichern

    W Online
    W Online
    Wildbill
    schrieb am zuletzt editiert von
    #11

    @oliverio Es geht darum, dass Files (oder auch Bilder) vom extern Hoster auch mal gelöscht oder der Link geändert werden könnte. Dann ist das Anhängsel hier im Thread wertlos, da es sich nicht mehr öffnen lässt. Was direkt im Filesystem des Forums liegt, bleibt auch da, bislang auch nach Umzügen zu anderen Hostern.
    Deshalb sollte man immer Anhänge forenintern speichern und verlinken.

    Gruss, Jürgen

    1 Antwort Letzte Antwort
    0
    • R rewenode

      @mickym Wenn es nur um Jsonata geht, da kann ich helfen, was nicht heißt, dass es nicht noch einfacher geht.

      2022-09-10_10-16-52.png

      [
         {
             "id": "df9f925401039198",
             "type": "change",
             "z": "d43ad352c5585762",
             "name": "combine art and price",
             "rules": [
                 {
                     "t": "set",
                     "p": "payload",
                     "pt": "msg",
                     "to": "(\t$art :=  $filter(payload,function(\t        $v,$i){\t          ($i)%2=0  \t        });\t$preis := $map($filter(payload,function(\t        $v,$i){\t          ($i)%2=1  \t        }),function($v,$i){\t            $split($v,\"\\n\")[2].$trim().$number()\t        })      \t        ;\t\t$map($art,function($v,$i){\t     $v & \": \" & $preis[$i]\t\t})\t\t)",
                     "tot": "jsonata"
                 }
             ],
             "action": "",
             "property": "",
             "from": "",
             "to": "",
             "reg": false,
             "x": 280,
             "y": 300,
             "wires": [
                 [
                     "49c238fb0d7c57f6"
                 ]
             ]
         }
      ]
      

      Gruß
      Reiner

      mickymM Offline
      mickymM Offline
      mickym
      Most Active
      schrieb am zuletzt editiert von
      #12

      @rewenode Ach schön dass Du Dich meldest - mein JSONATA Lehrer. Ich kanns nur leider nicht importieren - da Du den Export nicht in CodeTags gepackt hast und dann interpretiert der Browser irgendwelche Zeichen. Kannst Du es nochmal in CodeTags exportieren?

      Ja und war mir neu, wie oder dass man mehrere Abschnitte in der html node kombinieren kann. ;)

      So und die größte Herausforderung ist aber ken Array als Text, sondern ein Objekt mit den Kraftstoffen als Eingenschaften des Objektes wie bei mir unten.

      Also Ergebnis, sollte schon so aussehen:

      435fbad5-ebaa-48ff-9edf-a5fa0853bd86-image.png

      Ich scheitere immer daran die Objektingenschaften durch zu iterieren bzw. mappen.

      Aber vielleicht kannst Du ja erst mal Deinen Flow nochmal in CodeTags packen, damit ich es mir in Ruhe anschauen kann, aber wie gesagt Ziel wäre EIN Objekt mit den entsprechenden Eigenschaften zu haben. ;)

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      R 1 Antwort Letzte Antwort
      0
      • mickymM mickym

        @rewenode Ach schön dass Du Dich meldest - mein JSONATA Lehrer. Ich kanns nur leider nicht importieren - da Du den Export nicht in CodeTags gepackt hast und dann interpretiert der Browser irgendwelche Zeichen. Kannst Du es nochmal in CodeTags exportieren?

        Ja und war mir neu, wie oder dass man mehrere Abschnitte in der html node kombinieren kann. ;)

        So und die größte Herausforderung ist aber ken Array als Text, sondern ein Objekt mit den Kraftstoffen als Eingenschaften des Objektes wie bei mir unten.

        Also Ergebnis, sollte schon so aussehen:

        435fbad5-ebaa-48ff-9edf-a5fa0853bd86-image.png

        Ich scheitere immer daran die Objektingenschaften durch zu iterieren bzw. mappen.

        Aber vielleicht kannst Du ja erst mal Deinen Flow nochmal in CodeTags packen, damit ich es mir in Ruhe anschauen kann, aber wie gesagt Ziel wäre EIN Objekt mit den entsprechenden Eigenschaften zu haben. ;)

        R Offline
        R Offline
        rewenode
        schrieb am zuletzt editiert von
        #13

        @mickym sagte in Werte auslesen von Webseite:

        Ich kanns nur leider nicht importieren - da Du den Export nicht in CodeTags gepackt hast und dann interpretiert der Browser irgendwelche Zeichen. Kannst Du es nochmal in CodeTags exportieren?

        Oh, sorry ;-( Schau mal ob es jetzt geht. Hab deb Beitrag geändert.

        Gruß
        Reiner

        mickymM 1 Antwort Letzte Antwort
        0
        • R rewenode

          @mickym sagte in Werte auslesen von Webseite:

          Ich kanns nur leider nicht importieren - da Du den Export nicht in CodeTags gepackt hast und dann interpretiert der Browser irgendwelche Zeichen. Kannst Du es nochmal in CodeTags exportieren?

          Oh, sorry ;-( Schau mal ob es jetzt geht. Hab deb Beitrag geändert.

          Gruß
          Reiner

          mickymM Offline
          mickymM Offline
          mickym
          Most Active
          schrieb am zuletzt editiert von
          #14

          @rewenode Ja jetzt ist die Change-Node solo drin und das wichtigste ist mit dem Code:

          (
          $art :=  $filter(payload,function(
                  $v,$i){
                    ($i)%2=0  
                  });
          $preis := $map($filter(payload,function(
                  $v,$i){
                    ($i)%2=1  
                  }),function($v,$i){
                      $split($v,"\n")[2].$trim().$number()
                  })      
                  ;
          
          $map($art,function($v,$i){
               $v & ": " & $preis[$i]
          
          })
          
          )
          

          Allerdings stimmt das Ergebnis nicht.

          Schön wäre wie gesagt ein Objekt - Ok das bekomme ich nun auch ohne Flow variablen aber halt mit JS hin. Ich schau mir das nochmal in Ruhe an. Hab mal den Output in eine InjectNode gemacht, um nicht immer die Webabfrage zu starten:

          0d019c68-67cb-4f21-8745-40335a12f1cf-image.png

          Momentan kommt bei Deinem Code - immer noch ein Array, statt eines Objektes raus und die Werte passen noch nicht. Aber ich werde es erst nochmal so in JS machen und dann unterhalten wir uns über JSONATA. ;)

          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

          R 1 Antwort Letzte Antwort
          0
          • mickymM mickym

            @rewenode Ja jetzt ist die Change-Node solo drin und das wichtigste ist mit dem Code:

            (
            $art :=  $filter(payload,function(
                    $v,$i){
                      ($i)%2=0  
                    });
            $preis := $map($filter(payload,function(
                    $v,$i){
                      ($i)%2=1  
                    }),function($v,$i){
                        $split($v,"\n")[2].$trim().$number()
                    })      
                    ;
            
            $map($art,function($v,$i){
                 $v & ": " & $preis[$i]
            
            })
            
            )
            

            Allerdings stimmt das Ergebnis nicht.

            Schön wäre wie gesagt ein Objekt - Ok das bekomme ich nun auch ohne Flow variablen aber halt mit JS hin. Ich schau mir das nochmal in Ruhe an. Hab mal den Output in eine InjectNode gemacht, um nicht immer die Webabfrage zu starten:

            0d019c68-67cb-4f21-8745-40335a12f1cf-image.png

            Momentan kommt bei Deinem Code - immer noch ein Array, statt eines Objektes raus und die Werte passen noch nicht. Aber ich werde es erst nochmal so in JS machen und dann unterhalten wir uns über JSONATA. ;)

            R Offline
            R Offline
            rewenode
            schrieb am zuletzt editiert von
            #15

            @mickym Meinst du so?

            2022-09-10_14-28-21.png

            [
               {
                   "id": "d43ad352c5585762",
                   "type": "tab",
                   "label": "Flow 3",
                   "disabled": false,
                   "info": "",
                   "env": []
               },
               {
                   "id": "67e607404c4e23a9",
                   "type": "inject",
                   "z": "d43ad352c5585762",
                   "name": "",
                   "props": [
                       {
                           "p": "trigger",
                           "v": "true",
                           "vt": "bool"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "",
                   "x": 250,
                   "y": 40,
                   "wires": [
                       [
                           "978278b345db5c20"
                       ]
                   ]
               },
               {
                   "id": "978278b345db5c20",
                   "type": "http request",
                   "z": "d43ad352c5585762",
                   "name": "",
                   "method": "GET",
                   "ret": "txt",
                   "paytoqs": "ignore",
                   "url": "https://nopaste.net/WEArq4Mojd",
                   "tls": "",
                   "persist": false,
                   "proxy": "",
                   "insecureHTTPParser": false,
                   "authType": "",
                   "senderr": false,
                   "headers": [],
                   "x": 250,
                   "y": 100,
                   "wires": [
                       [
                           "8817da5505a0693f"
                       ]
                   ]
               },
               {
                   "id": "8817da5505a0693f",
                   "type": "html",
                   "z": "d43ad352c5585762",
                   "name": "",
                   "property": "payload",
                   "outproperty": "payload",
                   "tag": "[class=\"price-type-name\"],[class=\"price-field\"]",
                   "ret": "text",
                   "as": "single",
                   "x": 360,
                   "y": 160,
                   "wires": [
                       [
                           "df9f925401039198"
                       ]
                   ]
               },
               {
                   "id": "49c238fb0d7c57f6",
                   "type": "debug",
                   "z": "d43ad352c5585762",
                   "name": "debug 21",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 240,
                   "y": 280,
                   "wires": []
               },
               {
                   "id": "df9f925401039198",
                   "type": "change",
                   "z": "d43ad352c5585762",
                   "name": "combine art and price",
                   "rules": [
                       {
                           "t": "set",
                           "p": "payload",
                           "pt": "msg",
                           "to": "(\t   $art :=  $filter(\t       payload,\t       function(\t        $v,$i){\t          ($i)%2=0  \t        }\t   );\t   $preis := $map(\t       $filter(\t           payload,\t           function(\t        $v,$i){\t          ($i)%2=1  \t        }\t       ),\t       function($v,$i){\t           $split($v,\"\\n\")[2].$trim().$number().$formatNumber(\"#0.00\")\t        }\t   )      \t        ;\t   $map(\t       $art,\t       function($v,$i){\t     $v & \": \" & $preis[$i]\t}\t   ){$split(\":\")[0]: $split(\":\")[1]}\t\t)",
                           "tot": "jsonata"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 280,
                   "y": 220,
                   "wires": [
                       [
                           "49c238fb0d7c57f6"
                       ]
                   ]
               }
            ]
            

            Gruß
            Reiner

            mickymM 2 Antworten Letzte Antwort
            0
            • R rewenode

              @mickym Meinst du so?

              2022-09-10_14-28-21.png

              [
                 {
                     "id": "d43ad352c5585762",
                     "type": "tab",
                     "label": "Flow 3",
                     "disabled": false,
                     "info": "",
                     "env": []
                 },
                 {
                     "id": "67e607404c4e23a9",
                     "type": "inject",
                     "z": "d43ad352c5585762",
                     "name": "",
                     "props": [
                         {
                             "p": "trigger",
                             "v": "true",
                             "vt": "bool"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "x": 250,
                     "y": 40,
                     "wires": [
                         [
                             "978278b345db5c20"
                         ]
                     ]
                 },
                 {
                     "id": "978278b345db5c20",
                     "type": "http request",
                     "z": "d43ad352c5585762",
                     "name": "",
                     "method": "GET",
                     "ret": "txt",
                     "paytoqs": "ignore",
                     "url": "https://nopaste.net/WEArq4Mojd",
                     "tls": "",
                     "persist": false,
                     "proxy": "",
                     "insecureHTTPParser": false,
                     "authType": "",
                     "senderr": false,
                     "headers": [],
                     "x": 250,
                     "y": 100,
                     "wires": [
                         [
                             "8817da5505a0693f"
                         ]
                     ]
                 },
                 {
                     "id": "8817da5505a0693f",
                     "type": "html",
                     "z": "d43ad352c5585762",
                     "name": "",
                     "property": "payload",
                     "outproperty": "payload",
                     "tag": "[class=\"price-type-name\"],[class=\"price-field\"]",
                     "ret": "text",
                     "as": "single",
                     "x": 360,
                     "y": 160,
                     "wires": [
                         [
                             "df9f925401039198"
                         ]
                     ]
                 },
                 {
                     "id": "49c238fb0d7c57f6",
                     "type": "debug",
                     "z": "d43ad352c5585762",
                     "name": "debug 21",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 240,
                     "y": 280,
                     "wires": []
                 },
                 {
                     "id": "df9f925401039198",
                     "type": "change",
                     "z": "d43ad352c5585762",
                     "name": "combine art and price",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "(\t   $art :=  $filter(\t       payload,\t       function(\t        $v,$i){\t          ($i)%2=0  \t        }\t   );\t   $preis := $map(\t       $filter(\t           payload,\t           function(\t        $v,$i){\t          ($i)%2=1  \t        }\t       ),\t       function($v,$i){\t           $split($v,\"\\n\")[2].$trim().$number().$formatNumber(\"#0.00\")\t        }\t   )      \t        ;\t   $map(\t       $art,\t       function($v,$i){\t     $v & \": \" & $preis[$i]\t}\t   ){$split(\":\")[0]: $split(\":\")[1]}\t\t)",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 280,
                     "y": 220,
                     "wires": [
                         [
                             "49c238fb0d7c57f6"
                         ]
                     ]
                 }
              ]
              

              Gruß
              Reiner

              mickymM Offline
              mickymM Offline
              mickym
              Most Active
              schrieb am zuletzt editiert von mickym
              #16

              @rewenode Ja und nein - hab mal den Output in eine Inject Node gegeben, um nicht dauern die Webabfrage zu machen.

              Klare Verbesserung aus der HTML Node - es werden nur die Textinhalte geholt.
              Generell verstehe ich es - dass Du intern nun auch 2 Arrays machst, indem Du die geraden Elemente der $art zuweist und die ungeraden der $kraftstoff.
              So bei dem Preis verstehe ich was Du machst - aber ich würde lieber Zahlen haben.

              Dann lass uns mal zu der Zeile kommen, die in meinen Augen Probleme macht:

               $split($v,"\n")[2].$trim().$number()
              

              Ich hab mal das formatNumber schon weggelassen, weil ich ja keine Strings haben möchte. Allerdings bekomme ich das Leerzeichen vor nicht weg.

              Laut Beschreibung sollten ja auch führende Leerzeichen entfernt werden:

              05ce1389-4efc-4029-bede-5d476c8dd33e-image.png

              tut es aber nicht.

              Das Einzige wie ich es nun hin bekomme, ist wenn man das Objekt zusammensetzt, das ich es dort nochmal mache:

              $map(
                     $art,
                     function($v,$i){
                   $v & ": " & $preis[$i]
              }
                 ){$split(":")[0]: $split(":")[1].$trim().$number()}
              

              Das eigentlich geniale an JSONATA bzw. verwirrende ist die Iteration zur Objekterzeugung - das geht einfach noch nicht so recht in meinem Schädel.

              Sprich wenn ich die splits weglasse hast Du einfach ein array in dem Du mit maps, die zusammengesetzt sind.

              $map(
                     $art,
                     function($v,$i){
                   $v & ": " & $preis[$i]
              }
                 )
              

              ergibt also das Array.
              1c78106b-b80f-49d0-92a5-b5d14642486b-image.png

              Über das Verketten wird impliziert also jedes einzelne Array Element weiterverarbeitet. ;)

                 $map(
                     $art,
                     function($v,$i){
                   $v & ": " & $preis[$i]
              }
                 ){$split(":")[0]: $split(":")[1].$trim().$number()}
              

              Das ist eigentlich das geniale an JSONATA - aber geht immer nicht so in den Kopf. Damit habe ich das gewünschte Ergebnis - wobei ich also

              oben jetzt nur noch das $trim() stehen habe - da dort aus mir unerfindlichen Gründen die Zahlenumwandlung nicht geht:

              48b2eb98-dd80-4ff8-8e1b-78dec200d2be-image.png

              Man kann das $trim() oben sogar ganz weglassen.

              :+1: :+1: :+1:

              Also insgesamt sieht es nun so aus:

              (
                 $art :=  $filter(
                     payload,
                     function(
                      $v,$i){
                        ($i)%2=0  
                      }
                 );
                 $preis := $map(
                     $filter(
                         payload,
                         function(
                      $v,$i){
                        ($i)%2=1  
                      }
                     ),
                     function($v,$i){
                         $split($v,"\n")[2]
                      }
                 )      
                      ;
                 $map(
                     $art,
                     function($v,$i){
                   $v & ": " & $preis[$i]
              }
                 ){$split(":")[0]: $split(":")[1].$trim().$number()}
              
              )
              

              Der Punkt ist ja eigentlich ein Abkürzung für das map - wenn ich also diesen kleinen Punkt machen - wird quasi aus jeder Property wieder ein Array Element gebildet.

               $map(
                     $art,
                     function($v,$i){
                   $v & ": " & $preis[$i]
              }
                 ).{$split(":")[0]: $split(":")[1].$trim().$number()}
              

              Dieser Punkt also ergibt dann:
              8031deb9-11ce-4610-b202-3f6c00b1cbe4-image.png

              Im Prinzip habe ich das verstanden - ich muss nur diese Verkettungen noch in meinen Kopf bekommen - jedenfalls ist diese Funktion schon mal zum Abspeichern.

              Bleibt nur die Frage offen, warum funktioniert das Konvertieren in einen Zahlenwert oben nicht und unten schon???

              EDIT: habe es auch mit dem Mapping oben versucht - das ergibt auch immer wieder Strings:

              $preis := $map(
                     $filter(
                         payload,
                         function(
                      $v,$i){
                        ($i)%2=1  
                      }
                     ),
                     function($v,$i){
                         $split($v,"\n")[2] 
                      }
                      
                 ).$trim().$number() ;
              

              Erzeugt trotzdem:

              151575f4-9f79-46b7-8e6c-391584d9a08c-image.png

              Na zumindest funktioniert es wenn man es unten bei der Objekterstellung macht. Ich versuche das jetzt trotzdem nochmal mit regEx.

              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

              1 Antwort Letzte Antwort
              0
              • R rewenode

                @mickym Meinst du so?

                2022-09-10_14-28-21.png

                [
                   {
                       "id": "d43ad352c5585762",
                       "type": "tab",
                       "label": "Flow 3",
                       "disabled": false,
                       "info": "",
                       "env": []
                   },
                   {
                       "id": "67e607404c4e23a9",
                       "type": "inject",
                       "z": "d43ad352c5585762",
                       "name": "",
                       "props": [
                           {
                               "p": "trigger",
                               "v": "true",
                               "vt": "bool"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "x": 250,
                       "y": 40,
                       "wires": [
                           [
                               "978278b345db5c20"
                           ]
                       ]
                   },
                   {
                       "id": "978278b345db5c20",
                       "type": "http request",
                       "z": "d43ad352c5585762",
                       "name": "",
                       "method": "GET",
                       "ret": "txt",
                       "paytoqs": "ignore",
                       "url": "https://nopaste.net/WEArq4Mojd",
                       "tls": "",
                       "persist": false,
                       "proxy": "",
                       "insecureHTTPParser": false,
                       "authType": "",
                       "senderr": false,
                       "headers": [],
                       "x": 250,
                       "y": 100,
                       "wires": [
                           [
                               "8817da5505a0693f"
                           ]
                       ]
                   },
                   {
                       "id": "8817da5505a0693f",
                       "type": "html",
                       "z": "d43ad352c5585762",
                       "name": "",
                       "property": "payload",
                       "outproperty": "payload",
                       "tag": "[class=\"price-type-name\"],[class=\"price-field\"]",
                       "ret": "text",
                       "as": "single",
                       "x": 360,
                       "y": 160,
                       "wires": [
                           [
                               "df9f925401039198"
                           ]
                       ]
                   },
                   {
                       "id": "49c238fb0d7c57f6",
                       "type": "debug",
                       "z": "d43ad352c5585762",
                       "name": "debug 21",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 240,
                       "y": 280,
                       "wires": []
                   },
                   {
                       "id": "df9f925401039198",
                       "type": "change",
                       "z": "d43ad352c5585762",
                       "name": "combine art and price",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "(\t   $art :=  $filter(\t       payload,\t       function(\t        $v,$i){\t          ($i)%2=0  \t        }\t   );\t   $preis := $map(\t       $filter(\t           payload,\t           function(\t        $v,$i){\t          ($i)%2=1  \t        }\t       ),\t       function($v,$i){\t           $split($v,\"\\n\")[2].$trim().$number().$formatNumber(\"#0.00\")\t        }\t   )      \t        ;\t   $map(\t       $art,\t       function($v,$i){\t     $v & \": \" & $preis[$i]\t}\t   ){$split(\":\")[0]: $split(\":\")[1]}\t\t)",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 280,
                       "y": 220,
                       "wires": [
                           [
                               "49c238fb0d7c57f6"
                           ]
                       ]
                   }
                ]
                

                Gruß
                Reiner

                mickymM Offline
                mickymM Offline
                mickym
                Most Active
                schrieb am zuletzt editiert von mickym
                #17

                @rewenode Lieber Reiner - ich danke Dir wieder einmal so recht herzlich. :+1: :+1: :+1:

                • ich bin immer noch verwirrt aber ich habe es nun in einen Einzeiler geschafft - danke für Deine Ideen. Hat mich Zeit gekostet - aber mit dem JSONATA Exerciser habe ich mich schrittweise vorgetastet. ;)

                Die magische Zeile (JSONATA ist magisch) lautet:

                payload#$i[$i%2=0]{$$.payload[$i]:($$.payload[$i+1].$match(/\d\.\d+/).match.$number())}
                

                efaf025f-1f72-4aab-8ce2-bf9d80acc397-image.png

                Damit reduziert sich der ganze Flow auf:

                Wenn man es als String dann auch noch mit den Nachkommastellen formatiert haben will kann man das dann ja noch einfach hinterher schieben. ;)

                payload#$i[$i%2=0]{$$.payload[$i]:($$.payload[$i+1].$match(/\d\.\d+/).match.$number().$formatNumber("#0.00"))}
                

                5bea8dcc-96d2-43a3-862d-038e3d70d395-image.png

                [
                   {
                       "id": "02ee08c829c2819c",
                       "type": "html",
                       "z": "d93c602e39839f86",
                       "name": "",
                       "property": "payload",
                       "outproperty": "payload",
                       "tag": "[class=\"price-type-name\"],[class=\"price-field\"]",
                       "ret": "text",
                       "as": "single",
                       "x": 630,
                       "y": 1500,
                       "wires": [
                           [
                               "c0a12f2315793304",
                               "605a896c2a98a031"
                           ]
                       ]
                   },
                   {
                       "id": "c0a12f2315793304",
                       "type": "change",
                       "z": "d93c602e39839f86",
                       "name": "",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "payload#$i[$i%2=0]{$$.payload[$i]:($$.payload[$i+1].$match(/\\d\\.\\d+/).match.$number())}",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 930,
                       "y": 1500,
                       "wires": [
                           [
                               "c12b286429069877"
                           ]
                       ]
                   },
                   {
                       "id": "c12b286429069877",
                       "type": "debug",
                       "z": "d93c602e39839f86",
                       "name": "Spritpreise als Zahlen",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1160,
                       "y": 1500,
                       "wires": []
                   },
                   {
                       "id": "900da6162b9d83d1",
                       "type": "inject",
                       "z": "d93c602e39839f86",
                       "name": "",
                       "props": [
                           {
                               "p": "trigger",
                               "v": "true",
                               "vt": "bool"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "x": 190,
                       "y": 1500,
                       "wires": [
                           [
                               "f51fcc63c0935308"
                           ]
                       ]
                   },
                   {
                       "id": "f51fcc63c0935308",
                       "type": "http request",
                       "z": "d93c602e39839f86",
                       "name": "",
                       "method": "GET",
                       "ret": "txt",
                       "paytoqs": "ignore",
                       "url": "https://nopaste.net/WEArq4Mojd",
                       "tls": "",
                       "persist": false,
                       "proxy": "",
                       "insecureHTTPParser": false,
                       "authType": "",
                       "senderr": false,
                       "headers": [],
                       "x": 350,
                       "y": 1500,
                       "wires": [
                           [
                               "02ee08c829c2819c"
                           ]
                       ]
                   },
                   {
                       "id": "605a896c2a98a031",
                       "type": "change",
                       "z": "d93c602e39839f86",
                       "name": "",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "payload#$i[$i%2=0]{$$.payload[$i]:($$.payload[$i+1].$match(/\\d\\.\\d+/).match.$number().$formatNumber(\"#0.00\"))}",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 930,
                       "y": 1540,
                       "wires": [
                           [
                               "793bea5a23676fa7"
                           ]
                       ]
                   },
                   {
                       "id": "793bea5a23676fa7",
                       "type": "debug",
                       "z": "d93c602e39839f86",
                       "name": "Spritpreise formatiert als String",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1190,
                       "y": 1540,
                       "wires": []
                   }
                ]
                

                :grin: :grin: :grin:

                NodeRed ist einfach genial. ;)

                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                R 1 Antwort Letzte Antwort
                0
                • mickymM mickym

                  @rewenode Lieber Reiner - ich danke Dir wieder einmal so recht herzlich. :+1: :+1: :+1:

                  • ich bin immer noch verwirrt aber ich habe es nun in einen Einzeiler geschafft - danke für Deine Ideen. Hat mich Zeit gekostet - aber mit dem JSONATA Exerciser habe ich mich schrittweise vorgetastet. ;)

                  Die magische Zeile (JSONATA ist magisch) lautet:

                  payload#$i[$i%2=0]{$$.payload[$i]:($$.payload[$i+1].$match(/\d\.\d+/).match.$number())}
                  

                  efaf025f-1f72-4aab-8ce2-bf9d80acc397-image.png

                  Damit reduziert sich der ganze Flow auf:

                  Wenn man es als String dann auch noch mit den Nachkommastellen formatiert haben will kann man das dann ja noch einfach hinterher schieben. ;)

                  payload#$i[$i%2=0]{$$.payload[$i]:($$.payload[$i+1].$match(/\d\.\d+/).match.$number().$formatNumber("#0.00"))}
                  

                  5bea8dcc-96d2-43a3-862d-038e3d70d395-image.png

                  [
                     {
                         "id": "02ee08c829c2819c",
                         "type": "html",
                         "z": "d93c602e39839f86",
                         "name": "",
                         "property": "payload",
                         "outproperty": "payload",
                         "tag": "[class=\"price-type-name\"],[class=\"price-field\"]",
                         "ret": "text",
                         "as": "single",
                         "x": 630,
                         "y": 1500,
                         "wires": [
                             [
                                 "c0a12f2315793304",
                                 "605a896c2a98a031"
                             ]
                         ]
                     },
                     {
                         "id": "c0a12f2315793304",
                         "type": "change",
                         "z": "d93c602e39839f86",
                         "name": "",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "payload#$i[$i%2=0]{$$.payload[$i]:($$.payload[$i+1].$match(/\\d\\.\\d+/).match.$number())}",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 930,
                         "y": 1500,
                         "wires": [
                             [
                                 "c12b286429069877"
                             ]
                         ]
                     },
                     {
                         "id": "c12b286429069877",
                         "type": "debug",
                         "z": "d93c602e39839f86",
                         "name": "Spritpreise als Zahlen",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "payload",
                         "targetType": "msg",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 1160,
                         "y": 1500,
                         "wires": []
                     },
                     {
                         "id": "900da6162b9d83d1",
                         "type": "inject",
                         "z": "d93c602e39839f86",
                         "name": "",
                         "props": [
                             {
                                 "p": "trigger",
                                 "v": "true",
                                 "vt": "bool"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "x": 190,
                         "y": 1500,
                         "wires": [
                             [
                                 "f51fcc63c0935308"
                             ]
                         ]
                     },
                     {
                         "id": "f51fcc63c0935308",
                         "type": "http request",
                         "z": "d93c602e39839f86",
                         "name": "",
                         "method": "GET",
                         "ret": "txt",
                         "paytoqs": "ignore",
                         "url": "https://nopaste.net/WEArq4Mojd",
                         "tls": "",
                         "persist": false,
                         "proxy": "",
                         "insecureHTTPParser": false,
                         "authType": "",
                         "senderr": false,
                         "headers": [],
                         "x": 350,
                         "y": 1500,
                         "wires": [
                             [
                                 "02ee08c829c2819c"
                             ]
                         ]
                     },
                     {
                         "id": "605a896c2a98a031",
                         "type": "change",
                         "z": "d93c602e39839f86",
                         "name": "",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "payload#$i[$i%2=0]{$$.payload[$i]:($$.payload[$i+1].$match(/\\d\\.\\d+/).match.$number().$formatNumber(\"#0.00\"))}",
                                 "tot": "jsonata"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 930,
                         "y": 1540,
                         "wires": [
                             [
                                 "793bea5a23676fa7"
                             ]
                         ]
                     },
                     {
                         "id": "793bea5a23676fa7",
                         "type": "debug",
                         "z": "d93c602e39839f86",
                         "name": "Spritpreise formatiert als String",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "payload",
                         "targetType": "msg",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 1190,
                         "y": 1540,
                         "wires": []
                     }
                  ]
                  

                  :grin: :grin: :grin:

                  NodeRed ist einfach genial. ;)

                  R Offline
                  R Offline
                  rewenode
                  schrieb am zuletzt editiert von rewenode
                  #18

                  @mickym sagte in Werte auslesen von Webseite:

                  Die magische Zeile (JSONATA ist magisch) lautet

                  Sehr gut !!! Die Verlockung ist immer groß, JSONata-Konstrukte bis zum Einzeiler zu komprimieren, zumal es oft möglich ist.
                  Gründe, warum ich das oft versuche zu vermeiden sind:

                  1. ich will auch 2 Wochen später noch kapieren, was ich hier eigentlich gemacht habe;-) Und wenn da noch RegEx-Ausdrücke drin sind, geht es fast nicht mehr ohne sinnige Kommentare
                  2. Man kann da schon ganz schön Zeit verdaddeln nur um ein paar Zeilen Code einzusparen

                  Aber Spaß kann das schon machen;-)

                  Gruß und schönen Sonntag
                  Reiner

                  mickymM 1 Antwort Letzte Antwort
                  0
                  • R rewenode

                    @mickym sagte in Werte auslesen von Webseite:

                    Die magische Zeile (JSONATA ist magisch) lautet

                    Sehr gut !!! Die Verlockung ist immer groß, JSONata-Konstrukte bis zum Einzeiler zu komprimieren, zumal es oft möglich ist.
                    Gründe, warum ich das oft versuche zu vermeiden sind:

                    1. ich will auch 2 Wochen später noch kapieren, was ich hier eigentlich gemacht habe;-) Und wenn da noch RegEx-Ausdrücke drin sind, geht es fast nicht mehr ohne sinnige Kommentare
                    2. Man kann da schon ganz schön Zeit verdaddeln nur um ein paar Zeilen Code einzusparen

                    Aber Spaß kann das schon machen;-)

                    Gruß und schönen Sonntag
                    Reiner

                    mickymM Offline
                    mickymM Offline
                    mickym
                    Most Active
                    schrieb am zuletzt editiert von mickym
                    #19

                    @rewenode Wenn ich Dich als Fachmann schon mal da habe. ;)

                    Wenn ich, wie anfangs 2 Arrays habe - und möchte eines als topics bzw. property und das andere als Value nehmen:

                    {
                      "topic": [
                        "topic_01",
                        "topic_02",
                        "topic_03",
                        "topic_04",
                        "topic_05",
                        "topic_06"
                      ],
                      "payload": [
                        2.1,
                        1.96,
                        2.02,
                        2.11,
                        2.09,
                        1.08
                      ]
                    }
                    

                    dann bringe ich es nicht hin ohne $distinct-Function ein sauberes Objekt zu bekommen:

                    topic#$i@$t.payload@$p{$t:$p[$i]}
                    

                    64d214d3-faa5-43b3-95a4-e321593a6b51-image.png

                    topic#$i@$t.payload@$p{$t:$distinct($p[$i])}
                    

                    d5b2bf69-a598-4899-a53f-ac19716fee55-image.png

                    Gibts da noch eine andere Möglichkeit zu verhindern, dass der payload - mal Anzahl der Elemente in einem Array rauskommt. In dieser Variable $i scheint es ein ganzes Array .

                    Eventuell muss man da vorher was ausfiltern, weil im Beispiel - enthält das $i ja skalare Werte:

                    2a3a3bd2-b074-44f2-bca6-e077822d7368-image.png

                    EDIT:

                    Ah ich habs :bulb: :bulb: :bulb: - muss man vorher ausfiltern. :+1: :+1:

                    topic#$i@$t.payload#$j@$p[$i=$j]{$t:$p}
                    

                    6fb28e78-8661-4e04-86fd-c0eb4085f6ca-image.png

                    Hier noch die praktische Anwendung in Node-Red:

                    192d6d02-ee65-4604-b5c0-8b5474c87649-image.png

                    [
                       {
                           "id": "18c446aa69e28041",
                           "type": "debug",
                           "z": "d93c602e39839f86",
                           "name": "debug 33",
                           "active": true,
                           "tosidebar": true,
                           "console": false,
                           "tostatus": false,
                           "complete": "payload",
                           "targetType": "msg",
                           "statusVal": "",
                           "statusType": "auto",
                           "x": 620,
                           "y": 1720,
                           "wires": []
                       },
                       {
                           "id": "42812429ed0f9f97",
                           "type": "change",
                           "z": "d93c602e39839f86",
                           "name": "",
                           "rules": [
                               {
                                   "t": "set",
                                   "p": "payload",
                                   "pt": "msg",
                                   "to": "topic#$i@$t.payload#$j@$p[$i=$j]{$t:$p}",
                                   "tot": "jsonata"
                               },
                               {
                                   "t": "delete",
                                   "p": "topic",
                                   "pt": "msg"
                               }
                           ],
                           "action": "",
                           "property": "",
                           "from": "",
                           "to": "",
                           "reg": false,
                           "x": 430,
                           "y": 1720,
                           "wires": [
                               [
                                   "18c446aa69e28041"
                               ]
                           ]
                       },
                       {
                           "id": "c6812ad471a59a61",
                           "type": "comment",
                           "z": "d93c602e39839f86",
                           "name": "Kombiniere 2 Array in ein Objekt",
                           "info": "",
                           "x": 250,
                           "y": 1660,
                           "wires": []
                       },
                       {
                           "id": "903758012f51ae5c",
                           "type": "inject",
                           "z": "d93c602e39839f86",
                           "name": "",
                           "props": [
                               {
                                   "p": "payload"
                               },
                               {
                                   "p": "topic",
                                   "v": "[\"Diesel\",\"Super E10\",\"Super E5\",\"SuperPlus\",\"LKW-Diesel\",\"LPG\"]",
                                   "vt": "json"
                               }
                           ],
                           "repeat": "",
                           "crontab": "",
                           "once": false,
                           "onceDelay": 0.1,
                           "topic": "",
                           "payload": "[2.1,1.96,2.02,2.11,2.09,1.08]",
                           "payloadType": "json",
                           "x": 230,
                           "y": 1720,
                           "wires": [
                               [
                                   "42812429ed0f9f97"
                               ]
                           ]
                       }
                    ]
                    

                    Sorry dass ich den Thread etwas missbraucht habe. - Aber vielleicht ist das ja auch für andere interessant. Höre jetzt auch auf. ;) -

                    Danke Dir Reiner und auch einen schönen Sonntag. :)

                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                    R 1 Antwort Letzte Antwort
                    0
                    • mickymM mickym

                      @rewenode Wenn ich Dich als Fachmann schon mal da habe. ;)

                      Wenn ich, wie anfangs 2 Arrays habe - und möchte eines als topics bzw. property und das andere als Value nehmen:

                      {
                        "topic": [
                          "topic_01",
                          "topic_02",
                          "topic_03",
                          "topic_04",
                          "topic_05",
                          "topic_06"
                        ],
                        "payload": [
                          2.1,
                          1.96,
                          2.02,
                          2.11,
                          2.09,
                          1.08
                        ]
                      }
                      

                      dann bringe ich es nicht hin ohne $distinct-Function ein sauberes Objekt zu bekommen:

                      topic#$i@$t.payload@$p{$t:$p[$i]}
                      

                      64d214d3-faa5-43b3-95a4-e321593a6b51-image.png

                      topic#$i@$t.payload@$p{$t:$distinct($p[$i])}
                      

                      d5b2bf69-a598-4899-a53f-ac19716fee55-image.png

                      Gibts da noch eine andere Möglichkeit zu verhindern, dass der payload - mal Anzahl der Elemente in einem Array rauskommt. In dieser Variable $i scheint es ein ganzes Array .

                      Eventuell muss man da vorher was ausfiltern, weil im Beispiel - enthält das $i ja skalare Werte:

                      2a3a3bd2-b074-44f2-bca6-e077822d7368-image.png

                      EDIT:

                      Ah ich habs :bulb: :bulb: :bulb: - muss man vorher ausfiltern. :+1: :+1:

                      topic#$i@$t.payload#$j@$p[$i=$j]{$t:$p}
                      

                      6fb28e78-8661-4e04-86fd-c0eb4085f6ca-image.png

                      Hier noch die praktische Anwendung in Node-Red:

                      192d6d02-ee65-4604-b5c0-8b5474c87649-image.png

                      [
                         {
                             "id": "18c446aa69e28041",
                             "type": "debug",
                             "z": "d93c602e39839f86",
                             "name": "debug 33",
                             "active": true,
                             "tosidebar": true,
                             "console": false,
                             "tostatus": false,
                             "complete": "payload",
                             "targetType": "msg",
                             "statusVal": "",
                             "statusType": "auto",
                             "x": 620,
                             "y": 1720,
                             "wires": []
                         },
                         {
                             "id": "42812429ed0f9f97",
                             "type": "change",
                             "z": "d93c602e39839f86",
                             "name": "",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "payload",
                                     "pt": "msg",
                                     "to": "topic#$i@$t.payload#$j@$p[$i=$j]{$t:$p}",
                                     "tot": "jsonata"
                                 },
                                 {
                                     "t": "delete",
                                     "p": "topic",
                                     "pt": "msg"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 430,
                             "y": 1720,
                             "wires": [
                                 [
                                     "18c446aa69e28041"
                                 ]
                             ]
                         },
                         {
                             "id": "c6812ad471a59a61",
                             "type": "comment",
                             "z": "d93c602e39839f86",
                             "name": "Kombiniere 2 Array in ein Objekt",
                             "info": "",
                             "x": 250,
                             "y": 1660,
                             "wires": []
                         },
                         {
                             "id": "903758012f51ae5c",
                             "type": "inject",
                             "z": "d93c602e39839f86",
                             "name": "",
                             "props": [
                                 {
                                     "p": "payload"
                                 },
                                 {
                                     "p": "topic",
                                     "v": "[\"Diesel\",\"Super E10\",\"Super E5\",\"SuperPlus\",\"LKW-Diesel\",\"LPG\"]",
                                     "vt": "json"
                                 }
                             ],
                             "repeat": "",
                             "crontab": "",
                             "once": false,
                             "onceDelay": 0.1,
                             "topic": "",
                             "payload": "[2.1,1.96,2.02,2.11,2.09,1.08]",
                             "payloadType": "json",
                             "x": 230,
                             "y": 1720,
                             "wires": [
                                 [
                                     "42812429ed0f9f97"
                                 ]
                             ]
                         }
                      ]
                      

                      Sorry dass ich den Thread etwas missbraucht habe. - Aber vielleicht ist das ja auch für andere interessant. Höre jetzt auch auf. ;) -

                      Danke Dir Reiner und auch einen schönen Sonntag. :)

                      R Offline
                      R Offline
                      rewenode
                      schrieb am zuletzt editiert von
                      #20

                      @mickym So?

                      2022-09-10_20-15-40.png

                      $.topic#$i{$$.topic[$i]:$$.payload[$i]}
                      

                      Ja, sollte vlt. ein eigener Thread werden

                      Gruß
                      Reiner

                      mickymM 1 Antwort Letzte Antwort
                      0
                      • R rewenode

                        @mickym So?

                        2022-09-10_20-15-40.png

                        $.topic#$i{$$.topic[$i]:$$.payload[$i]}
                        

                        Ja, sollte vlt. ein eigener Thread werden

                        Gruß
                        Reiner

                        mickymM Offline
                        mickymM Offline
                        mickym
                        Most Active
                        schrieb am zuletzt editiert von mickym
                        #21

                        @rewenode sagte in Werte auslesen von Webseite:

                        $.topic#$i{$$.topic[$i]:$$.payload[$i]}

                        Ja - das geht auch. :) - Meins ist umständlicher.

                        Ist abgespeichert. ;)

                        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                        R 1 Antwort Letzte Antwort
                        0
                        • mickymM mickym

                          @rewenode sagte in Werte auslesen von Webseite:

                          $.topic#$i{$$.topic[$i]:$$.payload[$i]}

                          Ja - das geht auch. :) - Meins ist umständlicher.

                          Ist abgespeichert. ;)

                          R Offline
                          R Offline
                          rewenode
                          schrieb am zuletzt editiert von rewenode
                          #22

                          @mickym Oder auch so, um mal mit $zip zu spielen ;-)

                          $zip($.topic,$.payload){$[0]:$[1]}
                          

                          #$i brauchts da natürlich nicht.
                          In JSONata gibt es da immer 1000...

                          Gruß
                          Reiner

                          mickymM 1 Antwort Letzte Antwort
                          1
                          • R rewenode

                            @mickym Oder auch so, um mal mit $zip zu spielen ;-)

                            $zip($.topic,$.payload){$[0]:$[1]}
                            

                            #$i brauchts da natürlich nicht.
                            In JSONata gibt es da immer 1000...

                            Gruß
                            Reiner

                            mickymM Offline
                            mickymM Offline
                            mickym
                            Most Active
                            schrieb am zuletzt editiert von mickym
                            #23

                            @rewenode sagte in Werte auslesen von Webseite:

                            $zip($.topic,$.payload){$[0]:$[1]}

                            Ich muss immer erst 2mal überlegen - OK die Zip Funktion ist ja beschrieben - aber ich bin wieder über das reduce in dem Objekt gestolpert. Das man mit 0 und 1 ja jedes Array-Element ;) durchiteriert wird - Aber auch sehr elegant.

                            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                            R 1 Antwort Letzte Antwort
                            0
                            • mickymM mickym

                              @rewenode sagte in Werte auslesen von Webseite:

                              $zip($.topic,$.payload){$[0]:$[1]}

                              Ich muss immer erst 2mal überlegen - OK die Zip Funktion ist ja beschrieben - aber ich bin wieder über das reduce in dem Objekt gestolpert. Das man mit 0 und 1 ja jedes Array-Element ;) durchiteriert wird - Aber auch sehr elegant.

                              R Offline
                              R Offline
                              rewenode
                              schrieb am zuletzt editiert von
                              #24

                              @mickym zurück zum eigentlichen Thema. Einen hätte ich noch :-)
                              Mit einem besseren Selektor wird es dann nur ein ganz kurzer Einzeiler

                              2022-09-10_23-45-12.png

                              .price-type-name, [id|=current-price]
                              

                              Und im Change dann:

                              payload#$i[($i%2)=0]{$$.payload[$i]:$$.payload[$i+1].$number()}
                              

                              Gruß
                              Reiner

                              mickymM 1 Antwort Letzte Antwort
                              0
                              • R rewenode

                                @mickym zurück zum eigentlichen Thema. Einen hätte ich noch :-)
                                Mit einem besseren Selektor wird es dann nur ein ganz kurzer Einzeiler

                                2022-09-10_23-45-12.png

                                .price-type-name, [id|=current-price]
                                

                                Und im Change dann:

                                payload#$i[($i%2)=0]{$$.payload[$i]:$$.payload[$i+1].$number()}
                                

                                Gruß
                                Reiner

                                mickymM Offline
                                mickymM Offline
                                mickym
                                Most Active
                                schrieb am zuletzt editiert von mickym
                                #25

                                @rewenode sagte in Werte auslesen von Webseite:

                                Das mit dem JSONATA ist ja nun nach den vorherigen Ausführungen zu erklären ;) - aber mit den CSS Selektoren bist Du mir im Vorteil - auch wenn es in der Hilfe zur HTML Node verlinkt ist: https://github.com/fb55/css-select#user-content-supported-selectors

                                Aber ich bevorzuge dann die andere Schreibweise mit [class="price-type-name"] und dann die Vergleiche zu machen. Das mit dem vorangestellten Punkt einer Klasse entspricht - ist mir bei CSS zwar prinzipiell bekannt, aber hätte ich hier nie verwendet. ;)

                                6476581b-e6f7-4122-b9a5-095773bfe10d-image.png

                                Ok - ich merke - ich beginne das mit den CSS Selektoren erst langsam zu verstehen. Dann geht das was @merlin2k11 gesagt hat, dass es nicht exakt übereinstimmen muss. :) - Klasse.

                                Dann gehen aber noch ein paar mehr Selektoren:

                                04028030-29a5-44cf-b1cb-e0fb117bb227-image.png

                                7e9d3149-10f9-44fe-9d85-416fead1dfc1-image.png

                                Ich hab heute jedenfalls wieder einiges von Dir gelernt.

                                Vielen Dank! :)

                                EDIT:

                                Noch eine Info - wenn man eine Standalone Version von NodeRed nutzt, kann man auch den doppelten Kontextspeicher verwenden, dann muss man für solche Tests keine Webanfragen machen. ;)

                                463bbd59-2e96-47f8-ae66-47ecebf6612c-image.png

                                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                R 1 Antwort Letzte Antwort
                                0
                                • mickymM mickym

                                  @rewenode sagte in Werte auslesen von Webseite:

                                  Das mit dem JSONATA ist ja nun nach den vorherigen Ausführungen zu erklären ;) - aber mit den CSS Selektoren bist Du mir im Vorteil - auch wenn es in der Hilfe zur HTML Node verlinkt ist: https://github.com/fb55/css-select#user-content-supported-selectors

                                  Aber ich bevorzuge dann die andere Schreibweise mit [class="price-type-name"] und dann die Vergleiche zu machen. Das mit dem vorangestellten Punkt einer Klasse entspricht - ist mir bei CSS zwar prinzipiell bekannt, aber hätte ich hier nie verwendet. ;)

                                  6476581b-e6f7-4122-b9a5-095773bfe10d-image.png

                                  Ok - ich merke - ich beginne das mit den CSS Selektoren erst langsam zu verstehen. Dann geht das was @merlin2k11 gesagt hat, dass es nicht exakt übereinstimmen muss. :) - Klasse.

                                  Dann gehen aber noch ein paar mehr Selektoren:

                                  04028030-29a5-44cf-b1cb-e0fb117bb227-image.png

                                  7e9d3149-10f9-44fe-9d85-416fead1dfc1-image.png

                                  Ich hab heute jedenfalls wieder einiges von Dir gelernt.

                                  Vielen Dank! :)

                                  EDIT:

                                  Noch eine Info - wenn man eine Standalone Version von NodeRed nutzt, kann man auch den doppelten Kontextspeicher verwenden, dann muss man für solche Tests keine Webanfragen machen. ;)

                                  463bbd59-2e96-47f8-ae66-47ecebf6612c-image.png

                                  R Offline
                                  R Offline
                                  rewenode
                                  schrieb am zuletzt editiert von
                                  #26

                                  @mickym sagte in Werte auslesen von Webseite:

                                  Noch eine Info - wenn man eine Standalone Version von NodeRed nutzt, kann man auch den doppelten Kontextspeicher verwenden, dann muss man für solche Tests keine Webanfragen machen.

                                  :+1: wieder was gelernt

                                  mickymM 1 Antwort Letzte Antwort
                                  0
                                  • R rewenode

                                    @mickym sagte in Werte auslesen von Webseite:

                                    Noch eine Info - wenn man eine Standalone Version von NodeRed nutzt, kann man auch den doppelten Kontextspeicher verwenden, dann muss man für solche Tests keine Webanfragen machen.

                                    :+1: wieder was gelernt

                                    mickymM Offline
                                    mickymM Offline
                                    mickym
                                    Most Active
                                    schrieb am zuletzt editiert von
                                    #27

                                    @rewenode Ich mach mal noch einen neuen Thread auf - weil ich immer wieder auf Verständnisprobleme stoße.

                                    Aus einem anderen Thread - gabs auch eine Anforderung - ich habs zwar geschafft, fand das aber wieder umständlich. Um den Thread nicht vollständig hier zu kapern, habe ich mal einen eigenen aufgemacht: https://forum.iobroker.net/topic/57856/jsonata-verständnisprobleme

                                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                    1 Antwort Letzte Antwort
                                    0
                                    • M Offline
                                      M Offline
                                      merlin2k11
                                      schrieb am zuletzt editiert von
                                      #28

                                      ähm ... topic#$i@$t.payload#$j@$p[$i=$j]{$t:$p}
                                      Ihr müsst doch was geraucht haben... was auch immer es war ich will es auch damit ich verstehe was ihr da gebaut habt. Wie war das? Das ist Magisch?

                                      Ich habe auch nach dem dritten mal lesen nur Fragezeichen und keine Ahnung was ihr da gebaut habt - aber es klappt und das war ja mein Ziel :)

                                      Ich danke euch :fireworks: :fireworks: :balloon:

                                      mickymM 1 Antwort Letzte Antwort
                                      0
                                      • M merlin2k11

                                        ähm ... topic#$i@$t.payload#$j@$p[$i=$j]{$t:$p}
                                        Ihr müsst doch was geraucht haben... was auch immer es war ich will es auch damit ich verstehe was ihr da gebaut habt. Wie war das? Das ist Magisch?

                                        Ich habe auch nach dem dritten mal lesen nur Fragezeichen und keine Ahnung was ihr da gebaut habt - aber es klappt und das war ja mein Ziel :)

                                        Ich danke euch :fireworks: :fireworks: :balloon:

                                        mickymM Offline
                                        mickymM Offline
                                        mickym
                                        Most Active
                                        schrieb am zuletzt editiert von mickym
                                        #29

                                        @merlin2k11 Wie gesagt die finale Version sieht nun so aus:

                                        69d865aa-31db-4589-84d5-aa9d06f91c6e-image.png

                                        [
                                           {
                                               "id": "84644114056d7367",
                                               "type": "inject",
                                               "z": "d93c602e39839f86",
                                               "name": "",
                                               "props": [
                                                   {
                                                       "p": "trigger",
                                                       "v": "true",
                                                       "vt": "bool"
                                                   }
                                               ],
                                               "repeat": "",
                                               "crontab": "",
                                               "once": false,
                                               "onceDelay": 0.1,
                                               "topic": "",
                                               "x": 170,
                                               "y": 1940,
                                               "wires": [
                                                   [
                                                       "18b108dc8d983dbe"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "18b108dc8d983dbe",
                                               "type": "http request",
                                               "z": "d93c602e39839f86",
                                               "name": "",
                                               "method": "GET",
                                               "ret": "txt",
                                               "paytoqs": "ignore",
                                               "url": "https://nopaste.net/WEArq4Mojd",
                                               "tls": "",
                                               "persist": false,
                                               "proxy": "",
                                               "insecureHTTPParser": false,
                                               "authType": "",
                                               "senderr": false,
                                               "headers": [],
                                               "x": 330,
                                               "y": 1940,
                                               "wires": [
                                                   [
                                                       "58c77855680f94e2"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "58c77855680f94e2",
                                               "type": "html",
                                               "z": "d93c602e39839f86",
                                               "name": "",
                                               "property": "payload",
                                               "outproperty": "payload",
                                               "tag": ".price-type-name, [id|=current-price]",
                                               "ret": "html",
                                               "as": "single",
                                               "x": 620,
                                               "y": 1940,
                                               "wires": [
                                                   [
                                                       "06b25788793b83a0"
                                                   ]
                                               ]
                                           },
                                           {
                                               "id": "74f9010595f6e982",
                                               "type": "debug",
                                               "z": "d93c602e39839f86",
                                               "name": "[id|=current-price]",
                                               "active": true,
                                               "tosidebar": true,
                                               "console": false,
                                               "tostatus": false,
                                               "complete": "payload",
                                               "targetType": "msg",
                                               "statusVal": "",
                                               "statusType": "auto",
                                               "x": 1190,
                                               "y": 1940,
                                               "wires": []
                                           },
                                           {
                                               "id": "06b25788793b83a0",
                                               "type": "change",
                                               "z": "d93c602e39839f86",
                                               "name": "",
                                               "rules": [
                                                   {
                                                       "t": "set",
                                                       "p": "payload",
                                                       "pt": "msg",
                                                       "to": "payload#$i[($i%2)=0]{$$.payload[$i]:$$.payload[$i+1].$number()}",
                                                       "tot": "jsonata"
                                                   }
                                               ],
                                               "action": "",
                                               "property": "",
                                               "from": "",
                                               "to": "",
                                               "reg": false,
                                               "x": 930,
                                               "y": 1940,
                                               "wires": [
                                                   [
                                                       "74f9010595f6e982"
                                                   ]
                                               ]
                                           }
                                        ]
                                        

                                        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                        1 Antwort Letzte Antwort
                                        0
                                        Antworten
                                        • In einem neuen Thema antworten
                                        Anmelden zum Antworten
                                        • Älteste zuerst
                                        • Neuste zuerst
                                        • Meiste Stimmen


                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        844

                                        Online

                                        32.5k

                                        Benutzer

                                        81.7k

                                        Themen

                                        1.3m

                                        Beiträge
                                        Community
                                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                        ioBroker Community 2014-2025
                                        logo
                                        • Anmelden

                                        • Du hast noch kein Konto? Registrieren

                                        • Anmelden oder registrieren, um zu suchen
                                        • Erster Beitrag
                                          Letzter Beitrag
                                        0
                                        • Home
                                        • Aktuell
                                        • Tags
                                        • Ungelesen 0
                                        • Kategorien
                                        • Unreplied
                                        • Beliebt
                                        • GitHub
                                        • Docu
                                        • Hilfe