Neues Modul FB_SIP.pm, ein SIP-Client

Begonnen von wmeiners, 21 August 2015, 01:53:56

Vorheriges Thema - Nächstes Thema

hartenthaler

Ich bin gerade am überlegen bzgl. diverser Nutzungsszenarien:
- Telefonteilnehmer automatisiert anrufen und per Sprache informieren (vorgefertiges wav-file oder text-to-speech)
  - etwa über besondere Situationen (Feuer, Stromausfall, Einbruch)
  - als Erinnerung oder Wecker oder als Hole-mich-aus-einem-Meeting-raus
- Telefonanrufe entgegen nehmen (DTMF-Töne erscheinen in fhem als Readings und können per notify Aktionen auslösen)
- als Telefonvermittlung
  - rufe mich erst auf meinem Handy an und verbinde mich dann telefonisch mit dem Hausmeister (etwa bei Wasseralarm in der Wohnung)

Bis auf das erste Szenario wüsste ich im Moment aber nicht wie das gehen könnte. Was meint ihr: sind diese Szenarien sinnvoll und machbar? Seht ihr weitere? Wie kann man diese Dinge umsetzen?
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

Wernieman

#76
(Sorry, war für einen anderen Thread gedacht)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

MadMax

Vorallem der 4. Punkt würde mich sehr interessieren.

Aber der Rest ist auch sehr interessant.
Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 5x SMA Wechselrichter, BYD HVM, SMA EVCharger, Daikin Wärmepumpe über CAN

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax

frank

ich habe das modul gerade ausprobiert und es klingelt wie versprochen, merci.

mein vorhaben wäre aber eigentlich, dass auch die MWI-led der angewählten internen telefone (fritzfon) leuchtet, um auch eine sichtbare info zu bekommen, falls das telefon gerade nicht gehört werden kann. mit dem fritzbox modul klappt es leider auch nicht.

jetzt habe ich hier im thread gelesen, dass der callmonitor der fritzbox keine internen anrufe verarbeitet. ist das der grund, dass die led nicht anspringt? oder kann man das irgendwie konfigurieren.

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Wzut

#79
Zitat von: hartenthaler am 21 August 2016, 19:56:28
- Telefonanrufe entgegen nehmen (DTMF-Töne erscheinen in fhem als Readings und können per notify Aktionen auslösen)
Das war genau der Grund warum ich mir das Modul vor Wochen mal vorgenommen hatte :) (Kannst ja mal testen)

Damit ein Reading erzeugt wird (das man mit notify triggern kann) müssen nach einander drei Tasten gedrückt werden :
1. die Raute # (Startsignal)
2 & 3.  zwei unterschiedliche Zahlen , d.h von 12 - 98  wobei 22,33,44,55,66,77,88 nicht zulässig sind   

Edit : das Modul ist nun via update verfügbar
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

hartenthaler

Das klingt spannend. Habe Dein SIP-Modul runtergeladen, kurz reingesehen und versucht es zu laden, aber da kamen erst einmal Fehlermeldungen:

Global symbol "$registrar" requires explicit package name at ./FHEM/96_SIP.pm line 197.
Unmatched right curly bracket at ./FHEM/96_SIP.pm line 212, at end of line
syntax error at ./FHEM/96_SIP.pm line 212, near "}"
Can't use global @_ in "my" at ./FHEM/96_SIP.pm line 216, near "= @_"
Global symbol "$arg" requires explicit package name at ./FHEM/96_SIP.pm line 217.
syntax error at ./FHEM/96_SIP.pm line 273, near "}"
Can't use global @_ in "my" at ./FHEM/96_SIP.pm line 277, near "= @_"
Global symbol "$string" requires explicit package name at ./FHEM/96_SIP.pm line 278.
syntax error at ./FHEM/96_SIP.pm line 303, near "}"
Can't use global @_ in "my" at ./FHEM/96_SIP.pm line 311, near "= @_"
./FHEM/96_SIP.pm has too many errors.

Ich hatte beim Code-lesen um die Zeile 200 herum auch Probleme die {}-Strukturen zu verstehen. Muss ich noch genauer hinsehen. Mir ist auch aufgefallen, dass in den Zeilen 190/191 die Angabe "sip:620@fritz.box" hart codiert ist, obwohl dafür ja anscheinend auch ein attribut vorgesehen ist. Morgen schaue ich noch mal genauer rein.
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

Wzut

#81
Zitat von: hartenthaler am 24 August 2016, 22:51:02

