Hauptmenü

Modul 96_SIP

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

Vorheriges Thema - Nächstes Thema

Wzut

Es gibt ein neues Modul SIP.

Vorgeschichte

Im August 2015 stellte wmeiners unter Neues Modul FB_SIP.pm, ein SIP-Client die erste Version eines Moduls FB_Sip im Forum vor.
( Ref -> https://forum.fhem.de/index.php/topic,40219.0.html)
Obwohl sich die Funktion auf anrufen und auflegen beschränkte, fand das Modul doch reges Interesse. Im August 2016 entstand daraus die Urversion von 96_SIP.pm, die mittlerweile alle im Thread diskutierten Features enthält.

Funktion

Das Modul kann

    Anrufe tätigen und ein Audio-File abspielen
    Anrufe tätigen und DTMF-Töne übertragen
    Anrufe entgegennehmen und die übertragenen DTMF-Töne als Reading speichern
    Über eingehende Anrufe informieren und diese gezielt annehmen

Voraussetzungen

    Die perl-Library Net::SIP muss installiert sein.
    (Jessie User -> sudo apt-get install libnet-sip-perl  , installiert z.Z. die Version 0.687)
    Es muss ein Account für den Client eingerichtet sein (Fritzbox, Asterisk etc.)

Wie geht's?

    'update all' und 'restart'
    Telefoniegrät in der Fritzbox einrichten
    define <name> SIP
    Attribute an die eigene Umgebung anpassen
    erster Test : set <name> call <anzurufende Rufnummer>


Alle Details könnt ihr dem Wiki (SIP-Client) oder der command.ref entnehmen.

Nachtrag : Vielen Dank an plin für die Wiki Seite , die command.ref und einige Verbesserungen/Ideen am Modul.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

betateilchen

Hast Du das tatsächlich mal gegen einen echten SIP Server wie Asterisk oder einen professionellen SIP Telefonieanbieter getestet?

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Wzut

Mir fehlen dazu die Möglichkeiten, aber plin hat das für sein Dooline Projekt zusammen mit Asterisk laufen.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

betateilchen

naja, ich sag mal so: Ich hab mir das Modul grade mal angesehen. Da sind ein paar wirklich grobe Schwachstellen in Bezug auf die Benutzung des SIP Protokolls enthalten. Das Modul würde ich an Deiner Stelle lieber in contrib einchecken als innerhalb der offiziellen FHEM Auslieferung. Alleine schon aus Sicherheitsgründen. SIP ist nicht so ganz trivial, wie manche Leute sich das denken. Umso mehr, wenn man beim Entwickeln nur eine Fritzkotz als Gegenspieler zum Testen hat(te).

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Tobbi

Zitat von: betateilchen am 19 Februar 2017, 19:52:30
naja, ich sag mal so: Ich hab mir das Modul grade mal angesehen. Da sind ein paar wirklich grobe Schwachstellen in Bezug auf die Benutzung des SIP Protokolls enthalten. Das Modul würde ich an Deiner Stelle lieber in contrib einchecken als innerhalb der offiziellen FHEM Auslieferung. Alleine schon aus Sicherheitsgründen. SIP ist nicht so ganz trivial, wie manche Leute sich das denken. Umso mehr, wenn man beim Entwickeln nur eine Fritzkotz als Gegenspieler zum Testen hat(te).

Ich verstehe die negativen Anmerkungen nicht. So ein Modul ist nicht von heute auf morgen fertig, das weiß jeder der sich mit Programmierung beruflich oder hobbymäßig beschäftigt.

Zum Thema richtige Telefonanlage kann ich sagen, dass das Modul (Stand 12.02.17) gut und ohne Probleme mit Astersik bzw. FreePBX zusammen arbeitet.
Die "groben" Schwachstellen sollten sicher behoben werden, da wir hier aber keine Atomkraftwerke über SIP steuern sehe ich das halb so wild.

Gruß Tobias

Wzut

#5
contrib hatte ich zuerst auch im Hinterkopf, schade halt nur das es beim Update nicht aktualisiert wird. Aber Anyway,
Udo,  es wäre sehr schön wenn du die groben Schwachstellen aufzeigen würdest damit man etwas dagegen tun kann ( wenn sie nicht direkt im Net::Sip sind)
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

tklein

#6
Hallo,

wie/wo binde ich die *.pm Datei ein?

-->  erledigt, habe es nachgelesen
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

betateilchen

Macht was Ihr meint. Da ich hier aufgrund einer Rückfrage schon wieder blöd angemacht werde, bin ich hier raus.

Zitat von: Tobbi am 19 Februar 2017, 20:00:58
So ein Modul ist nicht von heute auf morgen fertig, das weiß jeder der sich mit Programmierung beruflich oder hobbymäßig beschäftigt.

Bei mir ist das "Beschäftigen  nicht "beruflich oder hobbymäßig", sondern beruflich (seit über 30 Jahren) UND hobbymäßig (seit fast 40 Jahren).
Meine Anmerkungen waren nicht "negativ", sondern ernst gemeint.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Tobbi

#8
Zitat von: betateilchen am 19 Februar 2017, 20:10:59
Macht was Ihr meint. Da ich hier aufgrund einer Rückfrage schon wieder blöd angemacht werde, bin ich hier raus.

Bei mir ist das "Beschäftigen  nicht "beruflich oder hobbymäßig", sondern beruflich (seit über 30 Jahren) UND hobbymäßig (seit fast 40 Jahren).
Meine Anmerkungen waren nicht "negativ", sondern ernst gemeint.

Das blöde Anmachen kann ich hier in keinster Weise finden. Ich habe nie gemeint, dass die Hinweise nicht ernst gemeint waren. Sicherheitslücken sollte man schließen aber die Gemeinschaft ist eben nur stark, wenn jeder sein Zutun dazu gibt.

Aus diesem Grund kannst du doch bitte deine jahrelange Berufserfahrung mit einfließen lassen, vorallem wenn du Fehler entdeckt hast. So hat jeder was davon.

Gruß Tobias

det.

Hallo Wzut,


prima Sache, Dein neues Modul. Habe da sponten eine gute Verwendung dafür: ich öffne mein Hoftor + Garage über einen Anruf von meinem Handy  auf eine, in der FB keinem Endgerät zugeordnete Rufnummer (dabei teste ich, ob der Anruff von meiner Handynummer kommt). Bisher kommt eine Ansage, das der Teilnehmer nicht zu erreichen ist. Mit Deinem Modul kann ich den Anruf kurz annehmen und automatisch auflegen  oder eine freundliche Begrüßung abspielen. Damit die Ansage aber nicht die Telefonterroristen von allen möglichen Callcentern zu hören bekommen (die meine alten Dienstnummer irgenwie kennen), meine Frage: Kannst Du einbauen, das SIP nur bestimmte Nummern annimmt?
LG
det.

Wzut

Das kannst aber auch mit Bordmitteln machen.
Stelle das attr sip_listen auf wfp und setze ein set reset ab. Der Status sollte dann auf listen_for_wfp gehen.
Lege dir nun ein Notify an das auf das Reading caller und deine Handy Nr. triggert.
Wenn es dein Handy ist setze das Kommando set fetch ab, erst jetzt nimmt das Modul den Anruf an.
Oder du verwendest statt wfp dtmf , dann nimmt das Modul zwar sofort den Anruf an, du must aber noch # und zwei unterschiedliche Zahlen senden um die Aktion auszulösen.   
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

hdiessner

Hallo Wzut,
klasse, dass das neue Modul jetzt mir dem Update eingespielt werden kann. Beim Testen habe ich folgendes feststellen müssen:
1. set mysip call **610 => funktioniert. Call wird ausgeführt und die Testtöne abgespielt.
2. set mysip call **610 -#10 => kein Anruf, sofortige Änderung im STATE: unknow call done  (tatsächlich ohne das "n" bei unknown.
3. set mysip call **610 10 /pfad/test.wav => funktioniert, Datei wird abgespielt und Modul legt auf.

Irgendwie scheint das Abspielen der DTMF Töne nicht so zu funktionieren, wie im Wiki unter "Anruf tätigen und DTMF Töne senden" beschrieben: https://wiki.fhem.de/wiki/SIP-Client

Wzut

Zitat von: hdiessner am 20 Februar 2017, 19:13:31
2. set mysip call **610 -#10 => kein Anruf, sofortige Änderung im STATE: unknow call done  (tatsächlich ohne das "n" bei unknown.
Da fehlt als zweiter Parameter die Ringtime , richtig wäre :
set mysip call **610 5 -#10
Da muss das Wiki angepasst werden , der Call erlaubt :
1. set mysip call **610    ( Ringtime wird aus dem attr sip_ringtime genommen und zu hören bekommt man ein paar DTMF Signale)
2. set mysip call **610 30  ( statt attr sip_ringtime wird nun 30 Sekunden geklingelt und zu hören bekommt man ein paar DTMF Signale)
3. set mysip call **610 20  Datei/Signale ( statt attr sip_ringtime wird nun 20 Sekunden geklingelt und zu hören bekommt man die übergebene Datei oder  DTMF Signale)

da fehlte noch ein anderes "n" , ist beim nächsten Update morgen drin :)
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

tklein

#13
Hallo,

bei mir kommt im Log:


registration failed: Failed with error 110 at ./FHEM/96_SIP.pm line 209.
PERL WARNING: "my" variable $my_action masks earlier declaration in same scope at ./FHEM/96_SIP.pm line 495, <$fh> line 456.


--> Da ich der Programmierung nicht so wirklich mächtig bin, sagt mir die Zeile im Code leider nicht so viel.

So sieht das Modul in FHEM aus:


define mySIP SIP
attr mySIP group Anrufe,Fritzbox
attr mySIP room Actions,Anrufe
attr mySIP sip_audiofile none
attr mySIP sip_from sip:628@fritz.box
attr mySIP sip_ip 192.168.0.49
attr mySIP sip_password ...
attr mySIP sip_port 5060
attr mySIP sip_registar fritz.box
attr mySIP sip_ringtime 10
attr mySIP sip_user 628
attr mySIP sip_waittime 10


Mit der 628 und der Fon-App von AVM kann ich mich mit den Zugangsdaten anmelden. Ein Update und restart habe ich schon vorgenommen.

Wer könnte mir da weiterhelfen?
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

betateilchen

Die Perl Warning kannst Du erstmal ignorieren, das ist kein Fehler, sondern unsaubere Programmierung.

attr mySIP sip_registar fritz.box

Hast Du da wirklich registar stehen statt registrar?

(Verdacht: Da hat wohl mal wieder jemand direkt in der fhem.cfg rumgepfuscht)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!