Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Adapter - Parser (regEx)

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Adapter - Parser (regEx)

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

      Hallo zusammen,

      ich muss folgende Daten aus folgender URL auslesen:

      https://measurements.mobile-alerts.eu/H … XXXXXXXXXX

      0,0 mm

      3,9 C

      72%

      Die Werte sind weiß hinterlegt

      Hab aber echt überhaupt keinen Plan wie ich da ran komme.

      Oder wie ich den Code kürzer fassen kann.

      Vorab Danke

      <!DOCTYPE html>
      <html>
      <head>
          <meta charset="utf-8" />
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Sensor &#220;berblick</title>
          <link href="/Content/css?v=Eswk_2H6Ss2i4k1dsN9Z3Pw8JisA8ojhWaoiEJ001" rel="stylesheet"/>
      
          <script src="/bundles/modernizr?v=inCVuEFe6J4Q07A0AcRsbJic_UE5MwpRMNtk94TE1"></script>
      
      </head>
      <body>
          <div class="navbar navbar-inverse navbar-fixed-top">
              <div class="container">
                  <div class="navbar-header">
                      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                          <span class="icon-bar"></span>
                          <span class="icon-bar"></span>
                          <span class="icon-bar"></span>
                      </button>
                      <div class="navbar-brand">MOBILE ALERTS</div>
                  </div>
                  <div class="navbar-collapse collapse">
                      <ul class="nav navbar-nav">
                          <li><a href="/">Home</a></li>
                              <li><a href="/Home/SensorsOverview?phoneid=85032269">Sensoren</a></li>
                              <li><a href="/Home/Actions?phoneid=85032269">Aktionslog</a></li>
      
                              <li><a href="/Home/Imprint?phoneid=85032269">Impressum</a></li>
                              <li><a href="/Home/Privacy?phoneid=85032269">Datenschutzerkl&#228;rung</a></li>
                      </ul>
                  </div>
              </div>
          </div>
          <div class="container body-content">
              
      
      
      <h3>&#220;berblick f&#252;r Phone ID 85032269</h3>
      
      <p><a href="/">Zur&#252;ck zu Home</a></p>
      
      
      
      <div class="panel panel-default">
          <div class="panel-body">
              <div class="sensor">
      
      <div class="sensor-header">
          <h3>
              <a href="/Home/MeasurementDetails?deviceid=0869C700&amp;vendorid=E1F232-3A62-44F3-8DA6-B586958D91D1&amp;appbundle=de.synertronixx.remotemonitor">Regensensor</a>
          </h3>
          <div class="sensor-component">
              <h5>ID</h5>
              <h4>0869C700</h4>
          </div>
      </div>
      
      <div class="nofloat"></div>
      
          <div class="sensor-component">
              <h5>Zeitpunkt</h5>
              <h4>14.02.2019 11:27:17</h4>
          </div>
          <div class="sensor-component">
              <h5>Regen</h5>
              <h4>0,0 mm</h4>
          </div>
              </div>
          </div>
      </div>
      
      <div class="panel panel-default">
          <div class="panel-body">
              <div class="sensor">
      
      <div class="sensor-header">
          <h3>
              <a href="/Home/MeasurementDetails?deviceid=0320532F8&amp;vendorid=E1F232BB-3A62-44F3-8DA6-B586958D&amp;appbundle=de.synertronixx.remotemonitor">Temperatur Garage</a>
          </h3>
          <div class="sensor-component">
              <h5>ID</h5>
              <h4>0320532F84</h4>
          </div>
      </div>
      
      <div class="nofloat"></div>
      
          <div class="sensor-component">
              <h5>Zeitpunkt</h5>
              <h4>16.02.2019 09:52:07</h4>
          </div>
          <div class="sensor-component">
              <h5>Temperatur</h5>
              <h4>3,9 C</h4>
          </div>
          <div class="sensor-component">
              <h5>Luftfeuchte</h5> <!-- Luftfeuchtigkeit -->
              <h4>72%</h4>
          </div>
              </div>
          </div>
      </div>
              <hr />
              <footer>
                  <p>&copy; 2019 - DATA INFORMATION SERVICES GmbH</p>
              </footer>
          </div>
      
          <script src="/bundles/jquery?v=DilzeZuJxdbQsfc_JOwsWB4VFDhTPM73urYeggaKdL81"></script>
      
          <script src="/bundles/bootstrap?v=7Xzbs2X8mMtYC4-Iw230CaK9M6od8KC4beA8yw1"></script>
      
          
      </body>
      </html>
      1 Reply Last reply Reply Quote 0
      • I
        icecube86 last edited by icecube86

        Keiner eine Idee? - ich vermute das man die URL auch noch weiter detailieren kann, sodass nur die entsprechenden Werte ausgegeben werden, aber auch da steh ich auf dem Schlauch. Wäre echt dankbar wenn einer einen tipp hätte

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

          @icecube86dazu müsste ich am PC sitzen
          An Handy ist das nicht so dolle.

          Ich hoffe ich denke da heute Nachmittag dran

          1 Reply Last reply Reply Quote 0
          • Diginix
            Diginix last edited by Diginix

            Ich versuche mich auch gerade an dem Parser. In der Instanz Konfiguration funktioniert das RegEx im Tester. In Onlinetest ebenso. Nur bei der eigentlichen Arbeit des Adapters bekomme ich immer nur den Error 0x44 Cannot find number in answer for parser.0.

            Edit: Das Sonderzeichen ° war das Problem. Das html ist nicht utf-8 und dadurch hat das Zeichen im RegEx nicht gematcht.

            1 Reply Last reply Reply Quote 0
            • Q
              Qlink last edited by

              Hi Leute,

              ich habe nun endlich einen Weg gefunden wie ich unter Windows die Sensordaten auslesen und per Webserver abrufen kann.
              Jetzt möchte ich die Daten gerne per Parser Adapter in iobroker bekommen, bekomme das mit regex101.com aber nicht mal ansatzweise hin. Verstehe nur Bahnhof ...

              Es wäre toll wenn mir jemand Starthilfe geben könnte.

              Hier die Website Daten:
              hwinfo.txt
              Ich möchte z.B. den Wert "Core #0 Usage", "SensorValue": "5,3" auslesen

              oder "CPU Package", "SensorValue": "37"

              oder "SensorClass": "S.M.A.R.T.: INTEL SSDSA2CW120G3 (CVPR344400F1120LGN)",
              "SensorName": "Drive Remaining Life",
              "SensorValue": "99",

              usw.

              Danke für eure Hilfe.

              1 Reply Last reply Reply Quote 0
              • Q
                Qlink last edited by Qlink

                hätte mir mal folgendes zusammengebastelt:

                (?<="Core #3 VID",)\n "SensorValue": "[0-9]+(,[0-9]+)?

                aber damit fehlt mir die Stelle vor dem Komma und er nimmt mir auch das Wort SensorValue mit:

                regex.PNG

                https://regex101.com/r/oHCIgq/2

                Wie bekomme ich die 2 Sachen weg ?

                Diginix 1 Reply Last reply Reply Quote 0
                • Diginix
                  Diginix @Qlink last edited by Diginix

                  @Qlink

                  Core #3 VID",\s*"SensorValue": "(\d+,\d+)",
                  

                  Die runde Klammer kommt nur um den Teil den du auch als Ergebnis willst. Du hast nur die Nachkommastelle in Klammern und den Namen "Core..." brauchst du gar nicht.
                  Den trägst du im Parser Adapter als Namen des Objektes ein. So bekommt das Objekt dann nur den eigentlichen Wert 0,7...
                  Der Parser trimmt bei mir schon alle Zeilenumbrüche usw. Der RegEx für den Adapter darf als nicht mehr nach Zeilenumbrüchen suchen. Daher müsste es wohl dann im Adapter so aussehen:

                  Core #3 VID",.*"SensorValue": "(\d+,\d+)",
                  
                  1 Reply Last reply Reply Quote 0
                  • Q
                    Qlink last edited by

                    @Diginix

                    Danke für deine Hilfe!
                    Mit deinem ersten Vorschlag hab ich den Nuller vor dem Komma auch schonmal dabei. D.h. der Wert wäre soweit schonmal vollständig.
                    Den Name Core... brauche ich glaube ich schon in der Abfrage, da das Format "SensorValue" ... mit genau dem Wert öfters auf der Homepage vorkommt und ich sonst nicht wüsste wie ich den richtigen Wert erwische ...

                    Mit deinem zweiten Vorschlag kommt allerdings auf regex101.com nur "no matches found"

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

                      Der ioBroker Parser schein mit dem \n nicht zurechtzukommen.
                      Gib mir ein paar Minuten, ich teste es mal.

                      EDIT:
                      probiere das mal:

                      Core #3 VID"[^\:]+:\s\"(\d\,\d+)
                      
                      Homoran 1 Reply Last reply Reply Quote 0
                      • Q
                        Qlink last edited by

                        @Homoran

                        hmm da hab ich bei regex101 zwar den vollen Wert, aber unter Full Match auch wieder Core #3 VID ... dabei:
                        siehe hier:
                        regex.PNG

                        https://regex101.com/r/oHCIgq/3

                        Das hätte ich dann ja auch in iobroker bei den objects dabei, was mir den Zahlenwert unbrauchbar macht oder habe ich hier einen Denkfehler ?

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

                          @Homoran sagte in Adapter - Parser (regEx):

                          Der ioBroker Parser schein mit dem \n nicht zurechtzukommen.
                          Gib mir ein paar Minuten, ich teste es mal.

                          EDIT:
                          probiere das mal:

                          Core #3 VID"[^\:]+:\s\"(\d\,\d+)
                          

                          EDIT2:
                          das ganze lässt sich zum einen noch verkürzen, zum anderen noch variabler gestalten:

                          Core[^\:]+:\s\"(\d+\,\d+)
                          

                          Jetzt erwischst du alles mit "Core" über den gleichen RegEx und du musst im Parser-Adapter unter "Num" das gewünschte Ergebnis rausfiltern

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

                            @Qlink sagte in Adapter - Parser (regEx):

                            habe ich hier einen Denkfehler ?

                            Ja!

                            Das Ergebnis ist die Group (grün)

                            der full match (blau) ist alles was du zur identifizierung dieser Group verwendest

                            1 Reply Last reply Reply Quote 0
                            • Q
                              Qlink last edited by

                              ahhh okay und im parser Adapter passiert erst die unterscheidung welchen Wert über NUM !
                              Ich glaub jetzt hab ichs 🙂

                              Ich werds mal so versuchen anzulegen und schaue wie es sich verhält.

                              Vielen Dank für die Hilfe!

                              Beste Grüße

                              Homoran 1 Reply Last reply Reply Quote 0
                              • Diginix
                                Diginix @Qlink last edited by Diginix

                                @Qlink Mein zweiter Vorschlag war ja auch für den Parser. Hab ja geschrieben dass der Adapter keinen Zeilenumbruch braucht.
                                Um mit regex101 wirklich den regex für den Adapter erarbeiten zu können, muss man die Quell Daten "minified" machen. Also alle Einrückungen und Zeilenumbrüche entfernen.
                                Der Rest wurde hier glaube ausreichend erklärt.

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

                                  @Qlink sagte in Adapter - Parser (regEx):

                                  im parser Adapter passiert erst die unterscheidung welchen Wert über NUM !

                                  Ja!

                                  Entweder musst du für jeden Fall ein eindeutiges RegEx bauen, so dass es nur ein match gibt, oder du nimmst ein möglichst universelles (aber Achtung, da sollte kein Mist bei rauskommen) und filterst dann die z.B.21 matches über die Num

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

                                    @Homoran Ich bevorzuge eindeutige Matches so es denn unique Werte gibt mit denen das möglich ist. Wenn man mehrere Werte aus einer Quelle will, muss man so oder so mehrere Objekte mit jeweils einem RegEx erstellen. Man kann natürlich bei z.B. 3 Werten und einem universellen RegEx mit 3 Klammerpaaren dann mit Num 0-2 arbeiten, aber ich hab eben lieber 3 verschiedene RegEx die exakt nur da matchen wo einer der 3 Werte existiert.
                                    Je nach Quelldaten kann es aber sein dass man Num braucht.

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

                                      @Diginix
                                      ich eigentlich auch.

                                      Nur für Einsteiger mit dem Parser-Adapter kann es einfacher sein, den RegEx zu kopieren und die num einzustellen

                                      1 Reply Last reply Reply Quote 0
                                      • Q
                                        Qlink last edited by

                                        Ich habe jetzt soweit alle Werte.

                                        Einzig die geschätzte Laufzeit meiner USV ärgert mich etwas. Ich würde gerne 1 oder 2 Nachkommastellen ebenfalls auslesen, bekomme aber nur Stellen vor dem Komma:

                                        mit

                                        
                                        "Estimated Runtime"[^\:]+:\s\"(\d+)
                                        
                                         {
                                            "SensorApp": "HWiNFO",
                                            "SensorClass": "UPS",
                                            "SensorName": "Estimated Runtime",
                                            "SensorValue": "51,6833333333333",
                                            "SensorUnit": "min",
                                            "SensorUpdateTime": 1559130047
                                          },
                                        

                                        regex.PNG

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

                                          @Qlink
                                          Die zahl beinhaltet ein komma.

                                          Versuch mal als typ "zahl mit komma"

                                          1 Reply Last reply Reply Quote 0
                                          • Q
                                            Qlink last edited by

                                            Nummer mit Komma ist im Parser Adapter ausgewählt:

                                            parser2.PNG

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            554
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            43
                                            268
                                            92744
                                            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