FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ChrisW am 20 März 2018, 16:21:59

Titel: Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: ChrisW am 20 März 2018, 16:21:59
Hallo,
ich möchte von http://www.wetter-waldniel.de/24h-werte.html gerne die Windböen mit Uhrzeit in FHEM reinbekommen. Jemand eine idee ?
Kann ich das relativ "einfach" realisieren ?

Vielen Dank
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: marvin78 am 20 März 2018, 16:25:36
httpmod
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: ChrisW am 20 März 2018, 16:32:27
Oha Danke aber das funktioniert mit Regex ... das verstehe ich leider so gar nicht. Ich kenne es teilweise das man dem dem Chrome Untersuchen das anklickt und so einen "Wert" bekommt. Wenn Sie Seite sich natürlich grundlegen ändert geht das nicht mehr. Gibt es da nichts einfacheres ?
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: marvin78 am 20 März 2018, 16:35:18
RegEx lernen kann nicht schaden. Ist nicht schwer und hier gut erklärt:

https://danielfett.de/de/tutorials/tutorial-regulare-ausdrucke/
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: ChrisW am 20 März 2018, 17:00:33
hi, das stimmt schon aber ich hab etwas rumprobiert und um die Werte zu bekommen muss ich einen großen Teil mit aufnehmen :
<td style="text-align: center;" id="Zelle23">
                          <p style="margin-bottom: 0px;">Böengeschwindigkeit</p>
                        </td>
                        <td id="Zelle24">
                          <p style="text-align: center; margin-bottom: 0px;"><b><span style="font-weight: bold;"></span></b></p>
                        </td>
                        <td id="Zelle35">
                          <p style="text-align: center; margin-bottom: 0px;"><span style="color: rgb(0,0,0);"><b><span style="font-weight: bold;">43.9 Km/h</span></b></span><b><span style="color: rgb(0,0,255); font-weight: bold;"> </span></b>am 20.03 um 15:43 Uhr</p>

Wäre es direkt hinter Böengeschwindigkeit ist es sicher einfacher für mich. Bei allen regex editoren/testern will er nicht.
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: ChrisW am 21 März 2018, 08:12:54
Ich hätte nun eine TXT und eine XML kann man die einfacher in FHEM bekommen?
www.wetter-waldniel.de/all-sensors.xml
www.wetter-waldniel.de/all-sensors.txt
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: marvin78 am 21 März 2018, 08:17:47
httpmod ist die einfachste Möglichkeit, die ich kenne. Das macht es einem schon sehr einfach. Ein wenig Einsatz ist aber immer nötig. Hier im Forum und im Wiki gibt es viele Beispiele aus denen man viel lernen kann.

Mach mal was konkretes und wenn du dann mit der Regex nicht zurecht kommst, poste, was du probiert hast und man hilft sicher gerne.
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: ChrisW am 21 März 2018, 08:35:09
Okay:
defmod wetter_waldniel HTTPMOD http://www.wetter-waldniel.de/all-sensors.txt 60
attr wetter_waldniel userattr readingsName_windboe readingsName_windboe_date readingsRegex_windboe
attr wetter_waldniel readingsName_windboe windboe
attr wetter_waldniel readingsName_windboe_date windboe_date
attr wetter_waldniel readingsRegex_windboe last24h_wind0_gustspeedmax_kmh([\d\.]+)
attr wetter_waldniel room Wettervorhersage



Leider liefert er den falschen Wert:
windboe 92.2

Aktuell sollte es :
43.9 sein ..

Er liest den falschen Wert: alltime_wind0_gustspeedmax_kmh wie kann das sein .. der anfang ist doch alltime ..
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: marvin78 am 21 März 2018, 08:37:44
Du musst präziser werden. 92.2 stimmt. Es ist der alltime Wert.
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: ChrisW am 21 März 2018, 08:43:34
Jep aber ich bin doch Prizise "last24h_wind0_gustspeedmax_kmh"
Das gibt es nur 1x in der Textdatei. Wieso zieht er dann was mit alltime ? würde es alltime_last24h_wind0_gustspeedmax_kmh könnte ich das ja verstehen.
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: marvin78 am 21 März 2018, 08:44:17
Kann es sein, dass du ein bisschen gespielt hast? Bei deinem Regex sollte gar nichts kommen.

Probier mal folgendes Regex:

last24h_wind0_gustspeedmax_kmh.([\d\.]+)

Erklärung: Leerzeichen berücksichtigt.
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: ChrisW am 21 März 2018, 08:46:44
ahh leerzeichen das hab ich gerade in dieser Sekunde über das Chome regex Plugin rausbekommen mit leerzeichen findet er dort nur diesen Wert.
Den "." brauche oc wohl nicht wie es ausschaut.
DANKE

