Autor Thema: Modul 96_SIP  (Gelesen 61589 mal)

Offline tpm88

  • Full Member
  • ***
  • Beiträge: 371
Antw:Modul 96_SIP
« Antwort #645 am: 10 Juli 2018, 13:42:57 »
Hallo Wzut und plin,

für ein Projekt, bei dem ich die Mobilfunknummer des Anrufers zur Authentifizierung benutzen möchte, wünsche ich mir ein Reading analog zu Caller, welches aber in jedem Fall die Rufnummer zurückliefert. Wenn der Anrufer im Telefonbuch der FritzBox eingetragen ist, liefert Caller derzeit den Klartextnamen.

Wäre toll, wenn das ins Modul eingebaut werden könnte.

Danke & Gruß
Tobias
Test FHEM Server on RPi, CUL_HM
Prod FHEM Server on CubieTruck, HM-USB, JeeLink
DB Logging FHEM Server on QNAP NAS
Devices: diverse HM, IT1500, 1wire via AVR NetIO, LaCrosse

Offline Wzut

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1902
Antw:Modul 96_SIP
« Antwort #646 am: 10 Juli 2018, 15:37:23 »
Bei der Host-IP 192.168.2.226 erhalte ich eine Fehlermeldung: ListenRegister: can't open port 5070 at 192.168.2.226 : Cannot assign requested address

Bei der Container-IP gibt es keine Fehlermeldung, dafür steht in der Registrierung auf dem Server auch die Containter-IP drin...
Ich kann dir bei Docker nicht weiterhelfen da ich davon keine Ahnung habe. Aber wir hatten so einen Fall schon einmal, gehe mal hier im Thread zurück bis Beitrag Nr. 313, da hatte sbiermann geschrieben auf was bei Docker zu achten ist.


wünsche ich mir ein Reading analog zu Caller, welches aber in jedem Fall die Rufnummer zurückliefert. Wenn der Anrufer im Telefonbuch der FritzBox eingetragen ist, liefert Caller derzeit den Klartextnamen.
Was in Caller steht bestimmt die FritzBox, d.h. wenn da der Name aus dem Telefonbuch zurück kommt kann ich den im Modul nicht einfach wieder in eine Telefonnummer zurück übersetzen. Hier mußt du selbst aktiv werden mittels notify , userreading und dem Fritz Box Modul.
Maintainer der Module: MPD, UbiquitiMP, UbiquitiOut, SIP

Offline tpm88

  • Full Member
  • ***
  • Beiträge: 371
Antw:Modul 96_SIP
« Antwort #647 am: 10 Juli 2018, 17:20:51 »
Was in Caller steht bestimmt die FritzBox, d.h. wenn da der Name aus dem Telefonbuch zurück kommt kann ich den im Modul nicht einfach wieder in eine Telefonnummer zurück übersetzen. Hier mußt du selbst aktiv werden mittels notify , userreading und dem Fritz Box Modul.

Hallo wzut,

hmm - aber das Modul gleicht die eingehende Rufnummer doch mit dem Attribut sip_filter ab, oder? Bei verbose 5 sehe ich z.B. diese Meldung:

2018.07.09 17:19:42 5: mySIP[23537], SIP_filter : a:"Tobi" <sip:017276xxxxx@fritz.box>;tag=02F221669F86DAA6 | b:Net::SIP::Request=HASH(0x2bb8888)

Lässt sich hierbei nicht die Rufnummer sip:<rufnummer>@fritz.box direkt abgreifen? Auf eine aufwändige Rückübersetzung würde ich eben gerne verzichten...

Gruß
Tobias
Test FHEM Server on RPi, CUL_HM
Prod FHEM Server on CubieTruck, HM-USB, JeeLink
DB Logging FHEM Server on QNAP NAS
Devices: diverse HM, IT1500, 1wire via AVR NetIO, LaCrosse

Offline Wzut

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1902
Antw:Modul 96_SIP
« Antwort #648 am: 10 Juli 2018, 17:54:25 »
Ich schau mir das morgen oder am WE nochmal in Ruhe an und schneide ggf. zwischen : und @
Maintainer der Module: MPD, UbiquitiMP, UbiquitiOut, SIP
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline plin

  • Developer
  • Full Member
  • ****
  • Beiträge: 325
Antw:Modul 96_SIP
« Antwort #649 am: 10 Juli 2018, 20:31:26 »
ich glaube das war nicht ganz was pechnase wissen wollte. Du hast doch im Gegensatz zur mir Asterisk Erfahrung auf dem Raspi.
ok, man sollte sich auf die Wörter konzentrieren die man liest ;-)

Ein neuer Versuch

