FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: josburg am 22 Juni 2016, 07:46:01

Titel: Frage zu RegEx und Ersetzen von Zeichen zum Auslesen von Mobile Alerts Sensoren
Beitrag von: josburg am 22 Juni 2016, 07:46:01
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
Titel: Antw:Frage zu RegEx und Ersetzen von Zeichen zum Auslesen von Mobile Alerts Sensoren
Beitrag 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 (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

Titel: Antw:Frage zu RegEx und Ersetzen von Zeichen zum Auslesen von Mobile Alerts Sensoren
Beitrag von: josburg am 23 Juni 2016, 11:13:53
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 (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
Titel: Antw:Frage zu RegEx und Ersetzen von Zeichen zum Auslesen von Mobile Alerts Sensoren
Beitrag 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
Titel: Antw:Frage zu RegEx und Ersetzen von Zeichen zum Auslesen von Mobile Alerts Sensoren
Beitrag von: josburg am 23 Juni 2016, 21:30:46
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
Titel: Antw:Frage zu RegEx und Ersetzen von Zeichen zum Auslesen von Mobile Alerts Sensoren
Beitrag 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
Titel: Antw:Frage zu RegEx und Ersetzen von Zeichen zum Auslesen von Mobile Alerts Sensoren
Beitrag von: josburg am 24 Juni 2016, 08:20:22
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!
Titel: Antw:Frage zu RegEx und Ersetzen von Zeichen zum Auslesen von Mobile Alerts Sensoren
Beitrag von: costa2 am 28 Juni 2016, 13:00:10
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