Global symbol "$registrar" requires explicit package name at ./FHEM/96_SIP.pm line 197.
Unmatched right curly bracket at ./FHEM/96_SIP.pm line 212, at end of line

Ich hatte beim Code-lesen um die Zeile 200 herum auch Probleme die {}-Strukturen zu verstehen. Muss ich noch genauer hinsehen. Mir ist auch aufgefallen, dass in den Zeilen 190/191 die Angabe "sip:620@fritz.box" hart codiert ist, obwohl dafür ja anscheinend auch ein attribut vorgesehen ist. Morgen schaue ich noch mal genauer rein.
sorry , habe die Datei oben ausgetauscht.
a. ein r zuviel :)
b. eine } zuviel
c. nein das ist ein default Wert, wenn der User ein eigenes attr übergibt wird das überschrieben
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

frank

Zitat von: frank am 22 August 2016, 22:28:01
ich habe das modul gerade ausprobiert und es klingelt wie versprochen, merci.

mein vorhaben wäre aber eigentlich, dass auch die MWI-led der angewählten internen telefone (fritzfon) leuchtet, um auch eine sichtbare info zu bekommen, falls das telefon gerade nicht gehört werden kann. mit dem fritzbox modul klappt es leider auch nicht.

jetzt habe ich hier im thread gelesen, dass der callmonitor der fritzbox keine internen anrufe verarbeitet. ist das der grund, dass die led nicht anspringt? oder kann man das irgendwie konfigurieren.

ich habe es jetzt so gelöst, dass das sip-modul über eine in der fritzbox eingetragenen sipgatenummer sich selber auf einer anderen nummer anruft. mit 2 sekunden anrufdauer bekomme ich einen "stillen" hinweis und mit 6 sekunden ertönt eimalig der klingelton für wichtigere dinge. und auf allen telefonen blinkt die anzeige, dass "alarm" angerufen hat.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

hartenthaler

@Wzut
Ich konnte das Modul nun laden und in fhem einrichten. Danke. Ich nutze als sip_user 628.

Nun bekommen ich aber beim Absetzen eines Anrufs eine Fehlermeldung (und es geht entsprechend kein Ruf raus):
failed udp 192.168.2.1:5060 Cannot assign requested address at /usr/local/share/perl/5.14.2/Net/SIP/Leg.pm line 55.
bzw. die selbe Meldung für den Port 5070 wenn ich "listen" aktiviere (wenn ich am FritzFon dann **628 wähle, kommt natürlich auch keine Verbindung zustande.

Hier mein Device-List:
Internals:
   DEF        fritz.box
   LPID       4450
   NAME       sip.628.dtmf
   NR         158
   STATE      listen
   TYPE       SIP
   Readings:
     2016-08-27 17:27:34   state           listen
   Helper:
     Listen_pid:
       abortArg
       abortFn
       arg        sip.628.dtmf
       bc_pid     51
       finishFn   SIP_ListenDone
       fn         SIP_ListenStart
       pid        4450
       timeout
Attributes:
   group      Telefon
   room       Telefon
   sip_from   sip:628@fritz.box
   sip_ip     192.168.2.1
   sip_password xxxxxxx
   sip_port   5060
   sip_registar fritz.box
   sip_ringtime 10
   sip_user   628


Setzt Du für den Port 5060 auf der fritz.box etwas voraus, das sich vom ursprünglichen FB_SIP-Modul unterscheidet? Oder ist mein ../perl/5.14.2/Net/SIP/Leg.pm von Deinem verschieden?
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

RaspiCOC

Sorry, muss jetzt mal doof fragen... Dieser Thread dreht sich ja eigentlich um das Modul 96_FB_SIP.pm. Zusätzlich taucht hier jetzt noch 96_SIP.pm auf.

Beinhaltet 96_SIP.pm die Funktionalitäten von 96_FB_SIP.pm oder ist das was anderes? Wenn es was anderes ist, wäre es doch sicherlich sinnvoll, die Module funktional zusammenzuführen und die Threadhygiene wieder herzustellen. Ich mag mich aber vielleicht auch irren und bitte meine Kritik wohlwollend aufzunehmen.

hartenthaler

@RaspiCOC: guter Punkt!

Wie wird das hier gehandhabt? Mir scheint, dass das "alte" Modul FB_IP nicht mehr weiter entwickelt wird. Das "neue" Modul SIP von @Wzut enthält neben der bisherigen Funktion einen Anruf absetzen zu können, - soweit ich es sehn kann - die Zusatzfunktion dem Angerufenen eine Audiodatei vorzuspielen und die weitere Zusatzfunktion angerufen werden zu können und die dann übermittelten DTMF Töne in fhem Readings zu konvertieren mit denen man dann fhem-Funktionen auslösen kann. Beides sehr wichtige Bereicherungen. Allerdings konnte ich es noch nicht erfolgreich testen, was wohl aber an mir liegt.

Ich sehe die Möglichkeit zu versuchen den ursprünglichen Autor zu erreichen oder die Möglichkeit einen neuen Thread aufzumachen oder hier weiter zu machen, dann aber den ersten Post im Thread zu modifizieren (geht das überhaupt?). Oder?
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

Wzut

@RaspiCOC: hartenthaler hat da ganz richtig erkannt :) wmeiners -> Letzter Besuch: 09 Februar 2016, 19:47:10
Denke daher das der TE hier vermutlich nicht mitliest , tut er es doch habe ich ihm einen Weg gezeigt sein Modul mit genau den Funktionen nachzurüsten die die User hier gefordert haben.


