Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. String & Wert Parsen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    String & Wert Parsen

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators @Niklas Schoen last edited by

      @Niklas-Schoen sagte in String & Wert Parsen:

      An den String möchte ich den Wert des Objektes anhängen

      das ist aber nicht parsen!
      Das ist eine Textverkettung

      Niklas Schoen 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @Niklas Schoen last edited by

        @Niklas-Schoen

        das ist möglich. leider hast du nicht geschrieben wo du das machen möchtest.
        als skript. in einem adapter, in einem widget.

        als lösung gibt es diverse node bibliotheken wie request,axios oder auch direkt in node eingebaut http

        gut zu wissen, wäre welche technologie für das anmelden verwendet wird:
        formular-basiert, basic authentication, oauth, etc.

        Niklas Schoen 1 Reply Last reply Reply Quote 0
        • Niklas Schoen
          Niklas Schoen @Homoran last edited by

          @Homoran Danke für die Info!

          1 Reply Last reply Reply Quote 0
          • Niklas Schoen
            Niklas Schoen @OliverIO last edited by

            @OliverIO Danke für die Hilfe, das ganze will ich in Node-Red umsetzen.
            Wie kann ich denn herausfinden,welche Auth. eingesetzt wird?
            Im Firefox bekomme ich dann ein Popup für Benutzername & Kennwort.

            danke!

            Homoran OliverIO 2 Replies Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @Niklas Schoen last edited by

              @Niklas-Schoen sagte in String & Wert Parsen:

              das ganze will ich in Node-Red umsetzen.

              dann bin ich leider raus, in Blockly müsste das ganz einfach gehen

              Niklas Schoen 1 Reply Last reply Reply Quote 0
              • Niklas Schoen
                Niklas Schoen @Homoran last edited by

                @Homoran An sich spricht auch nichts gegen Blocky, wie bekommen ich denn das Zusammensetzung des Strings und vor allem, den Http-Request mit Auth hin?

                Homoran 1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @Niklas Schoen last edited by

                  @Niklas-Schoen sagte in String & Wert Parsen:

                  den Http-Request mit Auth hin?

                  da habe ich keine Ahnung, ich dachte du wolltest "nur" den URL zusammensetzen

                  1 Reply Last reply Reply Quote 0
                  • OliverIO
                    OliverIO @Niklas Schoen last edited by OliverIO

                    @Niklas-Schoen
                    das bekommt man meist nur über die developer konsole im browser heraus.
                    dort einfach F12 drücken, auf den reiter Network oder so ähnlich gehen.
                    Dann die Seite Neu laden und auf die Anmeldeseite gehen und am besten schon die Login-Daten eingeben,
                    aber nochg nicht bestätigen
                    Dann die Netzwerkliste löschen.
                    Dann dier Logindaten bestätigen.
                    Dann müssen die einzelnen requests des browsers in der networkliste untersucht werden.
                    Form-Login: erkannt man, wenn ein Post-Request ausgelöst wird, in dem deine Login-Daten an den Server übermittelt wird
                    OAUTTH erkennt man meist an einem Request, in dem irgendwo in den Daten oauth vorkommt.
                    basic auth ist erigentlich nicht mehr üblich, hier würde der browser selbst ein meist hässliches Eingabefeld anzeigen.
                    Alternativ, wenn es eine bekannte Seite ist, kann man auch mal im Internet suchen. evtl gibt es dafür ja bereits eine bibliothek
                    oder du nennst hier die Seite und ich kann mal schauen

                    denk aber daran, dein vorhaben ist nicht trivial (besonders mit deinen Vorkenntnissen, wie ich annehme)
                    aber ich find es toll wenn sich jemand da etwas weiterbilden will.

                    Niklas Schoen 1 Reply Last reply Reply Quote 0
                    • Niklas Schoen
                      Niklas Schoen @OliverIO last edited by

                      @OliverIO Danke dir für die gute Beschreibung, dass es etwas Aufwand wird ist mir klar, aber wie du schon sagst, irgendwann muss man ja anfangen sich etwas beizubringen! 🙂

                      Es handelt sich um Basic-Auth....Ja es gibt ein hässliches Eingabefeld und ich finde im Request Header: Authorization: Basic

                      Ab das ganze in Blockly, Node-Red oder JS gelöst wird ist mir eigentlich ziemlich egal (wobei ich nicht glaube, dass Blockly dafür gut geeignet ist)....Auf's ergebnis kommt es an und ich möchte etwas lernen! 🙂

                      OliverIO 1 Reply Last reply Reply Quote 0
                      • OliverIO
                        OliverIO @Niklas Schoen last edited by

                        @Niklas-Schoen
                        sehr schön, dann lese mal diesen artikel.
                        https://www.haykranen.nl/2011/06/21/basic-http-authentication-in-node-js-using-the-request-module/

                        kannst auch noch nach weiteren im internet mittels den suchbegriffen
                        node request basic authorization

                        suchen.
                        wir machen es mit dem javascript adapter, dann haben wir nicht noch eine weitere komplexitätsstufe durch node-red oder blockly (welches ich nicht kenn/mag)

                        auch kannst du dich mal bei der request bibliothek einlesen:
                        https://www.npmjs.com/package/request
                        Diese wird von iobroker selbst verwendet und ist bereits vorinstalliert.
                        Störe dich nicht an dem deprecated. Es ist immer noch eine der meist verwendeten bibliotheken bei node.

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

                          @Niklas-Schoen Mit Node-Red ist es doch sehr einfach.

                          Du liest über einen iobroker in Node Dein Objekt aus - baust über einen Change Node die URL und übergibst diesem einem HTTP-Request Node - der auch eine Basic Authentication übergibt.

                          Das sind 3-4 Nodes je nachdem wie Du das triggern möchtest.

                          Ich mach Dir mal ein Beispiel - ich lese als Datenpunkt den String z. Bsp "microsoft" und hänge dann ".com" und den Rest für die URL an und übergebe das dem HTTP-Request Node.

                          Basic Authentication habe ich nichts angegeben aber das ist selbsterklärend in dem HTTP-Request Node.

                          Hier der Flow zum Testen:

                          [
                              {
                                  "id": "7c137d0b.bd8124",
                                  "type": "http request",
                                  "z": "dce8fa20.2e93c8",
                                  "name": "",
                                  "method": "GET",
                                  "ret": "txt",
                                  "paytoqs": "ignore",
                                  "url": "",
                                  "tls": "",
                                  "persist": false,
                                  "proxy": "",
                                  "authType": "",
                                  "x": 1350,
                                  "y": 320,
                                  "wires": [
                                      [
                                          "f9dc7268.16b3b"
                                      ]
                                  ]
                              },
                              {
                                  "id": "6c167017.42f4e",
                                  "type": "ioBroker get",
                                  "z": "dce8fa20.2e93c8",
                                  "name": "test",
                                  "topic": "0_userdata.0.test",
                                  "attrname": "payload",
                                  "payloadType": "value",
                                  "x": 960,
                                  "y": 320,
                                  "wires": [
                                      [
                                          "88c1b523.772e08"
                                      ]
                                  ]
                              },
                              {
                                  "id": "bcdaa5e0.3c0fb8",
                                  "type": "inject",
                                  "z": "dce8fa20.2e93c8",
                                  "name": "",
                                  "props": [
                                      {
                                          "p": "payload"
                                      },
                                      {
                                          "p": "topic",
                                          "vt": "str"
                                      }
                                  ],
                                  "repeat": "",
                                  "crontab": "",
                                  "once": false,
                                  "onceDelay": 0.1,
                                  "topic": "",
                                  "payload": "trigger",
                                  "payloadType": "str",
                                  "x": 810,
                                  "y": 320,
                                  "wires": [
                                      [
                                          "6c167017.42f4e"
                                      ]
                                  ]
                              },
                              {
                                  "id": "88c1b523.772e08",
                                  "type": "change",
                                  "z": "dce8fa20.2e93c8",
                                  "name": "",
                                  "rules": [
                                      {
                                          "t": "set",
                                          "p": "url",
                                          "pt": "msg",
                                          "to": "\"http://\" & payload  & \".com\"",
                                          "tot": "jsonata"
                                      }
                                  ],
                                  "action": "",
                                  "property": "",
                                  "from": "",
                                  "to": "",
                                  "reg": false,
                                  "x": 1130,
                                  "y": 320,
                                  "wires": [
                                      [
                                          "67c5e032.4345e",
                                          "7c137d0b.bd8124"
                                      ]
                                  ]
                              },
                              {
                                  "id": "67c5e032.4345e",
                                  "type": "debug",
                                  "z": "dce8fa20.2e93c8",
                                  "name": "",
                                  "active": true,
                                  "tosidebar": true,
                                  "console": false,
                                  "tostatus": false,
                                  "complete": "url",
                                  "targetType": "msg",
                                  "statusVal": "",
                                  "statusType": "auto",
                                  "x": 1350,
                                  "y": 260,
                                  "wires": []
                              },
                              {
                                  "id": "f9dc7268.16b3b",
                                  "type": "debug",
                                  "z": "dce8fa20.2e93c8",
                                  "name": "",
                                  "active": true,
                                  "tosidebar": true,
                                  "console": false,
                                  "tostatus": false,
                                  "complete": "false",
                                  "statusVal": "",
                                  "statusType": "auto",
                                  "x": 1550,
                                  "y": 320,
                                  "wires": []
                              }
                          ]
                          

                          Hier ein Screenshot - wie gesagt die Basic Authentisierung musst Du nur in der Request Node anhacken und Credentials eingeben.

                          screen.png

                          Die Ausgabe des letzten Debug Nodes zeigt Dir dann den Output der HTML Page.

                          Wenn Du keinen externen/manuellen Trigger brauchst - setzt Du anstelle des iobroker get und inject nodes einfache eine iobroker in node - und der ruft Dir die Seite bei jeder Aktualisierung/änderung des Objektes im iobroker auf.

                          Das Analysieren der HTML Daten/Codes, die von der Webpage zurückgeliefert werden - das ist dann das Parsen - da bin ich raus.

                          Um das evtl. bisschen praxisnäher zu machen - habe ich mal die Webseite dieses Threads zusammengestellt.

                          Ausserdem gibt es html parser node - da musst dann die Dich interessierenden Sections angeben und werden Dir als Array zurückgegeben.

                          Hier siehst DU also als URL diesen Thread hier - wobei genau dieser als Object im iobroker abgelegt ist. "40556/"String & Wert Parsen"

                          screen.png

                          screen.png
                          Im HTML Parser habe ich angegeben, dass ich alle title Sections haben möchte und dann siehst im Debug wie das extrahiert wird - oben drüber siehst den HTML Output. Aber wie gesagt da müssen Dir dann Leute ggf. helfen die Web programmierung mehr beherrschen.

                          Hier noch der Flow:

                          [
                              {
                                  "id": "7c137d0b.bd8124",
                                  "type": "http request",
                                  "z": "dce8fa20.2e93c8",
                                  "name": "",
                                  "method": "GET",
                                  "ret": "txt",
                                  "paytoqs": "ignore",
                                  "url": "",
                                  "tls": "",
                                  "persist": false,
                                  "proxy": "",
                                  "authType": "",
                                  "x": 1410,
                                  "y": 280,
                                  "wires": [
                                      [
                                          "f9dc7268.16b3b",
                                          "f3944e9.d49e5b"
                                      ]
                                  ]
                              },
                              {
                                  "id": "6c167017.42f4e",
                                  "type": "ioBroker get",
                                  "z": "dce8fa20.2e93c8",
                                  "name": "test",
                                  "topic": "0_userdata.0.test",
                                  "attrname": "payload",
                                  "payloadType": "value",
                                  "x": 1030,
                                  "y": 280,
                                  "wires": [
                                      [
                                          "88c1b523.772e08"
                                      ]
                                  ]
                              },
                              {
                                  "id": "bcdaa5e0.3c0fb8",
                                  "type": "inject",
                                  "z": "dce8fa20.2e93c8",
                                  "name": "",
                                  "props": [
                                      {
                                          "p": "payload"
                                      },
                                      {
                                          "p": "topic",
                                          "vt": "str"
                                      }
                                  ],
                                  "repeat": "",
                                  "crontab": "",
                                  "once": false,
                                  "onceDelay": 0.1,
                                  "topic": "",
                                  "payload": "trigger",
                                  "payloadType": "str",
                                  "x": 910,
                                  "y": 280,
                                  "wires": [
                                      [
                                          "6c167017.42f4e"
                                      ]
                                  ]
                              },
                              {
                                  "id": "88c1b523.772e08",
                                  "type": "change",
                                  "z": "dce8fa20.2e93c8",
                                  "name": "",
                                  "rules": [
                                      {
                                          "t": "set",
                                          "p": "url",
                                          "pt": "msg",
                                          "to": "\"https://forum.iobroker.net/topic/\" & payload",
                                          "tot": "jsonata"
                                      }
                                  ],
                                  "action": "",
                                  "property": "",
                                  "from": "",
                                  "to": "",
                                  "reg": false,
                                  "x": 1190,
                                  "y": 280,
                                  "wires": [
                                      [
                                          "67c5e032.4345e",
                                          "7c137d0b.bd8124"
                                      ]
                                  ]
                              },
                              {
                                  "id": "67c5e032.4345e",
                                  "type": "debug",
                                  "z": "dce8fa20.2e93c8",
                                  "name": "",
                                  "active": true,
                                  "tosidebar": true,
                                  "console": false,
                                  "tostatus": false,
                                  "complete": "url",
                                  "targetType": "msg",
                                  "statusVal": "",
                                  "statusType": "auto",
                                  "x": 1400,
                                  "y": 220,
                                  "wires": []
                              },
                              {
                                  "id": "f9dc7268.16b3b",
                                  "type": "debug",
                                  "z": "dce8fa20.2e93c8",
                                  "name": "",
                                  "active": true,
                                  "tosidebar": true,
                                  "console": false,
                                  "tostatus": false,
                                  "complete": "false",
                                  "statusVal": "",
                                  "statusType": "auto",
                                  "x": 1610,
                                  "y": 220,
                                  "wires": []
                              },
                              {
                                  "id": "f3944e9.d49e5b",
                                  "type": "html",
                                  "z": "dce8fa20.2e93c8",
                                  "name": "",
                                  "property": "payload",
                                  "outproperty": "payload",
                                  "tag": "title",
                                  "ret": "html",
                                  "as": "single",
                                  "x": 1590,
                                  "y": 280,
                                  "wires": [
                                      [
                                          "8e34c445.0d1158"
                                      ]
                                  ]
                              },
                              {
                                  "id": "8e34c445.0d1158",
                                  "type": "debug",
                                  "z": "dce8fa20.2e93c8",
                                  "name": "",
                                  "active": true,
                                  "tosidebar": true,
                                  "console": false,
                                  "tostatus": false,
                                  "complete": "false",
                                  "statusVal": "",
                                  "statusType": "auto",
                                  "x": 1830,
                                  "y": 220,
                                  "wires": []
                              }
                          ]
                          
                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          563
                          Online

                          31.7k
                          Users

                          79.7k
                          Topics

                          1.3m
                          Posts

                          4
                          12
                          624
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo