[Gelöst] HTTPMOD Probleme mit der Website

Begonnen von raspklaus, 21 Juli 2014, 22:12:15

Vorheriges Thema - Nächstes Thema

raspklaus

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

frank

versuche das:
attr Servertemp readingsRegex_Temp <td class="bgAnLRed">(.*)</td>
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

raspklaus

ok,

funktioniert fast  ;)

Es wird nun

27,6 �C

angezeigt. Das Fragezeichen steht anscheinend für das Gradzeichen. Wie bekomme ich das noch weg ?

frank

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
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

raspklaus

Das funktioniert bei mir nicht. Es wird dann

meine_temperatur:27,7 �C °C

angezeigt

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

Puschel74

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
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

justme1968

versuch es mal so: <td class="bgAnLRed">.*([\d.]*).*</td>

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

frank

hattest du denn auch 600 sekunden nach der änderung auf ein neues reading gewartet? ich glaube nicht.  ;)
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

raspklaus

Ich hatte gewartet. Habe es nun aber auf 60 Sekunden gesetzt

raspklaus

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.

raspklaus

Die Funktion wäre :

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


Aber wie das einbauen ?????????????????????????????????????

StefanStrobel

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

raspklaus

Die folgende Funktion brachte den Erfolg

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

Danke