FHEM Forum

FHEM => Sonstiges => Thema gestartet von: kroman am 03 November 2017, 18:25:26

Titel: [gelöst] HTTPMOD Regex Problem mit Leerzeichen im reading01OExpr
Beitrag von: kroman am 03 November 2017, 18:25:26
Hallo zusammen,

ich bekomme es trotz langem probieren nicht hin, deshalb erbitte ich schließlich Hilfe.

Ich habe folgenden HTTPMOD um mir den Goldkurs darzustellen:


defmod h_gold_unze HTTPMOD http://www.finanzen.at/rohstoffe/goldpreis/euro 3600
attr h_gold_unze userattr reading01Name reading01OExpr reading01Regex
attr h_gold_unze alias Gold [1 Unze]
attr h_gold_unze enableControlSet 1
attr h_gold_unze reading01Name gold_unze
attr h_gold_unze reading01Regex <th >(.*) <span>EUR</span></th>
attr h_gold_unze stateFormat gold_unze €


Funktioniert bestens, im STATE steht was ich sehen möchte:


Internals:
   BUSY       0
   DEF        http://www.finanzen.at/rohstoffe/goldpreis/euro 5
   Interval   5
   LASTSEND   1509729304.50495
   MainURL    http://www.finanzen.at/rohstoffe/goldpreis/euro
   ModuleVersion 3.4.0 - 9.9.2017
   NAME       h_gold_unze
   NR         193
   STATE      1 092,93 €
   TRIGGERTIME 1509729309.5038
   TRIGGERTIME_FMT 2017-11-03 18:15:09
   TYPE       HTTPMOD
   addr       http://www.finanzen.at:80
   buf
   code       200
   conn
   data
   displayurl http://www.finanzen.at/rohstoffe/goldpreis/euro
   header
   host       www.finanzen.at
   httpheader HTTP/1.1 200 OK


Ich bin einer von der genauen Sorte und deshalb stört mich das Leerzeichen zwischen 1 und 0 beim Wert welches ich durch folgendes Regex durch einen Punkt ersetzen wollte:


attr h_gold_unze reading01OExpr $val =~ s/\s/\./;; $val


Es ändert sich dadurch jedoch leider nix am STATE.
Wenn ich "\s" versuchsweise durch "1" ersetze sehe ich: . 09....
D.h. reading01OExpr funktioniert im Prinzip, nur wird das Leerzeichen nicht von \s erkannt.
\s sollte doch die richtige Wahl sein, oder?

Besten Dank im Voraus.

Gruß
kroman
Titel: Antw:HTTPMOD Regex Problem mit Leerzeichen im reading01OExpr
Beitrag von: helmut am 03 November 2017, 19:50:48
Das liegt daran, dass vom Webserver kein Leerzeichen, sondern ein non-breaking space in UTF-8 geliefert wird.
Versuche es mal mit "attr h_gold_unze reading01OExpr $val =~ s/\xc2\xa0/./;; $val".

Gruss Helmut
Titel: Antw:HTTPMOD Regex Problem mit Leerzeichen im reading01OExpr
Beitrag von: frank am 03 November 2017, 22:43:02
einen hab ich noch:
attr h_gold_unze reading01OExpr $val =~ s/(.)(.)(.*)/$1.".".$3/;; $val
Titel: Antw:HTTPMOD Regex Problem mit Leerzeichen im reading01OExpr
Beitrag von: kroman am 04 November 2017, 09:14:41
Zitat von: helmut am 03 November 2017, 19:50:48
Das liegt daran, dass vom Webserver kein Leerzeichen, sondern ein non-breaking space in UTF-8 geliefert wird.
Versuche es mal mit "attr h_gold_unze reading01OExpr $val =~ s/\xc2\xa0/./;; $val".

Vielen Dank Helmut, das wars!

Zitat von: frank am 03 November 2017, 22:43:02
einen hab ich noch:
attr h_gold_unze reading01OExpr $val =~ s/(.)(.)(.*)/$1.".".$3/;; $val

Leider nein Frank, da kommt dann sowas raus:


1.".".�094,10


Damit würde es passen:


$val =~ s/(.)(.)(.)(.*)/$1.$4/; $val


Außer dass das € Zeichen am Ende fehlt.
Warum funktioniert stateFormat hier nicht?

Damit bin ich dann also auch zufrieden:


$val =~ s/(.)(.)(.)(.*)/$1.$4 €/; $val


Doch ich werde Helmut's Lösung behalten, die schaut schöner aus  :)
Danke dennoch und schönes Wochenende an euch beide.
Titel: Antw:[gelöst] HTTPMOD Regex Problem mit Leerzeichen im reading01OExpr
Beitrag von: kroman am 04 November 2017, 09:18:57
Sorry, das mit den stateFormat war Schwachsinn, ich hab an der falschen Stelle geschaut.
Das passt also auch:


$val =~ s/(.)(.)(.)(.*)/$1.$4/; $val
Titel: Antw:[gelöst] HTTPMOD Regex Problem mit Leerzeichen im reading01OExpr
Beitrag von: Christian72D am 10 Januar 2022, 15:13:24
Klappt sein Setup noch?

Ich habe es vor zwei Stunden mal auf meinem Test System eingepflegt, ich bekomme keinen Wert geliefert.
Titel: Antw:[gelöst] HTTPMOD Regex Problem mit Leerzeichen im reading01OExpr
Beitrag von: joker4791 am 07 Dezember 2022, 18:45:52
Hi,

geht nicht mehr, da die Seite von Tabelle auf Div-Tags umgestellt hat. Da müsste also die Regex angepasst werden...

Grüße,
j.
Titel: Antw:[gelöst] HTTPMOD Regex Problem mit Leerzeichen im reading01OExpr
Beitrag von: joker4791 am 14 Dezember 2022, 12:49:52
Habe das nun mal wie folgt angepasst:
define h_gold_unze HTTPMOD http://www.finanzen.net/rohstoffe/goldpreis 600
attr h_gold_unze alias Gold [1 Unze]
attr h_gold_unze alignTime 00:00
attr h_gold_unze enableControlSet 1
attr h_gold_unze group Devisen
attr h_gold_unze reading01Format %.2f
attr h_gold_unze reading01Name gold_unze
attr h_gold_unze reading01OExpr $val =~ s/\xc2\xa0/./;;;; $val =~ s/\.//g;;;; $val =~ s/\,/\./g;;;; $val;;
attr h_gold_unze reading01Regex >(.*) <span>EUR</span>
attr h_gold_unze room HTTPMOD
attr h_gold_unze stateFormat gold_unze €

läuft so bei mir aktuell zuverlässig...