Hauptmenü

Modul 96_SIP

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

Vorheriges Thema - Nächstes Thema

Muschelpuster

Zitat von: plin am 18 Oktober 2021, 18:37:35
Was will uns dieser Post sagen?
Nur, das es IMHO keine gute Idee ist über eine Implementierung nachzudenken.

Zitat von: plin am 18 Oktober 2021, 18:37:35Hast Du das Modul im Einsatz???
Zu Hause nein, aber bei meiner Mutter leistet es gute Dienste, auch wenn es nur die Türklingel ,verstärkt'.

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

Zitat von: Muschelpuster am 18 Oktober 2021, 20:32:20
Nur, das es IMHO keine gute Idee ist über eine Implementierung nachzudenken.
Das Modul kann schon

  • einen Anruf absetzen und dem Angerufenen DTMF-Töne vorspielen
  • auf einen Anruf warten/entgegennehmen, DTMF-Töne auswerten und diese in einem Reading speichern
Das "drüber nachdenken" in puncto anrufen, etwas abspielen und dann auf DTMF-Eingaben warten hapert schlicht und einfach am Perl-Modul Net::SIP. Es gibt einige mitgelieferte Beispiele, aber die Dokumentation ist nicht sooo aussagekräftig, dass man gerade mal nebenbei den gewünschten Use Case realisieren kann. Das ist mit viel Tüftelei (aka try & error) verbunden ...
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

tremichl

Erstmals vielen Dank an die Modulentwickler! Gemäß WIKI eingerichtet und funktioniert.
Gerne hätte ich eine Funktion "Anruf tätigen und DTMF-Töne empfangen" realisiert. FHEM SIP ist in der Fritzbox als IP-Türsprechanlage eingerichtet. Klingeltaste (ein RASPI GPIO) löst über das SIP Modul einen Anruf auf eine Rufgruppe (AVM DECT-Telefone) aus. Das funktioniert. Vom Telefon aus könnte man den einen Türöffner durch senden von DTMF Tönen betätigen. Diese Tonfolge möchte ich als Reading weiter verarbeiten. Durch lesen und "probieren" ist mir das bisher nicht gelungen. Das im WIKI beschrieben Reading "dtmf: Die via Tonwahl (DTMF) eingegebenen Zahlen" taucht bei mir nicht auf.

Daher meine Frage: Kann dass das Modul bzw. was mache ich falsch und wie müsste die Konfiguration dafür aussehen?

Danke, Michael

Internals:
   FUUID      6163ef83-f33f-c76d-9b08-cabf37a4c409f3d2
   NAME       FHEM_SIP
   NOTIFYDEV  global
   NR         455
   NTFY_ORDER 50-FHEM
   STATE      initialized
   TYPE       SIP
   VERSION    V1.92 / 21.03.2020
   READINGS:
     2021-11-12 18:05:05   call            done
     2021-11-12 18:05:05   call_attempt    0
     2021-11-12 18:05:05   call_state      timeout
     2021-11-12 18:05:05   call_success    0
     2021-11-12 18:05:05   call_time       2
     2021-11-06 18:11:23   caller          reject
     2021-11-12 18:04:52   expire          300
     2021-11-12 11:15:33   last_error      ListenRegister: Failed with code 401
     2021-11-12 18:04:52   listen_alive    10010
     2021-11-12 18:05:05   state           initialized
   helper:
     CALL_BYE   timeout
     CALL_ERROR 1
     CALL_NAME  unknown
     CALL_NR    11
     CALL_START 1636736692
     CALL_TIME  2
     CALL_TYPE  out
Attributes:
   history_file ./log/FHEM.sip
   history_size 0
   sip_dtmf_loop once
   sip_dtmf_send rfc2833
   sip_dtmf_size 2
   sip_elbc   no
   sip_from   sip:FHEMSipClient@10.152.52.254
   sip_ip     10.152.52.111
   sip_listen dtmf
   sip_registrar 10.152.52.254
   sip_ringtime 3
   sip_user   FHEMSipClient
   sip_waittime 2


   
