Hauptmenü

Modul 96_SIP

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

Vorheriges Thema - Nächstes Thema

Muschelpuster

Zitat von: Wzut am 04 Dezember 2017, 19:30:12Ich denke da brauch gar nicht groß im Modul suchen sondern kann gleich wieder tcpdump und Wireshark anwerfen. U.u. muss mir dann später Muschelpuster noch bei der Auswertung helfen.
Sag Bescheid - ich helfe im Rahmen meiner bescheidenen Möglichkeiten gerne weiter.

offene Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

plin

Es wird immer undurchsichtiger. Ich habe jetzt einen ganzen Satz von Testcalls gegen meine FritzFonApp abgesetzt:


Durchlauf 1
sip_force_max nicht gesetzt
sip_force_interval nicht gesetzt
**622 10 &15,3,0
1. Anruf angenommen
=> kein call_success = 1


Durchlauf 2
sip_force_max = 5
sip_force_interval nicht gesetzt
**622 10 &15,3,0
1. Anruf angenommen
=> kein call_success = 1
nach 3 Versuchen ist Schluss

Durchlauf 3
sip_force_max = 5
sip_force_interval = 60
**622 10 &15,3,0
1. Anruf angenommen
=> kein call_success = 1
nach 3 Versuchen a 15 Sekunden ist Schluss

Durchlauf 4
sip_force_max = 5
sip_force_interval = 60
**622 10 &15,3
1. Anruf angenommen
=> kein call_success = 1
nach 3 Versuchen a 15 Sekunden ist Schluss

Durchlauf 5
sip_force_max = 5
sip_force_interval = 60
**622 10 &15
1. Anruf angenommen
=> kein call_success = 1
nach 5 Versuchen a 15 Sekunden ist Schluss

Durchlauf 6
sip_force_max = 5
sip_force_interval = 15
**622 10 /opt/fhem/IhrCodeBitte.alaw &
1. Anruf angenommen
=> call_success = 1
nach 1 Versuch ist Schluss

Durchlauf 7
sip_force_max = 5
sip_force_interval = 15
**622 10 /opt/fhem/IhrCodeBitte.alaw &10,5,0
1. Anruf angenommen
=> call_success = 1
nach 1 Versuch ist Schluss

Durchlauf 8
sip_force_max = 5
sip_force_interval = 15
**622 10 /opt/fhem/IhrCodeBitte.alaw &10,5,0
3. Anruf angenommen
=> call_success = 1
nach 3 Versuchen ist Schluss

Durchlauf 8
sip_force_max = 5
sip_force_interval = 15
**622 10 -123 &10,5,0
1. Anruf angenommen
=> call_success = 1
nach 1 Versuch ist Schluss

Durchlauf 9
sip_force_max nicht gesetzt
sip_force_interval = 15
**622 10 -123 &10,5,0
1. Anruf angenommen
=> call_success = 1
nach 1 Versuch ist Schluss

Durchlauf 10
sip_force_max nicht gesetzt
sip_force_interval nicht gesetzt
**622 10 -123 &10,5,0
1. Anruf angenommen
=> call_success = 1
nach 1 Versuch ist Schluss


Gestern hatte CALL **622 10 -123 &10,5,0 nicht funktioniert, heute schon. Selbst CALL **622 5 -123 &60,5,0 funktioniert.

mmmh, gestern hat's bei uns geschneit ...
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

Also de Hauptgrund für die V1.7 war ja das Thema Weiterklingeln trotz Timeout - wenn ich Niels Feedback richtig lese sollte das in Verbindung mit 0.812 erschlagen sein ?
Dann haten wir das Problem der belegten Ports mit HM RPC Server, auch da hat Reinhard nichts mehr zu geschrieben, also erledigt wenn sip_port nicht gesetzt ist ?
MadMax-FHEM hatte mit stactrace Gemecker wegen nicht vorhandenem CALL_START, Feedback steht noch aus.

und last but not least eine Erweiterung von Force, nur hier scheint es komische Effekte zu geben die aber teilsweise nicht reproduzierbar sind.
Wenn die beiden fehlenden Attribute sip_force da wirklich einen Einflus haben sollten setze ich sie halt ersteinmal im Modul mit Gewalt, denn es stört nicht wenn sie vorhanden sind aber nicht genutzt werden.

@Reinhard, mit dem DOIF bin ich überfragt da ich es nicht nutze. Mit Sicherheit gibt es da eine Möglichkeit das Komma zu maskieren, bitte mal die Gurus im DOIF Forum fragen. Da die Parameter * und & optional sind kann sie zwar der User weglassen, aber vom Modul werden sie immer erzeugt. Sieht man im verbose 4 Log bei den Call Zeilen wo das typische |0|0 anhängt.   
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Muschelpuster

Zitat von: Wzut am 05 Dezember 2017, 07:46:32
Also der Hauptgrund für die V1.7 war ja das Thema Weiterklingeln trotz Timeout - wenn ich Niels Feedback richtig lese sollte das in Verbindung mit 0.812 erschlagen sein ?
Jein - das Net::SIP 0.812 behebt einen unsauberen Verbindungsaufbau bei Digest Authentication. Damit war das Problem 'Weiterklingeln' ja nicht erschlagen - der Verbindungsaufbau sah nur sauberer aus. Ich denke, selbst mit SIP:Net 0.808 wird das Weiterklingeln vermutlich mit Modul 96_SIP V1.7 erschlagen sein. Aber es schadet natürlich nicht, beide Komponenten aktuell zu haben  ;)

aktuelle Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

heinerwm

Zitat von: Muschelpuster am 04 Dezember 2017, 21:47:30
Also mal zurück zu den Basics: Der unbeantwortete Call wird jetzt sauber nach der eingestellten Zeit abgebrochen. Jetzt ist also auch meine Fritte mit dem Protokoll soweit zufrieden.
Damit sollte das Problem wohl auch bei allen anderen Betroffenen gelöst sein.

Guten Morgen,
leider ist bei mir das Problem nicht gelöst, vielmehr kommt bei mir gar kein Anruf mehr an. So bin ich vorgegangen: ich habe das SIP-modul von Wzut (Antwort #465) installiert und Net::SIP auf 0.812 aktualisiert. Habe ich da etwas vergessen oder falsch gemacht?

Ausschnitt aus der Logdatei:

2017.12.05 10:24:01 5: Cmd: >set FS20_50e000 on<
2017.12.05 10:24:01 3: FS20 set FS20_50e000 on
2017.12.05 10:24:01 5: CUL_0 sending F50e00011
2017.12.05 10:24:01 5: SW: F50e00011
2017.12.05 10:24:01 5: Starting notify loop for FS20_50e000, 1 event(s), first is on
2017.12.05 10:24:01 5: createNotifyHash
2017.12.05 10:24:01 5: Triggering Klingel
2017.12.05 10:24:01 4: Klingel exec set FB_Klingel call **613
2017.12.05 10:24:01 5: Cmd: >set FB_Klingel call **613<
2017.12.05 10:24:01 4: FB_Klingel, calling **613, ringtime: 30 , no message
2017.12.05 10:24:01 4: FB_Klingel, FB_Klingel|**613|30||0
2017.12.05 10:24:01 5: Loading ./FHEM/98_telnet.pm
2017.12.05 10:24:02 3: telnetForBlockingFn_1512465841: port 46159 opened
2017.12.05 10:24:02 5: Starting notify loop for global, 1 event(s), first is DEFINED telnetForBlockingFn_1512465841
2017.12.05 10:24:02 5: createNotifyHash
2017.12.05 10:24:02 5: End notify loop for global
2017.12.05 10:24:02 4: BlockingCall (SIP_CALLStart): created child (19815), uses telnetForBlockingFn_1512465841 to connect back
2017.12.05 10:24:02 4: FB_Klingel, call -> FB_Klingel|**613|30||0|0
2017.12.05 10:24:02 5: FB_Klingel, call has pid 19815
2017.12.05 10:24:02 5: Starting notify loop for FB_Klingel, 2 event(s), first is call_state: invite
2017.12.05 10:24:02 4: FB_Klingel[19815], my parent is 19814
2017.12.05 10:24:02 4: FB_Klingel[19815], using Leg.pm to find a free port
2017.12.05 10:24:02 5: End notify loop for FB_Klingel
2017.12.05 10:24:02 5: End notify loop for FS20_50e000
2017.12.05 10:24:02 4: WEB: /fhem?cmd.FS20_50e000=set%20FS20_50e000%20on&room=all&XHR=1&fwcsrf=csrf_141532236973390&fw_id=54 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2017.12.05 10:24:02 4: WEB_192.168.180.22_49949 GET /fhem/images/default/FS20.on.png; BUFLEN:0
2017.12.05 10:24:02 4: WEB_192.168.180.22_49949 => 304 Not Modified
2017.12.05 10:24:03 4: Connection accepted from telnetForBlockingFn_1512465841_127.0.0.1_51104
2017.12.05 10:24:03 5: Cmd: >{BlockingStart('1')}<
2017.12.05 10:24:03 5: Cmd: >{SIP_CALLDone('FB_Klingel|0|CallRegister: Failed with code 404')}<
2017.12.05 10:24:03 4: FB_Klingel, CALLDone -> FB_Klingel|0|CallRegister: Failed with code 404
2017.12.05 10:24:03 5: Starting notify loop for FB_Klingel, 7 event(s), first is call: done
2017.12.05 10:24:03 5: End notify loop for FB_Klingel
2017.12.05 10:24:03 5: FB_Klingel, fifo is empty
2017.12.05 10:24:03 5: FB_Klingel, no elbc
2017.12.05 10:24:09 4: WEB_192.168.180.22_49949 POST /fhem?cmd.FS20_50e000=set%20FS20_50e000%20off&room=all&XHR=1&fwcsrf=csrf_141532236973390&fw_id=54; BUFLEN:0
2017.12.05 10:24:09 5: Cmd: >set FS20_50e000 off<
2017.12.05 10:24:09 3: FS20 set FS20_50e000 off
2017.12.05 10:24:09 5: CUL_0 sending F50e00000
2017.12.05 10:24:09 5: SW: F50e00000
2017.12.05 10:24:09 5: Starting notify loop for FS20_50e000, 1 event(s), first is off
2017.12.05 10:24:09 5: End notify loop for FS20_50e000


Ausschnitt aus der fhem.cfg:

define FB_Klingel SIP
attr FB_Klingel sip_dtmf_loop once
attr FB_Klingel sip_dtmf_send audio
attr FB_Klingel sip_dtmf_size 2
attr FB_Klingel sip_elbc yes
attr FB_Klingel sip_from sip:622@fritz.box
attr FB_Klingel sip_ip 192.168.180.21
attr FB_Klingel sip_listen none
attr FB_Klingel sip_registrar fritz.box
attr FB_Klingel sip_ringtime 4
attr FB_Klingel sip_user 622
define Klingel notify FS20_50e000:on set FB_Klingel call **613


Was ist zu tun?

Herzliche Grüße

Heiner

Wzut

@Heiner, leider ist dein Logabschnitt nicht sehr übersichtlich, du hast vermutlich verbose  5 in global gesetzt und nicht im SIP Modul. Dadurch steht viel Zeug im Log was aber hier nicht von Interesse , daher bitte global verbose 3 und Modul verbose auf 5. Allerdings sehe ich in deinem Log Abschnitt den Fehler 404 und das hatten wir hier schon oft. In der FB hat sich im Laufe der Zeit einiges getan zum Thema Userkennung und Passwort. Bei der Userkennung sehe ich noch die einfache 622. Daher bitte in der FB nachschauen zum Thema Username und auch darauf achten das das Passwort min 8 Zeichen hat und von der FB als stark eingestuft wird.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

heinerwm

Zitat von: Wzut am 05 Dezember 2017, 11:39:01
@Heiner, leider ist dein Logabschnitt nicht sehr übersichtlich, du hast vermutlich verbose  5 in global gesetzt und nicht im SIP Modul. Dadurch steht viel Zeug im Log was aber hier nicht von Interesse , daher bitte global verbose 3 und Modul verbose auf 5. Allerdings sehe ich in deinem Log Abschnitt den Fehler 404 und das hatten wir hier schon oft. In der FB hat sich im Laufe der Zeit einiges getan zum Thema Userkennung und Passwort. Bei der Userkennung sehe ich noch die einfache 622. Daher bitte in der FB nachschauen zum Thema Username und auch darauf achten das das Passwort min 8 Zeichen hat und von der FB als stark eingestuft wird.

Sorry, lieber Wzut,

ich hatte versehentlich den Inhalt einer alten externen Backup-Datei in die fhem.cfg kopiert. Jetzt läuft alles wie erwartet. Herzlichen Sank für deine schnelle und kompetente Hilfe.

Gruß Heiner

Wzut

D.h. du bist auch so ein User wie Muschelpuster bei dem die Fritte ewig weitergeklingelt hat ?
und nun hört sie nach max. Time damit auf ?
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

heinerwm

Zitat von: Wzut am 05 Dezember 2017, 16:57:05
D.h. du bist auch so ein User wie Muschelpuster bei dem die Fritte ewig weitergeklingelt hat ?
und nun hört sie nach max. Time damit auf ?

Ja, das bin ich. Die FB hört jetzt bei max.Time 4 nach 2x Klingeln auf (Fritz!Fon C5, M2, FritzFon app auf iphone). Alles bestens!

Gruß Heiner

Elektrolurch

Hallo,

bei mir läuft jetzt das sip-Modul und es kann anrufen. Aber ich habe noch ein Problem mit TEXT2SPEECH, bzw. der Anbindung an das sip-Modul.
Fragen:
1. mit define ttx TEXT2SPEECH default
werden dann von tts nur mp3-Dateien erzeugt? Und wo liegen die dann?
Leider steht dazu im wiki vom TTS rein gar nichts.

2. Wie muss ich die Attribute beim sip-Modul setzen, damit tts angebunden wird?
Vielleicht kann mir ja jemand seine funktionierende Konfig dazu hier posten. Die Suche dazu spuckt leider nichts aus.
Danke.

Elektrolurch
configDB und Windows befreite Zone!

Decki

Gleiches Problem bei mir.
Bei tts kommen nur Pieptöne. Welche samplingrate muss eingestellt werden für u-law Codec?
Raspi 2 im Schaltschrank, USB IR Lesekopf am EHz21, Gaszähler mit Reedkontakt, Jeelink,  16 FS20 Aktoren,  3 Ufos für LED, 11 FS20 Rolladenaktore, AMAD 4.0 mit Sprachausgabe, Esp12 mit EspEasy

Wzut

#491
https://wiki.fhem.de/wiki/SIP-Client
ZitatFalls Ihr Text2Speech verwenden wollt
Vorbereitung
SoX installieren
sudo apt-get install sox
mp3 Unterstützung für SoX installieren
sudo apt-get install libsox-fmt-mp3
Text2Speech als Server Device anlegen
define <name z.B myT2S> text2speech none
beim SIP Device dieses Server Device im Attribut T2S_Device eintragen

@Elektrolurch , beachte das none statt deinem default :)

