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
httpmod
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 ?
RegEx lernen kann nicht schaden. Ist nicht schwer und hier gut erklärt:
https://danielfett.de/de/tutorials/tutorial-regulare-ausdrucke/
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.
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
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.
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 ..
Du musst präziser werden. 92.2 stimmt. Es ist der alltime Wert.
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.
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.
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
Bitte noch ein [gelöst] vor den Threadtitel setzen.
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?
Das kommt schon auch darauf an, welches Format du haben möchtest oder?
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?
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.
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
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.
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?
das zitat ist aus dem wiki.
was verstehst du daran nicht?
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.
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
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
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
oh shit, mach mal aus allen "/d" => "\d".
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 ?
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.