Rauchmelder Problem

Begonnen von Blebbens, 06 Juni 2014, 21:41:12

Vorheriges Thema - Nächstes Thema

no_Legend

Kannst du mit der Konsole Emils versenden?
Hast du mal alternative sendmail probiert?
Docker FHEM immer aktuell,4x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
Homematic, Shelly, Tasmota, MQTT, Unifi Network usw.

marc2

Das reicht so nicht, siehe http://www.fhemwiki.de/wiki/99_myUtils_anlegen.

Wen Du also noch gar keine 99_myUtils hast musst Du die Grundstruktur anlegen. Ingesamt sieht sie dann wie folgt aus:

package main;
use strict;
use warnings;
use POSIX;
use Time::Local;
use MIME::Lite;
use File::Basename;

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

sub my_mail {
        my ($rcpt, $subject, $text, $attachment) = @_;
        my $msg = MIME::Lite->new (
                          From    => 'FHEM <fhem@meine-domain.de>',
                          To      => $rcpt,
                          Subject => $subject,
                          Type    => 'multipart/mixed'
                       );

        $MIME::Lite::AUTO_CONTENT_TYPE = 1;

        if ($attachment ne "") {
                $msg->attach(Path     => $attachment,
                             Filename => basename($attachment),
                             Disposition => 'attachment'
                );
        }

        if ($text ne "") {
                 $msg->attach(Type    =>'TEXT',
                              Data    => $text
                 );
        }

        $msg->send;
        Log 3, "Mail sent to $rcpt";
}

1;


Du solltest Dir bei Gelegenheit einmal das FHEM Einführungsdokument durchlesen: http://fhem.de/Heimautomatisierung-mit-fhem.pdf

Gruß, Marc

Blebbens

Ja, die Einsteiger-Doku muss ich noch zu Ende lesen... gern würde ich derzeit einfach nur den Mailversand bei low battery fixen...
Denn auch mit der obigen 99_myUtils.pm kommt der identische Fehler:
Battery_Check return value: Undefined subroutine &main::my_mail called at (eval 37) line 3.

Daraus schließe ich, dass die 99_myUtils.pm nun das Problem ist, in der fhem die notwendige Unterroutine nicht finden kann.

marc2


  • reload 99_myUtils.pm
  • Wo liegt die 99_myUtils.pm

Gruß, Marc

Blebbens

Habe fhem schon mit shutdown restart neu gestartet, den Raspberry ebenfalls.
Die 99_myUtils.pm liegt in /opt/fhem/FHEM.

marc2

Wir die Datei in der Weboberfläche unter "Edit Files" angezeigt ?

Blebbens


frank

wenn das deine funktion ist
use MIME::Lite;
use File::Basename;

