GELÖST!! HTTPMOD verwendet mit E2000

Begonnen von Tueftler1983, 15 Mai 2016, 19:41:40

Vorheriges Thema - Nächstes Thema

ernst1024

Zitat von: frank am 17 Mai 2016, 09:31:59
was bringt denn folgendes:
(?s).*?Luft.*?([\d]+)

ne greift alles ab vom Anfang bis 170. Jedenfalls auf https://regex101.com. Habe jetzt noch den hier gefunden: http://www.regextester.com
Der bringt ganz andere Ergebnisse, da sagt er bei deinem code 'no match'.
Gruß Ernst

frank

seltsam, bei mir bringt regex101 => 135. also, die gewünschte zahl.
der andere tester versteht die singleline-option "(?s)" 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

ernst1024

vielleicht liegt es an der Vorgehensweise. Ich copy und paste seinen buffer  unten in das entsprechende Feld?

Ist denn bei dir unten im Suchtext nur die gesuchte Zahl hinterlegt, oder rechts im Feld match?
Gruß Ernst

Tueftler1983

Ich werde jedenfalls weiter testen. Vielleicht auch mal mit telnet. Das E2000 System ist klasse da gibt es nix aber ich hätte halt gerne alles unter einem Dach. Und umstellen auf fhem geht nicht da ich dann die Busmodule von E2000 nicht mehr verwenden kann.

Irgendwie muss ich die werte ja von der Seite bekommen

frank

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

ernst1024

ok so sieht das bei mir mit deinem regex auch aus. Hier als Bsp mal mit:
(Wasser<\/td><td>) ([0-9]+)
Gruß Ernst

Tueftler1983

#21
Das selbe habe ich ja auch. Und bei Wasser müßte ich ja das reading wasser-2 nehmen aber auch dann wird kein wert angezeigt.
Ich verstehe es nicht von dem was regex.com ausspuckt sollte es ja gehen.

HTTP/1.1 200 OK <html><head><title>E2000-NET-IO</title></head> <body text=white link=white alink=white vlink=white bgcolor=black><font face='Courier New'><h1>E2000-NET-IO</h1> <div style='float:left;margin:5px'><a href='p0'>POOL Pum</a></div> <div style='float:left;margin:5px'><a href='p1'>Pool Lic</a></div> <div style='background:#333;float:left;margin:5px'><a href='p2'>Temperat</a></div> <div style='float:left;margin:5px'><a href='p3'>Garten</a></div> <div style='float:left;margin:5px'><a href='p4'>Carport</a></div> <div style='float:left;margin:5px'><a href='p5'></a></div> <div style='float:left;margin:5px'><a href='s '>Status</a></div><table style='clear:both;width:400px'> <tr><td>Luft</td><td> 130</td></tr> <tr><td>Wasser</td><td> 170</td></tr> <tr><td>PH Anheb</td><td> 204</td></tr> <tr><td>Luft1</td><td> 13</td></tr> <tr><td>Wasser1</td><td> 17</td></tr> <tr><td>PH in</td><td> 0</td></tr> </table><p>Created by <a href='http://elektronik2000.de/'>Elektronik2000.de</a></p> <meta http-equiv='refresh' content='3; URL=?'></font></body></html>

Habe auch versucht bei e2000 Wasser1 und Luft1 anzulegen und die Werte in e2000 schon durch 10 geteilt damit dann beim auslesen schon 13.5 ausgegeben wird aber auch so keinen erfolg.

frank

hast du denn nun schon meine letzte regex probiert? was kommt dann?
(?s).*?Luft.*?([\d]+)

ist dein fhem aktuell?
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

Tueftler1983

#23
Das sieht schonmal super aus es kommen werte jetzt muss es nur noch mit der , setzung klappen siehe screenshot

das (?s).*?Luft.*?([\d]+)

nur es sind keine 155 °C und 165°C sondern 15,5°C und 16,5°C

Internals:
   BUSY       0
   DEF        http://192.168.2.90/p2? 60
   Interval   60
   LASTSEND   1463479078.9998
   MainURL    http://192.168.2.90/p2?
   NAME       Pool
   NR         91
   STATE      Wasser 165.0 Grad, Luft 160.0 Grad
   TRIGGERTIME 1463479138.99687
   TRIGGERTIME_FMT 2016-05-17 11:58:58
   TYPE       HTTPMOD
   addr       http://192.168.2.90:80
   buf        HTTP/1.1 200 OK



<html><head><title>E2000-NET-IO</title></head>                                                              <body text=white link=white alink=white vlink=white bgcolor=black><font face='Courier New'><h1>E2000-NET-IO</h1>               <div style='float:left;margin:5px'><a href='p0'>POOL Pum</a></div>                                                             <div style='float:left;margin:5px'><a href='p1'>Pool Lic</a></div>                                                             <div style='background:#333;float:left;margin:5px'><a href='p2'>Temperat</a></div>                                             <div style='float:left;margin:5px'><a href='p3'>Garten</a></div>                                                               <div style='float:left;margin:5px'><a href='p4'>Carport</a></div>                                                              <div style='float:left;margin:5px'><a href='p5'></a></div>                                                                     <div style='float:left;margin:5px'><a href='s '>Status</a></div><table style='clear:both;width:400px'>                         <tr><td>Luft</td><td>   160</td></tr>                                                                                          <tr><td>Wasser</td><td>   165</td></tr>                                                                                        <tr><td>PH Anheb</td><td>   204</td></tr>                                                                                      <tr><td>Luft1</td><td>    16</td></tr>                                                                                         <tr><td>Wasser1</td><td>    16</td></tr>                                                                                                                                                                                                                      <tr><td>PH in</td><td>     0</td></tr>                                                                                                                                                                                                                        </table><p>Created by <a href='http://elektronik2000.de/'>Elektronik2000.de</a></p>                                            <meta http-equiv='refresh' content='3; URL=?'></font></body></html>
   code       200
   conn
   data
   displayurl http://192.168.2.90/p2?
   header
   host       192.168.2.90
   httpheader HTTP/1.1 200 OK
   httpversion 1.0
   hu_blocking 0
   hu_filecount 9
   ignoreredirects 0
   loglevel   4
   path       /p2?
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.2.90/p2?
   value      0
   QUEUE:
   Readings:
     2016-05-16 23:17:33   MATCHED_READINGS
     2016-05-16 22:14:31   Temperatur
     2016-05-17 11:57:59   temperature     160
     2016-05-17 11:57:59   wasser          165
     2016-05-17 11:46:59   wasser-1        Wasser</td><td>
     2016-05-17 11:46:59   wasser-2
   Request:
     data
     header
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.2.90/p2?
     value      0
   Defptr:
     Readingbase:
       Luft       reading
       LuftTemperatur reading
       PH         reading
       Temperatur reading
       Wasser     reading
       WasserTemperatur reading
       temperature reading
       wasser     reading
       wasser-1   reading
       wasser-2   reading
     Readingnum:
       Luft       01
       LuftTemperatur 1
       PH         3
       Temperatur 01
       Wasser     02
       WasserTemperatur 2
       temperature 01
       wasser     02
       wasser-1   02
       wasser-2   02
     Readingoutdated:
     Readingsubnum:
       Temperatur
       temperature
       wasser
       wasser-1   -1
       wasser-2   -2
   Sslargs:
Attributes:
   reading01Name temperature
   reading01Regex (?s).*?Luft.*?([\d]+)
   reading02Name wasser
   reading02Regex (?s).*?Wasser.*?([\d]+)
   stateFormat {sprintf("Wasser %.1f Grad, Luft %.1f Grad", ReadingsVal($name,"wasser",0,),  ReadingsVal($name,"temperature",0))}
   userattr   reading01Name reading01Regex reading02Name reading02Regex requestData


Aber bis hier hin schon mal herzlichen DANK

frank

dann sind im html-code wahrscheinlich newline-/tab-character versteckt.

zum nachträglichen bearbeiten der geparsten daten, kannst du zb das attribut readingXXOExpr nutzen. wahrscheinlich so:
reading01OExpr $val / 10
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

Tueftler1983

#25
Absulute spizenklasse!!!!

#############Korrektur######

Danke euch für die hilfe!!

Jetzt muss ich mir nur noch ein notify basteln das ich die Werte auch in FhemSwitch richtig angezeigt bekomme da steht immernoch 165.0 Grad, aber das wird schon klappen so in der oberfläche ist es perfekt!!
######

Alles wunderbar!! FhemSwitch und AndFhem brauchten nur etwas länger!!
Vielen Vielen Dank nochmal und den PH wert bekomme ich dank euch auch selber hin

ernst1024

schön des es jetzt klappt. Du kannst natürlich auch den readings andere Namen geben so wie es dir sinnvoll erscheint. Also Lufttemperatur und Wassertemperatur oder wie du halt magst.
Gruß Ernst

Tueftler1983

Das geht habe mir die Stats Namen angepaßt echt klasse.

Kann ich mit dem Modul eigentlich nur zahlen auswerten oder auch Zustände und ggf sogar schaltbefehle senden?

Dafür müßte ich dann eh nen 2. HTTPMOD machen weil es auf ne 2. Bzw 3. Seite von dem e2000 Device ist.
Screenshot zeigt das ergebnis

ernst1024

okay und am Wochenende kommen wir dann alle zu schwimmen. Obwohl 17°C Wasser, naja vielleicht lieber nicht
Gruß Ernst

Tueftler1983

Hehe Nein noch steht der Pool nicht, der Temperaturfühler vom Pool ist im Keller und der von der Lufttemperatur hängt aus dem Kellerfenster. Außerdem würde ich nicht in einen Pool gehen der nen PH Wert von 2.0 hat!
Aber ich muss mal los werden das Elektronik2000 auch ein super System ist egal ob das alte e2000 basierend auf einem AVR NET IO oder das neue e2000Plus basierend auf einem Raspberry.
Mit den Bus Modulen absulut super und günstig