bei bestimmten 'Alarmen' ruft mein fhem eine definierte Telefonnummer an und spielt einen Audiofile ab, der zu dem jeweiligen Alarm passt.
meine Lösung ist halt Telegram. Wenn der Empfänger ein Smartphone hat ist das eine recht praktikable Lösung die wenig Ressourcen benötigt. TelegramBot ist deutlich stabiler als Yowsup für What'sApp.

Dazu verwende ich auf einem Raspberry Pi 2B asterisk als 'SIP-Client' in Verbindung mit einer FritzBox.yup, Asterisk habe ich überlesen

Mit dem Modul 96_SIP könnte ich nach meinem Verständnis die oben beschriebene Funktion auch umsetzen.ja

Meine Frage: was ist eure Einschätzung nach die Lösung, die weniger Ressourcen auf dem PI braucht?wichtig ist hier das DIE Lösung

Ich habe keine Erfahrung mit Asterisk aus dem raspi. Da Asterisk aber sehr mächtig ist kann ich nur vermuten, dass unser 96_SIP weniger Ressourcen benötigt.
Andererseits: So richtig glücklich wurde ich mit unserem SIP-Modul erst auf einem raspi 3 (Stichwort DTMF-Empfang).
Der Vorteil des SIP-Moduls: Die Texte können via T2S dynamisch erzeugt werden. Die Pflege erfolgt nur zentral in FHEM.

Also: studieren geht über probieren ...

Offline plin

  • Developer
  • Full Member
  • ****
  • Beiträge: 325
Antw:Modul 96_SIP
« Antwort #650 am: 10 Juli 2018, 20:43:19 »
Ich kann dir bei Docker nicht weiterhelfen da ich davon keine Ahnung habe. Aber wir hatten so einen Fall schon einmal, gehe mal hier im Thread zurück bis Beitrag Nr. 313, da hatte sbiermann geschrieben auf was bei Docker zu achten ist.
meine Suche im Forum nach "Docker" führte zu folgender Passage die passen sollte

"Macht hier das SIP Modul einen eigenen Port auf? Wenn ja muss dieser beim starten des Containers exposed werden, sonst ist der nur lokal innerhalb des Containers verfügbar aber nicht von außen erreichbar.

Wenn man nun in dem Modul den Port 5060 und 5070 eintragen kann als feste Ports und die IP des Wirtrechners (z.B. 192.168.2.110) dann sollte der FHEM Container zusätzlich zu den Webports noch -p 5060:5060 -p 5070:5070 als Startparameter bekommen um die Ports zu exposen.

Was normalerweise gehen sollte ich das ein Docker Container nach außen in die freie Welt funken darf. Sprich die FritzBox sollte erreichbar sein. Aber auch hier kann es Ausnahmen geben."

Offline magichand

  • New Member
  • *
  • Beiträge: 7
Antw:Modul 96_SIP
« Antwort #651 am: 12 Juli 2018, 14:31:43 »
Was normalerweise gehen sollte ich das ein Docker Container nach außen in die freie Welt funken darf. Sprich die FritzBox sollte erreichbar sein. Aber auch hier kann es Ausnahmen geben."

Hi, das hatte ich auch gelesen und ausprobiert:

Egal, welche Ports ich "expose" oder mit "-p" übergebe, das Modul bindet sich nicht an die HOST-IP -> 'Cannot assign requested address'

Sobald ich die Container-IP in sip_ip eintrage, registriert sich das Modul am SIP-Server, allerdings mit der IP des Containers...

Aus dem Netzwerk kann ich auf die IP des HOSTS und dem Port 5060 zugreifen, also die Kommunikation zum Container und aus dem Container funktioniert...

Ich befürchte, dass es "nur" an der Registrierung des Clients am Server hängt, weil dort die IP des Interfaces übergeben wird, an dem der Dienst gebunden ist...

Ralf

Offline plin

  • Developer
  • Full Member
  • ****
  • Beiträge: 325
Antw:Modul 96_SIP
« Antwort #652 am: 12 Juli 2018, 19:00:50 »
@magichand: Wo hast Du Dein Docker-Image her? Dann kann ich versuchen das Problem nachzustellen.

Offline plin

  • Developer
  • Full Member
  • ****
  • Beiträge: 325
Antw:Modul 96_SIP
« Antwort #653 am: 12 Juli 2018, 21:18:56 »
ok, ich hab's:

Du musst die Ports exportieren, z.B.
docker run -d -p 8083:8083 -p 5060:5060 -p 5070:5070 michaelatdocker/fhem
Dann holst Du dir die IP-Adresse Deines Docker-Containers:
linuxlab:~ # docker exec 0155465c09f6 ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
15: eth0@if16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.2/16 scope global eth0
       valid_lft forever preferred_lft forever

Als sip_ip gibst Du die Adresse Deines Containers an: 172.17.0.2

Als sip_port kannst Du nun 5060 angeben.

Damit läuft's bei mir.

