Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [GELÖST] Hilfe beim Parsen mit RegEx

    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

    [GELÖST] Hilfe beim Parsen mit RegEx

    This topic has been deleted. Only users with topic management privileges can see it.
    • frank2604
      frank2604 @liv-in-sky last edited by

      @liv-in-sky

      Funktioniert! Vielen Dank!

      Grüße

      Frank

      liv-in-sky 1 Reply Last reply Reply Quote 0
      • liv-in-sky
        liv-in-sky @frank2604 last edited by

        @frank2604 gerne

        frank2604 1 Reply Last reply Reply Quote 0
        • frank2604
          frank2604 @liv-in-sky last edited by

          So, nachdem ich nun alles erfolgreich umgesetzt habe hier mal das Ergebnis. Vielleicht hilft es als kleines Übungsbeispiel anderen Anfängern wie mir beim Einstieg in den Parser-Adapter - man muss ja auch mal was ans Forum zurückgeben 😉

          Ziel war es, die Daten zur Betriebsrichtung des Flughafens KölnBonn zwecks Weiterverarbeitung in VIS auszulesen und zu historisieren. Je nach Startbahn, die meist von der Windrichtung vorgegeben ist, bekommen wir hier etwas Fluglärm von den Abflügen Richtung Nordwest ab.

          Der Flughafen stellt die Betriebsrichtung auf seiner Webseite dar, die sich leider nicht als iFrame in VIS einbinden lässt.

          https://www.koeln-bonn-airport.de/unternehmen/umwelt-und-laermschutz/betriebsrichtung-live.html

          Webseite.jpg

          im Browser lässt man sich den Quellcode der Webseite anzeigen und such nach der Stelle mit den gewünschten Informationen.

          Der Code mit der Tabelle unter der Kartendarstellung sieht so aus:

          <div id="c2102" class="frame frame-default frame-type-list frame-layout-0"><div class="tx-cgn-modules"><p style='margin:5px 0px 10px 0px;'>Auswertungszeitraum: 17.11.2020 07:49 - 08:49</p><h2>Ankunft</h2><table class="betriebsrichtungtab table table-condensed"><tr valign=top class=brtr0><td class='col-xs-6'>Ankünfte gesamt im Auswertungszeitraum:</td><td>4</td></tr><tr class=brtr1><td>letzte Bahn für Ankünfte:</td><td>24</td></tr><!--<tr><td>Anzahl:</td><td>4</td></tr>--><tr class=brtr0><td>letzter Flugzeugtyp:</td><td>unbekannt: DF20X (19,1t)</td></tr></table><h2>Abflug</h2><table class="betriebsrichtungtab table table-condensed"><tr valign=top class=brtr0><td class='col-xs-6'>Abflüge gesamt im Auswertungszeitraum:</td><td>2</td></tr><tr class=brtr1><td>letzte Bahn für Abflüge:</td><td>14L</td></tr><!--<tr><td>Anzahl:</td><td>2</td></tr>--><tr class=brtr0><td>letzter Flugzeugtyp:</td><td>Bombardier BD-700 Global Express   (45,1t)</td></tr></table><h2>Wetterdaten</h2><table class="betriebsrichtungtab table table-condensed"><tr class=brtr0><td class='col-xs-6'>Luftdruck (hPa):</td><td>1024</td></tr><tr class=brtr1><td>Lufttemperatur (°C):</td><td>11,0</td></tr><tr class=brtr0><td>Windgeschwindigkeit (m/s):</td><td> 4,1</td></tr><tr class=brtr1><td>Windrichtung (°):</td><td>200</td></tr><tr class=brtr0><td>Taupunkt (°C):</td><td>8,0</td></tr><tr class=brtr1><td>Relative Luftfeuchtigkeit (%):</td><td>81</td></tr></table><script language="javascript"><!--//
          

          Um nun eine Regular Expression zu erstellen und zu testen bietet sich ein Online-Tool an: https://regex101.com

          RegEx101.jpg

          In die untere große Box den Quellcode reinschmeißen, oben die RegEx

          Denkt an die eliminierenden \ vor eventuellen / im Quellcode. Siehe die Lösung des Problems oben von @liv-in-sky

          Hier die Ausdrücke, mit denen ich meine 7 Datenpunkte auslese:

          Abflüge gesamt im Auswertungszeitraum:</td><td>(\d+)</td>
          letzte Bahn für Abflüge:</td><td>(\w+)</td>
          letzter Flugzeugtyp:</td><td>(.?)<
          Ankünfte gesamt im Auswertungszeitraum:</td><td>(\d+)</td>
          letzte Bahn für Ankünfte:</td><td>(\w+)</td>
          letzter Flugzeugtyp:</td><td>(.
          ?)<
          Auswertungszeitraum: (.*?)<

          Im Adapter sieht das ganze dann so aus:

          Adapter.jpg

          Da der Teil 'letzter Flugzeugtyp' zweifach gefunden wird, muss man in der Spalte Num einmal 0 für den ersten Treffer und einmal 1 für den zweiten Treffer angeben.

          Ergebnis in der Objektansicht:

          ioBroker.jpg

          Grüße

          Frank

          frank2604 1 Reply Last reply Reply Quote 1
          • frank2604
            frank2604 @frank2604 last edited by

            Hallo @liv-in-sky

            Kannst Du mir vielleicht nochmal helfen?

            Was muss ich tun, wenn mein String, den ich zum finden der Stelle angebe, schon Klammern hat:

            Windgeschwindigkeit (m/s):<\/td><td> (\d+)<
            

            Danke

            Frank

            liv-in-sky 1 Reply Last reply Reply Quote 0
            • liv-in-sky
              liv-in-sky @frank2604 last edited by liv-in-sky

              @frank2604

              wie beim letzten mal - einen backslash davor - so wird dem regex gesagt, dass die klammer eine zeichen ist und kein regex-befehl

              \(..\)
              
              frank2604 1 Reply Last reply Reply Quote 1
              • frank2604
                frank2604 @liv-in-sky last edited by

                @liv-in-sky

                Oh man ... So einfach? Da hätte ich auch selber drauf kommen können.

                Danke!

                Frank

                1 Reply Last reply Reply Quote 0
                • M
                  mueller-esch last edited by mueller-esch

                  Hallo Zusammen, ich habe ein ähnliches Problem, aber noch nicht gelöst. Auf der folgenden WebSeite will ich einen speziellen Betrag auslesen:

                  <!DOCtype HTML PUBLIC "-//W3C//Dtd HTML 4.0 Transitional//EN">
                  <html>
                  <head>
                  <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
                  <meta name="Generator" CONTENT="ChrisB">
                  <title>PV Webserver</title>
                  </head>
                  <body nof="(MB=(DefaultMasterborder, 65, 60, 150, 10), L=(HomeLayout, 700, 600))" bgcolor="#EAF7F7" text="#000000" link="#0033CC" vlink="#990099" alink="#FF0000" topmargin=0 leftmargin=0 marginwidth=0 marginheight=0>
                  <form method="post" action="">
                  
                  <table cellspacing="0" cellpadding="0" width="770" nof="ly">
                  <tr><td height="5"></td></tr>
                  <tr><td width="190" height="55"></td>
                  <td width="400">
                    <font face="Arial,Helvetica,Geneva,Sans-serif,sans-serif" size="+3">
                    PIKO 8.3
                  <br><font size="+1">                 
                    Sunny_Esch (1)
                  </font>
                  </font>
                  </td>
                  <td><img alt="Logo" height="42" width="130" src="KSE.gif"></td>
                  </tr>
                  </table>
                  
                  <font face="Arial,Helvetica,Geneva,Sans-serif,sans-serif">
                  <table Border="0" width="100%"><tr>
                  <td width="150"></td>
                  <td> <hr> </td>
                  </tr></table>
                  <table cellspacing="0" cellpadding="0" width="770">
                  <tr><td></td></tr>
                  <tr>
                  <td width="190"></td>
                  <td colspan="2">
                    <b>AC-Leistung</b></td>
                  <td>&nbsp</td>
                  <td>
                    <b>Energie</b></td></tr>
                  <tr><td height="10"></td></tr>
                  
                  <tr>
                  <td width="190"></td>
                  <td width="100">
                    aktuell</td>
                  <td width="70" align="right" bgcolor="#FFFFFF">
                    1465</td>
                  <td width="140">&nbsp W</td>
                  <td width="100">
                    Gesamtertrag</td>
                  <td width="70" align="right" bgcolor="#FFFFFF">
                    82833</td>
                  <td width="50">&nbsp kWh</td>
                  <td>&nbsp</td></tr>
                  <tr height="5"><td></td></tr>
                  <tr>
                  <td width="190"></td>
                  <td width="100">
                    Status</td>
                  <td colspan="4">
                    Einspeisen MPP</td>
                  <td>&nbsp</td></tr>
                  <tr height="8"><td></td></tr>
                  <tr><td colspan="7">
                  <table align="top" width="100%"><tr>
                  <td width="182"></td>
                  <td><hr size="1"></font></td>
                  </tr><tr><td height="5"></td></tr></table>
                  </td></tr>
                  
                  <tr>
                  <td width="190"></td>
                  <td colspan="2">
                    <b>PV-Generator</b></td>
                  <td width="140">&nbsp</td>
                  <td colspan="2">
                    <b>Ausgangsleistung</b></td>
                  <td width="30">&nbsp</td>
                  <td>&nbsp</td></tr>
                  <tr><td height="10"></td></tr>
                  <tr>
                  <td width="190"></td>
                  <td width="100">
                    <u>String 1</u></td>
                  <td width="70">&nbsp</td>
                  <td width="140">&nbsp</td>
                  <td width="95">
                    <u>L1</u></td>
                  <td width="70">&nbsp</td>
                  <td width="30">&nbsp</td>
                  <td>&nbsp</td></tr>
                  <tr>
                  <td width="190"></td>
                  <td width="100">
                    Spannung</td>
                  <td width="70" align="right" bgcolor="#FFFFFF">
                    421</td>
                  <td width="140">&nbsp V</td>
                  <td width="100">
                    Spannung</td>
                  <td width="70" align="right" bgcolor="#FFFFFF">
                    230</td>
                  <td width="30">&nbsp V</td>
                  <td>&nbsp</td></tr>
                  <tr height="2"><td></td></tr>
                  <tr valign="top" align="left">
                  <td width="190">&nbsp</td>
                  <td width="100">
                    Strom</td>
                  <td width="70" align="right" bgcolor="#FFFFFF">
                    2.08</td>
                  <td width="140">&nbsp A</td>
                  <td width="100">
                    Leistung</td>
                  <td width="70" align="right" bgcolor="#FFFFFF">
                    478</td>
                  <td width="30">&nbsp W</td>
                  <td>&nbsp</td></tr>
                  <tr height="22"><td></td></tr>
                  <tr>
                  <td width="190"></td>
                  <td width="100">
                    <u>String 2</u></td>
                  <td width="70">&nbsp</td>
                  <td width="140">&nbsp</td>
                  <td width="100">
                    <u>L2</u></td>
                  <td width="70">&nbsp</td>
                  <td width="30">&nbsp</td>
                  <td>&nbsp</td></tr>
                  <tr>
                  <td width="190"></td>
                  <td width="100">
                    Spannung</td>
                  <td width="70" align="right" bgcolor="#FFFFFF">
                    358</td>
                  <td width="140">&nbsp V</td>
                  <td width="100">
                    Spannung</td>
                  <td width="70" align="right" bgcolor="#FFFFFF">
                    231</td>
                  <td width="30">&nbsp V</td>
                  <td>&nbsp</td></tr>
                  <tr height="2"><td></td></tr>
                  <tr valign="top" align="left">
                  <td width="190">&nbsp</td>
                  <td width="100">
                    Strom</td>
                  <td width="70" align="right" bgcolor="#FFFFFF">
                    2.02</td>
                  <td width="140">&nbsp A</td>
                  <td width="100">
                    Leistung</td>
                  <td width="70" align="right" bgcolor="#FFFFFF">
                    486</td>
                  <td width="30">&nbsp W</td>
                  <td>&nbsp</td></tr>
                  <tr height="22"><td></td></tr>
                  <tr>
                  <td width="190"></td>
                  <td width="100">
                    <u> </u></td>
                  <td width="70">&nbsp</td>
                  <td width="140">&nbsp</td>
                  <td width="100">
                    <u>L3</u></td>
                  <td width="70">&nbsp</td>
                  <td width="30">&nbsp</td>
                  <td>&nbsp</td></tr>
                  <tr>
                  <td width="190"></td>
                  <td width="100">
                     </td>
                  <td width="70" align="right" bgcolor="#EAF7F7">
                     </td>
                  <td width="140">&nbsp
                     </td>
                  <td width="95">
                    Spannung</td>
                  <td width="70" align="right" bgcolor="#FFFFFF">
                    232</td>
                  <td width="30">&nbsp V</td>
                  <td>&nbsp</td></tr>
                  <tr height="2"><td></td></tr>
                  <tr valign="top" align="left">
                  <td width="190">&nbsp</td>
                  <td width="95">
                     </td>
                  <td width="70" align="right" bgcolor="#EAF7F7">
                     </td>
                  <td width="140">&nbsp
                   </td>
                  <td width="95">
                    Leistung</td>
                  <td width="70" align="right" bgcolor="#FFFFFF">
                    501</td>
                  <td width="30">&nbsp W</td>
                  <td>&nbsp</td></tr>
                  
                  <tr><td height="15"></td></tr>
                  <tr><td colspan="7">
                  <table align="top" width="100%">
                  <tr><td width="182"></td>
                  <td><hr size="1"></font></td>
                  </tr><tr><td height="5"></td></tr></table>
                  </td></tr></table>
                  <table cellspacing="0" cellpadding="0" width="770">
                  <tr><td width="190"></td>
                  <td><font face="Arial,Helvetica,Geneva,Sans-serif">
                  <b>RS485 Kommunikation</b></td></tr>
                  <tr><td height="8"></td></tr>
                  <tr><td width="190"></td>
                  <td><font face="Arial,Helvetica,Geneva,Sans-serif">
                  Wechselrichter&nbsp
                  <input type="Text" name="edWrNr" value="1" size="3" maxlength="3">
                  <input type="submit" value="Anzeigen/Aktualisieren">
                  </td></tr><tr><td height="10"></td></tr>
                  </table>
                  </td></tr></table></font>
                  
                  <hr>
                  <font face="Arial,Helvetica,Geneva,Sans-serif,sans-serif">
                  <table cellspacing="0" cellpadding="0" width="770">
                  <tr><td height="5"></td></tr>
                  <tr><td width="190"></td>
                  <td width="330">
                  <a href="LogDaten.dat">Historie</a>
                  &nbsp &nbsp &nbsp
                  <a href="Info.fhtml">Infoseite</a></td>
                  <td align="right">
                  <a href="Solar2.fhtml">Einstellungen</a></td>
                  <td width="50"></td>
                  </tr></table></font>
                  </form>
                  </body>
                  </html>
                  
                  

                  im regex101 bekomme ich mit folgendem RegEx-Code

                  Gesamtertrag<\/td>\n<td.*>\n\s*(\d*)<\/td>
                  

                  den richtigen Betrag zurück. Im Parser-Adapter aber nicht. Hat jemand eine Idee?

                  Was im Parser-Adapter unter der Spalte RegEx den Ausdruck "td" jeweils rot unterstrichen, so als wäre hier die Syntax nicht richtig.

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

                    @mueller-esch sagte in [GELÖST] Hilfe beim Parsen mit RegEx:

                    Hat jemand eine Idee?

                    Ja!
                    \n klappt im parser Adapter nicht

                    versuch mal: tertrag<\/td>[^>]+>\s+(\d+)

                    M 1 Reply Last reply Reply Quote 0
                    • M
                      mueller-esch @Homoran last edited by

                      @homoran sagte in [GELÖST] Hilfe beim Parsen mit RegEx:

                      </td>[^>]+>\s+(\d+)

                      ....das ist ja Wahnsinn. Ich war ja noch nicht mal ganz fertig mit meinem "Sermon". das Ding klappt.
                      Super. Danke vielmals

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

                        @mueller-esch schön, dass es klappt.

                        Ist das mal wieder ein alter Kostal?

                        M 1 Reply Last reply Reply Quote 0
                        • M
                          mueller-esch @Homoran last edited by

                          @homoran Genau. Der ist von 5/2008 und liefert immer noch ohne Mucken die kWh aus dem All.

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate
                          FAQ Cloud / IOT
                          HowTo: Node.js-Update
                          HowTo: Backup/Restore
                          Downloads
                          BLOG

                          859
                          Online

                          31.9k
                          Users

                          80.2k
                          Topics

                          1.3m
                          Posts

                          parser adapter regex
                          4
                          13
                          635
                          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