FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Thorsten Pferdekaemper am 03 April 2015, 12:09:50

Titel: Rss-Bild per Mail verschicken
Beitrag von: Thorsten Pferdekaemper am 03 April 2015, 12:09:50
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
Titel: Antw:Rss-Bild per Mail verschicken
Beitrag von: Thorsten Pferdekaemper am 05 April 2015, 20:38:49
Hi,
vielleicht bin ich damit im falschen Unterforum gelandet? Wenn ja, was wäre denn besser?
Danke&Gruß,
   Thorsten
Titel: Antw:Rss-Bild per Mail verschicken
Beitrag von: Thorsten Pferdekaemper am 14 April 2015, 13:36:37
Hi,
ich hab's nicht innerhalb von FHEM hinbekommen und komplett an cron übergeben...
Gruß,
   Thorsten
Titel: Antw:Rss-Bild per Mail verschicken
Beitrag von: oniT am 15 April 2015, 22:25:35
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
Titel: Antw:Rss-Bild per Mail verschicken
Beitrag von: Thorsten Pferdekaemper am 16 April 2015, 10:42:46
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

Titel: Antw:Rss-Bild per Mail verschicken
Beitrag von: Otto123 am 18 April 2015, 21:29:32
Hallo Thorsten,

ob Dir das  (http://heinz-otto.blogspot.de/2014/12/digitalem-fotorahmen-als-ausgabegerat.html) 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
Titel: Antw:Rss-Bild per Mail verschicken
Beitrag von: Thorsten Pferdekaemper am 19 April 2015, 10:42:07
Zitat von: Otto123 am 18 April 2015, 21:29:32ob Dir das  (http://heinz-otto.blogspot.de/2014/12/digitalem-fotorahmen-als-ausgabegerat.html) 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
Titel: Antw:Rss-Bild per Mail verschicken
Beitrag von: Torchwood am 13 Juli 2015, 21:31:03
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
Titel: Antw:Rss-Bild per Mail verschicken
Beitrag von: Rince am 16 Juli 2015, 20:58:13
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.
Titel: Antw:Rss-Bild per Mail verschicken
Beitrag 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
Titel: Antw:Rss-Bild per Mail verschicken
Beitrag von: oniT am 17 Juli 2015, 19:28:17
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
Titel: Antw:Rss-Bild per Mail verschicken
Beitrag von: suppenesser am 29 November 2015, 12:42:23
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?
Titel: Antw:Rss-Bild per Mail verschicken
Beitrag von: JoWiemann am 29 November 2015, 14:04:31
Hallo,

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

Grüße Jörg
Titel: Antw:Rss-Bild per Mail verschicken
Beitrag 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.

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.
Titel: Antw:Rss-Bild per Mail verschicken
Beitrag von: oniT am 03 Dezember 2015, 22:02:23
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