Hauptmenü

Modul 96_SIP

Begonnen von Wzut, 19 Februar 2017, 19:10:09

Vorheriges Thema - Nächstes Thema

Wzut

Zitat von: frank am 26 Oktober 2017, 22:24:35
allerdings bleibt weiterhin mit sip_watch_listen=90 die zeitdifferenz bei 60s.
Ja ist ein uralt Fehler von mir, an der entsprechenden Stelle ist noch eine feste 60 drin statt der zuständigen Variable.
Ich habe jetzt auch noch einen Schönheitsfehler gefunden mit den beiden neuen Readings, diese werden beim einem ausgehenden Ruf auch aktualisiert  bzw. angelegt. Beides wird im nächsten Update (vermutlich am WE ) gefixt sein. 
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

frank

Zitat von: Wzut am 27 Oktober 2017, 11:11:57
Beides wird im nächsten Update (vermutlich am WE ) gefixt sein.

könntest du dann eventuell noch das reading listen_alive mit der aktuellen pid des listenprocesses ergänzen?
dann könnte man bei gesetztem event-on-change/timestamp-on-change sofort den letzten reset erkennen.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Wzut

wenns scheeee macht ...  :P dann ersetze ich das yes durch die PID
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

eppi

Hallo zusammen
Ich möchte das SIP Module nur als "Anrufliste" nutzen, das heisst keine abgehende Call's und bei ankommenden Anrufen, soll das Device nicht abnehmen. Jedoch bin ich mir nicht sicher, ob ich die entsprechenden Atrribute richtig gesetzt habe für diesen Zweck, da ich im Log immer wieder folgende Einträge finde:
2017.10.29 11:05:10 1: Timeout for SIP_ListenStart reached, terminated process 16803
2017.10.29 11:05:10 2: FHEM_Phone, expire timestamp is 181 seconds old, restarting listen process


Ein List sieht bei mir wie folgt aus:
Internals:
   LPID       18530
   NAME       FHEM_Phone
   NOTIFYDEV  global
   NR         1315
   NTFY_ORDER 50-FHEM_Phone
   STATE      listen_wfp
   TYPE       SIP
   VERSION    V1.6 / 22.10.17
   READINGS:
     2017-10-29 08:39:33   caller          none
     2017-10-29 08:39:33   caller_state    hangup
     2017-10-29 08:39:33   caller_time     1509262773.0154
     2017-10-29 11:16:26   expire          2017-10-29 11:31:25
     2017-10-29 11:16:26   listen_alive    yes
     2017-10-29 11:16:26   state           listen_wfp
   helper:
     LISTEN_PID:
       abortArg
       abortFn
       arg        FHEM_Phone
       bc_pid     42
       finishFn   SIP_ListenDone
       fn         SIP_ListenStart
       pid        18530
       timeout
Attributes:
   sip_dtmf_loop once
   sip_dtmf_send audio
   sip_dtmf_size 2
   sip_elbc   yes
   sip_from   sip:220@192.168.1.1
   sip_ip     192.168.1.12
   sip_listen wfp
   sip_port   5060
   sip_registrar 192.168.1.1
   sip_ringtime 3
   sip_user   username
   sip_waittime 60
   verbose    0


Ist das so richtig für meinen Zweck "Anrufliste"?
Danke

Wzut

Das darfst du nicht zusammen in einenTopf werfen , also der Reihe nach :
Das Modul soll nie abnehmen - kein Problem. Damit es aber überhaupt mitbekommt das es angerufen wurde muß zwingend eine Art des Listen Prozess laufen.
Du hast dich für listen_wfp entschieden. Soweit gut, solltest aber ein Auge auf sip_waittime habe da das die Zeit ist nach der das Modul den Ruf automatisch annimmt.
Deine 60 Sekunden erscheinen mit dafür ausreichend, kannst aber bei Bedarf den Wert noch größer machen falls du mal feststellst das es doch vorkommt das das Gespräch angenommen wird  (was du ja nicht willst)

