Hallo,
noch mit einer Erweiterung/Generalisierung:
ab Zeile 121 folgenden Code einfügen:
readingsUpdate($hash, "internal_name", checkBook($array[4],"FBFonMSN.cfg")) if($array[1] eq "RING");
readingsUpdate($hash, "internal_name", checkBook($array[4],"FBFonMSN.cfg")) if($array[1] eq "CALL");
readingsUpdate($hash, "external_name", checkBook($array[3],"FBFonBook.cfg")) if(not $array[3] eq "0" and $array[1] eq "RING");
readingsUpdate($hash, "external_name", checkBook($array[5],"FBFonBook.cfg")) if($array[1] eq "CALL");
entweder die eingefügte sub ersetzen durch / oder anfügen von:
sub checkBook {
my $Number = shift;
my $Book = shift;
my $return = "missing";
my $modpath = $attr{global}{modpath};
my $logpath = $attr{global}{logdir};
my $moddir = "$modpath/FHEM";
my $BookDef = $moddir."/".$Book;
$Number =~ s/\+49/0/;
$Number =~ s/0049/0/;
if(-e $BookDef) {
open (BookDef, "$BookDef");
while(<BookDef>) {
if ($_ =~ /^$Number(.+)/) {
$return = $1;
$return =~ s/ //g;
}
}
close (BookDef);
} else {
$return = "book missing";
}
return $return;
}
Die Datei FBFonMSN.cfg hat folgende Struktur:
MSN1 Name1
MSN2 Name2
Die Datei FBFonBook.cfg hat folgende Struktur:
Ich habe alle Leerzeichen in Namex durch Unterstrich ersetzt und löse den Unterstrich dann in der weiteren Verarbeitung auf. Die Telefonnummern bitte ohne +49 oder 0049 speichern.
Herzliche Grüße
Jörg