FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Paul_M am 27 Juli 2022, 15:02:41

Titel: Regex Hilfe HTTPMOD
Beitrag von: Paul_M am 27 Juli 2022, 15:02:41
Moin,
ich habe mir einen DHT11 Sensor angeschafft und zum laufen gebracht. Die Temperatur und Feuchtigkeit kann ich über einen Webserver abrufen. Funktioniert problemlos. Jetzt möchte ich jedoch die Daten ans FHEM übertragen. Also hab ich mich mal an HTTPMOD gewagt. Aber anscheinend hab ich Probleme mit meiner Regex (ist mein erstes Mal, dass ich mich daran probier...).
Würde mir evtl. jemand, der schon mehr Erfahrung hat behilflich sein?

Das ist meine Seite, welche ich über die IP aufrufe:

<!DOCTYPE html> <html>
<head><meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<title>Pauls Zimmer</title>
<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}
body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;}
p {font-size: 24px;color: #444444;margin-bottom: 10px;}
</style>
</head>
<body>
<div id="webpage">
<h1>Temperatur und Feuchtigkeit Paul</h1>
Die Temperatur ist 2147483647</div>
</body>
</html>


Meine Regex, hab ich so erstellt (wie gesagt, blutiger Anfänger), also gerne korrigieren ;)

Die Temperatur ist .([0-9]+)

Hier auch noch ein List vom HTTPMOD:

Internals:
   BUSY       0
   CFGFN     
   DEF        192.168.178.192 10
   FUUID      62dff26c-f33f-3d8e-5668-ea576d90267f437b
   Interval   10
   MainURL    192.168.178.192
   ModuleVersion 4.1.12 - 19.4.2022
   NAME       Temp
   NOTIFYDEV  global
   NR         2207
   NTFY_ORDER 50-Temp
   STATE      ???
   TYPE       HTTPMOD
   httpbody   
   value     
   CompiledRegexes:
   HttpUtils:
     data       
     displayurl 192.168.178.192
     header     
     httpversion 1.0
     hu_blocking 0
     ignoreredirects 1
     loglevel   4
     redirects  0
     timeout    2
     url        192.168.178.192
     sslargs:
   QUEUE:
   READINGS:
   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        192.168.178.192
Attributes:
   enableControlSet 1
   reading01Name Temperatur
   reading01Regex Die Temperatur ist [0-9]+
   showBody   1
   verbose    0


Es wäre schön, wenn jemand schnell drüber schauen würde. Fühle mich echt blöd, da es ja wahrscheinlich ziemlich einfach ist...

Gruß Paul
Titel: Antw:Regex Hilfe HTTPMOD
Beitrag von: OdfFhem am 27 Juli 2022, 16:44:39
@Paul_M

Beim Regex fehlen zumindest die Klammern, da es ansonsten kein verwertbares Ergebnis gibt ...

Könnte also vielleicht so aussehen:

reading01Regex Die Temperatur ist ([0-9]*)
Titel: Antw:Regex Hilfe HTTPMOD
Beitrag von: Paul_M am 27 Juli 2022, 17:51:01
Zitat von: OdfFhem am 27 Juli 2022, 16:44:39
@Paul_M

Beim Regex fehlen zumindest die Klammern, da es ansonsten kein verwertbares Ergebnis gibt ...

Könnte also vielleicht so aussehen:

reading01Regex Die Temperatur ist ([0-9]*)


Tatsächlich, hatte es aber auch schon mit probiert, habe es wieder geändert, leider ohne positives Ergebnis. Trotzdem vielen Dank dir @OdfFhem
Titel: Antw:Regex Hilfe HTTPMOD
Beitrag von: DetlefR am 27 Juli 2022, 18:09:52
Zitatreading01Regex Die Temperatur ist ([0-9]*)

Sollte eigentlich funktionieren. Als Tip von mir. Falls die Temperatur mal mit Dezimalpunkt kommt
ZitatDie Temperatur ist ([0-9,\.]+)

Geh mal auf https://regex101.com/ (https://regex101.com/)
In den unteren Teil (TEST STRING) kopierst du alles was als HTML ankommt. Darüber dann den regex "Die Temperatur ist ([0-9,\.]+)". Rechts steht dann das Ergebnis.
Viel Spaß beim probieren.
Titel: Antw:Regex Hilfe HTTPMOD
Beitrag von: Paul_M am 27 Juli 2022, 18:18:20
Zitat von: DetlefR am 27 Juli 2022, 18:09:52
Sollte eigentlich funktionieren. Als Tip von mir. Falls die Temperatur mal mit Dezimalpunkt kommt
Geh mal auf https://regex101.com/ (https://regex101.com/)
In den unteren Teil (TEST STRING) kopierst du alles was als HTML ankommt. Darüber dann den regex "Die Temperatur ist ([0-9,\.]+)". Rechts steht dann das Ergebnis.
Viel Spaß beim probieren.

@DetlefR Ja mit regex101 hatte ich auch schon gearbeitet, dort funktioniert es auch... Echt komisch. Muss ich evtl. noch etwas beachten beim HTTPMOD (Irgendein wichtiges Attribut setzen oder sowas)?
Gruß Paul
Titel: Antw:Regex Hilfe HTTPMOD
Beitrag von: OdfFhem am 27 Juli 2022, 18:29:40
@Paul_M

showBody hast Du schon gesetzt, aber scheinbar ohne Auswirkung - Internal-Wert für httpbody fehlt wohl.

Aktiviere auch mal die Attribute showError und showMatched ...
Titel: Antw:Regex Hilfe HTTPMOD
Beitrag von: Paul_M am 27 Juli 2022, 18:42:03
@OdfFhem

Ok das mit dem LAST ERROR ist ja interessant. er spuckt mir Folgendes aus:

LAST_ERROR
http://192.168.178.192: malformed or unsupported URL


Aber die IP stimmt. Ich hab's mal mit http, mal ohne, mal den Port 80 extra dazugeschrieben mal nicht. Alle möglichen Varianten probiert... Ganz merkwürdig :/
Titel: Antw:Regex Hilfe HTTPMOD
Beitrag von: Paul_M am 27 Juli 2022, 18:49:30
Es funktioniert!!!
Ich musste einfach ein / hinter die IP machen. Und das hat mich Stunden gekostet  >:(
Ich hoffe, der ein oder andere kann daraus lernen! ;)
Danke für eure Hilfe!!