Werte aus Datei mit HTML auslesen

Begonnen von Maxl, 09 August 2023, 19:00:28

Vorheriges Thema - Nächstes Thema

Otto123

Zitat von: betateilchen am 28 August 2023, 23:09:23Und warum immer wieder über den Umweg eines Systemaufrufs anstatt mit FHEM Bordmitteln aus den HTTPutils?
Ich gelobe Besserung - wollte aber meinen ersten Vorschlag nicht revidieren :)
Zitat von: betateilchen am 29 August 2023, 12:12:08Das notify ist doch eigentlich Unfug.
und warum diese Einschränkung - ist doch Unfug ;)
Zitat von: Maxl am 29 August 2023, 12:27:47Aber was ist der Unterschied
Mein Vorschlag verwendet set magic (mögen nicht alle) https://fhem.de/commandref_modular_DE.html#set und einen Systembefehl
betateilchens Vorschlag verwendet komplett Perl und eine FHEM Funktion.
Zitat von: Maxl am 29 August 2023, 12:27:47warum funktioniert dies nicht?
Falls wget bei Dir nicht funktioniert sollte sich ev. was im FHEM Log finden. Ich vermute in dem Fall hätte man die URL noch in ' ' oder " " setzen müssen. Ein getesteter ähnlicher Aufruf funktioniert so bei mir
{qx(wget -qO - http://v4.ident.me)} interessanterweise aber nicht mit {GetFileFromURL('http://v4.ident.me')}vielleicht ist das der Grund warum ich schneller mal wget nehme :)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

Häng mal noch ein / an

{GetFileFromURL('http://v4.ident.me/')}

Maxl

Hi,

ich hätte es hin und her probiert, will bei mir nicht mit WGET, mit oder auch ohne ' " der URL.
Sobald ich die URL mit wget mit einen ' oder " ergänze erscheint die URL als Variable.

define a3 at +*00:00:25 setreading Dummy1 solarradiation {(qx(wget -qO -http://192.168.1.23/wetter/Index.php?read=1&value=solarradiation&convert))}
define a3 at +*00:00:25 {fhem("setreading Dummy1 solarradiation ".GetFileFromURL("http://192.168.1.23/wetter/Index.php?read=1&value=solarradiation&convert"))}

einen Unterschied im LOG File erkenn ich nicht

Date: Tue, 29 Aug 2023 12:42:07 GMT

Server: Apache/2.4.56 (Raspbian)

Content-Length: 5

Connection: close

Content-Type: text/html; charset=UTF-8
2023.08.29 14:42:07.432 5: Cmd: >setreading Dummy2 monthlyrain 6.150<
2023.08.29 14:42:07.433 3: setreading Dummy2 monthlyrain 6.150 : Please define Dummy2 first
2023.08.29 14:42:07.433 3: a4: Please define Dummy2 first
2023.08.29 14:42:07.433 5: redefine at command a4 as +*00:00:20 {fhem("setreading Dummy2 monthlyrain ".GetFileFromURL("http://192.168.1.23/wetter/Index.php?read=1&value=monthlyrainin&convert"))}
2023.08.29 14:42:07.434 5: Starting notify loop for a4, 1 event(s), first is Next: 14:42:27
2023.08.29 14:42:07.434 5: createNotifyHash
2023.08.29 14:42:07.434 5: End notify loop for a4
2023.08.29 14:42:07.897 4: Connection closed for WEB_192.168.1.61_51864: EOF
2023.08.29 14:42:07.917 4: Connection accepted from WEB_192.168.1.61_51866
2023.08.29 14:42:07.917 5: GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2023-08.log HTTP/1.1

Host: 192.168.1.61:8083

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8

Accept-Language: de,en-US;q=0.7,en;q=0.3

Accept-Encoding: gzip, deflate

Connection: keep-alive

Referer: http://192.168.1.61:8083/fhem?room=Wetter

Upgrade-Insecure-Requests: 1
2023.08.29 14:42:07.918 4: WEB_192.168.1.61_51866 GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2023-08.log; BUFLEN:0
2023.08.29 14:42:08.227 5: GET /fhem/FileLog_logWrapper?XHR=1&inform=type%3Dstatus%3Bfilter%3D%3Bsince%3D1693312926.92051%3Bfmt%3DJSON&fw_id=76×tamp=1693312928228 HTTP/1.1

Host: 192.168.1.61:8083

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0

Accept: */*

Accept-Language: de,en-US;q=0.7,en;q=0.3

Accept-Encoding: gzip, deflate

Connection: keep-alive

Referer: http://192.168.1.61:8083/fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2023-08.log
2023.08.29 14:42:08.228 4: WEB_192.168.1.61_51866 GET /fhem/FileLog_logWrapper?XHR=1&inform=type%3Dstatus%3Bfilter%3D%3Bsince%3D1693312926.92051%3Bfmt%3DJSON&fw_id=76×tamp=1693312928228; BUFLEN:0
2023.08.29 14:42:17.450 5: exec at command a3
2023.08.29 14:42:17.451 5: Cmd: >setreading Dummy1 solarradiation {(qx(wget -qO -http://192.168.1.23/wetter/Index.php?read=1&value=solarradiation&convert))}<
2023.08.29 14:42:17.451 3: a3: Please define Dummy1 first
2023.08.29 14:42:17.452 5: redefine at command a3 as +*00:00:25 setreading Dummy1 solarradiation {(qx(wget -qO -http://192.168.1.23/wetter/Index.php?read=1&value=solarradiation&convert))}
2023.08.29 14:42:17.452 5: Starting notify loop for a3, 1 event(s), first is Next: 14:42:42
2023.08.29 14:42:17.452 5: createNotifyHash
2023.08.29 14:42:17.453 5: End notify loop for a3
2023.08.29 14:42:24.375 4: Connection closed for WEB_192.168.1.61_51866: EOF
2023.08.29 14:42:24.426 4: Connection accepted from WEB_192.168.1.61_51868
2023.08.29 14:42:24.426 5: GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2023-08.log HTTP/1.1

Host: 192.168.1.61:8083

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8

Accept-Language: de,en-US;q=0.7,en;q=0.3

Accept-Encoding: gzip, deflate

Connection: keep-alive

Upgrade-Insecure-Requests: 1
2023.08.29 14:42:24.427 4: WEB_192.168.1.61_51868 GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2023-08.log; BUFLEN:0

FHEM auf Raspberry mit HM, HMC und AVR Netios.

betateilchen

Zitat von: Otto123 am 29 August 2023, 13:05:35Ein getesteter ähnlicher Aufruf funktioniert so bei mir
{qx(wget -qO - http://v4.ident.me)} interessanterweise aber nicht mit {GetFileFromURL('http://v4.ident.me')}vielleicht ist das der Grund warum ich schneller mal wget nehme :)

Mach es halt richtig, dann funktioniert es auch.

"Eine URL besteht in der einfachsten Beschreibung aus drei Teilen: Protokoll (https://, ftp://), Domain- oder Server-Name (www.domain.de) und Dateipfad (/verzeichnis/datei. html). Der Dateipfad kann aus mehreren Verzeichnisebenen bestehen."

Du hast den dritten Teil (Dateipfad) weggelassen. Im einfachsten Fall reicht als Pfadangabe das root-Verzeichnis des Webserver (/), so wie von TomLee ja schon vorgeschlagen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: Maxl am 29 August 2023, 14:45:43erscheint die URL als Variable.

???

Du hast Erscheinungen?
Oh, kniet mit mir, dies seltne Glück zu preisen!
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

@betateilchen Danke für die Aufklärung mit dem Pfad :)
Zitat von: Maxl am 29 August 2023, 14:45:432023.08.29 14:42:17.451 3: a3: Please define Dummy1 first
Aber das Problem ist doch ein ganz anderes ? ::)
Zitat{(qx(wget -qO -http://192.168.1.23/wetter/Index.php?read=1&value=solarradiation&convert))}
und so wird das nix! Da fehlt mindestens ein Leerzeichen zwischen - und http
Das -O steht für Output und das - für Stdout.
So meinte ich es mit ' '
{(qx(wget -qO - 'http://192.168.1.23/wetter/Index.php?read=1&value=solarradiation&convert'))}
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Maxl

Hallo Otto,

Zitatund so wird das nix! Da fehlt mindestens ein Leerzeichen zwischen - und http
Das -O steht für Output und das - für Stdout.

habe es mit und ohne Leerzeichen, Anführungsstriche,.. probiert, es will bei mir einfach nicht :-(
Wenn Zeit ist probiere ich weiter, fürs erste reicht ja die andere Lösung.

ZitatOh, kniet mit mir, dies seltne Glück zu preisen!
Wusste gar nicht das Betateilchen so religiös ist.

Danke
FHEM auf Raspberry mit HM, HMC und AVR Netios.