Jetzt muss ich nurnoch die Zeit Formatieren ..
last24h_wind0_gustspeedmax_time 20180320154342
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: marvin78 am 21 März 2018, 08:47:53
Bitte noch ein [gelöst] vor den Threadtitel setzen.
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: ChrisW am 21 März 2018, 08:50:06
Jep solbald ich das mit der Zeit noch hinbekommen habe :D
last24h_wind0_gustspeedmax_time 20180320154342
Das abhohlen ist ja nicht das Problem mir WIE Formatiere ich das direkt richtig?
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: marvin78 am 21 März 2018, 08:53:15
Das kommt schon auch darauf an, welches Format du haben möchtest oder?
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: ChrisW am 21 März 2018, 08:56:19
Na alles besser als so :) Ne halt am besten Deutsch. Am besten wäre da es ja nur 24 Stunde ist
MM-DD HH:MM
Schaue gerade das wird doch in fhem auch gehen um ein Reading zu Formatieren das wäre ja keien regex sache oder?

Edit: Oder muss ich dafür echt über die myUtils.pm etwas basteln?
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: frank am 21 März 2018, 12:16:25
ich würde erst einmal auf die aktuellen attribute umstellen. also von readingsName/readingsRegex auf readingXXName/readingXXRegex. xx sind zahlen, zb 01.

dann kannst du zb mit einem zusätzlichen attr readingXXOExpr den zuvor erhaltenen timestamp entsprechend formatieren.
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: ChrisW am 21 März 2018, 14:39:08
okay nun verstehe ich noch weniger. Er erfasst ja alle Werte hier mal ein list:


Internals:
   .getList   
   .setList   
   .updateRequestHash 1
   BUSY       0
   CFGFN     
   DEF        http://www.wetter-waldniel.de/all-sensors.txt 300
   Interval   300
   LASTSEND   1521639451.69135
   MainURL    http://www.wetter-waldniel.de/all-sensors.txt
   ModuleVersion 3.4.2 - 10.2.2018
   NAME       wetter_waldniel
   NR         31446
   STATE      ???
   TRIGGERTIME 1521639751.68708
   TRIGGERTIME_FMT 2018-03-21 14:42:31
   TYPE       HTTPMOD
   addr       http://www.wetter-waldniel.de:80
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl http://www.wetter-waldniel.de/all-sensors.txt
   header     
   host       www.wetter-waldniel.de
   httpheader HTTP/1.1 200 OK
Date: Wed, 21 Mar 2018 13:37:32 GMT
Server: Apache
Last-Modified: Wed, 21 Mar 2018 13:36:04 GMT
ETag: "28204-567ec45c47900-gzip"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 27495
Connection: close
Content-Type: text/plain; charset=iso-8859-1
   httpversion 1.0
   hu_blocking 0
   hu_filecount 110
   hu_port    80
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /all-sensors.txt
   protocol   http
   redirects  0
   timeout    2
   url        http://www.wetter-waldniel.de/all-sensors.txt
   value      0
   .attraggr:
   .attrminint:
   .readingParseList:
     _windboe
     _windboe_date
   QUEUE:
   READINGS:
     2018-03-21 14:37:33   windboe         43.9
     2018-03-21 14:37:33   windboe_date    20180320154342
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://www.wetter-waldniel.de/all-sensors.txt
     value      0
   defptr:
     readingBase:
       windboe    reading
       windboe_date reading
     readingNum:
       windboe    _windboe
       windboe_date _windboe_date
     readingOutdated:
     requestReadings:
       update:
         windboe    reading _windboe
         windboe_date reading _windboe_date
   sslargs:
Attributes:
   readingsName_windboe windboe
   readingsName_windboe_date windboe_date
   readingsRegex_windboe last24h_wind0_gustspeedmax_kmh ([\d\.]+)
   readingsRegex_windboe_date last24h_wind0_gustspeedmax_time ([\d\.]+)
   room       Wettervorhersage
   userattr   readingsName_windboe readingsName_windboe_date readingsRegex_windboe readingsRegex_windboe_date
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: frank am 21 März 2018, 14:55:21
ich dachte, du wolltest den timestamp formatieren: 20180320154342.

