Hallo,
seit ca. dem 01.02. funktioniert einige meiner HTTPMOD regex abfragen nicht mehr richtig.
Mir ist aufgefallen, dass ich nun immer <pre> </pre> an den Werten habe?
jetzt :
reading0Regex Status Heizkreis 1:[ \t]+([-]?[\d\.]+[^<]*)
Status Heizkreis 1 <pre>114 - Heizbetrieb Komfort </pre>
alt :
reading0Regex Status Heizkreis 1:[ \t]+([-]?[\d\.]+[^<]*)
Status Heizkreis 1 114 - Heizbetrieb Komfort
Grüsse
Kannst du bitte genau beschreiben, wo die <pre> Tags auftauchen? FHEMWEB baut die dazu, falls ein \n im Wert vorkommt.
Ich habe noch festgestellt, das die Tags nicht immer da sind. Wenn ich ein Httpmod anclicke sind sie manchmal da und nach einm reload wieder weg ?
siehe Bilder.
edit:
Eskommt dann vor, wenn sich die Werte auf der Seite ändern.
buf:
HTTP/1.1 200 OK Content-Type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>BSB LAN-SERVER</title> <link rel="shortcut icon" type="image/x-icon" href="http://arduino.cc/en/favicon.png" /> </head> <body> <p> 8000 Status - Status Heizkreis 1: 122 - Raumtemp'begrenzung <br> </p> <p> 8730 Diagnose Verbraucher - Heizkreispumpe Q2: 0 - Aus <br> </p> <p> 8731 Diagnose Verbraucher - Heizkreismischer Auf Y1: 0 - Aus <br> </p> <p> 8732 Diagnose Verbraucher - Heizkreismischer Zu Y2: 0 - Aus <br> </p> <p> 8740 Diagnose Verbraucher - Raumtemperatur 1: 20.1 °C <br> </p> <p> 8741 Diagnose Verbraucher - Raumsollwert 1: 20.0 °C <br> </p> <p> 8742 Diagnose Verbraucher - Raumtemperatur 1 Modell: 19.2 °C <br> </p> <p> 8743 Diagnose Verbraucher - Vorlauftemperatur 1: 18.7 °C <br> </p> <p> 8744 Diagnose Verbraucher - Vorlaufsollwert 1: --- °C <br> </p> </body> </html>
ZitatEskommt dann vor, wenn sich die Werte auf der Seite ändern.
Ich habe am Samstag eine Aenderung in fhemweb.js durchgefuehrt, was genau dieses Problem beheben koennte. Koenntest Du das bitte testen (d.h. FHEM-update + Browser Reload) ?
Und/oder dein Regexp anpassen, damit die Daten ohne \n genomen werden. Das gezeigte buf is sicher nicht exakt kopiert: nach HTTP _muss_ ein \r\n eingefuegt werden, sonst ist es nicht RFC Konform. Deswegen vermute ich weitere \n's im Body.
Zitat von: rudolfkoenig am 13 Februar 2017, 13:59:53
Ich habe am Samstag eine Aenderung in fhemweb.js durchgefuehrt, was genau dieses Problem beheben koennte. Koenntest Du das bitte testen (d.h. FHEM-update + Browser Reload) ?
Jetzt sieht es besser aus. Die <pre> </pre> sind weg, bzw. kommen nicht mehr.
Zitat
Und/oder dein Regexp anpassen, damit die Daten ohne \n genomen werden. Das gezeigte buf is sicher nicht exakt kopiert: nach HTTP _muss_ ein \r\n eingefuegt werden, sonst ist es nicht RFC Konform. Deswegen vermute ich weitere \n's im Body.
Das habe ich ehrlichgesagt nicht ganz kapiert und mit Regexp habe ich so meine Schwierigkeiten. Das buf sollte schon stimmen, das habe ich mit Copy&Paste hier eingefügt.
Habe nochmal aktuelle Bilder angehängt.
Zitat von: jensweber am 13 Februar 2017, 20:59:10
Das buf sollte schon stimmen, das habe ich mit Copy&Paste hier eingefügt.
Im buf werden Zeilenwechsel entfernt.
Stell doch den Quelltext der Seite mit ein.
Ok, hier der Quelltext :
8000 Status - Status Heizkreis 1: 114 - Heizbetrieb Komfort
8730 Diagnose Verbraucher - Heizkreispumpe Q2: 255 - Ein
8731 Diagnose Verbraucher - Heizkreismischer Auf Y1: 0 - Aus
8732 Diagnose Verbraucher - Heizkreismischer Zu Y2: 0 - Aus
8740 Diagnose Verbraucher - Raumtemperatur 1: 21.2 °C
8741 Diagnose Verbraucher - Raumsollwert 1: 21.0 °C
8742 Diagnose Verbraucher - Raumtemperatur 1 Modell: 21.0 °C
8743 Diagnose Verbraucher - Vorlauftemperatur 1: 23.9 °C
8744 Diagnose Verbraucher - Vorlaufsollwert 1: 23.0 °C
Das ist wohl nicht der Quellcode, da sind keine Spitzklammern enthalten, im Regex prüfst du aber auf darauf..
Trotz fehlender Quelle,
versuch mal diesen hier:
Status Heizkreis 1:\s+(-?[\d\.]+[^\n]*)(?:\n|<|\s*)
ZitatDas ist wohl nicht der Quellcode,
Hi, jetzt aber...
Habe den Ausdruck von Dir probiert, das passt aber nicht ganz. Da wird alles ausgewählt.
Jetzt habe ich folgendes probiert und das siet ganz gut aus. Die eckigen Klammern sind wohl überflüssig.
Status Heizkreis 1:[ \t]+([\d\.]+[^<]*)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>BSB LAN-SERVER</title>
<link rel="shortcut icon" type="image/x-icon" href="http://arduino.cc/en/favicon.png" />
</head>
<body>
<p>
8000 Status - Status Heizkreis 1: 122 - Raumtemp'begrenzung
<br>
</p>
<p>
8730 Diagnose Verbraucher - Heizkreispumpe Q2: 0 - Aus
<br>
</p>
<p>
8731 Diagnose Verbraucher - Heizkreismischer Auf Y1: 0 - Aus
<br>
</p>
<p>
8732 Diagnose Verbraucher - Heizkreismischer Zu Y2: 255 - Ein
<br>
</p>
<p>
8740 Diagnose Verbraucher - Raumtemperatur 1: 20.9 °C
<br>
</p>
<p>
8741 Diagnose Verbraucher - Raumsollwert 1: 20.0 °C
<br>
</p>
<p>
8742 Diagnose Verbraucher - Raumtemperatur 1 Modell: 19.6 °C
<br>
</p>
<p>
8743 Diagnose Verbraucher - Vorlauftemperatur 1: 23.4 °C
<br>
</p>
<p>
8744 Diagnose Verbraucher - Vorlaufsollwert 1: --- °C
<br>
</p>
</body>
</html>
Zitat von: jensweber am 17 Februar 2017, 22:24:14
Hi, jetzt aber...
Habe den Ausdruck von Dir probiert, das passt aber nicht ganz. Da wird alles ausgewählt.
Jetzt habe ich folgendes probiert und das siet ganz gut aus. Die eckigen Klammern sind wohl überflüssig.
hm.. seltsam, denn genau die Zeilenwechsel sind ja hier das problem gewesen, und
wenn dein quellcode stimmt, dürfte das so niemals sein.... mach mal einen Screenshot!
ja, die eckigen Klammern sind fast immer nutzlos, die kombinieren nur unterschiedliche Zeichen:
Versuch mal
Status Heizkreis 1:\s+(-?[\d\.]+[^\n<]*)[\n<\s]