Frage zu RegEx und Ersetzen von Zeichen zum Auslesen von Mobile Alerts Sensoren

Begonnen von josburg, 22 Juni 2016, 07:46:01

Vorheriges Thema - Nächstes Thema

josburg

Hallo,

ich habe folgenden regulären Ausdruck:

<h4>XYZABC<\/h4>\s+<\/div>\s+<\/div>\s+<div class="nofloat"><\/div>\s+<div class="sensor-component">\s+<h5>Zeitpunkt<\/h5>\s+<h4>.*?<\/h4>\s+<\/div>\s+<div class="sensor-component">\s+<h5>Temperatur<\/h5>\s+<h4>+([0-9\,]+)

(Zugegeben, wahrscheinlich kann man die RegEx eleganter formulieren)

Mit dieser RegEx wird eine Temperatur ermittelt - z.B. der Wert "20,1"
Ich hätte den Wert allerdings gerne direkt in der Form "20.1"
Also Komma durch Punkt ersetzt.

Der HTML-Quelltext sieht folgendermaßen aus:

        <h4>XYZABC</h4>
    </div>
</div>

<div class="nofloat"></div>

    <div class="sensor-component">
        <h5>Zeitpunkt</h5>
        <h4>22.06.2016 07:32:57</h4>
    </div>
    <div class="sensor-component">
        <h5>Temperatur</h5>
        <h4>19,0 C</h4>
    </div>
    <div class="sensor-component">
        <h5>Luftfeuchtigkeit</h5> <!-- Luftfeuchtigkeit -->
        <h4>82%</h4>
    </div>
        </div>
    </div>
</div>

Im Anhang als Screenshot vom Online-RegEx-Tester zu sehen, wie das Ergebnis aussieht.

Kann ich so etwas direkt mit einer RegEx machen? Wenn ja, wie?
Ich probiere schon seit einiger Zeit rum und komme einfach nicht drauf...

Wäre Euch für Hilfe sehr dankbar!

Viele Grüße
Jens

Laffer72

Hallo Jens,

schau Dir doch mal folgenden Thread an:

https://forum.fhem.de/index.php/topic,51471.msg431189.html#msg431189

Mit dem letzten Beitrag hat es bei mir geklappt.

Danke für den Denkanstoss mit der RegEx-Abfrage, hat mir geholfen :-)

Viele Grüße

Reinhard

Raspberry Pi Rev.B, FB7390 (FHEM2FHEM), Sonos, Smarter Coffee
Osram Lightify:2m LED-Streifen, 5m-LED-Streifen, Gartenspot, Surface 28W, Classic E14,E27, Classic RGBW E27, PAR16 GU10, Plug
CUL868:FS20-ST, FS20-DI, FS20-FMS, FS20-ES1
HMUSB:HM-Sec-RHS,HM-Sec-MDIR2
Jeelink868:TX-29-IT, TFA30.315

josburg

Zitat von: Laffer72 am 22 Juni 2016, 10:48:43
Hallo Jens,

schau Dir doch mal folgenden Thread an:

https://forum.fhem.de/index.php/topic,51471.msg431189.html#msg431189

Mit dem letzten Beitrag hat es bei mir geklappt.

Danke für den Denkanstoss mit der RegEx-Abfrage, hat mir geholfen :-)

Viele Grüße

Reinhard

Hallo Reinhard,

vielen Dank für die Verlinkung - mir hilft Dein Denkanstoß leider nicht so richtig weiter.

Ich habe ja folgende RegEx:
<h4>XYZABC<\/h4>\s+<\/div>\s+<\/div>\s+<div class="nofloat"><\/div>\s+<div class="sensor-component">\s+<h5>Zeitpunkt<\/h5>\s+<h4>.*?<\/h4>\s+<\/div>\s+<div class="sensor-component">\s+<h5>Temperatur<\/h5>\s+<h4>+([0-9\,]+)

Was muss ich Deiner Meinung nach ändern, dass "Komma durch Punkt ersetzt wird?

Viele Grüße
Jens

Laffer72

Hallo Jens,

Du mußt an Deiner RegEx nichts verändern. Du fügst Deinem httpmod-Device ein weiteres Attribut hinzu:

attr httpmod-Device reading01Expr $val =~ s/,/\./; $val;

Die Zahl hinter reading mußt Du Deinem reading0xRegex anpassen.

Das wars schon. Bei mir hat das wunderbar geklappt.

Viele Grüße

Reinhard
Raspberry Pi Rev.B, FB7390 (FHEM2FHEM), Sonos, Smarter Coffee
Osram Lightify:2m LED-Streifen, 5m-LED-Streifen, Gartenspot, Surface 28W, Classic E14,E27, Classic RGBW E27, PAR16 GU10, Plug
CUL868:FS20-ST, FS20-DI, FS20-FMS, FS20-ES1
HMUSB:HM-Sec-RHS,HM-Sec-MDIR2
Jeelink868:TX-29-IT, TFA30.315

josburg

Zitat von: Laffer72 am 23 Juni 2016, 21:01:54
Hallo Jens,

Du mußt an Deiner RegEx nichts verändern. Du fügst Deinem httpmod-Device ein weiteres Attribut hinzu:

attr httpmod-Device reading01Expr $val =~ s/,/\./; $val;

Die Zahl hinter reading mußt Du Deinem reading0xRegex anpassen.

Das wars schon. Bei mir hat das wunderbar geklappt.

Viele Grüße

Reinhard

Hallo,

mir ist es schon fast peinlich - ich versuche es trotzdem nochmal...
Bei mir gibt es das Attribut "reading01Expr" gar nicht im Auswahldialog (siehe Screenshot).

Kannst Du mir bitte nochmal kurz helfen?

Vielen Dank.

Viele Grüße
Jens

Laffer72

Du mußt das ganze von Hand oben in die Befehlszeile eingeben. Nachdem Du <Enter> gedrückt hast, rufst Du das Device nochmal auf und bei den Attributen erscheint das oben eingegebene.
Bitte anschließend speichern, nicht dass es bei einem Neustart dann wieder ist.

Hoffe jetzt klappts.
Viele Grüße

Reinhard
Raspberry Pi Rev.B, FB7390 (FHEM2FHEM), Sonos, Smarter Coffee
Osram Lightify:2m LED-Streifen, 5m-LED-Streifen, Gartenspot, Surface 28W, Classic E14,E27, Classic RGBW E27, PAR16 GU10, Plug
CUL868:FS20-ST, FS20-DI, FS20-FMS, FS20-ES1
HMUSB:HM-Sec-RHS,HM-Sec-MDIR2
Jeelink868:TX-29-IT, TFA30.315

josburg

Zitat von: Laffer72 am 23 Juni 2016, 22:21:08
Du mußt das ganze von Hand oben in die Befehlszeile eingeben. Nachdem Du <Enter> gedrückt hast, rufst Du das Device nochmal auf und bei den Attributen erscheint das oben eingegebene.
Bitte anschließend speichern, nicht dass es bei einem Neustart dann wieder ist.

Hoffe jetzt klappts.
Viele Grüße

Reinhard

Super, so hat es geklappt.
Vielen Dank, Reinhard!

costa2

Zitat von: josburg am 23 Juni 2016, 21:30:46
Hallo,


Bei mir gibt es das Attribut "reading01Expr" gar nicht im Auswahldialog (siehe Screenshot).


Richtig muss es heißen: reading01OExpr, reading01Expr ist veraltet.

Volker
RPI3, Nanocul 433 MHz, 433 MHz Steckdosen, DVB-T Stick für 868 MHz TX Sensoren, MOBILE ALERTS Sensoren und Gateway