Die Aufgabenstellung lässt sich allerdings auch mit einer anderen Art von listen lösen , z.B mit listen_echo. Um nun zu verhindern das das Gespräch angenommen wird muss man mit dem Attribut sip_filter arbeiten in dem man es z.B. auf einen Wert (bzw. Teil einer Telefon Nr ) setzt der nie erfüllt wird , z.B. 00000
D.h. das Gespräch würde jetzt nur angenommen werden wenn in der Quellrufnummer die Kombination 00000 vorkommt.

Welche der beiden Versionen du nun nimmst ist eine reine Geschmacksfrage :)
Kommen wir damit zum ersten Teil deiner Frage, die Meldungen im Log. Sind ja recht neu da ich diese Art der Überwachung erst letzte Woche dazugenommen habe.
Wenn ein listen Prozess läuft (und das muss bei dir unbedingt sein) meldet der sich ca. alle 150 Sekunden bei seinem Sip Server (z.B. FritzBox) was mit gut bei einem Log mit min verbose 4 verfolgen kann. Ist bei dem Meldeversuch der Sip Server nicht erreichbar (siehe das Problem von frank mit seinem Wlan) beendet das Hauptprogramm diesen Listen Prozess und startet ihn neu. Laut deinem Log ist das nach 181 Sekunden passiert, d.h. die positve Rückmeldung war 31 Sekunden über der Zeit.  Starte doch mal ein Log mit min verbose 4 oder besser 5 eventuell sieht man dann mehr was bei dir schief läuft.   

Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

eppi

Hallo Wzut
Danke! Ich habe mich für deine zweite Variante entschieden mit listen_echo und die Attribute wie folgt gesetzt:
Attributes:
   sip_dtmf_loop once
   sip_dtmf_send audio
   sip_dtmf_size 2
   sip_elbc   yes
   sip_filter 00000000
   sip_from   sip:220@192.168.1.1
   sip_ip     192.168.1.12
   sip_listen echo
   sip_port   5060
   sip_registrar 192.168.1.1
   sip_ringtime 3
   sip_user   username
   verbose    5


Im Log mit Verbose 5 habe ich dann immer die folgenden Einträge:
2017.10.29 18:14:47 5: FHEM_Phone[4203], telnet : set FHEM_Phone state listen_echo set FHEM_Phone listen_alive yes set FHEM_Phone expire 2017-10-29 18:29:47 exit
2017.10.29 18:14:47 4: FHEM_Phone[4203], register new expire : 2017-10-29 18:29:47
2017.10.29 18:14:46 4: FHEM_Phone[4203], my parent is 782
2017.10.29 18:14:46 4: FHEM_Phone, Listen new PID : 4203
2017.10.29 18:14:44 1: Timeout for SIP_ListenStart reached, terminated process 3830
2017.10.29 18:14:44 2: FHEM_Phone, expire timestamp is 181 seconds old, restarting listen process
2017.10.29 18:13:44 5: FHEM_Phone, listen process 3830 found
2017.10.29 18:12:43 5: FHEM_Phone, listen process 3830 found
2017.10.29 18:11:42 5: FHEM_Phone[3830], telnet : set FHEM_Phone state listen_echo set FHEM_Phone listen_alive yes set FHEM_Phone expire 2017-10-29 18:26:42 exit
2017.10.29 18:11:42 4: FHEM_Phone[3830], register new expire : 2017-10-29 18:26:42
2017.10.29 18:11:42 4: FHEM_Phone[3830], my parent is 782
2017.10.29 18:11:42 4: FHEM_Phone, Listen new PID : 3830
2017.10.29 18:11:39 1: Timeout for SIP_ListenStart reached, terminated process 3456
2017.10.29 18:11:39 2: FHEM_Phone, expire timestamp is 182 seconds old, restarting listen process
2017.10.29 18:10:38 5: FHEM_Phone, listen process 3456 found
2017.10.29 18:09:38 5: FHEM_Phone, listen process 3456 found
2017.10.29 18:08:37 5: FHEM_Phone[3456], telnet : set FHEM_Phone state listen_echo set FHEM_Phone listen_alive yes set FHEM_Phone expire 2017-10-29 18:23:37 exit
2017.10.29 18:08:37 4: FHEM_Phone[3456], register new expire : 2017-10-29 18:23:37
2017.10.29 18:08:37 4: FHEM_Phone[3456], my parent is 782
2017.10.29 18:08:37 4: FHEM_Phone, Listen new PID : 3456
2017.10.29 18:08:35 1: Timeout for SIP_ListenStart reached, terminated process 2969
2017.10.29 18:08:35 2: FHEM_Phone, expire timestamp is 241 seconds old, restarting listen process
2017.10.29 18:07:34 5: FHEM_Phone, listen process 2969 found
2017.10.29 18:06:34 5: FHEM_Phone, listen process 2969 found
2017.10.29 18:04:32 1: Timeout for SIP_ListenStart reached, terminated process 2583
2017.10.29 18:01:27 1: Timeout for SIP_ListenStart reached, terminated process 2190
2017.10.29 17:58:23 1: Timeout for SIP_ListenStart reached, terminated process 1813
2017.10.29 17:55:20 1: Timeout for SIP_ListenStart reached, terminated process 1320
2017.10.29 17:51:16 1: Timeout for SIP_ListenStart reached, terminated process 826
2017.10.29 17:47:12 1: Timeout for SIP_ListenStart reached, terminated process 456

