Hauptmenü

Modul 96_SIP

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

Vorheriges Thema - Nächstes Thema

Elektrolurch

Hallo Wzut,

habe mal den Port nun fix auf 5060 gestelt, aber er erscheint weder bei einem nmap - scan, noch bei netstat.
Das log sieht nach einem Neustart so aus:


2017.12.14 11:40:07 4: sip, hole Dieser Anschluß kann derzeit keine Anrufe entgegennehmen.
2017.12.14 11:40:07 4: sip, wait_for_t2s file : /hdd/sda4/Sonos/speak/467364dc0fc54b072c264ef90ee8ab1a.mp3
2017.12.14 11:40:07 4: sip, new T2S file /hdd/sda4/Sonos/speak/467364dc0fc54b072c264ef90ee8ab1a.mp3
2017.12.14 11:40:07 5: sip, not converted using /hdd/sda4/Sonos/speak/467364dc0fc54b072c264ef90ee8ab1a.alaw from cache
2017.12.14 11:40:07 4: sip, Listen new PID : 2331
2017.12.14 11:40:07 4: sip[2331], my parent is 1289
2017.12.14 11:40:08 4: sip[2331], register new expire : 2017-12-14 11:45:08
2017.12.14 11:40:08 5: sip[2331], telnet : set sip state listen_wfp set sip listen_alive PID_2331 set sip expire 300 exit
2017.12.14 11:40:08 3: sip_not: sip rd listen_wfp val
2017.12.14 11:40:08 3: sip_not: sip rd listen_alive val PID_2331
2017.12.14 11:40:08 3: sip_not: sip rd expire val 300
2017.12.14 11:40:08 4: sip[2331], using /hdd/sda4/Sonos/speak/467364dc0fc54b072c264ef90ee8ab1a.alaw for audio_wfp


Elektrolurch
configDB und Windows befreite Zone!

speedAmaster

gelöst!

Hallo an Wzut und plin: vielen Dank für eure Hilfe! Dank eures Zutuns lebt diese community!

Ich habe ein persönliches Ansage-File in wav aufgenommen. Dazu die DTMF-Töne (incl Pause durch " ") über http://dialabc.com/sound/generate/ erzeugt. Beide Dateien zusammengehängt und mittels sox in alaw umgewandelt.

mein TabletUI-code sieht so aus (popup bei Türklingeln, schließt automatisch bei keiner Aktion, öffnet Gartentüre und schließt popup)
<div data-type="popup" data-device="mySIP" data-get="caller_state" data-get-on="ringing_2" data-get-off="off" data-height="500px" data-width="800px" data-return-time="60">
<div class="dialog">
<header>Anruf von Türsprechstelle</header>
<div data-type="push" data-device="mySIP" data-icon="fa-folder-open-o" data-set-on="fetch" onclick="$('.dialog-close').trigger('click');" class="grande" data-off-color="red" data-on-color="red"></div>
<div data-type="label" class="darker grande bold red">Gartentüre öffnen</div>
</div>
</div>


mein SIP device sieht so aus (wartet und erkennt Anruf (Klingeln), spielt bei fetch die kombinierteAnsage+DTMF-Töne ab)
define mySIP SIP
attr mySIP sip_user FHEMphone
attr mySIP sip_registrar 192.168.178.1
attr mySIP sip_from sip:FHEMphone@192.168.178.1
attr mySIP sip_ip 192.168.178.99
attr mySIP sip_listen wfp
attr mySIP sip_waittime 999
attr mySIP sip_elbc yes
attr mySIP T2S_Device myT2S
attr mySIP audio_converter sox
attr mySIP sip_dtmf_send audio
attr mySIP sip_audiofile_wfp ./www/tablet/images/AnsageOpen.alaw
attr mySIP room sysGeneral,zzTelefon

define myT2S text2speech none
attr myT2S room sysGeneral,zzTelefon

Wzut

@Elektrolurch hmmmm, da benimmt sich wohl dein Cubi wieder etwas anders als mein RasPi oder mein Desktop PC mit Ubuntu.
Ich schaue mir das heute Abend nochmal bei mir mit netstat bzw. nmap an, allerdings könnte ich wetten das
der benutzte Port als offen angezeigt wird.
Gibt es im Netz irgendwelche Hinweise auf dein verwendetes OS das da eventuell eine Firewall oder iptables am Werk sind ?
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Wzut

Zitat von: speedAmaster am 14 Dezember 2017, 12:56:36
Ich habe ein persönliches Ansage-File in wav aufgenommen. Dazu die DTMF-Töne (incl Pause durch " ") über http://dialabc.com/sound/generate/ erzeugt. Beide Dateien zusammengehängt und mittels sox in alaw umgewandelt.