@Decki :
ZitatAnmerkung zum Audioformat
Audiofiles müssen im alaw- oder ulaw-Format vorliegen und können mit folgendem Command erzeugt werden
sox <file>.wav -t raw -r 8000 -c 1 -e a-law <file>.alaw
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Rewe2000

Hallo Elektrolurch,

anbei meine funktionierende Konfiguration zu SIP und Text2Speech.
Die Module, welche "Wzut" beschrieben hat müssen unbedingt alle geladen werden, einfach genau nach WIKI vorgehen, ist eigentlich sehr gut beschrieben.

Die erzeugten MP3-Dateien befinden sich in dem Verzeichnis, welches du unter "TTS_CacheFileDir" eingestellt hast. Ich habe mir das Verzeichnis am Raspi erst angelegt, die gleichen Rechte wie Fhem gegeben und dann Text2Speech bekannt gemacht. Es gibt auch ein Standardverzeichnis der MP3-Dateien, Ich habe es nicht sofort gefunden, deshalb der "Umweg" über das eigene Verzeichnis.

Anbei die Konfiguration von mir:
SIP-Device:
defmod TelefonClient SIP
attr TelefonClient DbLogExclude .*
attr TelefonClient T2S_Device Text2Speech
attr TelefonClient audio_converter sox
attr TelefonClient room Kommunikation
attr TelefonClient sip_call_audio_delay 1.75
attr TelefonClient sip_dtmf_loop once
attr TelefonClient sip_dtmf_send audio
attr TelefonClient sip_dtmf_size 2
attr TelefonClient sip_elbc yes
attr TelefonClient sip_force_interval 300
attr TelefonClient sip_force_max 5
attr TelefonClient sip_from sip:Anschluss621@192.168.1.13
attr TelefonClient sip_ip 192.168.1.33
attr TelefonClient sip_listen none
attr TelefonClient sip_registrar 192.168.1.13
attr TelefonClient sip_ringtime 3
attr TelefonClient sip_user Anschluss621
attr TelefonClient verbose 5


