httpmod.template: bugs, Fragen, Anregungen

Begonnen von Beta-User, 21 Februar 2019, 12:04:17

Vorheriges Thema - Nächstes Thema

Beta-User

Hallo zusammen,

Bitte nutzt möglichst diesen Thread, wenn ihr Fragen zur Nutzung von httpmod.template habt oder neue templates vorschlagen wollt.

Allgemeine Fragen die Nutzung des features attrTemplate an sich (also nicht speziell auf httpmod bezogen) gehören bitte nicht hierher.

Super wäre, wenn bei Vorschlägen für neue templates für HTTPMOD entsprechend auch die Hinweise in diesem Thread beachtet werden könnten (da gibt es auch einen link zum entsprechenden Thread für MQTT2_DEVICE). Besonders schön wäre es, wenn jeweils die Quelle in der desc mit angegeben werden könnte, damit man als user ggf. den passenden Thread findet. Das erleichtert es ggf., den HTTPMOD dann leichter an die individuellen Wünsche anzupassen.

Sinnvoll ist es, zuerst die Hinweise zu einzelnen httpmod.templates zu lesen. Diese erhält man mit set <device> attrTemplate ?
Wer einfach mal schauen will, was es so gibt, kann einfach irgendein HTTPMOD-Device definieren und dann mal schauen, was es so gibt, ohne erst den Quelltext nach den jeweiligen URL's durchsuchen zu müssen. Beispiel:
define myAttrTemplateViewer HTTPMOD www.spiegel.de 0
set myAttrTemplateViewer attrTemplate ?

Viel Spaß mit dem neuen Feature!

Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

JoeALLb

Servus!

Zitat von: Beta-User am 26 Februar 2019, 07:44:32
Da ich mich aber a) mit regex auch nicht leicht tue und b) nicht im schönen Österreich wohne:

Regex kann ich (ein bisschen ;-) ).
Zeit habe ich aber wenig, bin viel dienstlich unterwegs, oft auch ohne Internet.
Werde sehen, dass ich den Regex noch verbessere!
Gibt es auch eine Wunschliste?
Ich hätte gerne ein Template für Bergfex (https://www.bergfex.at/sommer/innsbruck/wetter/),
da das in meiner Region das genaueste Wetter ist... Im Moment komme ich nicht selber dazu, da die Seite doch recht viele Werte ausgibt!
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Beta-User

Servus zurück!

bergfex wäre natürlich super, da hätte ich sogar ein "gewisses" Eigeninteresse dran.
(Aber diese Webseitenausleserei im Quältext, da bin ich noch nicht richtig drin :( . Meinen ersten HTTPMOD habe ich angelegt beim Zusammensuchen des ersten template-Vorschlags für StefanStrobel, um ihn von der Sinnhaftigkeit der Unterstützung von attrTemplate zu überzeugen, ansonsten reichen eigentlich ja meistens sehr einfache Einzeiler...)

Ansonsten ist mir auch klar, dass du auch andere Baustellen hast, dann machen wir es ggf. halt iterativ mit dem ORF-Wetter, ist ja nicht schlimm, die derzeitige und die vorige Version funktionieren (ggf. nach Anpassung) ja.

@all: Hat da jemand eine Art Grundlage für bergfex.at?
Muß ja nicht gleich super-duper sein, ein Anfang mit ein paar Basiswerten wäre halt gut...

Wenn mich da jemand aufschlauen will, wie man am besten ganz allgemein mit Seiten wie bergfex.at umgeht, wäre das auch nett.

Generell: Wenn jemand anderes, der mehr Ahnung vom Webseiten-Auslesen hat, die Pflege der httpmod-Templates (ggf. mit) übernehmen möchte, wäre das für mich auch ok.
Kurz zum Hintergrund: Ich hatte vor wenigen Monaten die modulseitige Unterstützung für attrTemplate bei StefanStrobel angefragt. Bei den MQTT2-templates war schon zu sehen, dass es auch und eigentlich gerade für HTTPMOD einen großen Bedarf geben müßte, eine Art zentraler Beispielsammlung zu haben. Ich hatte mal vor längerer Zeit einen lust- und erfolglosen Versuch für meinen Brother-Drucker unternommen, dabei ist mir aufgefallen, dass man beim Suchen von passenden HTTPMOD-Beispielen für häufige Fragestellungen endlos im Forum und Wiki suchen konnte und am Ende oft nicht wußte, was jetzt warum gut ist bzw. wie auf die eigenen Bedürfnisse vollends anzupassen (jedenfalls, wenn man so ein noob in dem Thema ist wie meinereiner).

Nachdem attrTemplate für HTTPMOD jetzt "etabliert" ist (was schneller gegangen zu sein scheint, als ich das vorher vermutet hätte), wäre m.E. jetzt der nächste Schritt, dass das jemand übernimmt, der da bei den regex-Geschichten und der Funktionalität von HTTPMOD im allgemeinen besser durchblickt.
Wir könnten auch gerne ein Duo daraus machen, vor allem, wenn jemand Interessiertes Bedarf bei der Unterstützung zu den "speziellen" Anforderungen der "template-Sprache" sehen sollte (ist m.E. nicht wirklich speziell).

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

DeeSPe

#3
https://www.bergfex.at/sommer/innsbruck/wetter/

Regex Ort:
forecast-current">\n\n.+?<h2>\n\s+(.*?)\n.+?</
Regex Höhe:
h2-sub">\n.+?(\d{1,4})\sm
Regex Temperatur:
temperature">\n.+<span.class="value">(.*?)</
Regex Niederschlag:
Niederschlag:\s(.*?)%
Regex letze Aktualisierung:
important">Heute,\s(.*?)</
Regex Wetterzustand:
\d\d:\d\d</span>\n.+-\s(.*?)\n
Regex Text Wetter heute:
h2>\n.+Heute,\s.*?\n</h2>\n\n<div\sclass="txt_markup"><p>(.*?)</
Regex Text Wetter morgen:
h2>\n.+Morgen,\s.*?\n</h2>\n\n<div\sclass="txt_markup"><p>(.*?)</
Regex Text Wetter übermorgen:
h2>\n.+Übermorgen,\s.*?\n</h2>\n\n<div\sclass="txt_markup"><p>(.*?)</

Regexe für die Prognose (https://www.bergfex.at/sommer/innsbruck/wetter/prognose/)

Icon:
"forecast-day-0"\n.*\n.*\n\n.*\n.*"icon"><img\ssrc="(.*?)"
Tmax:
"forecast-day-0"\n.*\n.*\n\n.*\n.*\n\n.*\n.*?"tmax">(.*?)°C</
Tmin:
"forecast-day-0"\n.*\n.*\n\n.*\n.*\n\n.*\n.*\n.*?"tmin">(.*?)°C</
nschnee:
"forecast-day-0"\n.*\n.*\n\n.*\n.*\n\n.*\n.*\n.*\n.*?"nschnee.">\n(.*?)</
rrr:
"forecast-day-0"\n.*\n.*\n\n.*\n.*\n\n.*\n.*\n.*\n.*\n.*\n.*\n\n.*\n.*?"rrr.*?">\n(.*)</
rrp:
"forecast-day-0"\n.*\n.*\n\n.*\n.*\n\n.*\n.*\n.*\n.*\n.*\n.*\n\n.*\n.*\n.*\n\n.*?"rrp.*">\n(.*?)%</
sgrenze:
"forecast-day-0"\n.*\n.*\n\n.*\n.*\n\n.*\n.*\n.*\n.*\n.*\n.*\n\n.*\n.*\n.*\n\n.*\n.*\n.*\n.*?class="group\ssgrenze">\n(.*?)m</
Sonnendauer:
"forecast-day-0"\n.*\n.*\n\n.*\n.*\n\n.*\n.*\n.*\n.*\n.*\n.*\n\n.*\n.*\n.*\n\n.*\n.*\n.*\n.*\n.*\n.*\n.*?"sonne.*">\n(.*?)h?</
Gewitterwahrscheinlichkeit:
"forecast-day-0"\n.*\n.*\n\n.*\n.*\n\n.*\n.*\n.*\n.*\n.*\n.*\n\n.*\n.*\n.*\n\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*?Gewitterwahrscheinlichkeit:\s\d{1,3}%">\n(.*?)</
Wind:
"forecast-day-0"\n.*\n.*\n\n.*\n.*\n\n.*\n.*\n.*\n.*\n.*\n.*\n\n.*\n.*\n.*\n\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*?"ff\s\s"\s>\n(.*?)</


Die 0 (Null) bei "forecast-day-0" kann beliebig von 0-8 ausgetauscht werden um die Vorhersage für die kommenden 8 Tage zu erhalten.

Was wird noch benötigt?

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

JoeALLb

Zitat von: DeeSPe am 26 Februar 2019, 10:33:44

Was wird noch benötigt?

Wenn Du schon so fragst, dann:  ;)



  • 7 Tages Vorherschau (minMax Temp zur Heizungssteuerung/Pufferaufladung, Sonnenscheindauer, gemeldete Regenmenge)
  • Text Wetter Heute
  • Text Wetter morgen
  • Name der Icons
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

DeeSPe

#5
Zitat von: JoeALLb am 26 Februar 2019, 10:39:04
Wenn Du schon so fragst, dann:  ;)



  • 7 Tages Vorherschau (minMax Temp zur Heizungssteuerung/Pufferaufladung, Sonnenscheindauer, gemeldete Regenmenge)
  • Text Wetter Heute
  • Text Wetter morgen
  • Name der Icons

Hab die Wettertexte für heute, morgen und übermorgen ergänzt.
Die anderen Sachen gucke ich mir an.

Gruß
Dan

EDIT: Meinst Du die 9-Tage Wettervorhersage? 7 Tage finde ich nicht.
Die richtige Prognose steht leider auf einer eigenen Webseite (https://www.bergfex.at/sommer/innsbruck/wetter/prognose/).
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

JoeALLb

Zitat von: DeeSPe am 26 Februar 2019, 10:46:22
EDIT: Meinst Du die 9-Tage Wettervorhersage? 7 Tage finde ich nicht.

Korrekt, wobei ich in der Visu und für die Heizungsoptimierung nur 7 Tage nutze....

Zitat von: DeeSPe am 26 Februar 2019, 10:46:22
Die richtige Prognose steht leider auf einer eigenen Webseite (https://www.bergfex.at/sommer/innsbruck/wetter/prognose/).
Puh, noch gar nicht aufgefallen (da ich am Handy deren App nutze)... Aber der Text scheint der selbe zu sein...
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

DeeSPe

Habe noch Ort und Höhe ergänzt.

Wenn Du wirklich die Prognosedaten brauchst, dann geht das (denke ich) nur über ein eigenes HTTPMOD Device auf die URL https://www.bergfex.at/sommer/innsbruck/wetter/prognose/ mit dementsprechenden eigenen Regexen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Beta-User

Wow...

Dann schaue ich bei Gelegenheit mal, wie ich das in template-Form gegossen bekomme :) .

Zitat von: DeeSPe am 26 Februar 2019, 11:01:39
Wenn Du wirklich die Prognosedaten brauchst, dann geht das (denke ich) nur über ein eigenes HTTPMOD Device auf die URL https://www.bergfex.at/sommer/innsbruck/wetter/prognose/ mit dementsprechenden eigenen Regexen.
Hmm, irgendwo hatte ich mal einen HTTPMOD gesehen, der mehrere URL-Angaben jeweils für einen eigenen Reading-Bereich enthalten hatte. Allerdings war das einer, der aktiv aufgerufen wurde.
Leider habe ich grade keinen link, aber an sich würde ich wetten, dass man das in einen HTTPMOD packen kann.

(Wenn das so ist: Wieder ein Beispiel dafür, wei mächtig das Tool ist und wie wenig verbreitet das Wissen, wie "die Macht" genutzt werden kann...)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

JoeALLb

Zitat von: Beta-User am 26 Februar 2019, 11:10:23
Hmm, irgendwo hatte ich mal einen HTTPMOD gesehen, der mehrere URL-Angaben jeweils für einen eigenen Reading-Bereich enthalten hatte. Allerdings war das einer, der aktiv aufgerufen wurde.
Leider habe ich grade keinen link, aber an sich würde ich wetten, dass man das in einen HTTPMOD packen kann.
Ja, das geht... das könnt ich eventuell beisteuern... aktiv und nciht aktiv, ist nur ein Attribut das dies unterscheidet.
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

DeeSPe

Zitat von: JoeALLb am 26 Februar 2019, 11:17:29
Ja, das geht... das könnt ich eventuell beisteuern... aktiv und nciht aktiv, ist nur ein Attribut das dies unterscheidet.

Wenn das geht wäre es ja der Burner!
Ich kenne mich mit HTTPMOD eigentlich überhaupt nicht aus, ich mag nur Regex und damit Werte "herausfischen".

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

JoeALLb

Zitat von: Beta-User am 26 Februar 2019, 11:10:23
Dann schaue ich bei Gelegenheit mal, wie ich das in template-Form gegossen bekomme :) .

Schick mir, wenn Du das hast, dann versuche ich den Rest zu ergänzen!
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Beta-User

Jungs, das gefällt mir, wie das vorangeht, wenn man die jeweiligen Kenntnisse zusammenwirft :) !