deine namensgebung ist deprecated, sollte auch im log erscheinen:
Zitat(The old syntax attr readingsNameX and attr readingsRegexX is still supported but the new one with attr readingXName and attr readingXRegex should be preferred.
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: ChrisW am 21 März 2018, 15:27:30
also im Log habe ich nichts das funktioniert auch super. Was genau meinst du den damit ? Müssen die unterschiedliche Namen haben? Hast du dazu was aus dem Wiki vielleicht damit ich das besser verstehe?
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: frank am 21 März 2018, 15:33:38
das zitat ist aus dem wiki.
was verstehst du daran nicht?
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: ph1959de am 21 März 2018, 18:27:01
Zitat von: ChrisW am 21 März 2018, 15:27:30
also im Log habe ich nichts das funktioniert auch super. Was genau meinst du den damit ? Müssen die unterschiedliche Namen haben? Hast du dazu was aus dem Wiki vielleicht damit ich das besser verstehe?
Siehe "Device specific help" (also commandref):

unter Set-Commands das upgradeAttributes inklusive Erläuterungen.
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: ChrisW am 22 März 2018, 09:42:56
so nun besser?


Internals:
   .getList   
   .setList   
   .triggerUsed 1
   .updateReadingList 1
   .updateRequestHash 1
   BUSY       0
   CFGFN     
   DEF        http://www.wetter-waldniel.de/all-sensors.txt 300
   Interval   300
   LASTSEND   1521708079.05697
   MainURL    http://www.wetter-waldniel.de/all-sensors.txt
   ModuleVersion 3.4.2 - 10.2.2018
   NAME       wetter_waldniel
   NR         31446
   STATE      ???
   TRIGGERTIME 1521708379.05479
   TRIGGERTIME_FMT 2018-03-22 09:46:19
   TYPE       HTTPMOD
   addr       http://www.wetter-waldniel.de:80
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl http://www.wetter-waldniel.de/all-sensors.txt
   header     
   host       www.wetter-waldniel.de
   httpheader HTTP/1.1 200 OK
Date: Thu, 22 Mar 2018 08:41:20 GMT
Server: Apache
Last-Modified: Thu, 22 Mar 2018 08:40:04 GMT
Accept-Ranges: none
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 27001
Connection: close
Content-Type: text/plain; charset=iso-8859-1
   httpversion 1.0
   hu_blocking 0
   hu_filecount 128
   hu_port    80
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /all-sensors.txt
   protocol   http
   redirects  0
   timeout    2
   url        http://www.wetter-waldniel.de/all-sensors.txt
   value      0
   .attraggr:
   .attrminint:
   .readingParseList:
     _windboe
     _windboe_date
   QUEUE:
   READINGS:
     2018-03-22 09:41:21   windboe         32.4
     2018-03-22 09:41:21   windboe_date    20180322083919
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://www.wetter-waldniel.de/all-sensors.txt
     value      0
   defptr:
     readingBase:
       windboe    reading
       windboe_date reading
     readingNum:
       windboe    _windboe
       windboe_date _windboe_date
     readingOutdated:
     requestReadings:
       update:
         windboe    reading _windboe
         windboe_date reading _windboe_date
   sslargs:
Attributes:
   readings01Name_windboe windboe
   readings01Regex_windboe last24h_wind0_gustspeedmax_kmh ([\d\.]+)
   readings02Name_windboe_date windboe_date
   readings02Regex_windboe_date last24h_wind0_gustspeedmax_time ([\d\.]+)
   room       Wettervorhersage
   userattr   readings01Name_windboe readings02Name_windboe_date readings01Regex_windboe readings02Regex_windboe_date
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: frank am 22 März 2018, 11:50:34
nein, aber so als bsp für die zweite gruppe:
attr wetter_waldniel reading02Name windboe_date
attr wetter_waldniel reading02Regex last24h_wind0_gustspeedmax_time ([\d\.]+)


dazu dann die timestamp formatierung "MM-DD HH:MM"

attr wetter_waldniel reading02OExpr ($val=~m/^(/d/d/d/d)(/d/d)(/d/d)(/d/d)(/d/d)(/d/d)$/)?($2."-".$3." ".$4.":".$5):$val
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: ChrisW am 22 März 2018, 12:27:09
ach nun verstehe ich das auch wie es gewollt ist :) DANKE
Jedoch:
ERROR:
Invalid Expression ($val=~m/^(/d/d/d/d)(/d/d)(/d/d)(/d/d)(/d/d)(/d/d)$/)?($2."-".$3." ".$4.":".$5):$val
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: frank am 22 März 2018, 12:43:28
oh shit, mach mal aus allen "/d" => "\d".
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: ChrisW am 22 März 2018, 15:17:08
vielen Dank funktioniert aber so was macht man doch nicht im Kopf oder ? Gibt es da irgendwo einen Generator dafür ? Um verschiedene Ausgaben hinzubekommen ?
Titel: Antw:Werte in Fhem bekommen HTML ( Wetterstation )
Beitrag von: frank am 22 März 2018, 15:50:06
im ersten teil wird das reading in 6 gruppen zerlegt, die über variablen ($1-$6) nutzbar werden. und danach wieder entsprechend zusammengebaut mit den gruppen $2-$5 plus zusätzlichen zeichen (in der klammer nach dem fragezeichen). das kannst du beliebig umstellen/erweitern.