diff --git a/fhem/FHEM/72_FB_CALLMONITOR.pm b/fhem/FHEM/72_FB_CALLMONITOR.pm index b9830e8ad..54f9a1494 100755 --- a/fhem/FHEM/72_FB_CALLMONITOR.pm +++ b/fhem/FHEM/72_FB_CALLMONITOR.pm @@ -32,7 +32,46 @@ use strict; use warnings; use Time::HiRes qw(gettimeofday); -sub FB_CALLMONITOR_Read($); +my %connection_type = ( +0 => "0", +1 => "FON1", +2 => "FON2", +3 => "FON3", +4 => "ISDN", +5 => "FAX", +6 => "not_defined", +7 => "not_defined", +8 => "not_defined", +9 => "not_defined", +10 => "DECT_1", +11 => "DECT_2", +12 => "DECT_3", +13 => "DECT_4", +14 => "DECT_5", +15 => "DECT_6", +16 => "FRITZMini_1", +17 => "FRITZMini_2", +18 => "FRITZMini_3", +19 => "FRITZMini_4", +20 => "VoIP_1", +21 => "VoIP_2", +22 => "VoIP_3", +23 => "VoIP_4", +24 => "VoIP_5", +25 => "VoIP_6", +26 => "VoIP_7", +27 => "VoIP_8", +28 => "VoIP_9", +29 => "VoIP_10", +40 => "Answering_Machine_1", +41 => "Answering_Machine_2", +42 => "Answering_Machine_3", +43 => "Answering_Machine_4", +44 => "Answering_Machine_5" +); + + + sub FB_CALLMONITOR_Initialize($) @@ -69,8 +108,11 @@ FB_CALLMONITOR_Define($$) $dev .= ":1012" if($dev !~ m/:/ && $dev ne "none" && $dev !~ m/\@/); + + $hash->{DeviceName} = $dev; my $ret = DevIo_OpenDev($hash, 0, "FB_CALLMONITOR_DoInit"); + return $ret; } @@ -82,6 +124,8 @@ FB_CALLMONITOR_Undef($$) my ($hash, $arg) = @_; my $name = $hash->{NAME}; + + DevIo_CloseDev($hash); return undef; } @@ -120,12 +164,12 @@ FB_CALLMONITOR_Read($) readingsBulkUpdate($hash, "internal_number", $array[4]) if($array[1] eq "RING"); readingsBulkUpdate($hash, "external_number" , $array[5]) if($array[1] eq "CALL"); readingsBulkUpdate($hash, "internal_number", $array[4]) if($array[1] eq "CALL"); - readingsBulkUpdate($hash, "used_connection", $array[5]) if($array[1] eq "RING"); - readingsBulkUpdate($hash, "used_connection", $array[6]) if($array[1] eq "CALL"); - - + readingsBulkUpdate($hash, "external_connection", $array[5]) if($array[1] eq "RING"); + readingsBulkUpdate($hash, "external_connection", $array[6]) if($array[1] eq "CALL"); + readingsBulkUpdate($hash, "internal_connection", $connection_type{$array[3]}) if($array[1] eq "CALL" or $array[1] eq "CONNECT" and defined($connection_type{$array[3]})); + readingsBulkUpdate($hash, "call_duration", $array[3]) if($array[1] eq "DISCONNECT"); readingsEndUpdate($hash, 1); - + } sub @@ -157,7 +201,7 @@ FB_CALLMONITOR_Ready($)