fein aber war die sox Wandlung wirklich nötig ? Ich dachte dailabc kann direkt ulaw ?
Aber anyway , der Erfolg zählt nicht der Weg dahin
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Elektrolurch

Hallo Wzut,
Zitat:
Gibt es im Netz irgendwelche Hinweise auf dein verwendetes OS das da eventuell eine Firewall oder iptables am Werk sind ?

Nein, eigentlich nicht. Auf dem Cubie läuft das aktuelle Jessie. Alle anderen Ports, z.B. ssh, netbios, rsync, fhem usw. liefen ohne das ich etwas an den IP-Tables manipulieren musste.
Das einzige, was ich für Port 443 tcp mal in die IP-Tables eingetragen habe, war ein forwarding für das virtuelle Zwischennetz von openvpn.
Ja, schau mal, was bei Dir nmap bzw. netstat ausspuckt.
Vermutlich macht ja die perl-lib für die Kommunikation mit einem sip-server den Port auf. Ob man da noch etwas mehr infos in das log bekommen könnte?
configDB und Windows befreite Zone!

Wzut

mir ist da gerade etwas eingefallen : du hast in Antwort 497 deine config des Moduls gepostet.
Du hast bei sip_port keine IP stehen sondern Speicherknecht
Ändere doch bitte mal sip_ip auf die echte IP Adresse unter der FHEM von der Fritzbox aus erreichbar ist.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Elektrolurch

Hallo Wzut,

das wars. Mit der IP, statt des Namens geht es jetzt und der Text wird auch abgespielt.
Danke.
Ich dachte allerdings, dass es mal in den Modulen von fhem eine größere Umstellung gegeben hat die IPs auch durch die Servernamen ersetzbar zu machen.
Möchte irgendwann mal mein Neztwerk von der 192.168.1.xxx umstellen, da openvpn nur dann funktioniert, wenn das Ausgangsnetz nicht identisch mit dem Zielnetz (192.168.1.x very common) identisch ist.
Und da graust es mir schon davor, überall die IPs zu suchen und zu ändern.... :-)
Ok, Hauptsache es geht erst mal. Danke für die Geduld.

Eigentlich möchte ich beim Anrufen einen dynamischen Text abspielen, z.B. mit den Statusdaten von fhem. Jetzt wird ja per Attribut auf eine Datei verwiesen. Was wäre aus Deiner Sicht der beste Weg, die dynamische Ausgabe der Mitteilung zu generieren? Beim ringing - Event?


Elektrolurch
configDB und Windows befreite Zone!

Wzut

Dynamische Texte im Listen Prozess für eingehende Anrufe sind nicht so einfach umzusetzen wie beim ausgehenden Ruf.
Eine Möglichkeit wäre du entscheidest dich für eine fixe Audiodatei, z.B. /cache/mytxt.mp3
Im normalen FHEM Prozess must du nun dafür sorgen das mit Text2Speech diese Datei frisch gehalten wird, damit wenn der Anruf kommt diese abgespielt werden kann. D.h. der Name der mp3 Datei bleibt fix, aber deren Inhalt ändert sich quasi ständig. Das Ganze sollte sich mit einer kleinen Sub in der 99_myUtils lösen lassen, etwa in der Art :
1. Dynamischen Text übergeben
2. diesen mit Hilfe von T2S wandeln
3. die von T2S erzeugte Datei aus dem Reading last_filename umkopieren in mytxt.mp3

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

Wzut

#533
Update :
Ich habe eben die neue Version als V1.71 hochgeladen (via Update ab morgen erhältlich)
Die Änderungen beziehen sich im wesentlichen auf die hier in den letzten zwei Wochen besprochenen Themen.
( Ref . -> https://forum.fhem.de/index.php/topic,67443.msg725278.html#msg725278 )
Allerdings habe ich intern noch etwas aufgeräumt und die eigene Telnet Verbindung zwischen Kind und Eltern Prozess komplett entfernt und gegen Rudis
BlockingInformParent aus Blocking.pm ersetzt. Ich hoffe alles gründlich durchgetestet zu haben (das ist inzwischen echt schwer geworden), falls es dennoch irgenwo klemmen sollte bitte hier schreien :) 
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

plin

Kurztest der 1.71:
listen_wfp -> geht
call -> geht
fetch -> geht
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

Elektrolurch

Hallo Wzut,

habe häufiger folgendes im Log:
2017.12.26 19:13:29 1: Timeout for SIP_ListenStart reached, terminated process 1391
2017.12.26 19:54:44 1: Timeout for SIP_ListenStart reached, terminated process 2420

