Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Parsen einer Webseite und RegEx Verzweiflung

    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

    Parsen einer Webseite und RegEx Verzweiflung

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Sonderform last edited by

      Hallo zusammen,

      als längerer Homematic Nutzer habe ich am Wochenende mal mit ioBroker auf einem Raspberry gespielt und bin recht begeistert.

      Für ein Lüftungsgerät würde ich gern Daten protokollieren, leider gibt es dafür noch nichts. Es gibt aber eine Statusseite als Abruf, außerdem habe ich den "parser.0" in ioBroker gefunden.
      Das Prinzip ist mir klar, allerdings habe ich trotz gewisser IT- und Linux Kenntnisse bisher immer einen Bogen um RegEx gemacht. Und irgendwie ist das nichts, was ich mir mal eine Stunde ansehe und vertehe, habe ich festgestellt.

      Ich glaube, wenn man Ahnung hat, ist es garnicht so schwer 😉

      Die Webseite liefert die Ansicht:

      Date: 27.01.2020
      Time: 16:46:33
      DeviceName: WRG-BB-CC
      MAC: ECFXXCXX9EXX
      LocalIP: 192.168.10.188
      RSSI: -82
      FW_MainController: 1437060A
      FW_WiFi: WS181130
      SystemMode: Behaglichkeitsmode
      Speed_In: 10
      Speed_Out: 10
      Speed_AntiFreeze: 00
      Temp_In: 13,7
      Temp_Out: 17,8
      Temp_Fresh: 8,5
      rel_Humidity_In: 57,3
      rel_Humidity_Out: 52,4
      abs_Humidity_In: 6,8
      abs_Humidity_Out: 8,0
      Efficiency: 56,1
      Humidity_Transport: -558

      Und auch die Ansicht als Quelltext im Firefox liefert das obige. Man kann den Export auch noch im xml bzw. yaml Format ausgeben, habe ich bisher aber nicht probiert.
      Es müsste für jeden Eintrag eine RegEx geben, die bis zum Keyword incl. ":" alles wegwirft, den Inhalt bis zum Ende der Zeile ausgibt und alles nachfolgende auch wieder verwirft.
      Falls da jemand einen Hinweis hat, wäre ich dankbar. Ansonsten muss ich wohl mal RegEx lernen.

      Danke, Michael

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

        @Sonderform sagte in Parsen einer Webseite und RegEx Verzweiflung:

        Date: 27.01.2020
        Time: 16:46:33
        DeviceName: WRG-BB-CC
        MAC: ECFXXCXX9EXX
        LocalIP: 192.168.10.188
        RSSI: -82
        FW_MainController: 1437060A
        FW_WiFi: WS181130
        SystemMode: Behaglichkeitsmode
        Speed_In: 10
        Speed_Out: 10
        Speed_AntiFreeze: 00
        Temp_In: 13,7
        Temp_Out: 17,8
        Temp_Fresh: 8,5
        rel_Humidity_In: 57,3
        rel_Humidity_Out: 52,4
        abs_Humidity_In: 6,8
        abs_Humidity_Out: 8,0
        Efficiency: 56,1
        Humidity_Transport: -558

        Nimm mal :\s+(\-?\d+\,?\d+) alsRegex und ändere nur die NUM in der Konfiguration für jeden einzelnen Wert ab RSSI

        Oder \w+:\s+([^\n]*) dann hast du alle Datenpunkte und musst dann aber darauf achten den Richtigen Typ (Nummer mit Komma/Text) zu wählen

        1 Reply Last reply Reply Quote 0
        • S
          Sonderform last edited by

          Danke für die Hinweise. Mit der ersten RegEx und dem Text geht das auch und ist nachvollziehbar. Auch wenn ich es noch überhaupt nicht verstehe 😉
          Leider klemmt es mit dem Parser die notwendige url herunterzuladen. Die lautet:
          http://192.168.10.188/?export=1
          Das erzeugt im Logfile die Fehlermeldung:
          (14782) Cannot read link "http://192.168.10.188/?export=1": Error: Parse Error

          Zugriffsprobleme sind es nicht, denn für eine x-beliebiege andere Webseite zeigt er die Inhalte an. Weiterhin bekommt man von dem Raspberry mit einem wget auch die gewünschte Textdatei.

          Irgendwo ist da noch der Wurm drin.

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

            @Sonderform sagte in Parsen einer Webseite und RegEx Verzweiflung:

            Auch wenn ich es noch überhaupt nicht verstehe

            bei so etwas hift regex101.com ungemein.
            Da wird jeder einzelne Schritt bis ins Detail erklärt

            @Sonderform sagte in Parsen einer Webseite und RegEx Verzweiflung:

            Leider klemmt es mit dem Parser die notwendige url herunterzuladen

            • Im Browser klappt es mit dem URL?
            • mal ohne http:// versucht?
              Bitte mal den URL in den Parser eintragen und auf editieren (Bleistift) gehen

            Screenshots könnten dann auch noch helfen.

            S 1 Reply Last reply Reply Quote 1
            • S
              Sonderform @Homoran last edited by

              @Homoran sagte in Parsen einer Webseite und RegEx Verzweiflung:
              ...

              • Im Browser klappt es mit dem URL?
              • mal ohne http:// versucht?
                Bitte mal den URL in den Parser eintragen und auf editieren (Bleistift) gehen

              Screenshots könnten dann auch noch helfen.

              Ja, in verschiedenen Browsern wird die Tabelle wie im ersten Thread dargestellt.

              Es scheint für das Parser Modul ein Problem beim Abruf der URL http://192.168.10.188/?export=1 mit dem enthalteten '?' zu geben. Das erzeugt die Fehlermeldung, die bei Anwahl der "Stift" Option eine leere Seite zeigt. Was es also für eine Fehlermeldung ist, sieht man nicht bzw. im Zweifel entspricht die dem Log Eintrag.

              Ich bin auf die Idee gekommen, die Seite auf dem Raspberry mit wget abzurufen und in ein File zu schreiben, um zu sehen ober er damit klar kommt. Wenn ich das als Quelle im Parser angebe, dann funktioniert das wie gewünscht.

              Instanzen --> Parser:
              0730be67-e8a2-48cb-95fc-6233ae32bd56-grafik.png

              Ausfabe in ioBroker --> Objekte:
              d156f1b0-423b-4b9d-85c3-7ddc2d53d867-grafik.png

              Mit dem direkten Aufruf und die Ausgabe beim Anklicken des "Stift" im Regel Editor:
              27e0a77c-4d53-43af-a6a3-602ec4c2be17-grafik.png
              Ausgabe:
              75e6e5ad-e65d-4925-8561-1142c861c8b7-grafik.png

              Mit einem http:// davor, also http://192.168.10.188/?export=1
              a1522536-7ee7-491e-8cc4-2ed3a542a65b-grafik.png

              Derzeitige unschöne Lösung ist also mit einem cron-job getriggertem wget auf dem Raspberry die Datei abzulegen.

              Und die RegEx hilft, Danke nochmal dafür!

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

                @Sonderform sagte in Parsen einer Webseite und RegEx Verzweiflung:

                Mit dem direkten Aufruf und die Ausgabe beim Anklicken des "Stift" im Regel Editor:

                Da hast du als 'Number' die 5 angegeben - also den 6. Treffer und als Typ Number:

                Das wäre dann Speed IN und da das zumindest bei mir '10' ist, ist es auch egal, dass du dort nicht 'Nummer mit Komma' ausgewählt hat.

                Dann wird es tatsächlich so sein dass die Meldung
                @Sonderform sagte in Parsen einer Webseite und RegEx Verzweiflung:

                (14782) Cannot read link "http://192.168.10.188/?export=1": Error: Parse Error

                Meint was sie sagt.

                Ich werde mal etwas ähnliches Probieren

                EDIT:
                Habe eben auch eine Abfrage im eigenen Netz mit einem ? gestellt

                http://192.168.138.57/?xpert:0:

                das klappt:
                Wiffi_parsen.png

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

                  @Sonderform sagte in Parsen einer Webseite und RegEx Verzweiflung:

                  Derzeitige unschöne Lösung ist also mit einem cron-job getriggertem wget

                  das ist eigentlich die schönere Variante, gerade bei mehreren Daten.
                  Wenn du im ersten Versuch bereits versucht hattest alle Daten auf einmal von deiner Quelle abzurufen versucht er gleichzeitig (!) 11x zuzugreifen.
                  Das könnte natürlich zu dem Fehler führen

                  S 1 Reply Last reply Reply Quote 0
                  • S
                    Sonderform @Homoran last edited by

                    @Homoran sagte in Parsen einer Webseite und RegEx Verzweiflung:

                    @Sonderform sagte in Parsen einer Webseite und RegEx Verzweiflung:

                    Mit dem direkten Aufruf und die Ausgabe beim Anklicken des "Stift" im Regel Editor:

                    Da hast du als 'Number' die 5 angegeben - also den 6. Treffer und als Typ Number:

                    Das wäre dann Speed IN und da das zumindest bei mir '10' ist, ist es auch egal, dass du dort nicht 'Nummer mit Komma' ausgewählt hat.

                    Dann wird es tatsächlich so sein dass die Meldung
                    @Sonderform sagte in Parsen einer Webseite und RegEx Verzweiflung:

                    (14782) Cannot read link "http://192.168.10.188/?export=1": Error: Parse Error

                    Meint was sie sagt.

                    Die Werte von dem Datenpunkt sind die Stufen und nehmen nur ganze Werte wzischen 1 bis 10 an, keine Kommata.

                    1 Reply Last reply Reply Quote 0
                    • S
                      Sonderform @Homoran last edited by

                      @Homoran sagte in Parsen einer Webseite und RegEx Verzweiflung:

                      @Sonderform sagte in Parsen einer Webseite und RegEx Verzweiflung:

                      Derzeitige unschöne Lösung ist also mit einem cron-job getriggertem wget

                      das ist eigentlich die schönere Variante, gerade bei mehreren Daten.
                      Wenn du im ersten Versuch bereits versucht hattest alle Daten auf einmal von deiner Quelle abzurufen versucht er gleichzeitig (!) 11x zuzugreifen.
                      Das könnte natürlich zu dem Fehler führen

                      Da alle Einträge mit einem identischen Intervall definiert werden, sollte doch der Performance Kommentar aus dem Info des Parser.io zutreffen. Der sagt, dass der Abruf nur einmal geschieht und dieser zwischengespeichert wird.

                      Quelle: ioBroker parser adapter --> Settings -> 2. Table --> Performance Note:
                      If you enter the same URL or filename more than once into different table rows, and if the values of the column "Interval" are the same, the content of the URL or filename will be retrieved only once and cached for proccesing multiple table rows matching URL/filename and Interval. This allows you to apply multiple regex (so multiple table rows) to a single URL or filename, without the need of retrieving the data multiple times from the source.

                      Die Daten werden von einem internen Webserver des Geräts geliefert, der auf einer WLan Karte integriert ist. Sicher also nicht sehr performant.

                      Zur Zeit läuft der cron-job jede Minute mit einem wget. Später kann ich das noch verlängern und tut jetzt das was es soll.

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

                        @Sonderform sagte in Parsen einer Webseite und RegEx Verzweiflung:

                        sollte doch der Performance Kommentar aus dem Info des Parser.io zutreffen. Der sagt, dass der Abruf nur einmal geschieht und dieser zwischengespeichert wird.

                        Das ist ja super - war mir nicht bekannt

                        Aber wie ich dir zeigte liegt es nicht an dem Aufruf.
                        Wein ähnlicher Aufruf auf einen Wiffi (ESP mit WebUI) funktioniert einwandfrei

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        456
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        monitoring
                        2
                        10
                        1456
                        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