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.
    • Niklas Schoen
      Niklas Schoen last edited by

      Moin Zusammen,

      folgendes habe ich vor:
      Ich habe einen statischen String & einen Objekt in IObroker.
      An den String möchte ich den Wert des Objektes anhängen. Das ganze ohne Leerzeichen o.ä.
      Also soll das ganze dann: DasHieristderStringunddirektdarandieValue

      Das soll dann an ein HTTP-Request übergeben werden, der eine Anmeldung benötigt. Der gebaute String soll hierbei die URL sein.

      Ich hoffe ihr könnt mir helfen! 🙂
      Danke euch!

      Homoran OliverIO mickym 3 Replies Last reply Reply Quote 0
      • 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

                            1.1k
                            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