ohne dass da ein Anruf stattgefunden hat.
Was hat das zu bedeuten? Kann ich da etwas verbessern?
Ist das ein ernstes Problem oder könnte man den Loglevel für diese Meldung auf 2 setzen?

Gruß

Elektrolurch

configDB und Windows befreite Zone!

Wzut

#536
Die Meldung kommt nicht direkt aus 96_SIP sondern aus Blocking.pm , d.h. den Level kann ich nicht beeinflussen.
Du kannst verbose auf 0 setzen dann ist auch Ruhe, allerdings besagt die Meldung das Blocking.pm der Meinung ist der Start des Listen Prozess dauere zu lange und bricht ihn ab. Das sollte Blocking.pm eigentlich nur tun wenn der Modulautor einen Timeout Wert beim Start mit übergibt - was ich aber nicht tue, denn der Listen Prozess soll ja recht lange laufen. D.h. ich verstehe nicht warum Blocking.pm bei dir der Meinung ist einen Timeout Wert zu haben und die interne Überwachung startet.
Kannst du bitte mal wenn der Listen Prozess wirklich läuft in der Kommandozeile von FHEM blockinginfo eingeben und die Ausgabe hier posten ?
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Elektrolurch


Pid:23934 Fn:SIP_ListenStart Arg:sip Timeout:N/A ConnectedVia:N/A

Da wird wohl kein timeout übergeben.
Konnte bisher auch noch keine Systematik erkennen. Manchmal gibt es diese Meldung 3 x Mal binnen 20 Minuten, sogar mitten in der Nacht (fhem schläft da auch :-)), dann wieder mehrere Stunden ist alles ok....

Elektrolurch
configDB und Windows befreite Zone!

Wzut

Ok, dann wäre das schon mal abgekärt.
Es gibt noch eine Möglichkeit für diese Meldung : Wenn das 96_SIP selbst der Meinung ist der Listen Prozess müsse neu gestartet werden.
Möglichkeit a : Es werden Attribute geändert die den Listen Prozess direkt betreffen, Neustart erforderlich sonst würde er die Änderung nicht mitbekommen.
Möglichkeit b : Du hast das Attribut sip_elbc auf 1 stehen, dann wird der Listen Prozess beendet bevor der ausgehende Ruf gestartet wird.

Stutzig macht mich aber deine Aussage das es mitten in der Nacht passiert , also scheidet vermutlich a. als auch b. aus
Klarer könnte das Ganze werden wenn du das Modul einfach mal einen Tag mit verbose 4 laufen lässt, bzw. mindestens so lange bis die Timeout Meldung im Log erscheint.
In der Zeilen davor sollte sich dann ein erklärbarer Grund finden lassen.   
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Elektrolurch

Hallo Wzut,

ok, das Attribut
sip_elbc
stand auf yes, habe das auf 0 gesetzt. Hatte das von weiter oben übernommen, ohne das ich weiß, welche Funktion es hatte.
Nun sind die sporadischen Meldungen erst einmal weg. Sie kommen nur, wenn über sip ein Anruf ausgelöst wird.

Der Befehl:

set sip call *611 10

(ohne Text oder File) gibt folgendes im log aus:


2017.12.28 10:47:02 1: Timeout for SIP_ListenStart reached, terminated process 6669
2017.12.28 10:47:02 1: PERL WARNING: Use of uninitialized value $a[2] in substitution (s///) at ./FHEM/96_SIP.pm line 817.
2017.12.28 10:47:02 1: PERL WARNING: Use of uninitialized value $a[0] in join or string at ./FHEM/98_Text2Speech.pm line 461.
2017.12.28 10:47:02 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_Text2Speech.pm line 894.
2017.12.28 10:47:02 1: PERL WARNING: Use of uninitialized value $file in -e at ./FHEM/98_Text2Speech.pm line 896.
2017.12.28 10:47:02 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_Text2Speech.pm line 731.
2017.12.28 10:47:03 1: PERL WARNING: Use of uninitialized value $file in concatenation (.) or string at ./FHEM/98_Text2Speech.pm line 752.
2017.12.28 10:47:03 1: PERL WARNING: Use of uninitialized value $file in concatenation (.) or string at ./FHEM/98_Text2Speech.pm line 754.
2017.12.28 10:47:03 1: PERL WARNING: Use of uninitialized value $file in -e at ./FHEM/98_Text2Speech.pm line 902.
2017.12.28 10:47:03 1: PERL WARNING: Use of uninitialized value $file in concatenation (.) or string at ./FHEM/98_Text2Speech.pm line 912.

Da müsste wohl für den Fall, dass es nur klingeln soll, auf das nicht Vorhandensein des Parameters in @a abgefragt werden.

Gruß

Elektrolurch
configDB und Windows befreite Zone!