FHEM Forum

FHEM => Sonstiges => Thema gestartet von: raspklaus am 21 Juli 2014, 22:12:15

Titel: [Gelöst] HTTPMOD Probleme mit der Website
Beitrag von: raspklaus am 21 Juli 2014, 22:12:15
Hi,

ich versuche gerade eine Website von einem Wiesemann&Theiss Thermometer auszulesen. Aber ich komme dabei nicht weiter.

Der Code:

define Servertemp HTTPMOD http://192.200.100.90/User.htm 600
attr Servertemp readingsName_Temp STemp
attr Servertemp readingsRegex_Temp <td class="bgAnLRed">Sensor)
attr Servertemp room System
attr Servertemp stateFormat STemp
attr Dieselpreis timeout 5


Das List:

Internals:
   CHANGED
   DEF        http://192.200.100.90/User.htm 600
   Interval   600
   NAME       Servertemp
   NR         60
   STATE      STemp
   TYPE       HTTPMOD
   addr       http://192.200.100.90:80
   buf        HTTP/1.0 200 OK

Date: Mon, 21 Jul 2014 13:28:57 UTC

Last-Modified: Mon, 21 Jul 2014 13:28:56 UTC

Expires: Mon, 21 Jul 2014 13:28:57 UTC

Content-Length: 2808

Content-Type: text/html



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<link rel="stylesheet" href="style.css" type="text/css">

<title>USERUP</title>

</head>

<body>

<table border="0" cellpadding="0" cellspacing="0" width="600" align="center">

<tr><td colspan="3" align="center" class="size5"><b>User.htm</b></td></tr>

<tr><td colspan="3" align="center" class="size5"><b>Serverraum</b></td></tr>

<tr><td colspan="3" align="center" class="size4"> </td></tr>

<tr><td colspan="3">&nbsp;</td></tr>

<tr><td colspan="3" align="right"><p>last update: Mo, KW30,<br>21.07.2014 15:28:57&nbsp;* (UTC +02)</p></td></tr>

<tr>

<td colspan="3" align="center">

<table border="2">

<tr>

<th><a href="info.htm?Ili=0&amp;Ref=user.htm?Vpos=11669&amp;DTb=0&amp;">Sensor 1</a></th>

</tr>

<tr>

<td class="bgAnLRed">27,6 �C</td>

</tr>

<tr>

<th align="center">&Delta;T</th>

</tr>

<tr>

<td align="center" >  0,0 �C/min</td>

</tr>

</table></td>

</tr>



<tr>

<td align="center" colspan="3">&nbsp;</td>

</tr>

<tr>

<td colspan="3" align="center" class="size3"><b>Data Logger</b></td>

</tr>

<tr>

<td colspan="3" align="center">

<table border="1">

<tr><td>

<form action="log.htm" method="POST" >

<table border="0" cellpadding="5%">

<tr>

<td align="center"><b>Ausgabe Datalogger</b></td>

</tr>

<tr>

<td align="center"><select name="DTb" size="1"><option selected value="4"> 60 Min</option></select></td>

</tr>

<tr>

<td align="center">

<input type="hidden" name="B2" value="&nbsp;&nbsp;OK&nbsp;&nbsp;"><input type="submit" name="B4" value="&nbsp;&nbsp;OK&nbsp;&nbsp;">

</td>

</tr>

</table></form>

</td>

<td>

<form action="thermo.csv" method="POST" >

<table border="0" cellpadding="5%">

<tr>

<td align="center"><b>Download Excelformat</b></td>

</tr>

<tr>

<td align="center"><select name="DTb" size="1"><option selected value="4"> 60 Min</option></select></td>

</tr>

<tr>

<td align="center">

<input type="hidden" name="B2" value="&nbsp;&nbsp;OK&nbsp;&nbsp;"><input type="submit" name="B4" value="&nbsp;&nbsp;OK&nbsp;&nbsp;">

</td>

</tr>

</table></form>

</td></tr>

</table>

</td>

</tr>

<tr><td align="center" colspan="3"><br><br><form action="user.htm" method="GET" ><input type="hidden" name="DTb" value="0"><input type="hidden" name="Vpos" value="11669"><input type="hidden" name="B2" value="Reload"><input type="submit" name="B4" value="Reload"></form></td></tr>

<tr><td align="center" colspan="3"><br><br><a href="index.htm" target="_top">zur&uuml;ck zur Web-Thermograph Homepage</a></td></tr>

</table>

</body>

</html>


   code       200
   conn
   displayurl http://192.200.100.90/User.htm
   host       192.200.100.90
   loglevel   4
   path       /User.htm
   protocol   http
   redirects  0
   timeout    2
   url        http://192.200.100.90/User.htm
   Readings:
Attributes:
   readingsName_Temp STemp
   readingsRegex_Temp <td class="bgAnLRed">STemp[^0-9]+([0-9\.]+)
   room       System
   stateFormat STemp
   timeout    5


Es soll die Temperatur angezeigt werden
Titel: Antw:HTTPMOD Probleme mit der Website
Beitrag von: frank am 21 Juli 2014, 22:36:44
versuche das:
attr Servertemp readingsRegex_Temp <td class="bgAnLRed">(.*)</td>
Titel: Antw:HTTPMOD Probleme mit der Website
Beitrag von: raspklaus am 22 Juli 2014, 08:00:07
ok,

funktioniert fast  ;)

Es wird nun

27,6 �C

angezeigt. Das Fragezeichen steht anscheinend für das Gradzeichen. Wie bekomme ich das noch weg ?
Titel: Antw:HTTPMOD Probleme mit der Website
Beitrag von: frank am 22 Juli 2014, 10:26:39
du hast doch sicherlich bemerkt, dass der text der durch "(.*)" ausgeblendet wird, in dein reading übernommen wird. wenn du weniger in deinem reading haben willst, musst du weniger ausblenden.

<td class="bgAnLRed">(.*) �C</td>

jetzt bekommst du nur den wert. die einheiten fügst du dann selber nach deinem geschmack zur "anzeige" hinzu.

attr Servertemp stateFormat meine_temperatur:STemp °C
Titel: Antw:HTTPMOD Probleme mit der Website
Beitrag von: raspklaus am 22 Juli 2014, 11:51:09
Das funktioniert bei mir nicht. Es wird dann

meine_temperatur:27,7 �C °C

angezeigt

attr Servertemp readingsRegex_Temp <td class="bgAnLRed">(.*) �C</td>
Titel: Antw:HTTPMOD Probleme mit der Website
Beitrag von: Puschel74 am 22 Juli 2014, 12:04:02
Hallo,

da du 3 Stellen in deinem Reading haben willst kannst du ja auch (...) verwenden, oder nicht?
Wenn allerdings das Komma als ein Zeichen zählt musst du natürlich 4 Punkte machen.
Versuchs doch einfach mal.

Grüsse
Titel: Antw:HTTPMOD Probleme mit der Website
Beitrag von: justme1968 am 22 Juli 2014, 12:05:29
versuch es mal so: <td class="bgAnLRed">.*([\d.]*).*</td>

gruss
  andre
Titel: Antw:HTTPMOD Probleme mit der Website
Beitrag von: frank am 22 Juli 2014, 13:07:56
hattest du denn auch 600 sekunden nach der änderung auf ein neues reading gewartet? ich glaube nicht.  ;)
Titel: Antw:HTTPMOD Probleme mit der Website
Beitrag von: raspklaus am 22 Juli 2014, 14:18:57
Ich hatte gewartet. Habe es nun aber auf 60 Sekunden gesetzt
Titel: Antw:HTTPMOD Probleme mit der Website
Beitrag von: raspklaus am 22 Juli 2014, 15:06:43
Fhem kann das � Zeichen nicht verarbeiten. Beide Versionen von oben ergeben:

HTTPMOD: Response didn't match Reading(s) STemp

Servertemp müsste mit einer Art Stringoperation bearbeitet werden so wie lstrg(4). Aber leider kenne ich zu wenig Perl um dies zu realisieren.
Titel: Antw:HTTPMOD Probleme mit der Website
Beitrag von: raspklaus am 22 Juli 2014, 15:45:55
Die Funktion wäre :

{
  $Zeichen[$i] = substr($Satz,$i,1);
}


Aber wie das einbauen ?????????????????????????????????????
Titel: Antw:HTTPMOD Probleme mit der Website
Beitrag von: StefanStrobel am 22 Juli 2014, 18:50:22
Hallo,

Eine Nachbearbeitung der Werte kann man mit ReadingsExpr machen.
Ist leider im Wiki noch nicht drin.

attr Servertemp readingsExpr_Temp substr($val, 1, 3)
oder ähnlich.

Naheliegender wäre es aber die Regex richtig hinzubiegen.
Die bisher genannten Beispiele sollten eigentlich funktionieren.

Gruß
    Stefan
Titel: Antw:HTTPMOD Probleme mit der Website
Beitrag von: raspklaus am 22 Juli 2014, 19:14:34
Die folgende Funktion brachte den Erfolg

attr Servertemp readingsExpr_Temp substr($val, 0, 4)

Danke