Zitat von: JoeALLb am 26 Februar 2019, 11:17:29
Ja, das geht... das könnt ich eventuell beisteuern... aktiv und nciht aktiv, ist nur ein Attribut das dies unterscheidet.
Das wäre klasse.

Bei der Gelegenheit:
Vielleicht mag dann auch jemand mit hp-Druckern unter diesem Gesichtspunkt einen Blick auf die hp-templates werfen?
Da ist es ähnlich, dass die diversen Infos (v.a. der Status und die Tonerwerte) aus unterscheidlichen Pfaden stammen und jeweils als eigener HTTPMOD abgebildet sind, aber eigentlich _ein_ HTTPMOD die bessere Lösung wäre.
(Ich habe nur keine hp's, sonst würde ich mich da "ausnahmsweise" selbst kümmern... Die sind auch erst mal so reingekommen, wie ich das "irgendwo" gefunden hatte ;D .)

Der template-Entwurf für bergfex.at kann etwas dauern, mal schauen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

JoeALLb

Anbei ein Beispiel, wie es mit 2 URLs funktioniert!
Wenn get01Poll=1, dann wird dies automatisch mit aktualisiert.
Wenn get01Poll =0, muss man ein "get wetter_bergfex 9-TagesPrognose" direkt abrufen. Man ist also ziemlich flexibel!
Der Regex "get01Regex" Muss natürlich noch aufgebohrt werden und ist hier nur beispielhaft verwendet.

defmod wetter_bergfex HTTPMOD https://www.bergfex.at/sommer/innsbruck/wetter/ 1800
attr wetter_bergfex userattr get01-1Name get01-2Name get01Name get01Regex get01URL
attr wetter_bergfex get01-1Name LetzteAktualisierung
attr wetter_bergfex get01-2Name Schneefallgrenze
attr wetter_bergfex get01Name 9-TagesPrognose
attr wetter_bergfex get01Poll 1
attr wetter_bergfex get01Regex Vorhersage von [^>]*>(.*?)</\p{Any}*?group sgrenze[^\d]*(.*?)m
attr wetter_bergfex get01URL https://www.bergfex.at/sommer/innsbruck/wetter/prognose/
attr wetter_bergfex group Temperatur-Außen
attr wetter_bergfex reading01Name lesteAktualisierung
attr wetter_bergfex reading01Regex important">Heute,\s(.*?)</
attr wetter_bergfex room Wetter
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Beta-User

Hmmm, wenn ihr grade dabei seid, dann mal ein untetesteter erster template-Wurf:

name:A_02n_bergfex_at_weather
filter:TYPE=HTTPMOD
desc: Get austrian weather from bergfex.at.<br>Define a HTTPMOD device like <br>defmod wetter_bergfex HTTPMOD https://www.bergfex.at/sommer/innsbruck/wetter/ 1800 <br>Change city to your needs <br><a href="https://forum.fhem.de/index.php/topic,97694.msg911761.html#msg911761">Source: Forum</a>
par:URL_LONG;Name of the respective weather station as written in the last part of the URL;{ InternalVal("DEVICE","url","") =~ m,(https://www.bergfex.at/sommer/[^/]+[/]wetter/), ? $1 : undef }
attr DEVICE userattr get01-1Name get01-2Name get01Name get01Regex get01URL
attr DEVICE get01-1Name LetzteAktualisierung
attr DEVICE get01-2Name Schneefallgrenze
attr DEVICE get01Name 9-TagesPrognose
attr DEVICE get01Poll 1
attr DEVICE get01Regex Vorhersage von [^>]*>(.*?)</\p{Any}*?group sgrenze[^\d]*(.*?)m
attr DEVICE get01URL URL_LONGprognose/
attr DEVICE group Temperatur-Außen
attr DEVICE reading01Name letzteAktualisierung
attr DEVICE reading01Regex important">Heute,\s(.*?)</
attr DEVICE model A_02n_bergfex_at_weather
Da die diversen Abfragen - jedenfalls, soweit ich das verstanden habe - in der richtigen Reihenfolge kommen müssen, muß der Rest ggf. noch warten, bis ich das austesten kann - wen nicht jemand doch schneller ist ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files