Dazu sagen muss ich noch, dass ich keine Fritzbox einsetze, sondern den Standard-Router meines Internet-Provider.

Danke vielmals und Grüsse Dani

Wzut

ahh alles klar :) Ich bin bisher dvon ausgegangen diese Wiederholzeit von expire/ 2 = 150 Sekunden sei statisch. In Wahrheit scheint sie aber vom verwendeteten SIP Server abhängig zu sein. D.h in deinem Fall keine 5 Minuten sondern 15 :
2017.10.29 18:08:37 4: FHEM_Phone[3456], register new expire : 2017-10-29 18:23:37
18:23:37 - 18:08:37  = 15 , folglich wird die Wiederholung erst nach 7,5 Minuten stattfinden und nicht nach 2,5
Ich muss hier nochmal nachbessern, in der Zwischenzeit such mal im Modul 19_SIP.pm diese Zeile :
if (($age >180) && ($alive eq "yes")) # nach max 150 Sekunden sollte sich der listen Prozess erneut melden
müsste so bei Zeile 1420 sein. Ändere da die 180 in 500 oder 450 und lade das Modul neu.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

eppi

Zitat von: Wzut am 29 Oktober 2017, 18:58:39
if (($age >180) && ($alive eq "yes")) # nach max 150 Sekunden sollte sich der listen Prozess erneut melden
müsste so bei Zeile 1420 sein. Ändere da die 180 in 500 oder 450 und lade das Modul neu.
Das hat geholfen! Keine entsprechenden Logeinträge mehr vorhanden.
Nochmals Danke und Gruss Dani

Wzut

OK, ich habe eben eine Version hochgeladen , Kennung "V1.61 / 30.10.17"
Fix : expire Zeiten != 300 Sekunden werden berücksichtigt
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

frank

#369
Zitat von: Wzut am 30 Oktober 2017, 14:45:16
OK, ich habe eben eine Version hochgeladen , Kennung "V1.61 / 30.10.17"
Fix : expire Zeiten != 300 Sekunden werden berücksichtigt
die version hat leider noch ein problemchen:

2017.10.30 15:48:33.659 2: triggerLiveCam, expire timestamp is 562 seconds old, restarting listen process
2017.10.30 15:48:33.682 1: Timeout for SIP_ListenStart reached, terminated process 12705
2017.10.30 15:48:35.699 4: triggerLiveCam, Listen new PID : 12746
2017.10.30 15:48:35.714 4: triggerLiveCam[12746], my parent is 12330
2017.10.30 15:48:35.799 4: triggerLiveCam[12746], register new expire : 2017-10-30 15:53:35
2017.10.30 15:48:35.800 5: triggerLiveCam[12746], telnet : set triggerLiveCam state listen_dtmf set triggerLiveCam listen_alive PID_12746 set triggerLiveCam expire 300 exit
2017.10.30 15:48:35.838 5: triggerLiveCam[12746], telnet : set triggerLiveCam caller none set triggerLiveCam caller_state waitting exit
2017.10.30 15:49:35.743 2: triggerLiveCam, expire timestamp is 624 seconds old, restarting listen process
2017.10.30 15:49:35.762 1: Timeout for SIP_ListenStart reached, terminated process 12746
2017.10.30 15:49:37.780 4: triggerLiveCam, Listen new PID : 12788
2017.10.30 15:49:37.794 4: triggerLiveCam[12788], my parent is 12330
2017.10.30 15:49:37.878 4: triggerLiveCam[12788], register new expire : 2017-10-30 15:54:37
2017.10.30 15:49:37.878 5: triggerLiveCam[12788], telnet : set triggerLiveCam state listen_dtmf set triggerLiveCam listen_alive PID_12788 set triggerLiveCam expire 300 exit
2017.10.30 15:49:37.915 5: triggerLiveCam[12788], telnet : set triggerLiveCam caller none set triggerLiveCam caller_state waitting exit
2017.10.30 15:50:37.824 2: triggerLiveCam, expire timestamp is 686 seconds old, restarting listen process
2017.10.30 15:50:37.850 1: Timeout for SIP_ListenStart reached, terminated process 12788
2017.10.30 15:50:39.868 4: triggerLiveCam, Listen new PID : 12829
2017.10.30 15:50:39.882 4: triggerLiveCam[12829], my parent is 12330
2017.10.30 15:50:39.969 4: triggerLiveCam[12829], register new expire : 2017-10-30 15:55:39
2017.10.30 15:50:39.970 5: triggerLiveCam[12829], telnet : set triggerLiveCam state listen_dtmf set triggerLiveCam listen_alive PID_12829 set triggerLiveCam expire 300 exit
2017.10.30 15:50:40.006 5: triggerLiveCam[12829], telnet : set triggerLiveCam caller none set triggerLiveCam caller_state waitting exit
2017.10.30 15:51:39.912 2: triggerLiveCam, expire timestamp is 748 seconds old, restarting listen process
2017.10.30 15:51:39.927 1: Timeout for SIP_ListenStart reached, terminated process 12829
2017.10.30 15:51:41.946 4: triggerLiveCam, Listen new PID : 12872
2017.10.30 15:51:41.960 4: triggerLiveCam[12872], my parent is 12330
2017.10.30 15:51:42.050 4: triggerLiveCam[12872], register new expire : 2017-10-30 15:56:42
2017.10.30 15:51:42.051 5: triggerLiveCam[12872], telnet : set triggerLiveCam state listen_dtmf set triggerLiveCam listen_alive PID_12872 set triggerLiveCam expire 300 exit
2017.10.30 15:51:42.087 5: triggerLiveCam[12872], telnet : set triggerLiveCam caller none set triggerLiveCam caller_state waitting exit
2017.10.30 15:52:41.990 2: triggerLiveCam, expire timestamp is 810 seconds old, restarting listen process
2017.10.30 15:52:42.012 1: Timeout for SIP_ListenStart reached, terminated process 12872
2017.10.30 15:52:44.030 4: triggerLiveCam, Listen new PID : 12915
2017.10.30 15:52:44.044 4: triggerLiveCam[12915], my parent is 12330
2017.10.30 15:52:44.128 4: triggerLiveCam[12915], register new expire : 2017-10-30 15:57:44
2017.10.30 15:52:44.128 5: triggerLiveCam[12915], telnet : set triggerLiveCam state listen_dtmf set triggerLiveCam listen_alive PID_12915 set triggerLiveCam expire 300 exit
2017.10.30 15:52:44.166 5: triggerLiveCam[12915], telnet : set triggerLiveCam caller none set triggerLiveCam caller_state waitting exit


das alter des expire_timestamps steigt seit fhem neustart kontinuirlich an.

edit:

es liegt wohl an meinen attributen, da bei mir das reading expire keinen neuen timestamp bekommt (event-on-change/timestamp-on-change). mit event-on-update für expire läuft es.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

sojos

