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

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    14
    1
    210

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    578

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.8k

[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.
  • 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 Online
      mickymM Online
      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 Online
          mickymM Online
          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 Online
              mickymM Online
              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 Online
                  mickymM Online
                  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 Online
                      mickymM Online
                      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

                      916

                      Online

                      32.5k

                      Benutzer

                      81.8k

                      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