HTTPMOD liest keine Seite aus

Begonnen von TobiasR, 25 Dezember 2017, 10:09:02

Vorheriges Thema - Nächstes Thema

TobiasR

Hallo,

ich habe auf einem Raspberry einen Apache2 Webserver installiert und lasse auf der Index.php Messwerte anzeigen.
Jetzt wollte ich über HTTPMOD die Seite auslesen und in FHEM weiterverarbeiten.

Leider werden keine Daten eingelesen.
Ich habe auch schon versucht auf einem "frischen" Apache-Raspberry Server die Seite auszulesen, leider auch ohne Erfolg.

Gibt es dafür einen Grund oder was mache ich falsch?

Hier das List:

Internals:
   .getList
   .setList
   .updateRequestHash 1
   BUSY       1
   CFGFN
   CHANGED
   DEF        http://192.168.0.168/index.php 10
   FD         65
   Interval   10
   LASTSEND   1514192761.58106
   MainURL    http://192.168.0.168/index.php
   ModuleVersion 3.3.11 - 8.5.2017
   NAME       Sensor_Heizung
   NR         26169
   STATE      ???
   TRIGGERTIME 1514192771.57901
   TRIGGERTIME_FMT 2017-12-25 10:06:11
   TYPE       HTTPMOD
   addr       http://192.168.0.168:80
   buf
   code       200
   data
   displayurl http://192.168.0.168/index.php
   header
   host       192.168.0.168
   httpheader HTTP/1.0 200 OK

Content-type: text/html; charset=UTF-8

Content-Length: 302

Connection: close

Date: Mon, 25 Dec 2017 09:05:51 GMT

Server: lighttpd/1.4.35
   httpversion 1.0
   hu_blocking 0
   hu_filecount 180
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /index.php
   protocol   http
   redirects  0
   timeout    5
   url        http://192.168.0.168/index.php
   value      0
   .readingParseList:
     01
   QUEUE:
   READINGS:
   REQUEST:
     data
     header
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.0.168/index.php
     value      0
   sslargs:
Attributes:
   reading01Name Terrasse
   reading01Regex <span>Terrasse</span>[^0-9]+([0-9\.]+)
   room       Überwachung
   timeout    5
   userattr   reading01Name reading01Regex



Tobias

betateilchen

ist es normal, dass ein apache sich als lighttpd meldet?

Kann es sein, dass auf Deinem Raspi zwei Webserver laufen und Du schlichtweg den falschen erreichst?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

TobiasR

Hallo,

jetzt wo du es sagts.... . Ich hatte ursprünglich den lighttpd installiert.
Ich deinstalliere ihn und werde berichten!

Danke
Tobias

TobiasR

Hallo,

ich musste den Raspberry neu aufsetzen.

Nun ist nur noch der Apache drauf aber eine Anzeige im HTTPMOD kommt nicht raus.

Das "buf" bleibt leer obwohl ich über den Browser meine Webseite sehe.
Ich habe jetzt auch einfach mal eine html Seite hinterlegt. Leider wird die auch nicht angezeigt

Hat jemand noch eine Idee?

Internals:
   .getList
   .setList
   .updateRequestHash 1
   BUSY       0
   CFGFN
   CHANGED
   DEF        http://192.168.0.113/index.php 60
   Interval   60
   LASTSEND   1514243555.82008
   MainURL    http://192.168.0.113/index.php
   ModuleVersion 3.3.11 - 8.5.2017
   NAME       Sensor_Heizung
   NR         26169
   STATE      ???
   TRIGGERTIME 1514243615.81823
   TRIGGERTIME_FMT 2017-12-26 00:13:35
   TYPE       HTTPMOD
   addr       http://192.168.0.113:80
   buf
   code       200
   conn
   data
   displayurl http://192.168.0.113/index.php
   header
   host       192.168.0.113
   httpheader HTTP/1.1 200 OK

Date: Mon, 25 Dec 2017 23:12:35 GMT

Server: Apache/2.4.10 (Raspbian)

Vary: Accept-Encoding

Content-Length: 239

Connection: close

Content-Type: text/html; charset=UTF-8
   httpversion 1.0
   hu_blocking 0
   hu_filecount 703
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /index.php
   protocol   http
   redirects  0
   timeout    5
   url        http://192.168.0.113/index.php
   value      0
   .readingParseList:
     01
   QUEUE:
   READINGS:
   REQUEST:
     data
     header
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.0.113/index.php
     value      0
   sslargs:
Attributes:
   reading01Name Terrasse
   reading01Regex <span>Terrasse</span>[^0-9]+([0-9\.]+)
   room       Überwachung
   timeout    5
   userattr   reading01Name reading01Regex

viegener

http://192.168.0.113/index.php Ist aber keine HTML-Seite

Wie sollen wir Dir helfen, wenn wir den Inhalt nicht kennen?

Grundsätzlich - schreib doch mal einen generischen regex wie .*
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

TobiasR

Hallo,

ich dachte es gibt vielleicht etwas grundsätzliches was ich berücksichtigen muss.
Also, dann hier eine Webseite deren Inhalt eigentlich erscheinen sollte:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>
<body>
<h1>It works!</h1>
</body>
</html>

betateilchen

Zitat von: TobiasR am 26 Dezember 2017, 00:16:35
Das "buf" bleibt leer obwohl ich über den Browser meine Webseite sehe.

Das ist völlig normal.

Mach doch mal den Abruf mit verbose=5 und poste die Logausgaben.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

viegener

In Deinem HTTPMod-Device prüfst Du auf einen Ausdruck

<span>Terrasse</span>[^0-9]+([0-9\.]+)

der in Deiner Seite aber nicht enthalten ist - wie soll das funktionieren?

Wie gesagt probiere doch mal ein sehr generisches regex .* und schau mal was im Reading landet.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

TobiasR

Zitat von: viegener am 26 Dezember 2017, 16:00:24
In Deinem HTTPMod-Device prüfst Du auf einen Ausdruck

<span>Terrasse</span>[^0-9]+([0-9\.]+)

der in Deiner Seite aber nicht enthalten ist - wie soll das funktionieren?

Wie gesagt probiere doch mal ein sehr generisches regex .* und schau mal was im Reading landet.

Stimmt! Ich hatte zwischenzeitlich auch vieles ausprobiert weil ich der Meinung war dass die Seite im buf angezeigt werden mus.




Zitat von: betateilchen am 26 Dezember 2017, 11:28:59
Das ist völlig normal.

Mach doch mal den Abruf mit verbose=5 und poste die Logausgaben.

Da steht tatsächlich jetzt etwas:

ZitatBody: 13 28-031664d6bfff Vorlauf Heizkreise 33.562 26.12.2017 um 17:35:45 Uhr 18:37:47<br />14 28-031664d5b2ff Heizungsraum 11.375 inaktiv 14:33:29<br />15 28-0416642894ff Terrasse 5.312 26.12.2017 um 17:35:45 Uhr 18:37:46<br />16 28-00000534e1bd neu angelegt 19.375 inaktiv 17:21:54<br />27 28-00000535c734 neu angelegt 19.312 inaktiv 17:21:52<br />28 28-000005359574 neu angelegt 19.625 inaktiv 17:21:53<br />
2017.12.26 18:38:02 5: Sensor_Heizung: ExtractSid called, context reading, num
2017.12.26 18:38:02 4: Sensor_Heizung: CheckAuth decided no authentication required
2017.12.26 18:38:02 5: Sensor_Heizung: Read starts parsing response to update with defined readings: 01
2017.12.26 18:38:02 5: Sensor_Heizung: ExtractReading Terrasse with regex /<span>Terrasse/span>[^0-9]+([0-9\.]+)/...
2017.12.26 18:38:02 5: Sensor_Heizung: ExtractReading Terrasse did not match
2017.12.26 18:38:02 3: Sensor_Heizung: Read response to update didn't match any Reading
2017.12.26 18:38:02 5: Sensor_Heizung: HandleSendQueue called, qlen = 0

Aber wieso bekomme ich nun beim Reading nichts raus? 

Ausschnitt:
15 28-0416642894ff Terrasse 5.312 26.12.2017

viegener

Ich denke die Meldung ist doch ziemlich eindeutig:

2017.12.26 18:38:02 5: Sensor_Heizung: ExtractReading Terrasse with regex /<span>Terrasse/span>[^0-9]+([0-9\.]+)/...
2017.12.26 18:38:02 5: Sensor_Heizung: ExtractReading Terrasse did not match


Der von Dir angegebene Ausdruck ist so in der Seite nicht enthalten.

Ich wiederhole mich, fang doch mal mit allgemeinen Ausdrücken wie .* an - ein span kommt gar nicht vor?
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

TobiasR

ich dachte span wäre der Bereich bis zur ersten Zahl. Habe ich wohl falsch verstanden.
Wie müsste es den aussehen wenn ich Terrasse 4.687 bzw. die 4.687 rausholen möchte.
"Terasse.*" ist es wohl eher nicht. Dann bekomme ich nur letzten Zeichen der Seite

TobiasR

Habs raus bekommen:

Terrasse[^0-9]+([0-9\.]+)

Danke!!