Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. Webinterface parsen mit dem parse Adapter

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Webinterface parsen mit dem parse Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • Cinimod
      Cinimod Most Active @D3ltoroxp last edited by

      @d3ltoroxp

      oben hast du ne lokale ip angegeben, damit ist natürlich nichts anzufangen, zeigst du vielleicht mal die webseite die du auslesen willst ...

      im quelltest müssen natürlich die daten drin stehen die du auslesen willst, wenn da eine weitere seite eingebettet ist (stichwort iframe) dann musst du natürlich auf der Seite suchen. Finde erstmal im quelltest die daten die du haben willst, dann weißt du schon mal das du den richtigen Text hast.

      Ich bin da auch nicht sonderlich gut drin, aber sicher ist hier jemand der dir mit dem Regex code auf die Sprünge hilft ...

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

        @d3ltoroxp sagte in [Webinterface parsen mit dem parse Adapter]

        Ich kann z.b. auf Online und dort Untersuchen, dann bekomme ich folgendes.

        Kannst du diesen Satz für Leute die kein starlink haben näher erklären?

        D3ltoroxp 1 Reply Last reply Reply Quote 0
        • D3ltoroxp
          D3ltoroxp @Cinimod last edited by

          @cinimod Eine direkte Webseite gibt es nicht. Das stellt der Dish vom Starlink bereit, den ich eben unter der IP Adresse einsehen kann.

          Das ist was ich im Screen 1 gezeigt habe.

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

            @oliverio So war das gemeint.

            de8d91b9-cf43-4bc1-9830-f041bd678a6e-image.png

            Dann öffnet sich ja rechts die Konsole und dort steht folgendes.

            ffd72ec3-b6f3-42ea-90db-ca7f36039de3-image.png

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

              @d3ltoroxp

              Aha,
              Also direkt mit dem Parser Adapter wirst du nichts anfangen können,
              Das so, wie es aussieht, alle daten dynamisch durch ein Javascript abgerufen wird.

              Was du einmal schauen kannst, In der Browser Konsole auf den Reiter netzwerk gehen und schauen, was für Daten dort geladen werden.
              Interessant sind die Java Skript oder die Json Dateien insbesondere, wenn du nach Fetch filterst
              Ich würde vermuten, dass die Daten dort sogar besser verarbeitetbar vorliegen

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

                @oliverio Meinst du so ?

                69e9b653-f7ed-473e-ac56-2092d1d8ccdd-image.png

                Kommt wenn ich F12 drücke und dann auf Network.

                Ich muss dazu sagen die Dish nutzt wohl dieses grpc Protokoll. Ob man damit was anfangen kann. Es gibt auf Github was, aber das kapier ich überhaupt nicht, wie ich das letzten Endes umsetzen soll. Daher versuch ich das grad über parse. Aber da dort eben nichts auftaucht wird das wohl nichts.

                OliverIO 2 Replies Last reply Reply Quote 0
                • OliverIO
                  OliverIO @D3ltoroxp last edited by

                  @d3ltoroxp
                  Ja genau, jetzt klickst du einmal auf einen der requests mit handle.
                  Dann öffnet sich im rechten Bereich die Details Sicht zum request.
                  Da gibt es auch einen detailreicher bei dem der Inhalt bzw. die Antwort des Servers angezeigt wird.
                  Wenn du deine Werte da entdeckst, dann gut.
                  Wenn da Kauderwelsch steht (also binäre Daten als Text) dann wird es schwierig.

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

                    @d3ltoroxp sagte in Webinterface parsen mit dem parse Adapter:

                    soll sich wohl den Quelltext anzeigen lassen

                    ist das der Quelltext oder eher die HTML Seite?

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

                      @d3ltoroxp

                      Hier nochmal eine andere Alternative (wahrscheinlich)
                      https://www.npmjs.com/package/@gibme/starlink

                      Muss man aber einwenig programmieren.
                      Die Bibliothek kann man über die JavaScript Adapter Einstellungen laden
                      Und dann die Beispiele per copy Paste einfach mal in ein neues Skript kopieren

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

                        @oliverio 6ddbca9f-481e-4153-9d9a-f864fee5ed9d-image.png

                        Du meinst denke ich so. Wirklich was finde ich dort nicht.

                        Aber dein letzter Post sieht interessant aus. Mit programmieren meinst du den Code Copy & Paste im Script ?

                        @oliverio said in Webinterface parsen mit dem parse Adapter:

                        Die Bibliothek kann man über die JavaScript Adapter Einstellungen laden

                        Welche Bibliothek ist das denn, ich sehe da nichts. Oder meinst du das hier ?

                        protobuf-compiler
                        

                        Oder die hier ?

                        f483a333-fe00-4ccb-b5a9-27f6768765e7-image.png

                        So ?

                        2bc2fff0-a234-4c97-ae18-1979f6416bc6-image.png

                        Codierknecht OliverIO 3 Replies Last reply Reply Quote 0
                        • Codierknecht
                          Codierknecht Developer Most Active @D3ltoroxp last edited by

                          @d3ltoroxp sagte in Webinterface parsen mit dem parse Adapter:

                          Welche Bibliothek ist das denn, ich sehe da nichts. Oder meinst du das hier ?

                          Du guckst da bei den "dependencies". Die werden automatisch mit installiert.
                          Interessant ist die Bibliothek selbst. Da ließe sich vermutlich etwas mit anstellen.

                          https://www.npmjs.com/package/@gibme/starlink

                          6bbb78ea-da43-4d84-a724-1e6af0562389-grafik.png

                          1 Reply Last reply Reply Quote 1
                          • OliverIO
                            OliverIO @D3ltoroxp last edited by

                            @d3ltoroxp sagte in Webinterface parsen mit dem parse Adapter:

                            Du meinst denke ich so. Wirklich was finde ich dort nicht.

                            Wie beschrieben, besteht die Requestansicht wieder aus verschiedenen Teil-Tabs.
                            Das richtige findest du im Tab Response. Dort sieht man die Antwort des Servers

                            a7aef4da-4675-4512-a9df-4b38ee75d954-image.png

                            Der Screenshot ist die Headeransicht.
                            Dort sieht man die Headers, die einmal der Browser an den Server sendet und die Headers, die der Server an den Browser zurücksendet.
                            Im Reiter Payload siehst du die Parameter, die der Browser an den Server sendet. Das sind bei einem Post-Request meist die Dinge die bei einem Get-Request in der URL nach einem ? angegeben sind.
                            oder bei einem Formular, sind dort die Formularinhalte enthalten.

                            1 Reply Last reply Reply Quote 1
                            • OliverIO
                              OliverIO @D3ltoroxp last edited by

                              @d3ltoroxp sagte in Webinterface parsen mit dem parse Adapter:

                              Welche Bibliothek ist das denn, ich sehe da nichts. Oder meinst du das hier ?

                              Die Bibliothek nennt sich so wie ganz oben an der Seite steht

                              @gibme/starlink
                              

                              dieser protobuf-compiler steht ja als special notice und wenn man da liest, ist das nur für Leute interessant, die die Bibliothek weiterentwickeln wollen

                              If you are working on this package, or load this package from git, you will need to manually run yarn build:protobuf to generate the protobufs code

                              Ich interpretiere das so, aber wir werden sehen.

                              Also du machst der Reihe nach folgendes

                              Du öffnest im iobroker die Einstellungsseite des javascript-Adapters
                              455de91e-adc6-4bfe-aa6e-6924688ab8ba-image.png

                              Dann trägst du hier den Bibliotheksname exakt so ein, wie ich oben notiert habe und speicherst die Einstellungen

                              38fb15d9-3300-48d0-b15d-c9208ef31bf9-image.png

                              Dann legst du im Javascript-Adapter ein neues Javascript-Skript an und kopierst bspw (Copy/Paste von der NPM-Seite)

                              import { Dishy } from '@gibme/starlink';
                              
                              (async () => {
                                  const dishy = new Dishy();
                                  
                                  const diagnostics = await dishy.fetch_diagnostics();
                                  
                                  console.log(diagnostics);
                              })();
                              

                              in das Skript, speicherst und startest das Skript.
                              Dann müsstest du im Konsolenbereich des Skripts entweder eine Fehlermeldung oder die Ausgabe der diagnostik-Dateien sehen.

                              D3ltoroxp 1 Reply Last reply Reply Quote 1
                              • D3ltoroxp
                                D3ltoroxp @OliverIO last edited by

                                @oliverio Erst mal vielen vielen Dank für deine kleine Anleitung. Leider kommt folgendes in der Log, denke das gehört hier dazu.

                                
                                javascript.0
                                2025-01-26 18:36:54.466	error	at processImmediate (node:internal/timers:485:21)
                                
                                javascript.0
                                2025-01-26 18:36:54.466	error	at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.javascript/main.js:2322:17)
                                
                                javascript.0
                                2025-01-26 18:36:54.466	error	at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:2224:37)
                                
                                javascript.0
                                2025-01-26 18:36:54.466	error	at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1956:21)
                                
                                javascript.0
                                2025-01-26 18:36:54.466	error	at new Script (node:vm:117:7)
                                
                                javascript.0
                                2025-01-26 18:36:54.466	error	SyntaxError: Cannot use import statement outside a module
                                
                                javascript.0
                                2025-01-26 18:36:54.465	error	^^^^^^
                                
                                javascript.0
                                2025-01-26 18:36:54.465	error	import { Dishy } from '@gibme/starlink';
                                
                                javascript.0
                                2025-01-26 18:36:54.465	error	script.js.Starlink.Test compile failed: at script.js.Starlink.Test:2
                                
                                javascript.0
                                2025-01-26 18:36:53.925	error	at Script.runInContext (node:vm:149:12)
                                
                                OliverIO 1 Reply Last reply Reply Quote 0
                                • OliverIO
                                  OliverIO @D3ltoroxp last edited by

                                  @d3ltoroxp

                                  Dann probiere folgendes

                                  const Dishy = require("@gibme/starlink").Dishy;
                                   
                                  (async () => {
                                      const dishy = new Dishy();
                                      
                                      const diagnostics = await dishy.fetch_diagnostics();
                                      
                                      console.log(diagnostics);
                                  })();
                                  
                                  Codierknecht 1 Reply Last reply Reply Quote 0
                                  • Codierknecht
                                    Codierknecht Developer Most Active @OliverIO last edited by Codierknecht

                                    @oliverio

                                    Oder so - damit man auch schnell und einfach auf die anderen Klassen zugreifen kann:

                                    const starlink = require('@gibme/starlink');
                                    
                                    async function test() {
                                        const dishy = new starlink.Dishy();
                                        const diagnostics = await dishy.fetch_diagnostics();
                                        log(diagnostics);
                                    };
                                    
                                    test();
                                    
                                    D3ltoroxp 1 Reply Last reply Reply Quote 0
                                    • D3ltoroxp
                                      D3ltoroxp @Codierknecht last edited by D3ltoroxp

                                      @codierknecht Was meinst du mit Klassen ?

                                      Hab mal deinen Code verwendet, es kommt nichts. Keine Infos keine Fehler.

                                      @OliverIO Bei deinem leider auch nichts.

                                      OliverIO Codierknecht 2 Replies Last reply Reply Quote 0
                                      • OliverIO
                                        OliverIO @D3ltoroxp last edited by

                                        @d3ltoroxp
                                        ist überhaupt in der konsole was zu sehen?
                                        zumindest sollte es so aussehen

                                        javascript.0	19:49:34.701	info	Start JavaScript script.js.starlink (Javascript/js)
                                        javascript.0	19:49:34.712	info	script.js.starlink: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                                        
                                        
                                        D3ltoroxp 1 Reply Last reply Reply Quote 0
                                        • D3ltoroxp
                                          D3ltoroxp @OliverIO last edited by

                                          @oliverio Hier erscheint gar nichts.

                                          4cc0c29a-9a94-4665-a7b9-a9cd7e580ed6-image.png

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

                                            @d3ltoroxp sagte in Webinterface parsen mit dem parse Adapter:

                                            Was meinst du mit Klassen ?

                                            Im Paket sind mehrere Klassen deklariert: Dishy, WiFiRouter .

                                            class Dishy extends grpc_api_1.default {
                                            ...
                                            

                                            Wenn man das komplette Paket importiert, kann man die jeweils benötigte Klasse dynamisch instanziieren.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            915
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            25
                                            926
                                            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