Hallo,
leider habe ich keine FritzBox, sondern einen DrayTek Vigor2760Vn und die Telekom als VoIP-Provider.
FHEM läuft bei mir auf einem Raspberry Pi und von dort möchte ich bei einem Alarm mein Handy anrufen.
Im Router kann ich keine virtuellen Telefone erstellen, deshalb meine Frage:
Kann ich mit dem SIP-Modul die Telekom auch direkt zum Anrufen bewegen ?,
oder benötige ich zwingend eine Fritzbox, oder Telefonanlage die das kann.
Zudem würde mich interessieren, ob das SIP-Modul nonblocking läuft.

Wzut

1. Das Modul sollte eigentlich mit jeder Art von SIP Server klar kommen. Wenn du hier mal etwas liest findest ausser FB Nutzer auch Vertreter von Asterisk oder externen SIP Providern ( eventuell schau dir mal www.sipgate.de an )

2. ja Nonblocking beide beide Richtungen, d.h. der Listen Prozess für ankommende Rufe läuft eigenständig, ebenso ein Call für abgehende.   
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

sojos

Hallo Wzut,
ich muss noch erwähnen, dass mein Vigor-Router bereits als SIP-Client konfiguriert ist,
also mein analoges Telefon daran angeschlossen ist.
In der Router-Konfiguration musste ich für die Telekom-Voip-Einrichtung einen STUN-Server angeben,
im SIP-Modul vermisse ich vergleichbare Einstellmöglichkeiten.

Wzut

STUN kommt im verwendeten Net::SIP von Steffen Ullrich nicht vor, daher gibt es auch am Modul dazu keinen Parameter.
Laut Wiki ( bzw. so wie ich es verstanden habe , man möge mich bitte verbessern ) -> https://de.wikipedia.org/wiki/Session_Traversal_Utilities_for_NAT
wird mit Hilfe des STUN Server ermittelt  wie dein SIP Client zum Ziel bzw. durch deine Firewall kommt.
Teste doch mal mit einem sip_port  ungleich 5060/5070 und einem  Portforwarding auf deinem Router.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

geiercasi

Hallo zusammen,

bei einem Anruf erkennt mein SIP device zwar den Anrufer, aber erkennt das auflegen vom Anrufer nicht. Eigentlich sollte caller_state irgendwann mal hangup anzeigen, Dies geschieht bei mir aber nie.
Dieses list obelix ist nach dem auflegen entstanden. Der Client hängt an einem Asterisk.
Internals:
   AC         /usr/bin/sox
   LPID       32706
   NAME       obelix
   NOTIFYDEV  T2S
   NR         809
   NTFY_ORDER 50-obelix
   STATE      listen_wfp
   TYPE       SIP
   VERSION    V1.61 / 30.10.17
   READINGS:
     2017-11-04 14:07:16   call            done
     2017-11-04 14:07:16   call_state      peer hangup
     2017-11-04 14:07:16   call_success    0
     2017-11-04 14:07:16   call_time       3
     2017-11-04 15:33:52   caller          casi sip:001766***@192.168.2.200
     2017-11-04 15:35:13   caller_state    ringing_81
     2017-10-24 12:32:37   caller_time     1508841157.05653
     2017-11-04 15:29:47   expire          900
     2017-10-31 11:00:41   last_error      ListenRegister: can't open port 44844 or 44854 at 192.168.2.247: Die angeforderte Adresse kann nicht zugewiesen werden
     2017-11-04 15:29:47   listen_alive    PID_32706
     2017-11-04 15:29:47   state           listen_wfp
   helper:
     LISTEN_PID:
       abortArg
       abortFn
       arg        obelix
       bc_pid     2771
       finishFn   SIP_ListenDone
       fn         SIP_ListenStart
       pid        32706
       timeout
Attributes:
   T2S_Device T2S
   audio_converter sox
   room       99 System
   sip_dtmf_loop once
   sip_dtmf_send audio
   sip_dtmf_size 2
   sip_elbc   yes
   sip_from   sip:obelixSIP@192.168.2.200
   sip_ip     192.168.2.247
   sip_listen wfp
   sip_registrar 192.168.2.200
   sip_ringtime 3
   sip_user   obelixSIP
   sip_waittime 3000

hat jemand eine Idee für mich ?

Gruß und danke für die Hilfe