Grafik aus Website parsen und lokal speichern

Begonnen von Kandy, 26 Februar 2017, 16:17:27

Vorheriges Thema - Nächstes Thema

Kandy

Hallo an die Community,
ich bin ein noch recht neuer FHEM Nutzer. Seht es mir deshalb nach wenn ich vielleicht hier im falschen Bereich bin oder meine Angaben zu ungenau sind.
Mein Wunsch ist es Grafiken von einer Internetseite
1. zu parsen
2. im Verzeichnis  /www/images/ abzulegen (Die Datei sollte unter dem selben Namen immer wieder überschrieben werden)
3. mit Telegram zu versenden

3. klappt schon ganz gut, allerdings schaffe ich es nicht mit HTTPMOD 1. und 2. zu realisieren
Hier noch Internetseite auf die ich es abgesehen haben und die png Grafik
http://wetterstationen.meteomedia.de/?map=Baden-Wuerttemberg&station=099320
http://wetterstationen.meteomedia.de/messnetz/wettergrafik/099320.png

Vielen Dank im Vorraus,
Andreas

betateilchen

Zitat von: Kandy am 26 Februar 2017, 16:17:27
3. klappt schon ganz gut, allerdings schaffe ich es nicht mit HTTPMOD 1. und 2. zu realisieren

Das schaffe ich sogar komplett ohne HTTPMOD. Gib mal in die FHEM Befehlszeile im Frontend ein:


{ qx(wget http://wetterstationen.meteomedia.de/messnetz/wettergrafik/099320.png -O ./www/images/wetter.png) }


und schon liegt die Datei dort, wo Du sie haben möchtest.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Kandy

Hallo betateilchen,
vielen Dank für die schnelle Antwort.
Tut genau was es soll.  :D Ich würde noch gerne verstehen was genau dein Befehl macht um in Zukunft ähnliche Problemstellungen selber zu lösen.
Gibt es hierzu eine Dokumentation oder Command Ref?
Vielen Dank,
Andreas

betateilchen

Wenn man schon eine URL zum Objekt der Begierde kennt, muss man nicht mehr mit HTTPMOD rumhampeln. Stattdessen wird einfach ein Linux Befehl auf Betriebssystemebene ausgeführt.

qx() fällt unter "Perl Grundlagen",
wget fällt unter "Linux Grundlagen".

Beides ist komplett ausserhalb von FHEM angesiedelt und deshalb auch nicht in der commandref (die ist FHEM spezifisch) aufgeführt.

(Für die Besserwisser: Ja ich weiß, dass man das auch mit FHEM Bordmitteln machen kann, dann sogar non-blocking, aber ich wollte eine möglichst simple Lösung aufzeigen)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

hartenthaler

fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

Atouk

#5
Zusätzlich würd ich folgende Parameter bei wget vorschlagen:

wget --no-cookies --no-cache --timestamping http://wetterstationen.meteomedia.de/...

Nach Relevanz:
timestamping: Das Bild wird a) mit Zeitstempel vom Server lokal gespeichert und b) beim nächsten wget erstmal verglichen, ob tatsächlich eine neue vorhanden ist. Nur dann wird heruntergeladen (wird i.d.R. bei meteomedia in meinem Fall stündlich, ca. 5 min. nach voller Stunde, aktualisiert - hängt aber auch manchmal für ein paar Stunden), ansonsten bleibt die lokale (identische) Kopie unverändert.
no-cache: Sicherstellen, dass die neuste Version direkt vom Erzeuger geholt wird
no-cookies: Nur so 'ne Manie von mir ;-)