96_SIP : add new reading caller_status

git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@13472 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
Wzut 2017-02-20 19:02:53 +00:00
parent 5f5b7dfcab
commit 5d766cbebc

View File

@ -4,6 +4,7 @@
# 96_SIP.pm # 96_SIP.pm
# Based on FB_SIP from werner.meines@web.de # Based on FB_SIP from werner.meines@web.de
# #
# Forum : https://forum.fhem.de/index.php/topic,67443.0.html
# #
############################################################################### ###############################################################################
# #
@ -286,7 +287,7 @@ sub SIP_CALLStart($)
$ua->loop( \$stopvar ); $ua->loop( \$stopvar );
} }
$final = "unknow" if !defined($final); $final = "unknown" if !defined($final);
# $ua->cleanup; # $ua->cleanup;
return $name."|1|".$final."|".$peer_hangup if defined($peer_hangup); return $name."|1|".$final."|".$peer_hangup if defined($peer_hangup);
return $name."|1|".$final."|".$stopvar if defined($stopvar); return $name."|1|".$final."|".$stopvar if defined($stopvar);
@ -412,6 +413,17 @@ sub SIP_Set($@)
readingsSingleUpdate($hash, "caller",$subcmd,1); readingsSingleUpdate($hash, "caller",$subcmd,1);
return undef; return undef;
} }
elsif ($cmd eq "caller_status")
{
# die ersten beiden brauchen wir nicht mehr
shift @a;
shift @a;
# den Rest als ein String
$subcmd = join(" ",@a);
readingsSingleUpdate($hash, "caller_status",$subcmd,1);
return undef;
}
elsif ($cmd eq "fetch") elsif ($cmd eq "fetch")
{ {
readingsSingleUpdate($hash, "caller","fetch",1); readingsSingleUpdate($hash, "caller","fetch",1);
@ -529,7 +541,7 @@ sub SIP_dtmf{
$hash->{old} = $event; $hash->{old} = $event;
if ($hash->{dtmf} > 2) if ($hash->{dtmf} > 2)
{ {
SIP_telnet($hash,"set $my_name dtmf_event ".$hash->{dtmf_event}); SIP_telnet($hash,"set $my_name dtmf_event ".$hash->{dtmf_event}."\n");
$hash->{dtmf} = 0; $hash->{dtmf} = 0;
$hash->{dtmf_event} = ""; $hash->{dtmf_event} = "";
$hash->{old} ="-"; $hash->{old} ="-";
@ -543,18 +555,23 @@ sub SIP_invite{
my $hash = $defs{$my_name}; my $hash = $defs{$my_name};
my $waittime = AttrVal($my_name, "sip_waittime", "10"); my $waittime = AttrVal($my_name, "sip_waittime", "10");
my $action; my $action;
my $i=0; my $i;
for($i=0; $i<$waittime; $i++) for($i=0; $i<$waittime; $i++)
{ {
SIP_telnet($hash,"set $my_name caller_status ringing\nexit\n") if (!$i);
sleep 1; sleep 1;
######## $$$ read state of my device ######## $$$ read state of my device
$action = SIP_telnet($hash,"get $my_name caller\n"); $action = SIP_telnet($hash,"get $my_name caller\n");
Log3 $my_name, 4, "$my_name, SIP_invite ->ringing $i : $action"; Log3 $my_name, 4, "$my_name, SIP_invite ->ringing $i : $action";
if ( $action eq "fetch" ) { last; } if ( $action eq "fetch" )
{
SIP_telnet($hash,"set $my_name caller_status fetching\nexit\n");
last;
}
#$call->bye(); #$call->bye();
} }
return; return 0;
} }
sub SIP_filter{ sub SIP_filter{
@ -576,7 +593,7 @@ sub SIP_bye{
my $hash = $defs{$my_name}; my $hash = $defs{$my_name};
Log3 $my_name, 5, "$my_name, SIP_bye : $event"; Log3 $my_name, 5, "$my_name, SIP_bye : $event";
#print Dumper($event); #print Dumper($event);
SIP_telnet($hash, "set $my_name caller hangup\nexit\n"); SIP_telnet($hash, "set $my_name caller none\nset $my_name caller_status hangup\nexit\n") ;
return 1; return 1;
} }
@ -587,7 +604,7 @@ sub SIP_ListenDone($)
my @r = split("\\|",$string); my @r = split("\\|",$string);
my $hash = $defs{$r[0]}; my $hash = $defs{$r[0]};
my $ret = (defined($r[1])) ? $r[1] : "unknow error"; my $ret = (defined($r[1])) ? $r[1] : "unknown error";
my $name = $hash->{NAME}; my $name = $hash->{NAME};
Log3 $name, 5,"$name, ListenDone -> $string"; Log3 $name, 5,"$name, ListenDone -> $string";