Wir haben keine Ahnung davon, was wir nicht wissen

plin

Zitat von: tremichl am 12 November 2021, 18:32:47
Gerne hätte ich eine Funktion "Anruf tätigen und DTMF-Töne empfangen" realisiert. 
Daher meine Frage: Kann dass das Modul bzw. was mache ich falsch und wie müsste die Konfiguration dafür aussehen?

Hallo Michael,

das Modul bietet diese Funktion nicht an.

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

tremichl

Danke für die Info! Schade.
Im Prinzip wäre ja im Modul schon alles dafür notwendige vorhanden wie z.B. DTMF-Auswertung und Ruf-Auslösung. Wäre diese Funktion mit vertretbarem Aufwand machbar? Die Konstellation Fritz-Box, FHEM, Türklingel/Türöffner ist sicher öfter gegeben.

LG, Michael
Wir haben keine Ahnung davon, was wir nicht wissen

plin

Zitat von: tremichl am 13 November 2021, 12:08:38
Im Prinzip wäre ja im Modul schon alles dafür notwendige vorhanden wie z.B. DTMF-Auswertung und Ruf-Auslösung. Wäre diese Funktion mit vertretbarem Aufwand machbar? Die Konstellation Fritz-Box, FHEM, Türklingel/Türöffner ist sicher öfter gegeben.
Ja, so hat alles angefangen. Aber dann stelle ich mir die Frage wie der Prozess aussehen soll? Kannst Du den mal beschreiben.
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

tremichl

Hallo Peter!

Das wäre der Wunsch:

für Türklingel: Modul baut einen Anruf auf (zB über ein notify) löscht DTMF Reading, wartet auf Rufannahme und beendet diesen nach einer vorgegeben Zeit wenn Ruf nicht angenommen wird (das funktioniert ja schon)

für Türöffner: Nach Rufannahme der Gegenstelle wartet Modul eine vorgegebene Zeit auf z.B. 2 bis 4 DTMF Signale, dekodiert diese und befüllt ein DTMF Reading und trennt danach die Verbindung.

Im Grunde "Anruf tätigen und DTMF-Töne empfangen". Das wäre eine elegante Möglichkeit AVM DECT Telefone nicht nur als verlängerte Türklingel, sondern auch für den Türöffner benutzen zu können.

LG, Michael
Wir haben keine Ahnung davon, was wir nicht wissen

plin

#1192
Zitat von: tremichl am 13 November 2021, 17:14:55
Hallo Peter!

Das wäre der Wunsch:

für Türklingel: Modul baut einen Anruf auf (zB über ein notify) löscht DTMF Reading, wartet auf Rufannahme und beendet diesen nach einer vorgegeben Zeit wenn Ruf nicht angenommen wird (das funktioniert ja schon)

für Türöffner: Nach Rufannahme der Gegenstelle wartet Modul eine vorgegebene Zeit auf z.B. 2 bis 4 DTMF Signale, dekodiert diese und befüllt ein DTMF Reading und trennt danach die Verbindung.

Im Grunde "Anruf tätigen und DTMF-Töne empfangen". Das wäre eine elegante Möglichkeit AVM DECT Telefone nicht nur als verlängerte Türklingel, sondern auch für den Türöffner benutzen zu können.

LG, Michael

mmhh, jetzt hast Du beschrieben was Du haben möchtest, aber nicht wie der Gesamtablauf aussehen soll und wie das zugehörige Umfeld aussieht.

Wenn ich das richtig sehe möchtest Du

  • jemand klingelt an der Tür
  • Welche Hardware nutzt Du hier? Eine Doorline?
  • die Fritzbox leitet den Anruf von **11 an Telefone weiter (nur das SIP-Modul oder auch andere interne Telefone?)
  • Was macht das SIP-Modul jetzt wenn's klingelt?
  • dann soll das SIP-Modul jemanden anrufen (intern oder extern?)
  • der Angerufene tippt den DTMF-Code für das Öffnen des Türschließers ein
  • Ist der Türöffner an die Klingel angeschlossen oder ein separates Teil?
  • die Tür öffnet sich für den Menschen vor der Tür
Ist das der gedachte Ablauf???

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

tremichl

ja, ich habe der Einfachheit halber nur beschrieben was das SIP Modul machen soll. Hier der gesamte Vorgang:


  • jemand klingelt an der Tür (ein Taster an einem RPI GPIO)
  • ein notify löst einen Anruf über das SIP Modul (eingebunden in der Fritzbox als Türsprechanlage) aus (set FHEM_SIP call 11 13), DECT Telefone läuten und zeigen ein Bild der Haustür-CAM (Dahua) an, Sonos Lautsprecher geben über speak ein Klingeln aus, ein CAM-Snapshot wird gemacht und per E-Mail verschickt und an einem Tablet öffnet sich für 30 Sekunden ein Fenster mit dem Bild der Haustür-CAM
  • am DECT Telefon gibt es eine Taste "ÖFFNEN" diese nimmt den Anruf an und sendet eine Sequenz DTMF Töne (konfigurierbar in der Fritzbox/Türsprechanlage)
  • das SIP-Modul soll die DTMF Töne auswerten und in ein Reading schreiben.
  • ein notify nützt diese Reading um einen Türöffner (hängt an einem RPI GPIO) zu betätigen
  • die Tür öffnet sich

Die letzten 3 Punkte fehlen mir noch. An Hardware gibt es an der Tür einen Klingeltaster, einen magnetischen Türöffner, und eine IP-CAM. Bisher war eine analoge Türsprechstelle dran, die ich auf diesem Weg teilweise ersetzen möchte. Auf eine Sprechverbindung wird verzichtet.

Danke

LG, Michael


Wir haben keine Ahnung davon, was wir nicht wissen

hansdepp

Zitat von: hansdepp am 04 Mai 2021, 22:33:52
Ich hab ein Problem, das mich jetzt schon länger beschäftigt. Trotz intensiver Suche bin ich noch nicht dahinter gekommen, was das Problem ist.
Es passiert sporadisch, dass bei einem Anruf, den das Modul tätigt, der Status in einem "timeout" endet, obwohl der Anruf korrekt angenommen wurde. Das hat zur Folge, dass der Anruf nach der eingestellten Zeit wiederholt wird.
Und nicht entgegengenomme Anrufe enden korrekterweiße mit dem Status "no answer"

Zitat von: plin am 07 Mai 2021, 20:38:32
@wzut: Eine Alternative wäre
use Net::SIP::Debug '50';
use Net::SIP::Debug qw( Net::SIP*=50 Registrar=1 );

Wenn wir denn das was im Log steht verstehen  ;D

So wie es aussieht, scheint das Rätsel gelöst zu sein. Schuld war die Firewall bzw. derjenige der sie konfiguriert hat (also ich :-[ )
Als ich mir das Log-File (danke für den Tip) etwas näher angeschaut habe und die verwendeten Ports und Protokolle gesehen habe, dämmerte es mir.

FHEM läuft bei mir in einer VM unter Proxmox und SIP wird nur für ausgehende Anrufe verwendet. In den Firewallregeln habe ich den Zugriff auf das Notwendige beschränkt. Leider hatte ich nicht an die SIP-Geschichte gedacht. Gemeinerweise hat es ja grundsätzlich auch funktioniert, nur eben nicht immer. Das war anscheinend abhängig davon, wie schnell der Anruf angenommen wurde, wie sich jetzt im Nachhinein herausgestellt hat. Der Verbindungsaufbau läuft nämlich per UDP. Wenn es zu lange dauert, bis das Telefonat angenommen wird, dann "vergisst" die Firewall die Verbindung und das eingehende UDP Paket, welches die Anrufannahme signalisieren sollte, kam nicht mehr durch. Das ist zumindest meine Interpretation, zumal UDP ja eigentlich ein verbindungsloses Protokoll ist. Bei meinen Testanrufen hat es immer funktioniert, weil ich da das Telefonat natürlich ohne große Wartezeit angenommen hatte.
Seitdem ich in der Firewall jetzt grundsätzlich alles freigegeben habe, was als Absender die Fritzbox hat, funktioniert es seitdem ohne einen einzigen Timeout.

Also nochmal Danke für eure Hilfe und an die Entwickler für dieses Modul! Und natürlich frohe Weihnachten!

fuchsnase

Hallo,

ich möchte mit einem SIP-Client nacheinander mehrere Anrufe absetzen. Bisher habe ich für 2 Anrufe 2 SIP-Clients benutzt. Hier das Notify, das das macht:

Internals:
   CFGFN     
   DEF        Ei_Feuer_Warnung:.* set WasserTerrasse $EVENT;set Warnmeldung call **610* 60 !Achtung! Feuer gemeldet;set Ei_Alarm $EVENT;set Telefonmeldung call **611* 60 !Achtung! Feuer gemeldet;
   FUUID      62684e34-f33f-2df7-6cb2-2b9184198307ff29
   NAME       n_Feuerwarnung
   NOTIFYDEV  Ei_Feuer_Warnung
   NR         593
   NTFY_ORDER 50-n_Feuerwarnung
   REGEXP     Ei_Feuer_Warnung:.*
   STATE      2022-04-27 00:41:47
   TRIGGERTIME 1651012907.69629
   TYPE       notify
   READINGS:
     2022-04-27 00:41:14   state           active
     2022-04-27 00:41:47   triggeredByDev  Ei_Feuer_Warnung
     2022-04-27 00:41:47   triggeredByEvent Longpress: off
Attributes:
   room       Gefahrenmelder


Benutze ich nur denselben SIP-Client, dann wird nur der letzte Aufruf ausgeführt.

Welchen Denkfehler habe ich hier gemacht?

Wzut

Nun der Client soll die 610 und die 611 anrufen, das geht aber auf keinen Fall zur gleichen Zeit sondern nur nacheinander !
D.h. dir fehlt zwischen de beiden sein sleep das so lange sein muß wie der erste Anruf maximal dauert.

Und aus reiner Neugier : Warum haben bei dir die beiden internen Rufnummern 610 und 611 noch sein Sternchen am Ende 610* bzw 611* ? 
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Gisbert

Hallo zusammen,

ich hab ein Problem, welches mit dem Wechsel mit meiner Fritzbox zu tun hat.
Ich hab jetzt einen DSL-Vertrag mit einer Telefonnummer, vorher hatte ich einen Kabelvertrag mit drei Telefonnummern.

Der SIP-Client, den ich definiert habe, funktioniert nachgewiesenermaßen.
Ich kann mit dem SIP-Client andere interne Nummern anwählen, d.h. die entsprechenden Mobilteile/DECT-Telefone klingeln.
Es funktioniert das folgende:
set blockCallcenter **610 10
Der SIP-Client blockCallcenter ruft das Gerät **610 (ein DECT-Telefon) an und dieses klingelt. Daraus schließe ich, dass ich den SIP-Client blockCallcenter richtig in der Fritzbox als auch in Fhem angelegt habe.

Ich hab den SIP-Client blockCallcenter angelegt, um Callcentern ihr Echo vorzuspielen.
Das hat bisher mit dem Kabelvertrag und drei Telefonnummern gut funktioniert.
ZitatPhase 3:

    Du definierst in FHEM den SIP-Client und startest ihn im listen-Modus echo.
    In der Fritzbox leitest du alle eingehenden Anrufe auch an den SIP-Client weiter.
    Dem SIP-Client gibst du über sip_filter die Werber-Rufnummer als Filterarguiment mit.
    Der SIP-Cleint ist schneller als die Familienmitglieder und nimmt den Anruf an.

Phase 4: Jetzt bin ich (der Autor dieses Anwendungsfalles) neugierig. Postet Eure Erfahrung mit diesem Modus gerne im Forums-Thread.

Meine Hauptfrage ist, kann das Konstrukt Callcenter zu blockieren (Echo vorspielen) mit einer Rufnummer funktionieren, oder braucht man dazu mehr als eine Rufnummer?

Hier nur zur Ergänzung meine Defintion des blockCallcenters:
defmod blockCallcenter SIP
attr blockCallcenter history_file ./log/blockCallcenter.sip
attr blockCallcenter history_size 0
attr blockCallcenter sip_dtmf_loop once
attr blockCallcenter sip_dtmf_send audio
attr blockCallcenter sip_dtmf_size 2
attr blockCallcenter sip_elbc yes
attr blockCallcenter sip_filter <blockierte Rufnummern>,unbekannt,Unbekannt,unknown,Unknown,anonymous,Anonymous
attr blockCallcenter sip_from sip:blockCallcenter@fritz.box
attr blockCallcenter sip_ip 192.168.1.xx
attr blockCallcenter sip_listen echo
attr blockCallcenter sip_registrar 192.168.178.1
attr blockCallcenter sip_ringtime 0.5
attr blockCallcenter sip_user blockCallcenter


Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Gisbert

Hallo zusammen,

ich habe jetzt ein längeres Passwort benutzt, nachdem ich mir dies hier genauer durchgelesen und nicht nur überflogen habe (Auszug aus dem Wiki):
ZitatFehler bei der Registrierung an der Fritzbox

Fritzbox

    Ist das Device für den SIP-Client in der Fritzbox unter Telefonie > Telefoniegräte gelistet?
    Geräteeinstellungen ändern: Ist für das Device unter 'Anmeldedaten' die Durchwahl als Benutzername angegeben?
    Ist der in dieser Ansicht angegebene 'Registrar' mit der im Attribut sip_registrar identisch? Im Zweifelsfalle die IP-Adresse statt 'fritz.box' verwenden.
    FitzOS ab 6.80: Wurde nach Definition des Gerätes an einem anderen bekannten Gerät der Bestätigungscode eingegeben?
    Wurde in der Fritzbox ein Passwort von mind. 8 Stellen und Sicherheitsstufe 'gut' vergeben? Andernfalls kann es zu einem Registrierungsfehler 404 kommen.
    FritzOS 6.90: Registrierungsfehler 404 konnte erst mit folgenden Angaben gelöst werden

sip_from = sip:mymyuser@fritz.box (wobei dies der mymyuser ist der beim Telefoniegrät als Benutzername angegeben wurde,
            bitte die von der FritzBox geforderte Mindestlänge beachten)
sip_user = myuser (statt der Nebenstellennummer)

Der Parallelruf funktioniert damit, auch bei nur einer amtlichen Telefonnummer.
Anstatt der in der Fritzbox-Einstellung vorgeschlagenen internen Nummer 620 habe ich **620 genommen; zumindest funktioniert es damit.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

plin

Zitat von: Gisbert am 18 Juli 2022, 20:28:56
Meine Hauptfrage ist, kann das Konstrukt Callcenter zu blockieren (Echo vorspielen) mit einer Rufnummer funktionieren, oder braucht man dazu mehr als eine Rufnummer?

Hallo Gisbert,

Die "echo" Funktion benötigt nur eine Rufnummer.

Die Echo-Funktion ist ja durch meinen "Bedarf" entstanden. Ich bin mittlerweile bei einer anderen Lösung angekommen. Die Fritzbox bietet die Möglichkeit alle Anrufer, die in einem Telefonbuch gelistet sind, auf einen Anrufbeantworter umzuleiten.

Ich habe mir ein Telefonbuch namens "SPAM" angelegt. Dort landen sukzessive die Werbeanrufer die ich blocken möchte. Alle SPAMer werden auf einen Anrufbeantworter mit einer entsprechenden Ansage "Sie wurden als Werbeanruf identifiziert ..." umgeleitet.

Viele Grüße
Peter

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