FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: DrG am 26 September 2015, 19:51:42

Titel: Aufruf Subroutine innerhalb der 99_myUtils.pm
Beitrag von: DrG am 26 September 2015, 19:51:42
Hallo zusammen,

ich versuche aus diversen Code-Schnipseln mir einen Mailer zu bauen, der mich informiert wenn ich einen Anruf der Fritzbox verpasst habe.
Das klappt jetzt auch fast - aber mir fehlt das letzte Puzzle-Teil (hoffentlich eins der letzten).

Innerhalb der 99_myUtils.pm habe ich schon einen Emailer erstellt - der auch läuft. Leider weiss ich nicht wie man ihn aus fhem direkt aufruft - oder wie hier gebraucht innerhalb der zweiten Subroutine SCR_TelefonAnruf aufruft.

Fehler im Log :
2015.09.26 19:47:02 3: DebianMail('jens.abct@gmail.com','Subject 017653647842.','Anruf verpasst von : 017653647842') : Unknown command DebianMail('jens.abc@gmail.com','Subject, try help.


Der rot markierten Teil funktioniert nicht - hier muss ich bestimmt einen anderen Aufruf verwenden.
Eine Lösung würde dann auch sicher erklären wie ich direkt in der fhem Commandline die Subroutine DebianMail aufrufen kann.

Gruß
Jens


##############################################
# $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
DebianMail
{
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $attach = shift;
my $ret = "";
my $sender = "fhem\@welling.local";
my $konto = "jens.abc\@gmail.com";
my $passwrd = "uoasdfsdfsdfs";
my $provider = "smtp.gmail.com:587";
Log 1, "sendEmail RCP: $rcpt";
Log 1, "sendEmail Subject: $subject";
Log 1, "sendEmail Text: $text";
Log 1, "sendEmail Anhang: $attach";;

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

sub SCR_TelefonAnruf()
{
my $NummerIntern = ReadingsVal('FritzBoxCM', 'internal_number', "");
my $InternCon = ReadingsVal('FritzBoxCM', 'internal_connection', "");
my $NummerExtern = ReadingsVal('FritzBoxCM', 'external_number', "");
my $NummerMissed = ReadingsVal('FritzBoxCM', 'missed_call', "");
my $Status = ReadingsVal('FritzBoxCM', 'event', "");
my $LeereNummer = "empty";
fhem( "set FritzboxStatus $Status" );
if($Status eq "disconnect")
        {
        if($NummerMissed ne "empty")
                {
                fhem ("DebianMail('jens.abc\@gmail.com','Subject $NummerMissed.','Anruf verpasst von : $NummerMissed')");
                fhem ("setreading FritzBoxCM missed_call $LeereNummer");
                }
        }
}
1;



Titel: Antw:Aufruf Subroutine innerhalb der 99_myUtils.pm
Beitrag von: rapster am 26 September 2015, 20:13:17

if($NummerMissed ne "empty")
                {
                DebianMail('jens.abc\@gmail.com','Subject $NummerMissed.','Anruf verpasst von : $NummerMissed');
                fhem ("setreading FritzBoxCM missed_call $LeereNummer");
                }
        }

;)

Gruß
  Claudiu

EDIT:
Direkt aus der Commandline: { DebianMail('jens.abc\@gmail.com','Subject $NummerMissed.','Anruf verpasst von : $NummerMissed'); } siehe => http://fhem.de/commandref_DE.html#perl