Text2Speech:
defmod Text2Speech Text2Speech none
attr Text2Speech DbLogExclude .*
attr Text2Speech TTS_CacheFileDir /opt/fhem/temp
attr Text2Speech TTS_Language Deutsch
attr Text2Speech group Multimedia
attr Text2Speech room Kommunikation


Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

Rewe2000

Hallo,

noch etwas ist mir aufgefallen:
Wird der Befehlsstring set TelefonClient call **52 30 !Hallo dies ist ein Test ich spreche dir hier etwas vor nur um Zeit zu gewinnen *3 &300,5

in die Fhem Kommandozeile eingegeben, und der Ruf beim ersten Anruf angenommen und bei laufender Ansage aufgelegt.

So wird "call_state = peer_hangup" und die Anrufe werden zwingend 5 mal wiederholt.
Das Fehlverhalten tritt nur auf, wenn der Angerufene als erster, vor Ansageende auflegt. Höre ich den Text auch beim ersten Anruf bis zum Ende an, so wird "call_success = 1" und "call_state = ok"
Ist das bei euch auch so?
Oder es hängt bei mir mit dem "alten" debian SIP Modul zusammen.
Bei den Tests am Montag, ist es mir nicht aufgefallen, da der Ansagetext so kurz war, dass immer SIP vor mir aufgelegt hatte.

@plin
Ist dieses sehr kuriose und unerklärliche Verhalten etwa bei dir damit zu erklären, wer bei kurzen Ansagetexten als erster auflegt?

Die Konfiguration meines SIP-Device ist in https://forum.fhem.de/index.php/topic,67443.msg726974.html#msg726974 zu sehen.

Noch ein Kuriosum:
der Ansagetext:
set TelefonClient call **52 30 !Hallo hier spricht deine Waschmaschine mit dir und will dir etwas sagen was dir wahrscheinlich nicht gefallen wird *3 &300,5

Wird nach Waschmaschine und noch vor dem und im Text beendet, aber "*nn" mal wiederholt.

der Ansagetext:
set TelefonClient call **52 30 !Hallo hier spricht deine Waschmaschine mit dir ich will dir etwas sagen was dir wahrscheinlich nicht gefallen wird *3 &300,5

Der Text wird korrekt vorgelesen, und auch "*nn" mal wiederholt.

Schön lagsam glaube ich wieder an den Weihnachtsmann :)
Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

plin

Zitat von: Rewe2000 am 06 Dezember 2017, 19:54:43
Ist das bei euch auch so?
Oder es hängt bei mir mit dem "alten" debian SIP Modul zusammen.
tja, so ist es halt beim Force. Man muss sich die ganze Geschichte anhören. Die Nachricht MUSS ankommen.

Zitat von: Rewe2000 am 06 Dezember 2017, 19:54:43
@plin
Ist dieses sehr kuriose und unerklärliche Verhalten etwa bei dir damit zu erklären, wer bei kurzen Ansagetexten als erster auflegt?
Ich denke nicht. Ich muss die verschiedenen möglichen Szenarien noch mal komplett durchspielen. Da kommt einiges zusammen:
- sip_dtmf_send als audio/rfc2833
- DTMF, Audiofile oder Textnachricht
- sip_force-Attribute verwenden oder die &aa,bb,cc-Syntax
und das das auch noch in verschiedenen Kombinationen.
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