@hartenthaler : sip_ip 192.168.2.1
Ist dein fhem unter diese IP erreichbar ? Ich hatte bisher keinen eleganten Weg gefunden die eigene IP festzustellen daher dieses attr.
Stell doch mal verbose auf 5 (nur für dieses Modul) und starte fhem neu.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

RaspiCOC

Vielen Dank für die Klärung. Ich gebe zu, dass ich die fehlende Aktualität der Postings etwas fehlinterpretiert hatte.

Dennoch würde ich es für sinnvoll halten, einen neuen Thread zu starten und diesen mit einem klaren "Geschlossen" und finalem Posting, dass das Modul FB_SIP wohl nicht weiterentwickelt wird zu schließen.

Das Modul SIP sollte dann bis es hoffentlich in das SVM aufgenommen wird, immer im ersten Post als aktuelle Version aufgenommen werden.

Es ist einfach zu wertvoll und funktional zu wichtig, als dass es hier im alten Thread irgendwo mittendrin untergeht.

Vielen Dank für die tolle Arbeit!

RaspiCOC

Vielleicht dann doch noch ein paar Ergänzungen zu den funktionalen Überlegungen:

- Das Modul ist ja eigentlich im Bezug auf die Anmeldung an einem SIP Server völlig generisch und nicht spezifisch auf die Fritte zugeschnitten. Ich würde daher vorschlagen den default Usernamen 620 rauszunehmen. (Die generische Eigenschaft ist auch ein weiterer Grund, weshalb ich einen neuen Thread vorschlagen würde, da die Threadüberschrift mit "FB" etwas misleading sein könnte.)
- Wenn es gelänge zur Laufzeit ein TTS-file zu erzeugen, dann könnte man darüber nachdenken, Standardansagen als Userattr zu definieren, die dann im set-Aufruf eingesetzt werden können.
- Weiterhin könnte man über Userattr auch eine Reihe von Standardnummern hinterlegen, die nacheinander angerufen werden, bis ein Ruf entgegengenommen worden ist. Alternativ Angabe der Zielrufnummer im set-Aufruf.

Frage, die hoffentlich nicht schon anderweitig beantwortet worden ist: Wo müssen die WAV-Files abgelegt werden, damit sie abgespielt werden können. Wird hier auf einem Standardpfad gesucht?

Gehe ich recht in der Annahme, dass wir über 8khz 16 Bit mono PCM codierte WAV-Files sprechen?

N.B.: Ich habe das Modul noch nicht ausprobiert, da ich im Urlaub bin und keinen Crash des FHEM-Servers riskieren möchte...

MadMax

Hallo,

erstmal danke für die Weiterentwicklung.

Ich habe es soweit ans laufen gebracht, Anrufe funktionieren und meinen PI kann ich auch Anrufen.

Wenn ich den PI anrufe und dann #98 eingebe klappt das auch, beim 2. mal nicht mehr, damit es wieder funktioniert muss ich FHEM neustarten, aber auch dann geht es nur einmal.

Noch eine Idee hätte ich da, wenn man Anruft wäre es hilfreich das die Nummer von der Angerufen wird als Reading angezeigt wird, dann Kann man per Notify entscheiden ob man überhaupt bei der Nummer rangehen will ;) Dazu sollte es auch möglich sein per Notify abzunehmen.

Habe mir mal den Code angeschaut aber so ganz komme ich da nicht mit :D
Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 5x SMA Wechselrichter, BYD HVM, SMA EVCharger, Daikin Wärmepumpe über CAN

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax