Ankündigung

Einklappen
Keine Ankündigung bisher.

Regex Starthilfe

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Regex Starthilfe

    Hi! Da ich keinen Regenmesser besitze wollte ich mal eine Wetterstation in der Nähe auslesen und habe mich an http / regex gewagt.
    Nun bin ich soweit, dass ich (dank der Hilfe eines Bekannten =)) den gewünschten Wert auf der Seite regex101.com auslesen kann, indem ich als "regular expression" folgende Zeichenfolge eingebe "Niederschlagssumme seit Mitternacht: <strong>([\d]+.[\d])", und im "Test string" den Quellcode dieser Seite http://wetter.provinz.bz.it/wetterst...stat_stid=1260 angebe. Hier bekomme ich wie gesagt den gewünschten Wert.
    Aber die Umsetzung in openHAB2 klappt leider nicht. Nach einigem Suchen habe ich mir dieses Item zusammengeflickt, aber im Eclipse Smarthome Designer gibts dabei schon Fehlermeldungen:
    Code:
    String Perc_Station "Niederschlag Wetterstation" { http="<[http://wetter.provinz.bz.it/wetterstationen.asp?stat_stid=1260:60000:REGEX(Niederschlagssumme seit Mitternacht: <strong>([\d]+.[\d]))]" }
    Bin wahrscheinlich total am falschen Dampfer, aber komme (durch Suchen) nicht mehr weiter...
    Würde mich wiedermal über eure Hilfe freuen!

    Schönen Abend inzwischen!
    Zuletzt geändert von narf; 20.08.2017, 20:02.

    #2
    Grundsätzlich matcht REGEX unter openHAB immer auf Anfang bis Ende. Deshalb muss im Allgemeinen vor und hinter dem Match ein .* eingefügt werden, also z.B.
    Code:
    REGEX(.*Niederschlagssumme seit Mitternacht: <strong>([\d]+.[\d]).*)
    und [\d] soll vermutlich ein Digit sein, das funktioniert unter openHAB auch nicht (evtl. gibt es da eine andere REGEX, kenne ich aber nicht). Meist reicht es, in den inneren Klammern ein .* zu setzen (dann muss natürlich auch hinten ein abzuschneidender Text stehen).

    Kommentar


      #3
      danke für deine Antwort. sollte es also so aussehen?
      Code:
      REGEX(.*Niederschlagssumme seit Mitternacht: <strong>(.*+..*).*)
      Komme grad nicht zu meiner Installation...

      Kommentar


        #4
        Bedeutung der Zeichen im REGEX String:
        • + ---> "das vorherige Zeichen mindestens einmal"
        • * ----> "das vorrherige Zeichen mindestens 0 mal"
        • ? ----> "das vorherige Zeichen 0 oder einmal"
        • . ----> "ein beliebiges Zeichen an dieser Stelle"
        • \ ----> "das nachfolgende Zeichen wird als das Zeichen gewertet, welches da steht" also z.B. \. ----> genau der Punkt.

        Ich würde also einfach
        Code:
        REGEX(.*Niederschlagssumme seit Mitternacht: <strong>(.*) mm.*)
        versuchen. Das mm gehört nicht mehr zum Wert, und davor kommt noch ein Leerzeichen, was danach kommt ist ebenfalls nicht von Interesse.

        Kommentar


          #5
          Das Item sieht jetzt so aus:
          Code:
          String Perc_Station "Niederschlag Wetterstation" { http="<[http://wetter.provinz.bz.it/wetterstationen.asp?stat_stid=1428:60000:REGEX(.*Niederschlagssumme seit Mitternacht: <strong>(.*) mm.*)]" }
          Allerdings stimmt die Ausgabe nicht:
          Code:
           
                 Perc_Station changed from NULL to <!DOCTYPE html>
           
          <html lang="de">
           
          <head><!-- PageID 334 - published by OpenText Web Site Management 11.0 - 11.0.0.152 - BABF1 -->
           
          <meta charset="utf-8" />
           
          <title>Wetterstationen im Tal | Wetter Südtirol | Autonome Provinz Bozen - Südtirol</title><meta property="og:title" content="Wetterstationen im Tal | Wetter Südtirol | Autonome Provinz Bozen - Südtirol" /><meta property="og:url" content="http://wetter.provinz.bz.it/wetterstationen.asp?stat_stid=1428" /><meta property="og:site_name" content="Wetter Südtirol" /><meta property="og:image" content="http://wetter.provinz.bz.it/images/fb_wetter-meteo-suedtirol.png" /><meta property="og:type" content="website" />
           
          <meta http-equiv="X-UA-Compatible" content="IE=edge" />
          ...
          ...
          ...
          Es wird der gesamte Quelltext als Wert zurückgegeben...

          Außerdem noch folgende Meldung:
          Code:
            
                 2017-08-19 14:03:28.234 [COLOR=orange][WARN ][/COLOR] [.core.transform.TransformationHelper] - Cannot get service reference for transformation service of type REGEX
           
          2017-08-19 14:03:28.239 [COLOR=orange][WARN ][/COLOR] [ab.binding.http.internal.HttpBinding] - Couldn't transform response because transformationService of type 'REGEX' is unavailable
          what have i done?!

          Kommentar


            #6
            Dann ist REGEX noch nicht installiert. In der Paper UI unter Addons->Transformations.

            Kommentar


              #7
              jessas.
              Vielen Dank! Es haut hin, der Wert wird soweit ich das überblicke richtig eingelesen!

              Kommentar

              Lädt...
              X