Rss-Bild per Mail verschicken

Begonnen von Thorsten Pferdekaemper, 03 April 2015, 12:09:50

Vorheriges Thema - Nächstes Thema

Thorsten Pferdekaemper

Hi,
ich versuche gerade, mir selbst so eine Art tägliche Status-Mail zu schicken. Dazu würde ich mir gerne ein durch das rss-Modul generierte Bild schicken. Hier ist mein Coding dafür:

sub statusMail {
my $rcpt = "thorsten\@pferdekaemper.com";
my $subject = "Zuhause-Status";
my $text = "Batteriestatus siehe Anhang";
my $ret = "";
my $sender = "kellerassel\@pferdekaemper.com";
my $konto = "irgeneinkontoname";
my $passwrd = "irgendeinpasswort";
my $provider = "denwillichjetzthierauchnichtzeigen.com";
 
qx(wget 'http://thorsten:passwort\@192.168.178.xxx:pppp/fhem/rss/rss_batteries.png' -O /tmp/rss_batteries.png);

$ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=no -o message-charset=utf-8 -a /tmp/rss_batteries.png);
$ret =~ s,[\r\n]*,,g;    # remove CR from return-string
}

Das Senden einer Mail mit Attachment funktioniert im Prinzip. Probleme macht nur die wget-Zeile. Wenn ich das ganze ausführe, dann blockiert der wget-Prozess das komplette FHEM. Erst wenn ich den Prozess kille, dann geht's weiter.
Wenn ich das ganze direkt von der Konsole heraus mache, dann passiert das:

pi@kellerassel ~ $ wget 'http://thorsten:passwort@192.168.178.xxx:pppp/fhem/rss/rss_batteries.png' -O /tmp/rss_batteries.png
--2015-04-03 12:04:30--  http://thorsten:*password*@192.168.178.xxx:pppp/fhem/rss/rss_batteries.png
Connecting to 192.168.178.xxx:pppp... connected.
HTTP request sent, awaiting response... 401 Authorization Required
Reusing existing connection to 192.168.178.xxx:pppp.
HTTP request sent, awaiting response... 200 OK
Length: 62273 (61K) [image/png]
Saving to: `/tmp/rss_batteries.png'

100%[======================================>] 62,273      --.-K/s   in 0.009s

2015-04-03 12:04:34 (6.34 MB/s) - `/tmp/rss_batteries.png' saved [62273/62273]

pi@kellerassel ~ $