sub my_mail {
        my ($rcpt, $subject, $text, $attachment) = @_;
        my $msg = MIME::Lite->new (
                          From    => 'FHEM <fhem@xxx-dyndns.org>',

        if ($attachment ne "") {
                $msg->attach(Path     => $attachment,
                             Filename => basename($attachment),
                             Disposition => 'attachment'
                );
        }

        if ($text ne "") {
                 $msg->attach(Type    =>'TEXT',
                              Data    => $text
                 );
        }

        $msg->send;
        Log 3, "Mail sent to $rcpt";
}

und du diese meldung bekommst
Zitat"Battery_Check return value: Undefined subroutine &main::my_mail called at (eval 5962) line 3."
warum schaust du dann nicht in zeile 3 und stellst fest, dass am ende von zeile2 eine offene klammer ohne entsprechendes gegenstück existiert? wozu gibt es eigentlich fehlermeldungen? da brauch ich nicht mal den inhalt zu verstehen.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

marc2

#68
Wohl wahr, Du hast ja fast alle Headerattribute entfernt und die Klammer am Ende gleich mit ....

Blebbens

Ne, ich habe genau den Code von marc2 oben copy&paste in 99_myUtils.pm gesetzt unter /opt/fhem/FHEM.

package main;
use strict;
use warnings;
use POSIX;
use Time::Local;
use MIME::Lite;
use File::Basename;

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

sub my_mail {
        my ($rcpt, $subject, $text, $attachment) = @_;
        my $msg = MIME::Lite->new (
                          From    => 'FHEM <fhem@meine-domain.de>',
                          To      => $rcpt,
                          Subject => $subject,
                          Type    => 'multipart/mixed'
                       );

        $MIME::Lite::AUTO_CONTENT_TYPE = 1;

        if ($attachment ne "") {
                $msg->attach(Path     => $attachment,
                             Filename => basename($attachment),
                             Disposition => 'attachment'
                );
        }

        if ($text ne "") {
                 $msg->attach(Type    =>'TEXT',
                              Data    => $text
                 );
        }

        $msg->send;
        Log 3, "Mail sent to $rcpt";
}

1;


Nach einem "reload 99_myUtils.pm" tritt dann aber unter fhem folgender Fehler auf:
Can't locate MIME/Lite.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/99_myUtils.pm line 6.
BEGIN failed--compilation aborted at ./FHEM/99_myUtils.pm line 6.


marc2

#70
Zitat von: Blebbens am 09 Juli 2014, 21:12:57
Ne, ich habe genau den Code von marc2 oben copy&paste in 99_myUtils.pm gesetzt unter /opt/fhem/FHEM.

Das glaube ich kaum, denn der Fehler passte leider sehr genau zu dem kastrierten Code, den Du gepostet hattest.
Und warum tritt dann jetzt plötzlich ein anderer Fehler auf, obwohl Du ja FHEM bereits zuvor komplett neu gestartet
hattest ...

Zitat von: Blebbens am 09 Juli 2014, 21:12:57
Can't locate MIME/Lite.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/99_myUtils.pm line 6.
BEGIN failed--compilation aborted at ./FHEM/99_myUtils.pm line 6.

Da wird dann wohl das MIME::Lite Modul nicht installiert sein:

apt-get update && apt-get install libmime-lite-perl

Blebbens

Super, danke, keine Fehlermeldung...

Nun meldet fhem im log, dass die Nachricht an meine Mailadresse versendet wurde.
Leider kam diese nicht an, auch nach Stunden nicht.

Laut mail.log:

Jul  6 06:25:16 rpi postfix/cleanup[3814]: 07BBB5E601: message-id=<20140706042516.07BBB5E601@rpi$
Jul  6 06:25:16 rpi postfix/qmgr[2940]: 07BBB5E601: from=<status@example.com>, size=840, nrcpt=1$
Jul  6 06:25:16 rpi postfix/local[3820]: warning: inet_protocols: disabling IPv6 name/address su$
Jul  6 06:25:16 rpi postfix/local[3820]: 07BBB5E601: to=<root@rpiHM>, orig_to=<root>, relay=loca$
Jul  6 06:25:16 rpi postfix/qmgr[2940]: 07BBB5E601: removed
Jul  6 07:25:48 rpi postfix/qmgr[2940]: 5C0D25E5F6: from=<pi@rpi>, size=446, nrcpt=1 (queue ac$
Jul  6 07:25:48 rpi postfix/trivial-rewrite[3882]: warning: inet_protocols:


Och, dabei sah die Meldung des Versands so gut aus.

Blebbens

Vielleicht kann bitte doch noch jemand helfen:

Die Log-Datei von fhem besagt, die Mail sei an meine E-Mail-Adresse abgeschickt worden - diese ist jedoch nicht angekommen.

Beim Test der Berechtigungen von postfix mit
"sudo cat /etc/ssl/certs/Equifax_Secure_Global_eBusiness_CA.pem >> /etc/postfix/cacert.pem"
folgt "-bash: /etc/postfix/cacert.pem: Keine Berechtigung"

Nun bin ich neu in der Linux-Welt, aber stelle ich Sudo voran, so müssten die Berechtigungen doch vorhanden sein (User pi ist eingeloggt) ?

Ich habe die Anleitung zur Konfiguration von postfix gem http://blog.mx17.net/2012/11/05/postfix-with-gmail-as-relay-on-debian-squeeze/ befolgt, lediglich obiger Rechteprüfungsbefehl schlägt fehl.

Leider weiß ich nun nicht, warum die Mail nicht ankommt trotz Erfolgsmeldung unter fhem - liegt es ggf. nur an obiger Berechtigung ?

marc2

Also entweder macht Du das einfach mal direkt als root wie in dem Rezept beschrieben (was ist daran bloß so schwierig ??),
oder Du musst die beiden Befehle "sudo konform" umschreiben:

cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem  | sudo tee -a /etc/postfix/cacert.pem
cat /etc/ssl/certs/Equifax_Secure_Global_eBusiness_CA.pem  | sudo tee -a /etc/postfix/cacert.pem


Blebbens

So, einiges gelernt...

Vielen Dank, auf den trigger folgt nun die E-Mail...

Nun müsste man doch analog zu Battery_check auch eine Funktion zur E-Mail-Meldung bei Alarm einfügen können.

Schön, dass es nun läuft...