From 76d9a895f61e1479bc76f437e70e56faa7fa3e01 Mon Sep 17 00:00:00 2001
From: Wzut <>
Date: Sat, 21 Mar 2020 19:30:58 +0000
Subject: [PATCH] 96_SIP: change ps to kill 0
git-svn-id: https://svn.fhem.de/fhem/trunk@21469 2b470e98-0d58-463d-a4d8-8e2adae1ed80
---
fhem/FHEM/96_SIP.pm | 163 ++++++++++++++++----------------------------
1 file changed, 59 insertions(+), 104 deletions(-)
diff --git a/fhem/FHEM/96_SIP.pm b/fhem/FHEM/96_SIP.pm
index 1f0c9c392..30cd7b0fd 100644
--- a/fhem/FHEM/96_SIP.pm
+++ b/fhem/FHEM/96_SIP.pm
@@ -55,7 +55,7 @@ use Blocking; # http://www.fhemwiki.de/wiki/Blocking_Call
#use Data::Dumper;
-my $sip_version ="V1.91 / 31.07.18";
+my $sip_version ="V1.92 / 21.03.2020";
my $ua; # SIP user agent
my @fifo;
@@ -378,14 +378,15 @@ sub SIP_Register($$)
$sub_register = sub
{
my $expire = $ua->register(registrar => $registrar ) || return "registration failed: ".$ua->error;
- my $cmd = "ps -e | grep '".$hash->{parent}." '";
- my $result = qx($cmd);
- if (index($result,"perl") == -1)
+ #my $cmd = "ps -e | grep '".$hash->{parent}." '";
+ #my $result = qx($cmd);
+ #if (index($result,"perl") == -1)
+ unless (kill 0, $hash->{parent})
{
Log3 $name,1,"$logname, can´t find my parent ".$hash->{parent}." in process list !";
die;
}
-
+
Log3 $name,4,"$logname, register new expire : ".FmtDateTime(time()+$expire);
if (AttrVal($name,"sip_listen","none") ne "none")
@@ -2237,44 +2238,26 @@ return $html;
Attributes
- - sip_audiofile_wfp
- Audio file that will be played after fetch command. The audio file has to be generated via
- sox <file>.wav -t raw -r 8000 -c 1 -e a-law <file>.al
- since only raw audio format is supported.
-
- - sip_audiofile_call
- - sip_audiofile_dtmf
- - sip_audiofile_ok
- - sip_listen (none , dtmf , wfp)
- - sip_from
- My sip client info, defaults to sip:620@fritz.box
-
- - sip_ip
- external IP address of the FHEM server.
-
- - sip_port
- Optionally portnumber used for sip client
- If attribute is not set a random port number between 44000 and 45000 will be used
-
- - sip_registrar
- Hostname or IP address of the SIP server you are connecting to, defaults to fritz.box.
-
- - sip_ringtime
- Ringtime for incomming calls (dtmf &wfp)
-
- - sip_user
- User name of the SIP client, defaults to 620.
-
- - sip_waittime
- Maximum waiting time in state listen_for_wfp it will wait to pick up the call.
-
- - sip_dtmf_size 1 to 4 , default is 2
- - sip_dtmf_loop once or loop , default once
- - sip_force_interval default 300
- - sip_force_max default 99
- - phonebook default none , filename of own phonebook. each row : number,name
- - history_size default 0 , max rows in history list
- - history_file default none, filename of history list
+ - sip_audiofile_wfp
Audio file that will be played after fetch command. The audio file has to be generated via
+ sox <file>.wav -t raw -r 8000 -c 1 -e a-law <file>.al
since only raw audio format is supported.
+ - sip_audiofile_call
+ - sip_audiofile_dtmf
+ - sip_audiofile_ok
+ - sip_listen (none , dtmf , wfp)
+ - sip_from
My sip client info, defaults to sip:620@fritz.box
+ - sip_ip
external IP address of the FHEM server
+ - sip_port
Optionally portnumber used for sip client
If attribute is not set a random port number between 44000 and 45000 will be used
+ - sip_registrar
Hostname or IP address of the SIP server you are connecting to, defaults to fritz.box
+ - sip_ringtime
Ringtime for incomming calls (dtmf &wfp)
+ - sip_user
User name of the SIP client, defaults to 620
+ - sip_waittime
Maximum waiting time in state listen_for_wfp it will wait to pick up the call
+ - sip_dtmf_size 1 to 4 , default is 2
+ - sip_dtmf_loop once or loop , default once
+ - sip_force_interval default 300
+ - sip_force_max default 99
+ - phonebook default none , filename of own phonebook. each row : number,name
+ - history_size default 0 , max rows in history list
+ - history_file default none, filename of history list
@@ -2321,14 +2304,17 @@ return $html;
set <name> call <nummer> [<maxtime>] [<nachricht>]
Startet einen Anruf an die angegebene Nummer.
Optional kann die maximale Zeit angegeben werden. Default ist 30.
- Optional kann eine Nachricht in Form eines Audiofiles angegeben werden . Das File ist mit dem vollen Pfad oder dem relativen ab dem Verzeichnis mit fhem.pl anzugeben..
+ Optional kann eine Nachricht in Form eines Audiofiles angegeben werden.
+ Das File ist mit dem vollen Pfad oder dem relativen ab dem Verzeichnis mit fhem.pl anzugeben.
set <name> listen
Attribut sip_listen = dtmf :
- Der SIP-Client wird in einen Status versetzt in dem er Anrufe annimmt. Der Ton wird als Echo zurückgespielt. Über die Eingabe von # gefolgt von 2 unterschiedlichen Zahlen und anschließendem Auflegen kann eine Zahl in das Reading dtmf übergeben werden.
+ Der SIP-Client wird in einen Status versetzt in dem er Anrufe annimmt. Der Ton wird als Echo zurückgespielt. Über die Eingabe von # gefolgt von 2 unterschiedlichen Zahlen und anschließendem Auflegen kann eine Zahl in das Reading dtmf übergeben werden.
Attribut sip_listen = wfp :
- Der SIP-Client wird in einen Status versetzt in dem er auf Anrufe wartet. Erfolgt an Anruf an den Client, wechselt der Status zu ringing. Nun kann das Gespräch via set-Command fetch angenommen werden. Das als sip_audiofile angegebene File wird abgespielt. Anschließend wechselt der Status wieder zu listenwfp.
+ Der SIP-Client wird in einen Status versetzt in dem er auf Anrufe wartet. Erfolgt ein Anruf an den Client, wechselt der Status zu ringing.
+ Nun kann das Gespräch via set-Command fetch angenommen werden. Das als sip_audiofile angegebene File wird abgespielt.
+ Anschließend wechselt der Status wieder zu listenwfp.
@@ -2336,70 +2322,39 @@ return $html;
Attributes
- - sip_user
- User Name des SIP-Clients. Default ist 620 (Fritzbox erstes SIP Telefon)
-
- - sip_registrar
- Hostname oder IP-Addresse des SIP-Servers mit dem sich das Modul verbinden soll. (Default fritz.box)
-
- - sip_from
- SIP-Client-Info. Syntax : sip:sip_user@sip_registrar Default ist sip:620@fritz.box
-
- - sip_ip
- Die IP-Addresse von FHEM im Heimnetz. Solange das Attribut nicht gesetzt ist versucht das Modul diese beim Start zu ermitteln.
-
- - sip_port
- Optinale Portnummer die vom Modul benutzt wird.
- Wenn dem Attribut kein Wert zugewiesen wurde verwendet das Modul eine zufällige Portnummer zwichen 44000 und 45000
-
- - Audiofiles
+
- sip_user
User Name des SIP-Clients. Default ist 620 (Fritzbox erstes SIP Telefon)
+ - sip_registrar
Hostname oder IP-Addresse des SIP-Servers mit dem sich das Modul verbinden soll. (Default fritz.box)
+ - sip_from
SIP-Client-Info. Syntax : sip:sip_user@sip_registrar Default ist sip:620@fritz.box
+ - sip_ip
Die IP-Addresse von FHEM im Heimnetz. Solange das Attribut nicht gesetzt ist versucht das Modul diese beim Start zu ermitteln.
+ - sip_port
Optinale Portnummer die vom Modul benutzt wird.
+ Wenn dem Attribut kein Wert zugewiesen wurde verwendet das Modul eine zufällige Portnummer zwichen 44000 und 45000
+ - Audiofiles
Audiofiles können einfach mit dem externen Programm sox erzeugt werden :
sox <file>.wav -t raw -r 8000 -c 1 -e a-law <file>.al
Unterstützt werden nur die beiden RAW Audio Formate a-law und u-law !
Statt eines echten Audiofiles kann auch eine Text2Speech Nachricht eingetragen werden.
- Bsp : attr mySIP sip_audiofile_call !Hier ist dein FHEM Server
-
- - sip_audiofile_wfp
- Audiofile das nach dem Command fetch abgespielt wird.
-
- - sip_audiofile_call
- Audiofile das dem Angerufenen bei set call vorgespielt wird.
-
- - sip_audiofile_dtmf
- Audiofile das dem Anrufer bei listen_for_dtmf abgespielt wird.
-
- - sip_audiofile_ok
- Audiofile das bei erkannter DTMF Sequenz abgespielt wird.
-
- - sip_listen (none , dtmf, wfp)
- - sip_ringtime
- Klingelzeit für eingehende Anrufe bei listen_for_dtmf
-
- - sip_dtmf_size
- 1 bis 4 , default 2 Legt die Läge des erwartenden DTMF Events fest.
-
- - sip_dtmf_loop
once oder loop , default once
- - sip_waittime
- Maximale Wartezeit im Status listen_for_wfp bis das Gespräch automatisch angenommen wird.
-
- - T2S_Device
- Name des Text2Speech Devices (Wird nur benötigt wenn Sprachnachrichten statt Audiofiles verwendet werden)
-
- - T2S_Timeout
- Wartezeit in Sekunden wie lange maximal auf Text2Speech gewartet wird.
-
- - audo_converter
sox oder ffmpeg, default sox
- Ist f¨r Text2Speech unbedingt erforderlich um die mp3 Dateien in Raw Audio umzuwandeln.
- Installation z.B. mit sudo apt-get install sox und noch die mp3 Unterstützung mit sudo apt-get install libsox-fmt-mp3
-
- - sip_force_interval default 300
- - sip_force_max default 99
- - phonebook default none , Dateiname des eigenen Telefonbuchs. Inhalt: zeilenweise Nr,Name
- - history_size default 0 , max Anzahl von Zeilen in der Ruf/Anrufer Liste
- - history_file default none, Dateiname der Ruf/Anrufer Liste
+ Bsp : attr mySIP sip_audiofile_call !Hier ist dein FHEM Server
+ - sip_audiofile_wfp
Audiofile das nach dem Command fetch abgespielt wird
+ - sip_audiofile_callAudiofile das dem Angerufenen bei set call vorgespielt wird
+ - sip_audiofile_dtmf
Audiofile das dem Anrufer bei listen_for_dtmf abgespielt wird
+ - sip_audiofile_ok
Audiofile das bei erkannter DTMF Sequenz abgespielt wird
+ - sip_listen (none , dtmf, wfp)
+ - sip_ringtime
Klingelzeit für eingehende Anrufe bei listen_for_dtmf
+ - sip_dtmf_size
1 bis 4 , default 2 Legt die Läge des erwartenden DTMF Events fest
+ - sip_dtmf_loop
once oder loop , default once
+ - sip_waittime
Maximale Wartezeit im Status listen_for_wfp bis das Gespräch automatisch angenommen wird
+ - T2S_Device
Name des Text2Speech Devices (Wird nur benötigt wenn Sprachnachrichten statt Audiofiles verwendet werden)
+ - T2S_Timeout
Wartezeit in Sekunden wie lange maximal auf Text2Speech gewartet wird
+ - audo_converter
sox oder ffmpeg, default sox
+ Ist für Text2Speech unbedingt erforderlich um die mp3 Dateien in Raw Audio umzuwandeln.
+ Installation z.B. mit sudo apt-get install sox und die mp3 Unterstützung mit sudo apt-get install libsox-fmt-mp3
+ - sip_force_interval default 300
+ - sip_force_max default 99
+ - phonebook default none
Dateiname des eigenen Telefonbuchs. Inhalt: zeilenweise Nr,Name
+ - history_size default 0
max Anzahl von Zeilen in der Ruf/Anrufer Liste
+ - history_file default none
Dateiname der Ruf/Anrufer Liste
-
=end html_DE