P.S. Ich musste aber bei dem Docker-Images Net::SIP und das Package procps nachinstallieren. net-tools war auch ganz hilfreich, um zu schauen, ob die Ports im Container geöffnet sind.

Offline Wzut

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1902
Antw:Modul 96_SIP
« Antwort #654 am: 16 Juli 2018, 19:59:01 »
wünsche ich mir ein Reading analog zu Caller, welches aber in jedem Fall die Rufnummer zurückliefert. Wenn der Anrufer im Telefonbuch der FritzBox eingetragen ist, liefert Caller derzeit den Klartextnamen.

Dann teste mal die angehänte Version :)
Neu : neues Reading caller_nr -> zeigt immer die Telefon Nr. des Anrufers
          Das Reading Caller zeigt den Namen des Anrufers wenn er von der Fritz Box aufgelöst werden kann (Eintrag im Telefonbuch)
          Für fehlende Einträge in der FB kann auch ein eigenes Telefonbuch für 96_SIP angelegt werden ( siehe Attribut phonebook)

Neue Attribute :
a. phonebook -> eigenes File mit zeilenweise Nr,Name. Hier kann auch ein bereits vorhandenes File von z.B. FB_Callist  eingetragen werden,
wird auch verwendet um bei ausgehenden Rufen einen Namen in der History Liste zu führen.
b. history_size & history_file
Da die Fritzbox keine Anruflisten für interne SIP Rufe führt kann nun eine eigene SIP History Liste im Modul geführt werden.
history_file kann ein beliebiger Datei Name sein, wird ggf. automatisch neu erzeugt. history_size bestimmt die maximale Anzahl von Einträgen in der Liste. Default = 0 , d.h. keine Liste verwenden.
Um sich die Liste in einen Raum zu holen
define <name> weblink htmlCode (SIP_html("<name des SIP Device>")leider hat weblink mit htmlCode die Eigenart keine Überschrift zu erzeugen, wer aber eine haben möchte kann diese beim define gleich mit angeben :
define <name> weblink htmlCode (SIP_html("<name des SIP Device>","meine SIP Liste")
Ich habe zwar viel getestet, aber inzwischen ist das mit den ganzen Möglichkeiten des Moduls doch recht schwierig und zeitaufwändig, ich würde mich daher über Betatester freuen bevor ich diese Version einchecke.
 
Maintainer der Module: MPD, UbiquitiMP, UbiquitiOut, SIP

Offline tpm88

  • Full Member
  • ***
  • Beiträge: 371
Antw:Modul 96_SIP
« Antwort #655 am: 16 Juli 2018, 23:01:25 »
Hallo Wzut,

Dann teste mal die angehänte Version :)
Neu : neues Reading caller_nr -> zeigt immer die Telefon Nr. des Anrufers
          Das Reading Caller zeigt den Namen des Anrufers wenn er von der Fritz Box aufgelöst werden kann (Eintrag im Telefonbuch)
          Für fehlende Einträge in der FB kann auch ein eigenes Telefonbuch für 96_SIP angelegt werden ( siehe Attribut phonebook)


Vielen Dank - genauso habe ich mir das Reading caller_nr vorgestellt.

Der listen_dtmf use case funktioniert für mein Szenario mit dieser Version einwandfrei.

Gruß,
Tobias
Test FHEM Server on RPi, CUL_HM
Prod FHEM Server on CubieTruck, HM-USB, JeeLink
DB Logging FHEM Server on QNAP NAS
Devices: diverse HM, IT1500, 1wire via AVR NetIO, LaCrosse

Offline magichand

  • New Member
  • *
  • Beiträge: 7
Antw:Modul 96_SIP
« Antwort #656 am: 16 Juli 2018, 23:40:24 »

Als sip_ip gibst Du die Adresse Deines Containers an: 172.17.0.2

Als sip_port kannst Du nun 5060 angeben.

Damit läuft's bei mir.

P.S. Ich musste aber bei dem Docker-Images Net::SIP und das Package procps nachinstallieren. net-tools war auch ganz hilfreich, um zu schauen, ob die Ports im Container geöffnet sind.

Ja, die Net::SIP und procspc sowie die net-tools habe ich mir auch gleich instaliert. Als Grundlage für mein Image habe ich das Projekt von klein0r/fhem-docker benutzt und entsprechend modifiziert danach mit docker-compose erstellt.

Hier mal der Auszug aus der docker-compose.yml

services:
    fhem:
        restart: always
        ports:
            - "8083:8083"
            - "7072:7072"
            - "5060:5060"
            - "5070:5070"
        build: fhem
        privileged: true
        volumes:
            - ./fhem/core/:/opt/fhem/
        networks:
            - fhem-network

Bisher war ich der Meinung, daß der "ports"-Abschnitt das -p auf der Commandline umsetzt... Bin ich da im Irrtum?

Ralf