Hauptmenü

Modul 96_SIP

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

Vorheriges Thema - Nächstes Thema

plin

Zitat von: Wzut am 09 September 2020, 07:18:17
rtp_param wird aber aktiv gesetzt bei listen_dtmf und listen_wfp. Da ich das Problem nicht nachstellen kann, könntest du bitte mal die beiden Zeilen rauswerfen und nochmal testen ob der Löwe dann verschwunden ist ?
Ich habe zwei rtp_param-Statements im dtmf-Teil entfernt und getestet. Das klingt deutlich schlimmer als in der Variante mit 8,160,160/8000.
Aber der "Löwe" ist weg.
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

Wzut

#1081
Ich werde im nächsten Schritt mal rtp_param komplett verbannen, denn in Call.pm steht eh :
$param->{rtp_param} ||= [ 0,160,160/8000 ]; # PCMU/8000: 50*160 bytes/second

Edit Kommando zurück , jetzt wird mir so einiges klar :
https://en.wikipedia.org/wiki/RTP_payload_formats
die 0 ist ITU-T G.711 PCM μ-Law audio 64 kbit/s  , wir in Europa nutzen aber eigentlich  8  = ITU-T G.711 PCM A-Law audio 64 kbit/s  !!!

D.h. eigentlich müsste jetzt sogar rtp_param überall gesetzt werden und das eben mit der 8
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

plin

Zitat von: Wzut am 09 September 2020, 19:27:40
D.h. eigentlich müsste jetzt sogar rtp_param überall gesetzt werden und das eben mit der 8
Auch die Zeile 511
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

Wzut

so ich habe das Modul komplett auf package umgestellt und mich nochmal intensiv mit dem Thema Audio beschäftigt.
Was ich feststellen konnte : ist ist egal ob man ulaw oder alaw verwendet, nur sollte man beides nicht mischen und die entsprechendne Werte bei rtp_param müssen unbedingt passen ! Default bei Net::SIP ist ulaw, ich habe das jetzt auch so übernommen. Der User hat aber die Freiheit alaw zu verwenden dazu dient das neue Attribut audio_codec ( Default, d.h. nicht gesetzt PCMU = ulaw) aber auch das läst sich nochmal überstimmen wenn man direkt bei sip_audiofile_xxx eine Datei mit der Endung .al/.alaw oder .ul/.ulaw angibt.
Wäre schön wenn sich ein paar Tester finden bevor ich die Version einchecke.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

plin

Zitat von: Wzut am 13 September 2020, 18:53:26
Wäre schön wenn sich ein paar Tester finden bevor ich die Version einchecke.
Call (FritzBox, asterisk) -> ok
listen_echo -> ok
listen_dtmf (once, loop) -> ok
listen_wfp (fetch, reject) -> ok

Passwort habe ich nicht geändert/gesetzt.

Bei listen_dtmf ist es nach wie vor so, dass die aus Text generierte Ansage Aussetzer hat, insbesondere beim ersten Abspielen.

get <device> play ...
Welcher Text steckt hinter dem mp3-File? Eine Lookup-Tabelle wäre gut. Der Name des mp3-Files ergibt sich ja aus dem Text. Also brauchen wir ein Index-File md5->Text.
Es fehlen Hinweise für die Einrichtung (Eintrag in die /etc/sudoers).
Was passiert beim get/play? Lokale Wiedergabe?

VG plin
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

Wzut

THX
a. zum Thema DTMF und Aussetzer : keine Idee , tritt bei mir auch nicht auf
b. ja kein Problem ich kann auch noch eine Übersetzungstabelle machen und anzeigen
c. Thema fhem und sudo Rechte ohne Passwort :
Das gibt es mehrfach das Module (z.b. Text2Speach mit mplayer) den fhem User einen Befehl mit sudo ausführen lassen. Ich habe die Datei  /etc/sudoers nicht geändert, bei mir gab es bereits eine mit Namen fhem in /etc/sudoers.d/ , der z.Z. aktuelle Inhalt :

fhem ALL=(ALL) NOPASSWD: /usr/bin/play

