FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Alex76 am 23 Juli 2019, 09:09:28

Titel: [gelöst] Undefined subroutine &main::fb_mail
Beitrag von: Alex76 am 23 Juli 2019, 09:09:28
Hallo,

ich weiß man sollte im Forum zuerst suchen, da oft so eine Antwort kommt, aber aufgrund der anderen Threads bin ich leider nicht weiter gekommen und zwar habe ich oben beschriebene Fehlermeldung.

Meine FHEM Instanz läuft auf einem nacktem Debian 9 in einer Hyper-V VM.

,,Undefined subroutine &main::FB_mail"

ERROR evaluating my $TYPE='CUL_HM';my $EVTPART1='low';my $EVENT='battery: low';my $EVTPART0='battery:';my $SELF='n_batt_chk';my $NAME='HM_4CF3F5';{ if($EVENT !~ m/ok/) {
  { fb_mail('xxxxxx@xxx.xx', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};
   Log 3, "$NAME: Batteriewarnung $EVENT";
  }
}: Undefined subroutine &main::fb_mail called at (eval 462) line 2.

2019.07.23 09:01:23 3: n_batt_chk return value: Undefined subroutine &main::fb_mail called at (eval 462) line 2.


Da das Wiki teilweise fehler hat, weil man sendmail nun mal nicht sendemail (ein e zuviel) unter debian schreibt, habe ich das schon mal bei mir ausgebessert.

Der Test über die Konsole funktioniert auch.

in der 99_myUtils.pm habe ich folgende eingefügt, damit die subroutine auch gleich heißt:

# Enter you functions below _this_ line.
sub fb_mail {
        my $rcpt = shift;
        my $subject = shift;
        my $text = shift;
        my $ret = "";
        my $error;
        $ret .= qx(sendemail -f 'fhem@xxx.xx' -t 'xxxx@xxxx.xx' -u '$subject' -m '$text' -s 'xx.xx.xx.xx:587' -o tls=auto -o message-charset=utf-8);
        $ret =~ s,[\r\n]*,,g;    # remove CR from return-string
        Log 1, "sendemail returned: $ret";
}


mein Alert für die Batteriemeldung sieht nun wie folgt aus: (fhem.cfg)

define n_batt_chk notify .*:[Bb]attery:.* { if($EVENT !~ m/ok/) { \
  { fb_mail('xxx@xxxx.xx', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};; \
   Log 3, "$NAME: Batteriewarnung $EVENT";; \
  } \
}


Irgendwie komm ich da jetzt nicht mehr weiter. Vielleicht hat jemand einen guten Tipp

Nachtrag bzw. Lösung:

die @ Zeichen müssen Escaped werden: (im Wiki Fall kommen die Werte ja aus einer anderen Datei und deswegen wird's dann nicht der gleiche Fehler sein.)


Mit TLS:
$ret .= qx(sendemail -f 'fhem\@xxx.xx' -t 'xxxx\@xxxx.xx' -u '$subject' -m '$text' -s 'xx.xx.xx.xx:587' -o tls=auto -o message-charset=utf-8);

Im Falle von einem Zertifikatsfehler (zb ERROR => TLS setup failed: SSL connect attempt failed error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed) im Klartext schicken:

Klartext:
$ret .= qx(sendemail -f 'fhem\@xxx.xx' -t 'xxxx\@xxxx.xx' -u '$subject' -m '$text' -s 'xx.xx.xx.xx:25' -o tls=no -o message-charset=utf-8);
Titel: Antw:Undefined subroutine &main::FB_mail
Beitrag von: CoolTux am 23 Juli 2019, 09:13:48
Zitat von: Alex76 am 23 Juli 2019, 09:09:28
Hallo,

ich weiß man sollte im Forum zuerst suchen, da oft so eine Antwort kommt, aber aufgrund der anderen Threads bin ich leider nicht weiter gekommen und zwar habe ich oben beschriebene Fehlermeldung.

,,Undefined subroutine &main::FB_mail"

ERROR evaluating my $TYPE='CUL_HM';my $EVTPART1='low';my $EVENT='battery: low';my $EVTPART0='battery:';my $SELF='n_batt_chk';my $NAME='HM_4CF3F5';{ if($EVENT !~ m/ok/) {
  { fb_mail('xxxxxx@xxx.xx', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};
   Log 3, "$NAME: Batteriewarnung $EVENT";
  }
}: Undefined subroutine &main::fb_mail called at (eval 462) line 2.

2019.07.23 09:01:23 3: n_batt_chk return value: Undefined subroutine &main::fb_mail called at (eval 462) line 2.


Da das Wiki teilweise fehler hat, weil man sendmail nun mal nicht sendemail (ein e zuviel) unter debian schreibt, habe ich das schon mal bei mir ausgebessert.

in der 99_Utils.pm habe ich folgende eingefügt, damit die subroutine auch gleich heißt:

# Enter you functions below _this_ line.
sub fb_mail {
        my $rcpt = shift;
        my $subject = shift;
        my $text = shift;
        my $ret = "";
        my $error;
        $ret .= qx(sendmail -f 'fhem@xxx.xx' -t 'xxxx@xxxx.xx' -u '$subject' -m '$text' -s 'xx.xx.xx.xx:587' -o tls=auto -o message-charset=utf-8);
        $ret =~ s,[\r\n]*,,g;    # remove CR from return-string
        Log 1, "sendemail returned: $ret";
}

1. Du schreibst das nicht in 99_Utils sondern sollst es in 99_myUtils schreiben. Ich denke da war das Wiki eindeutig.
2. Irgendwo rufst Du FB_mail auf aber Deine Sub heißt fb_mail


Grüße
Titel: Antw:Undefined subroutine &main::fb_mail
Beitrag von: Alex76 am 23 Juli 2019, 09:17:14
Danke für deine schnelle Antwort, ja du hast Recht, steht auch in der 99_myUtils.pm


Ich hab das inzwischen alles auf klein geändert und bekomme die Meldung weiterhin, ist wohl im Betreff noch falsch drinnen. Hab mir das auch am Anfang gedacht und es natürlich ausgebessert. Siehe Code 1. Thread.

Nur inzwischen könnte es nur an Dingen wie falsche Parameteranzahl liegen - in Java und .Net gibts sowas ja, aber in Perl?

Hier noch mal die genaue Fehlermeldung:

2019.07.23 09:14:22 1: ERROR evaluating my $TYPE='CUL_HM';my $NAME='HM_4CF3F5';my $SELF='n_batt_chk';my $EVTPART0='battery:';my $EVENT='battery: low';my $EVTPART1='low';{ if($EVENT !~ m/ok/) {
  { fb_mail('xxx@xxx.xx', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};
   Log 3, "$NAME: Batteriewarnung $EVENT";
  }
}: Undefined subroutine &main::fb_mail called at (eval 720) line 2.

2019.07.23 09:14:22 3: n_batt_chk return value: Undefined subroutine &main::fb_mail called at (eval 720) line 2.
Titel: Antw:Undefined subroutine &main::fb_mail
Beitrag von: CoolTux am 23 Juli 2019, 09:19:12
Zitat von: Alex76 am 23 Juli 2019, 09:17:14
Danke für deine schnelle Antwort, ja du hast Recht, steht auch in der 99_myUtils.pm


Ich hab das inzwischen alles auf klein geändert und bekomme die Meldung weiterhin, ist wohl im Betreff noch falsch drinnen. Hab mir das auch am Anfang gedacht und es natürlich ausgebessert. Siehe Code 1. Thread.

Nur inzwischen könnte es nur an Dingen wie falsche Parameteranzahl liegen - in Java und .Net gibts sowas ja, aber in Perl?

Hast Du nach der Änderung auch die Moduldatei neu geladen oder FHEM neu gestartet?
Titel: Antw:Undefined subroutine &main::fb_mail
Beitrag von: Alex76 am 23 Juli 2019, 09:20:06
Ja, hab nach jeder Änderung fhem stop und fhem start gemacht und im ps -aux geschaut, dass kein Perl prozess mehr läuft.
Titel: Antw:Undefined subroutine &main::FB_mail
Beitrag von: Beta-User am 23 Juli 2019, 09:25:03
Ergänzend vielleicht vorab mal lesen:
https://tty1.net/smart-questions_de.html#dontclaimbug

Zitat von: Alex76 am 23 Juli 2019, 09:09:28
Da das Wiki teilweise fehler hat, weil man sendmail nun mal nicht sendemail (ein e zuviel) unter debian schreibt, habe ich das schon mal bei mir ausgebessert.
https://packages.debian.org/de/buster/sendemail

Ich kann im Moment nicht erkennen, dass das Paket sendemail ausgemustert oder umbenannt worden wäre (Jessie und stretch kennen dasselbe Paket auch schon)...

(Wenn dem so wäre: bitte korrekte Anleitung für Buster liefern und nicht einfach so mal "rummaulen"; das verdirbt denen, die sich Mühe geben, das korrekt darzustellen eventuell die Laune >:( ).



In der Sache: Paßt die Initialisierungsroutine in der 99_myUtils.pm?
Ansonsten: Wenn du die Datei über FHEMWEB (edit files) änderst bzw. dann speichert, wird sie automatisch neu geladen. Nix Neustart usw.
Titel: Antw:Undefined subroutine &main::fb_mail
Beitrag von: Alex76 am 23 Juli 2019, 09:32:01
Ich hab hier nicht rumgemaunzt sondern nur festgestellt, dass sendmail seit Jahren der Name des sendmails unter Linux ist und mein System sendemail nicht kennt und man dies aber anscheinden nachinstallieren kann. Wobei es auch mit dem Standard Sendmail über die Console im Test läuft.

Da ich selbst keine Authentifizierung benötige, was wohl der Grund für ein anderes Paket sein wird und mir das neue Paket nicht bekannt ist, war das nur ein Hinweis auf mein Fehlerbild. Kann ja sein, dass die Doku nicht ganz aktuell ist. Aber danke für den Hinweis - wieder etwas gelernt.
Titel: Antw:Undefined subroutine &main::fb_mail
Beitrag von: CoolTux am 23 Juli 2019, 09:32:48
Ok dann machen wir es mal konkret.
Ich gehe davon aus das die Fehlermeldung noch die selbe ist wie oben? Also kann die Sub nicht finden?

Dann ein list vom Device welches die Sub aufruft. Gehe von Notify aus.
Dann noch mal die gesamte aktuelle Sub hier posten.
Das alles bitte in Code Tags damit ich mir nicht die Augen kaputt mache.

@Jörg
Magst Du den User bitte weiter unter die Arme greifen. Bin nachher im Urlaub  ;D



Grüße
Titel: Antw:Undefined subroutine &main::fb_mail
Beitrag von: Alex76 am 23 Juli 2019, 09:37:00
Kein Problem:
/opt/fhem/FHEM/99_myUtils.pm

##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

package main;

use strict;
use warnings;
use POSIX;

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

# Enter you functions below _this_ line.
sub fb_mail {
        #my $rcpt = $_[0];
        #my $subject = $_[1];
        #my $text = $_[2];
        #system("echo \"$text\" > fhem_nachricht.txt");
        #system("mailer send -i 'fhem_nachricht.txt' -s \"$subject\" -t \"$rcpt\"");
        #system("rm fhem_nachricht.txt");
        #system("echo '$text' `date` | mail -s \"$subject | cut -d'(' -f2 | cut -d')' -f1`\" $rcpt ");
        my $rcpt = shift;
        my $subject = shift;
        my $text = shift;
        ´#my $attach = shift;
        my $ret = "";
        my $error;
        $ret .= qx(sendmail -f 'fhem@xxxx.xx' -t 'xxxx@xxx.xx' -u '$subject' -m '$text' -s 'xx.xx.xx.xx:587' -o tls=auto -o message-charset=utf-8);
        $ret =~ s,[\r\n]*,,g;    # remove CR from return-string
        Log 1, "sendemail returned: $ret";
}


Dann noch das notify aus der fhem.cfg

define SVG_FileLog_BewegungsmelderEingang_3 SVG FileLog_BewegungsmelderEingang:SVG_FileLog_BewegungsmelderEingang_3:CURRENT
setuuid SVG_FileLog_BewegungsmelderEingang_3 5cc36bf3-f33f-7f88-1d27-ce67fe1ebb9221ef
attr SVG_FileLog_BewegungsmelderEingang_3 room Garten,Terasse

define n_batt_chk notify .*:[Bb]attery:.* { if($EVENT !~ m/ok/) { \
  { fb_mail('xxxx@xxxx.xxx', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};; \
   Log 3, "$NAME: Batteriewarnung $EVENT";; \
  } \
}
setuuid n_batt_chk 5cc36bf3-f33f-7f88-2ac4-f5d39e4d345f690a
Titel: Antw:Undefined subroutine &main::fb_mail
Beitrag von: CoolTux am 23 Juli 2019, 09:38:52
Du hast entweder nicht die ganze myUtils gepostet oder es fehlt in der Tat am Ende der gesamten Datei ein 1;
Titel: Antw:Undefined subroutine &main::fb_mail
Beitrag von: Alex76 am 23 Juli 2019, 09:41:32
Stimmt, das ist bei allen anderen da, hab das nun hinzu gefügt, aber gleiche Fehlermeldung nach dem Neustart von FHEM.

hab auf das eine ' beim kommentar entfernt, dass dort sicher nicht hin gehört, nun sieht die Datei wie folgt aus:

##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

package main;

use strict;
use warnings;
use POSIX;

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

# Enter you functions below _this_ line.
sub fb_mail {
        #my $rcpt = $_[0];
        #my $subject = $_[1];
        #my $text = $_[2];
        #system("echo \"$text\" > fhem_nachricht.txt");
        #system("mailer send -i 'fhem_nachricht.txt' -s \"$subject\" -t \"$rcpt\"");
        #system("rm fhem_nachricht.txt");
        #system("echo '$text' `date` | mail -s \"$subject | cut -d'(' -f2 | cut -d')' -f1`\" $rcpt ");
        my $rcpt = shift;
        my $subject = shift;
        my $text = shift;
        #my $attach = shift;
        my $ret = "";
        my $error;
        $ret .= qx(sendmail -f 'fhem@xx.xx' -t 'xxxx@xxxx.xx' -u '$subject' -m '$text' -s 'xx.xx.xx.xx:587' -o tls=auto -o message-charset=utf-8);
        $ret =~ s,[\r\n]*,,g;    # remove CR from return-string
        Log 1, "sendemail returned: $ret";
}

1;
Titel: Antw:Undefined subroutine &main::fb_mail
Beitrag von: Alex76 am 23 Juli 2019, 09:48:33
gerade eben bin ich auf den Fehler drauf gekommen und zwar:

$ret .= qx(sendmail -f 'fhem@xx.xx' -t 'xxxx@xxxx.xx' -u '$subject' -m '$text' -s 'xx.xx.xx.xx:587' -o tls=auto -o message-charset=utf-8);

ist der Fehler, schreibt man die E-Mail dort direkt rein muss man sich um das @ kümmern und das Escapen

$ret .= qx(sendmail -f 'fhem\@xx.xx' -t 'xxxx\@xxxx.xx' -u '$subject' -m '$text' -s 'xx.xx.xx.xx:587' -o tls=auto -o message-charset=utf-8);

Das war echt ein dumme Fehler und komisch, dass man das in keinem Log findet.
Titel: Antw:Undefined subroutine &main::fb_mail
Beitrag von: CoolTux am 23 Juli 2019, 09:51:06
Mach bitte in der FHEMWEB Kommandozeile ein
reload 99_myUtils

Und dann schaue in das FHEM Log in es Fehler gibt. Wenn nicht noch mal die sub aufrufen, kann man auch mit über die FHEMWEB Kommandozeile machen, und die Fehlermeldung hier posten.[/s]

Dann geht es nun also?
Und ich bezweifel das deswegen die selbe Fehlermeldung wie oben gekommen ist.
Titel: Antw:Undefined subroutine &main::fb_mail
Beitrag von: Otto123 am 23 Juli 2019, 10:10:36
Zitat von: Alex76 am 23 Juli 2019, 09:09:28

Da das Wiki teilweise fehler hat, weil man sendmail nun mal nicht sendemail (ein e zuviel) unter debian schreibt, habe ich das schon mal bei mir ausgebessert.
Das ist schlicht Unsinn. Es gibt sendmail und es gibt sendemail (sendEmail) und im Wiki Artikel https://wiki.fhem.de/wiki/E-Mail_senden geht es ausschließlich um sendemail!

BTW keines meiner debian Systeme kennt sendmail. Muss man also genauso nachinstallieren.
sendmail ist mWn ein kompletter Mailserver.
sendemail ist ein Mailclient und damit aus meiner Sicht geeigneter für die Aufgabe: Ich will mal eine Mail senden.  ;)

Gruß Otto
Titel: Antw:Undefined subroutine &main::fb_mail
Beitrag von: JoWiemann am 23 Juli 2019, 10:34:33
Hm,

ich frage mich, warum du fb_mail genommen hast. fb steht für FritzBox und wurde für Fhem, das auf einer Fritte läuft entwickelt.

Besser wäre DebianMail, siehe auch Wiki: https://wiki.fhem.de/wiki/E-Mail_senden, gewesen.

Grüße Jörg
Titel: Antw:Undefined subroutine &main::fb_mail
Beitrag von: Alex76 am 23 Juli 2019, 11:08:28
Im prinzip hab ich ja eine Abwandlung des Wiki Beitrags genommen nur kannte ich sendemail nicht und hab es für einen Tippfehler gehalten. Das lag an meiner Unwissenheit, wie schon oben geschrieben.

Der Name der Funktion hat sich dadurch ergeben, dass in allen Beispielen fb_mail drinnen steht und somit (aus faulheit) hab ich die Funktion einfach umgeschrieben und sendemail gegen sendmail getauscht. Da ich eh keine Authentifizierung beim Mailsenden aus dem eigenen LAN benötige.

Aber danke für die Hilfe - nun läuft es und ich versuche immer wenn Zeit ist wieder ein paar Fehler im fhem.log raus zu bekommen, da FHEM schon recht langsam läuft bei mir. Wenn nur nicht immer das Problem der Zeit wäre....
Titel: Antw:Undefined subroutine &main::fb_mail
Beitrag von: Beta-User am 23 Juli 2019, 11:18:27
Zitat von: Alex76 am 23 Juli 2019, 11:08:28
Aber danke für die Hilfe - nun läuft es und ich versuche immer wenn Zeit ist wieder ein paar Fehler im fhem.log raus zu bekommen, da FHEM schon recht langsam läuft bei mir. Wenn nur nicht immer das Problem der Zeit wäre....
Gerne geschehen. Dann nimm' dir bitte jetzt die Zeit und markiere den Thread als "gelöst"...

Eine weitere Anmerkung noch: Die meiste Zeit sparst du, wenn du die Anleitungen nicht allzu frei interpretierst. Hier scheinst du nämlich versehentlich einen vollwertigen Mailserver installiert zu haben, statt eines leichtgewichtigen Clients.
Ein paar solche Aktionen, und die Performance eines Pi ist entsprechend... Ggf. gilt erst mal: weniger ist mehr.

Und die Attitüde, erst mal anderen Fehlern zu unterstellen, ist nicht eben förderlich für die Hilfsbereitschaft anderer :P . Deine Kommentare kamen (bis vielleicht auf den letzten) nicht eben so rüber, als wäre da der Gedanke "Danke für den Hinweis, dass ich da was wichtiges übersehen habe".

Just my2ct...
Titel: Antw:[gelöst] Undefined subroutine &main::fb_mail
Beitrag von: Alex76 am 23 Juli 2019, 11:24:03
Dann war das wohl Lost in Translation ;)
Auch wenn wir die gleiche Sprache sprechen - hab auch nur die Fehler gesucht und hab nur alles beschrieben was mir als fhem Anfänger aufgefallen ist.

Aber wie es immer in der IT ist, man kann nicht alles kennen.

Hab im ersten Post nun auch die Lösung dazu geschrieben, damit es vielleicht jemand anderen auch weiter hilft.
Titel: Antw:Undefined subroutine &main::fb_mail
Beitrag von: Otto123 am 23 Juli 2019, 12:17:54
Zitat von: Alex76 am 23 Juli 2019, 11:08:28
Da ich eh keine Authentifizierung beim Mailsenden aus dem eigenen LAN benötige.
Du meinst damit, dass Du sendmail als Mailserver im LAN betreibst der dann keine Verbindung zur Außenwelt hat?  :o
Titel: Antw:[gelöst] Undefined subroutine &main::fb_mail
Beitrag von: Alex76 am 23 Juli 2019, 12:24:27
Nö, ich hab Sendmail drauf und der macht eine smtp Verbindung zur Firewall.

Somit kann auch das Linux selbst Nachrichten verschicken, wobei natürlich sendemail (jetzt nachdem ichs mir angesehen hab) auch eine feine Sache ist.
Titel: Antw:[gelöst] Undefined subroutine &main::fb_mail
Beitrag von: Beta-User am 23 Juli 2019, 12:25:46
Zitat von: Alex76 am 23 Juli 2019, 11:24:03
Hab im ersten Post nun auch die Lösung dazu geschrieben, damit es vielleicht jemand anderen auch weiter hilft.

Das ist zwar vom Ansatz her löblich, aber wie wir (Otto und ich) schon angemerkt hatten: Du machst was ganz anderes, und das ist in der Regel nicht der zu empfehlende Weg. Das "könntest du eventuell noch klarer zum Ausdruck bringen".

(Ich hoffe, dieses Mal ist auch in deiner Sprache hinreichend verständlich, um was es eigentlich geht...: Du hast da was vermurkst, und solltest dies keinesfalls anderen, die genauso oberflächlich lesen als "Lösung" präsentieren!)
Titel: Antw:[gelöst] Undefined subroutine &main::fb_mail
Beitrag von: Alex76 am 23 Juli 2019, 12:28:38
Zitat von: Beta-User am 23 Juli 2019, 12:25:46
Das ist zwar vom Ansatz her löblich, aber wie wir (Otto und ich) schon angemerkt hatten: Du machst was ganz anderes, und das ist in der Regel nicht der zu empfehlende Weg. Das "könntest du eventuell noch klarer zum Ausdruck bringen".

(Ich hoffe, dieses Mal ist auch in deiner Sprache hinreichend verständlich, um was es eigentlich geht...: Du hast da was vermurkst, und solltest dies keinesfalls anderen, die genauso oberflächlich lesen als "Lösung" präsentieren!)

Dann lies bitte meine Lösung - du wolltest es ja als [gelöst] markiert haben.
Titel: Antw:[gelöst] Undefined subroutine &main::fb_mail
Beitrag von: Beta-User am 23 Juli 2019, 12:34:37
 :)
OK, da steht jetzt sendemail.

Dann verstehe ich nur nicht, warum du um 12:24 Uhr noch was von sendmail schreibst, das hat mich zugegebenermaßen davon abgelenkt, wie das da im ersten Beitrag geändert wurde... Nix für ungut, und ggf. wirfst du zugunsten der Performance und zur Vermeidung eventueller Sicherheitsprobleme auch sendmail wieder von dem Pi (wenn es da überhaupt drauf ist, und nicht doch irgendwo eine absichtliche sendmail-Installation samt entsprechender Absicherung vorhanden sein sollte).
Titel: Antw:[gelöst] Undefined subroutine &main::fb_mail
Beitrag von: Alex76 am 23 Juli 2019, 12:37:16
Das ganze läuft in einer Hyper-V VM, die nichts anders als FHEM macht, somit ist das von der Performance kein Thema (Zumindest seitens Linux) und für diesen zweck hängt das alles in einem eigenen VLAN. Somit passt das schon und Senden dürfen die IPs sowieso nur zu meinem richtigen, internen Mailserver. Mir war einfach sendemail kein Begriff.

Das Einzige was performance mässig etwas bremst ist die syncrone Abarbeitung der Abfragen, das wäre asyncron (zumindest sieht es so im Log aus) etwas schöner. Wenn zb mein Bose System aus ist und keinen Strom hat, hängt bei der Abfrage immer fhem und da merkt man dann die Gedenksekunden bis zum Timeout. Aber vielleicht ist das nur Zufall und hat damit auch nichts zu tun.
Titel: Antw:[gelöst] Undefined subroutine &main::fb_mail
Beitrag von: Otto123 am 23 Juli 2019, 12:43:25
Zitat von: Alex76 am 23 Juli 2019, 12:24:27
Nö, ich hab Sendmail drauf und der macht eine smtp Verbindung zur Firewall.
Ok. Ich weiß nicht ob es relevante Last erzeugt, ein Zusatz Aufwand ist der Server allemal. Und bei einer Fehlersuche macht das Gehopse der Mails auch keinen Spass. ;) Aber ich bin da mit meiner Vorsicht oft allein :)
Du sagst ja es läuft langsam.
Ich würde gerade auch auf Systemen die auf SD Card laufen alles vermeiden was nicht gebraucht wird und ständig irgendwas schreibt. Vielleicht ist das ein Grund, warum bei mir noch nie eine defekt war.
Ok ist bei Dir kein Thema :)
Titel: Antw:[gelöst] Undefined subroutine &main::fb_mail
Beitrag von: CoolTux am 23 Juli 2019, 14:01:01
Sendmail also der tatsächliche MTA Sendmail ist ein riesen Teil und nicht mal eben so hinkonfiguriert. Also wenn Du Dich nicht schon ein halbes Jahr damit beschäftigt hast und Du wirklich den Anno 1990er Sendmail MTA verwendest dann wird er wohl nicht gehen.

Wenn doch. Meine Hochachtung
Titel: Antw:[gelöst] Undefined subroutine &main::fb_mail
Beitrag von: Alex76 am 23 Juli 2019, 14:08:01
Im prinzip ist das nicht so schwer, man muss dafür, dass er alles über einen externen Smarthost schickt nur in der /etc/mail/sendmail.mc den Eintrag define(`SMART_HOST',`smtp.dein-mailserver.com') setzen + make -C /etc/mail + restart von sendmail.

Damit es schön wird, könnte man die Adressen noch via Masquerading umschreiben, aber He, es ist ja nur eine kleine fhem Instanz und der Absender ist egal, kann ruhig fhem@fhem.xxxx.xx oder root@fhem.xxxx.xx heißen. ;)

Er hats ja nur an meine Firewall zugestellt und die wiederum an den Server im Server LAN. Empfangen muss das Ding ja nichts.
Titel: Antw:[gelöst] Undefined subroutine &main::fb_mail
Beitrag von: JoWiemann am 23 Juli 2019, 14:28:36
Mittlerweile bin ich mehr als verwirrt, vor allem die Anpassungen im ersten Post.

- Der Threadtitel hilft keinem weiter, da hier auf fb_mail referiert wird
- die Zeile: $ret .= qx(sendemail -f 'fhem@xxx.xx' -t 'xxxx@xxxx.xx' -u '$subject' -m '$text' -s 'xx.xx.xx.xx:25' -o tls=no -o message-charset=utf-8); finde ich im Wiki nicht
- es wird eine im Wiki beschriebene, bei vielen funktionierende sub, einfach umbenannt
- es ist nicht erkenntlich in welchem Environment Fhem läuft
- "Undefined subroutine &main::FB_mail" deutet darauf hin, dass das Modul 99_Utils.pm (oder auch 99_myUtils.pm) nicht geladen werden konnte. Wieso ändert sich das durch escapen
- es wird weiterhin 99_Utils.pm referiert. Die ist aber sakrosant

Meine Bitte:
Ersten Post wirklich einmal sinnhaft überarbeiten.

Grüße Jörg
Titel: Antw:[gelöst] Undefined subroutine &main::fb_mail
Beitrag von: Alex76 am 23 Juli 2019, 14:37:25
Zitat von: JoWiemann am 23 Juli 2019, 14:28:36
Mittlerweile bin ich mehr als verwirrt, vor allem die Anpassungen im ersten Post.

- Der Threadtitel hilft keinem weiter, da hier auf fb_mail referiert wird
- die Zeile: $ret .= qx(sendemail -f 'fhem@xxx.xx' -t 'xxxx@xxxx.xx' -u '$subject' -m '$text' -s 'xx.xx.xx.xx:25' -o tls=no -o message-charset=utf-8); finde ich im Wiki nicht
- es wird eine im Wiki beschriebene, bei vielen funktionierende sub, einfach umbenannt
- es ist nicht erkenntlich in welchem Environment Fhem läuft
- "Undefined subroutine &main::FB_mail" deutet darauf hin, dass das Modul 99_Utils.pm (oder auch 99_myUtils.pm) nicht geladen werden konnte. Wieso ändert sich das durch escapen
- es wird weiterhin 99_Utils.pm referiert. Die ist aber sakrosant

Meine Bitte:
Ersten Post wirklich einmal sinnhaft überarbeiten.

Grüße Jörg

- Der Threadtitel hilft keinem weiter, da hier auf fb_mail referiert wird
   stimmt, ich hab die fb_mail genommen, da in den meisten Codebeispielen auf diese referenziert wird und kaum jemand auf eine andere Klasse bei den notify rücksicht nimmt in den Threads. Warum auch immer.
- die Zeile: $ret .= qx(sendemail -f 'fhem@xxx.xx' -t 'xxxx@xxxx.xx' -u '$subject' -m '$text' -s 'xx.xx.xx.xx:25' -o tls=no -o message-charset=utf-8); finde ich im Wiki nicht
   Stimmt, da im Wiki davon ausgegangen wird, dass Du immer einen User + Passwort brauchst, was bei einem Smarthost vom Provider vielleicht nicht so ist.
- es wird eine im Wiki beschriebene, bei vielen funktionierende sub, einfach umbenannt
   siehe Antwort 1
- es ist nicht erkenntlich in welchem Environment Fhem läuft
   Da hast Du recht, schreib ich hinzu.
- "Undefined subroutine &main::FB_mail" deutet darauf hin, dass das Modul 99_Utils.pm (oder auch 99_myUtils.pm) nicht geladen werden konnte. Wieso ändert sich das durch escapen
   Das kann ich Dir inzwischen sagen, da FHEM eigentlich Perl ist und bei Sonderzeichen die es im Code nicht richtig lesen kann diese Datei mit einem Fehler einfach nicht mit einbindet. Warum ich das im Log selbst nicht gefunden habe weiß ich auch nicht, aber es ist nachvollziehbar ohne escapen so, dass er dieses File komplett ignoriert. Antwort dazu: https://perlmaven.com/quoted-interpolated-and-escaped-strings-in-perl
- es wird weiterhin 99_Utils.pm referiert. Die ist aber sakrosant
   Such ich in meinen Beiträgen und bessere es auf myUtils aus.
Titel: Antw:[gelöst] Undefined subroutine &main::fb_mail
Beitrag von: Beta-User am 23 Juli 2019, 15:13:54
Mal ernsthaft:

diese ganzen nachträglichen Änderungen bringen uns nicht weiter, sondern der Thread wird schlicht unleserlich/unverständlich.

(Und das hat auch nichts mit [gelöst] zu tun, das ist "nur" ein Hinweis an eventuelle Helfer, dass sie sich mit der Sache nicht weiter befassen brauchen).

Wenn also überhaupt: Bitte einfach im ersten Post klarstellen, dass diverse Mißverständnisse vorliegen und man diesen Thread ansonsten am besten überhaupt nicht mehr liest. (Oder habe ich irgendeinen Aspekt übersehen, der anderen ggf. über das hinaus, was sowieso (bei richtigem Lesen) im wiki steht, irgendwie weiterhelfen würde? Ich kann nur Verwirrung erkennen...)
Titel: Antw:[gelöst] Undefined subroutine &main::fb_mail
Beitrag von: Alex76 am 23 Juli 2019, 15:16:44
d.h. Das Wiki ist die einzig richtige Quelle und alle anderen Lösungswege sind falsch?

Ich gehe schon davon aus, dass andere auch ihre eigene Mailkonfiguration haben und vielleicht auf die gleichen Missverständnisse stoßen wie ich. Aber es steht Dir frei es umzuschreiben.
Titel: Antw:[gelöst] Undefined subroutine &main::fb_mail
Beitrag von: Beta-User am 23 Juli 2019, 15:48:35
Nein, es gibt (fast) immer mehrere (im Prinzip gleich gute) Lösungswege, das ist typisch für FHEM.

Aber das Wiki ist nicht unbedingt dafür gemacht, Sonderfälle (wie das Betreiben eines eigenen Mailservers) zu behandeln. Das kannst du gerne hier im Rahmen des Threads tun (ob der Titel dann paßt, ist eine andere Frage). Und m.E. ist das Wiki "gut", weil es einen Weg aufzeigt, wie man das "ohne" hinbekommt.
Wer "mit" will, kann sich in der Regel selber helfen (und kommt auch mit kryptischen Fehlermeldungen klar).

Was mir hier nicht gefällt, ist umfangreiches nachträgliches Rumeditieren "all over the place", weil dann garantiert nie mehr jemand in der Lage sein wird, irgendwas aus diesem Thread zu lernen.



Was den Artikel im Wiki angeht, sind mir auch noch ein paar Punkte aufgefallen (große "E"...), die vermutlich nicht up to date sind; es ist aber eine recht gute Maßgabe der Selbstbeschränkung, nur Verbesserungen aufzunehmen, die man auch "kennt" (oder wenigstens sicher ist, dass es funktioniert). Von daher würde ich im Nachgang zu dieser Diskussion und dem
Zitat von: Alex76 am 23 Juli 2019, 15:16:44
Ich gehe schon davon aus, dass andere auch ihre eigene Mailkonfiguration haben
vielleicht darüber nachdenken, da eine Klarstellung reinzumachen, dass das mit "sendemail" lediglich dazu dient, die Installation eines eigenen Servers obsolet zu machen.
Aber: der Artikel ist eben eine Sammlung diverser Tools, von daher ist eine "Klammer" vorneweg uU. sachlich nicht richtig, sondern das paßt nur auf die Umgebungen, die auch send[eE]mail verwenden...

Jedenfalls bist du seit Äonen der erste, der über den Punkt stolpert und so (Verzeihung) unqualifiziert rumgemault hat.
Wahrscheinlich halten sich die meisten erst mal mit der Lektüre der manpage/Doku zum Paket auf (ganz wie es sich gehört :-* ). MAn daher: lowest prio...
Titel: Antw:[gelöst] Undefined subroutine &main::fb_mail
Beitrag von: Alex76 am 23 Juli 2019, 15:56:48
Zitat von: Beta-User am 23 Juli 2019, 15:48:35
Jedenfalls bist du seit Äonen der erste, der über den Punkt stolpert und so (Verzeihung) unqualifiziert rumgemault hat.

Bis auf diesen Satz, kann ich alles so stehen lassen - ich hab um Hilfe ersucht und dazu meine Beobachtungen geschrieben, die ja immer Subjektiv sind. Der eine meint es ist rummaulen (das ist kurz bevor sich andere in die Fresse hauen auf gut Wienerisch) und das andere ist etwas in frage zu stellen und zu hoffen, dass es keiner in den falschen Hals bekommt bzw. sehe oft 4 Augen mehr als zwei. Deswegen steht es ja auch unter ,,Anfängerfragen"

Da ich vor 20 Jahren zuletzt etwas in Perl programmiert habe, bin ich nicht mehr ganz so Fit damit und bin über den einen dummen Stolperstein geflogen, der mich dann wohl beim genaueren durchschauen über andere Dinge hat stolpern lassen. - Es lebe der Dominoeffekt.

Aber wieso soll man sich da eigentlich rechtfertigen - haben wir beide nicht besseres mit unserer Zeit anzufangen?

In diesem Sinne - take it easy ;)
Titel: Antw:[gelöst] Undefined subroutine &main::fb_mail
Beitrag von: Beta-User am 23 Juli 2019, 16:15:54
 :) Bin schon wieder ganz entspannt...

Aber der sachlichen Klarstellung halber: Du hattest deutlichst geschrieben, im Wiki sei ein Fehler, weil da ein "e" drinne sei, was angeblich nicht reingehört. Die Rede war von einem Schreibfehler (obwohl der "Schreibfehler" mehrfach und ausdrücklich in neuer und alter Variante auftaucht, und sogar eine "Erklärbox" dazu existiert => you should have been warned...). Das ist Kritik auf behauptetem Expertenlevel, egal, in wlchem Forumsbeereich "versteckt" ;D .
Das haben zumindest Otto und ich (die die letzte Überarbeitung des fraglichen Abschnitts zu verantworten haben ;D ) nicht wirklich als "hinterfragen" verstanden, sondern eher in dem von dir geschilderten Sinne "wienerisch" :P .

Geholfen haben wir btw. trotzdem (bzw. wenigstens zur Erhellung beigetragen), wenn auch vielleicht etwas weniger "F" im FHEM-Sinne als sonst ;) . Das mag dich auch etwas "aus dem Konzept" gebracht haben ;) .

Also lassen wird das jetzt auf sich beruhen...