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.
    • liv-in-sky
      liv-in-sky @frank2604 last edited by

      @frank2604 sagte in Hilfe beim Parsen mit RegEx:

      </td><td>(\w+)</td></tr>

      <\/td><td>(\w+)<\/td><\/tr>
      
      frank2604 1 Reply Last reply Reply Quote 1
      • 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

                            454
                            Online

                            31.9k
                            Users

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