Hat dazu jemand eine Idee? Gerne auch etwas eleganteres als qx('wget....
Gruß,
   Thorsten
FUIP

Thorsten Pferdekaemper

Hi,
vielleicht bin ich damit im falschen Unterforum gelandet? Wenn ja, was wäre denn besser?
Danke&Gruß,
   Thorsten
FUIP

Thorsten Pferdekaemper

Hi,
ich hab's nicht innerhalb von FHEM hinbekommen und komplett an cron übergeben...
Gruß,
   Thorsten
FUIP

oniT

Hallo Thorsten,

dieser Punkt ist bei mir auch noch offen. Auch ich habe es bisher noch nicht hinbekommen. Ursprünglich wollte ich alles über fhem erzeugen lassen. Allerdings scheitert es bei mir am Systemauffruf. Keiner dieser Befehle funktioniert. Wie bei Dir wird fhem blockiert und man kommt über einen Neustart nicht herum.


{system("wget http://192.168.1.200:8089/fhem/rss/testrss.png -O testrss.png cp -r testrss.png /opt/fhem/svgcache/testrss.png")}

{system("wget http://192.168.1.200:8089/fhem/rss/testrss.png -O testrss.png;; cp -r testrss.png /opt/fhem/svgcache/testrss.png")}

{system("wget 'http://192.168.1.200:8089/fhem/rss/testrss.png' -O testrss.png cp -r testrss.png /opt/fhem/svgcache/testrss.png");;}


Von daher lasse ich mir die Datei ebenfalls über den Cron Dienst erzeugen


wget http://192.168.1.200:8089/fhem/rss/testrss.png -O opt/fhem/svgcache/testrss.png


und anschließend per E-Mail über fhem verschicken.

*00:15:00 {
DebianMail('xxx.xxx@t-online.de','Testplot','Plot','/opt/fhem/svgcache/dimplex.png');
}


Was daran störend ist, es ist nicht flexibel. Ich kann nicht auf Knopfdruck über fhem das Bild erzeugen und eben anschließend per E-Mail verschicken lassen. Sollte dafür jemand eine Lösung haben, wäre ich auch daran interessiert.

Gruß
Tino
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

Thorsten Pferdekaemper

Zitat von: oniT am 15 April 2015, 22:25:35Allerdings scheitert es bei mir am Systemauffruf. Keiner dieser Befehle funktioniert. Wie bei Dir wird fhem blockiert und man kommt über einen Neustart nicht herum.
Neustart war bei mir nicht nötig. Ich glaube mich zu erinnern, dass reicht, den wget-Prozess zu killen.

Zitat
Von daher lasse ich mir die Datei ebenfalls über den Cron Dienst erzeugen
und anschließend per E-Mail über fhem verschicken.
Ich dachte mir, wenn ich die Datei eh per cron erzeuge, dann kann ich das Verschicken der Mail auch gleich im selben cron-Skript erledigen.

ZitatWas daran störend ist, es ist nicht flexibel. Ich kann nicht auf Knopfdruck über fhem das Bild erzeugen und eben anschließend per E-Mail verschicken lassen. Sollte dafür jemand eine Lösung haben, wäre ich auch daran interessiert.
Tja, dazu müsste man wissen, was wirklich das Problem ist. Vielleicht ist es eine ähnliche Einschränkung wie die, dass das RSS-Modul nicht auf Dateien zurückgreifen darf, die vom FHEM-Webserver geliefert werden.
Die einzige Möglichkeit, die mir momentan dazu einfällt ist ungefähr folgendes: FHEM schreibt die Anforderung in eine Datei. Ein cron-job, der so ungefähr jede Minute läuft, sieht nach, ob eine solche Datei existiert und arbeitet sie ab. D.h. der cron-job erzeugt das Bild und schickt die Mail. Man hat dann ggf. eine Minute Verzögerung, aber bei Mails ist das nicht so wild, denke ich.
Man kann's auch schneller machen, indem ein Server-Prozess auf eine Pipe "lauert", die über FHEM geschrieben wird.

Gruß,
   Thorsten

FUIP

Otto123

Hallo Thorsten,

ob Dir das hilft, weiß ich nicht.
Aber es klingt mir so ähnlich wie Deine Aufgabe, ich habe mit FTP was hochgeladen, du willst ne Mail schicken.

Gruß Otto
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

Thorsten Pferdekaemper

Zitat von: Otto123 am 18 April 2015, 21:29:32ob Dir das hilft, weiß ich nicht.
Aber es klingt mir so ähnlich wie Deine Aufgabe, ich habe mit FTP was hochgeladen, du willst ne Mail schicken.
Hi,
ich hab mir's angeschaut. Dein Ansatz verwendet auch einen Cronjob, um das Bild von FHEM abzuholen. Genau das mache ich auch. ...und es funktioniert jetzt seit ein paar Tagen.
Gruß,
   Thorsten
FUIP

Torchwood

Hallo,

ich hatte genau das gleiche Problem und es möglicherweise (für meine Belange) lösen können- Ich habe ein shellscript genommen, dass mit wget die Datei liest und mit sendmail verschickt. Das script rufe ich dann mit dem Parameter & am Ende für eine Verarbeitung im Hintergrund auf -> script.sh& (bei mir allerdings Aufruf aus der 99_myUtils, nicht direkt aus FHEM, sollte aber eigentlich auch funktionieren.

Grüße
Torchwood

Rince

Mit dem & wird der Prozess seperat gestartet, so das fhem weiter läuft.

Interessant wäre jetzt zu wissen, wie viele wget Prozesse grade in deinem Speicher sind. Ob die irgendwann abgeschossen werden? Wenn nicht, machen sie irgendwann deinen Hauptspeicher dicht.

Mach mal auf einem Terminal
Zitatps uax
Oder
Zitattop

Wenn da viele wget auftauchen, ist die Lösung nicht gut.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

JoWiemann

#9
Hallo,

habe mal etwas ausprobiert. Anbei eine 02_RSS.pm mit einem neuen set.

set <RSS_Device> writepic jpg|png

Es gibt jetzt noch das Attribut picpath, mit dem der Pfad definiert werden kann. Ist das Attribut nicht definiert wird weiterhin modpath genommen. Und das Attribut picname, mit dem der Dateiname gesetzt werden. Ist das Attribut nicht gesetzt wird weiterhin modpath/<RSS_Device>.jpg|png genommen

Das jpg|png wird unter modpath/picname abgelegt. Wenn das RSS also MeinRSS heist und Fhem unter /opt/fhem installiert ist: /opt/fhem/MeinRSS.png, wenn png gewählt wurde.

Ist ein erster Wurf, der sicherlich noch verfeinert werden kann.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

oniT

Hallo Jörg,

es funktioniert.

Dies ist eine sehr feine Erweiterung vom RSS. Jetzt kann man auf Wunsch immer eine EMail mit dem aktuellem RSS-Bild senden ohne mit einem Cronjob arbeiten zu müssen.  :)

Gruß,
Tino
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

suppenesser

Zitat von: JoWiemann am 16 Juli 2015, 21:52:27
Hallo,

habe mal etwas ausprobiert. Anbei eine 02_RSS.pm mit einem neuen set.

set <RSS_Device> writepic jpg|png

Es gibt jetzt noch das Attribut picpath, mit dem der Pfad definiert werden kann. Ist das Attribut nicht definiert wird weiterhin modpath genommen. Und das Attribut picname, mit dem der Dateiname gesetzt werden. Ist das Attribut nicht gesetzt wird weiterhin modpath/<RSS_Device>.jpg|png genommen

Das jpg|png wird unter modpath/picname abgelegt. Wenn das RSS also MeinRSS heist und Fhem unter /opt/fhem installiert ist: /opt/fhem/MeinRSS.png, wenn png gewählt wurde.

Ist ein erster Wurf, der sicherlich noch verfeinert werden kann.

Grüße Jörg

Wird das in die UPDATES mit eingepflegt?
Raspberry PI B+ | HM-LAN-CFG | HM-LC-Sw1PBU-FM | HM-TC-WM-W-EU | DECT 200 | DHT22 | 1 Wire Temp.Sensoren

JoWiemann

Hallo,

da müsstest Du mal Boris, der Maintainer der RRS.pm, anpingen.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

betateilchen

Diese Erweiterung macht für mich eigentlich keinen Sinn. Das Versenden eines von fhem bereitgestellten Bildes sollte immer per shellscript gelöst werden. Einer der großen Vorteile des RSS Moduls ist ja gerade die Tatsache, dass sich ein Bild immer "on-the-fly" abrufen und weiterverarbeiten läßt.

Dazu jetzt extra eine Speicherfunktion einzubauen, halte ich für völlig überflüssig und störanfällig (Stichwort - nur eines von vielen Problemen - Rechtevergabe)

Für das Versenden von Bildern und anderen Binärdateien würde ich auf Betriebssystemebene übrigens immer mit mime-construct arbeiten. Das ist genau dafür gedacht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

oniT

Zitat von: betateilchen am 29 November 2015, 17:34:40
Diese Erweiterung macht für mich eigentlich keinen Sinn. Das Versenden eines von fhem bereitgestellten Bildes sollte immer per shellscript gelöst werden. Einer der großen Vorteile des RSS Moduls ist ja gerade die Tatsache, dass sich ein Bild immer "on-the-fly" abrufen und weiterverarbeiten läßt.

Hallo betateilchen,

sehe ich etwas anders. Es macht sehr wohl Sinn. Ich hatte es nicht lösen können aus fhem heraus den Systembefehl absetzen zu können. Fhem ist hier jedesmal abgestürzt. Hiermit kann man wann immer man möchte einfach ein Bild erzeugen und per Mail versenden. Ausserdem wird ja niemand gezwungen das Bild als PNG oder JPG abzulegen. Und "on-the-fly" funktioniert ja trotzdem noch. Von daher würde ich es ebenfalls begrüßen wenn dies offiziell mit einfließen würde.

Gruß,
Tino
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP