Werte in Fhem bekommen HTML ( Wetterstation )

Begonnen von ChrisW, 20 März 2018, 16:21:59

Vorheriges Thema - Nächstes Thema

ChrisW

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
Raspberry PI3 mit allem möglichen.

marvin78


ChrisW

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 ?
Raspberry PI3 mit allem möglichen.

marvin78


ChrisW

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.
Raspberry PI3 mit allem möglichen.

ChrisW

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
Raspberry PI3 mit allem möglichen.

marvin78

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.

ChrisW

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 ..
Raspberry PI3 mit allem möglichen.

marvin78

Du musst präziser werden. 92.2 stimmt. Es ist der alltime Wert.

ChrisW

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.
Raspberry PI3 mit allem möglichen.

marvin78

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.

ChrisW

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
Raspberry PI3 mit allem möglichen.

marvin78

Bitte noch ein [gelöst] vor den Threadtitel setzen.

ChrisW

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?
Raspberry PI3 mit allem möglichen.

marvin78

Das kommt schon auch darauf an, welches Format du haben möchtest oder?

ChrisW

#15
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?
Raspberry PI3 mit allem möglichen.

frank

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.
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

ChrisW

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
Raspberry PI3 mit allem möglichen.

frank

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.
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

ChrisW

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?
Raspberry PI3 mit allem möglichen.

frank

das zitat ist aus dem wiki.
was verstehst du daran 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

ph1959de

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.
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

ChrisW

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
Raspberry PI3 mit allem möglichen.

frank

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
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

ChrisW

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
Raspberry PI3 mit allem möglichen.

frank

oh shit, mach mal aus allen "/d" => "\d".
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

ChrisW

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 ?
Raspberry PI3 mit allem möglichen.

frank

#27
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.
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