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
@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]*)
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
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.
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
@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 ...
@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 :/
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!!