Ich wollte zuerst auf den sudo Einsatz verzichten und dem fhem User entsprechende Rechte geben, bin aber gescheitert egal in welche Gruppe (audio , dsp) ich den User mit usermod aufgenommen habe. Und ja die Datei wird über die default Audioausgabe abgespielt. Und ja die Funktion ist eigentlich ein Gimmick um einfach mal schnell zu sehen (bzw hören) was sich da alles so unter /cache angesammelt hat und das äufräumen etwas erleichtert. Ausser beim Listen Mode am, da wird das play verwendet um ggf. die gerade aufgenommene Nachricht sofort abzuspielen.

Da fällt mir noch ein die Funktion der Call Listen bzw history Datei ist auch  irgendwie unter gegangen. Aktuell schaut die Definition als weblink bei mir so aus :
define SipCallList weblink htmlCode {FHEM::SIP::html(mysip')}
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

en-trust

Ich habe soweit auch alles installiert incl. NET::SIP. Aber das nowendige Paket libnet-sip-perl lässt sich unter Perl 5.20.3 nicht installieren.

cpan[4]> install libnet-sip-perl
Warning: Cannot install libnet-sip-perl, don't know what it is.
Try the command

    i /libnet-sip-perl/

to find objects with matching identifiers.


20.3 ist meine perlbrew Installation auf der fhem läuft.

Wzut

du verwechselst da Äpfel mit Birnen.
libnet-sip-perl ist mit Sicherheit ein Debian Paket und die werden mit apt-get install  installiert.
CPAN Module wie Net::SIP mit cpan
D.h. wenn man ein Debian basiertes System hat (Ubuntu, Raspian, etc) würde ich immer den leichten Weg via apt-get install wählen.
Ausnahme : Man will unbedingt die neueste Version von Net::SIP, dann kann (bzw. muß) man den anderen Weg gehen, macht aber für mich aus User Sicht keinen Sinn, da die heutigen aktuellen Debian Pakete für den normalen Betrieb völlig ausreichend sind, das war vor zwei Jahren noch etwas anderes.   
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

en-trust

#1088
Aber wenn das Paket ein Debian ist, warum sollte es für fhem dann laut wiki für net:sip installiert werden ?
https://wiki.fhem.de/wiki/SIP-Client#FHEM-Server


woran seh ich denn ob das Paket installiert ist ?
Normalerweise wird es über sudo apt-get install libnet-sip-perl in die aktuelle perl Version 5.24 installiert. Da ich aber über perlbrew für fhem eine 5.20.3 laufen habe muss das Paket auch da hinkopiert werden.

Dafür habe ich...
perlbrew use perl-5.20.3
perl -v
This is perl 5, version 20, subversion 3 (v5.20.3) built for armv7l-linux

sudo apt-get install -y libnet-sip-perl
Paketlisten werden gelesen... Fertig
Abh▒ngigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
libnet-sip-perl ist schon die neueste Version (0.808-1).
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.


Ist damit das Paket auch für 5.20.3 installiert ? Nur irgendwie lässt sich dann sip nicht installieren.

Wzut

Der Satz im wiki stammt noch aus einer Zeit da die Debian Pakete uralte Net::SIP Versionen hatten und man unbedingt die aktuelle via CPAN installieren musste, wie ich aber bereits schrieb ist das heute i.d.R. nicht mehr der Fall.

ZitatNur irgendwie lässt sich dann sip nicht installieren.
den Satz verstehe ich nicht, welche Fehler hast du denn im Log wenn du das Modul mittels define einbindest ?
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

en-trust

Ok, also NET::Sip habe ich installiert und auch ein define mySIP erstellt. Auf der FritzBox habe ich ein Gerät namens Fhem eingerichtet mit dem user fhemcall und einem PW, welches ich in fhem selbst mit set eingetragen habe. Dennoch passiert bei set mySIP call +4917... 30 !Alarm Alarm Alarm nichts.

Hier mal mein list...
Internals:
   CPID       28500
   FUUID      5f85af20-f33f-e9d9-6cd2-b369dd88f85b5bc0
   NAME       mySIP
   NOTIFYDEV  myT2S
   NR         1378
   NTFY_ORDER 50-mySIP
   STATE      initialized
   TYPE       SIP
   VERSION    V1.92 / 21.03.2020
   lastnr     +4917...
   READINGS:
     2020-10-15 07:48:10   call            +4917...
     2020-10-15 07:48:10   call_state      invite
     2020-10-15 07:31:40   caller          fetch
     2020-10-15 07:48:10   listen_alive    no
     2020-10-13 15:44:05   state           initialized
   helper:
     CALL       mySIP|+4917...|30|cache/f9d0d2049d78964ae56a2397c246ce59.alaw|0|0
     CALL_NR    +4917...
     CALL_START 1602740890
     CALL_TYPE  out
     CALL_PID:
       abortArg   
       abortFn   
       arg        mySIP|+4917...|30|cache/f9d0d2049d78964ae56a2397c246ce59.alaw|0
       bc_pid     5554
       finishFn   SIP_CALLDone
       fn         SIP_CALLStart
       pid        DEAD:28500
       timeout   
Attributes:
   T2S_Device myT2S
   group      FritzBox
   history_file ./log/mySIP.sip
   history_size 0
   room       System->Fritzbox
   sip_dtmf_loop once
   sip_dtmf_send audio
   sip_dtmf_size 2
   sip_elbc   yes
   sip_from   sip:fhemcall@fritz.box
   sip_ip     192.xxx.xxx.xx
   sip_listen dtmf
   sip_registrar fritz.box
   sip_ringtime 3
   sip_user   sip:fhemcall@fritz.box


versuch ich dann erneute dieses set abzuschicken, kommt...

there is already a call activ for target +4917...

Wzut

#1091
auch dir kann ich da nur die übliche Antwort geben : verbose 5 am Device setzen und einen neuen Versuch starten ggf. mit einem anderen Ziel oder FHEM zuvor neu starten. Log posten, da sollte dann schon recht genau stehen was da so läuft bzw. eben nicht.

Und noch der Standart Tipp : nicht sip:fhemcall@fritz.box nutzen sondern sip:fhemcall@192.x.y.z d.h. die IP der Fritte
sip_ip 192.xxx.xxx.xx , dahinter versteckt sich die FHEM IP ?
hast du statt der +4917... auch mal 017... versucht ?

Edit :
sip_user   sip:fhemcall@fritz.box , das ist falsch : sip_user fhemcall
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

en-trust

Zunächst habe ich mal auf sip:fhemcall@192.x.y.z umgestellt. Ja, unter der sip_ip steht meine Ip worauf fhem erreichbar ist.

Zitatsip:fhemcall@fritz.box , das ist falsch : sip_user fhemcall
...angepasst.

So und verbose sagte mir dann noch...
cannot create resolver: Net::DNS not available?: Can't locate Net/DNS.pm in @INC (you may need to install the Net::DNS module) (@INC contains: ./FHEM/lib ./lib ./FHEM . /opt/perlbrew/perls/perl-5.20.3/lib/site_perl/5.20.3/armv7l-linux /opt/perlbrew/perls/perl-5.20.3/lib/site_perl/5.20.3 /opt/perlbrew/perls/perl-5.20.3/lib/5.20.3/armv7l-linux /opt/perlbrew/perls/perl-5.20.3/lib/5.20.3) at /opt/perlbrew/perls/perl-5.20.3/lib/site_perl/5.20.3/Net/SIP/Dispatcher.pm line 1164.

Aber das Modul ist installiert...
pi@raspberrypi:/opt/perlbrew/perls/perl-5.20.3/bin $ perlbrew use perl-5.20.3

A sub-shell is launched with perl-5.20.3 as the activated perl. Run 'exit' to finish it.

pi@raspberrypi:/opt/perlbrew/perls/perl-5.20.3/bin $ cpan
Terminal does not support AddHistory.

cpan shell -- CPAN exploration and modules installation (v2.05)
Enter 'h' for help.

cpan[1]> install Net::DNS                                                       Reading '/home/pi/.cpan/Metadata'                                                 Database was generated on Fri, 16 Oct 2020 03:56:00 GMT                       Net::DNS is up to date (1.27).

Wzut

gib doch mal in der shell ein :
find / -name DNS.pm
im Normalfall ergibt das /usr/share/perl5/Net/DNS.pm
Bei dir müssten aber Treffer im Perl Suchpfad sein da wo auch Net::SIP gefunden wird:
/opt/perlbrew/perls/perl-5.20.3/lib/site_perl/5.20.3/Net/

Aber aus Neugier mal ne Ketzerfrage : Warum tust du dir alles mit perlbrew an ? und dann noch 5.20 ?



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

plin

Eine Installation mittels apt-get wird eher die Standard-Pfade nutzen => /usr/share/perl5/Net/DNS.pm

Wieso sucht FHEM überhaupt in den div. perlbrew-Pfaden?
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