VOIP Call Modul

Begonnen von forum-merlin, 09 April 2016, 16:13:06

Vorheriges Thema - Nächstes Thema

forum-merlin

Hallo Developers!
Ich wünsche mir ein VOIP Call Modul.
Es soll dazu genutzt werden, dass man beispielsweise im Falle eines Feueralarms oder einer anderen Alarmauslösung einen VOIP Call via notify oder DOIF absetzen kann.

Ich habe schon hier im Forum gesehen, dass ich jemand damit befasst hatte, aber wegen der AVM Fritzbox Restriktionen ab 6.30 das Thema wohl vorbei ist.
Das war hier: https://forum.fhem.de/index.php/topic,26136.0.html

Dann habe ich noch etwas im Netz gesucht und hier einen netten Ansatz gefunden:
http://www.forum-raspberrypi.de/Thread-messen-steuern-regeln-alarmanruf-von-funksensoren-ausloesen-mit-fritzbox-bzw-sip-voip

Was ich an diesem Beispiel gut finde ist, dass man quasi einen SIP Client hat der sich an der Fritzbox als IP Telefon anmeldet.
Nachdem es hier schon so einige TTS Ansätze gibt, könnte der TTS Teil der Lösung ggf. recycled werden?


Ideal fände ich es wenn man dann in dem Modul noch einen Kurzwahlspeicher hinterlegen könnte, und eine Text Bibliothek
z.B.
Kurzwahl 1 bis 9
KW1=0891234567890
KW2=112
KW3=110
KW4=017..........

TTS Speicher 1-99
TTS1=Achtung, es wurde Feueralarm ausgelöst! Bitte informiere auch die Nachbarn!
TTS2=Heute ist ein schöner Tag!
TTS3=Guten Tag, mein Name ist <Name>, Bitte schicken Sie einen Löschtrupp in die Bahnhofstrasse 1 in 80245 München, es brennt im 1.OG eines 6 stöckigen Hochhauses
TTS4=Alarm! Terrassentür wurde geöffnet, aber niemand ist zuhause!

Und wenn man dann ein DOIF oder Notify definiert, könnte man ggf. sagen
([Rauchmelder:smoke_detect] eq "smoke-Alarm" ) (set VOIPCall callerevent KW2:TTS3)


Oder alternativ auch sowas wie ein Conference Call trigger
Erst werde ich angerufen, und mir wird TTS4 vorgelesen und dann wird als zusätzlicher Conference Teilnehmer die KW3(110) hinzugefügt, und ich kann direkt die Polizei informieren

Oder so in der Art halt.

Gruß

Holger
FHEM 5.8 auf RasPi3; CULv3-868; RFXtrx433; HM-Sec-SC-2; HM-CFG-LAN; HM-LC-Bl1-FM; HM-CC-RT-DN; HM-ES-PMSw1-Pl; HM-LC-Sw4-DR; Hunter Ventile; 8ch Relais; ENIGMA2; ONKYO_AVR; SONOS; Harmony; telegram; HM-PB-6-WM55; GPIO; HM-Sen-MDIR-O; HM-SEC-SD; HM-LC-Dim1L-Pl-3;

betateilchen

Solange es sip-clients gibt, die man per Befehlszeile bedienen kann, braucht es dazu kein eigenes Modul.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Damu

#2

betateilchen

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

lammy

Hallo,

ich habe mir ein kleines Tool in myUtils geschrieben das einen geschriebenen Text per VoIP dann vor liehst. Es läuft ganz gut aber man kann es sicher optimieren. Wenn jemand Bock auf Optimieren hat kann er sich gerne melden. Ihr braucht natürlich ein paar tool auf dem debian server. espeak, sox und sipcmd. Dumm ist nur das FHEM hängt sobald der Anruf gestartet wird. Wenn jemand dafür ne schicke Lösung hat, wäre ich schon mal sehr dankbar :-)

hier ist der quellcode aus der myutils
######## VoIP Call mit sipcmd starten ############
######## Beispiel:
######## ({voipcall("Guten Tag hier ist Hans Wurst",'08003301000')})
sub
voipcall($$)
{
  my $text = shift;
  my $callnumber = shift;
  my $return_sipcmd = "";
  my $return_espeak = "";
  my $return_sox = "";
  my $ret = "";
  my $name = "FhemVoIP";
  my $konto = "user";
  my $passwrd = "passwort";
  my $provider = "1.1.1.1";
  my $protocol = "sip";
  my $audiofilefolder = "/opt/fhem/voip/messages/";
  my $audiofile = int(rand(9999-1));
  my $dateityp = ".wav";
  my $audiofileextentin = "_mono";
  my $clearcallident = "PlaybackAudioFile";
  Log 1, "-------- voipcall start --------";
  Log 1, "voipcall callnumber: $callnumber";
  Log 1, "voipcall Text: $text";
  Log 1, "voipcall Filename: $audiofile$dateityp";
  Log 1, "voipcall Debug Filename/Folder/Extention: $audiofilefolder$audiofile$dateityp";

  ####### espeak auführen #######
  $return_espeak .= qx(espeak '-vde+m4'  '$text' '-b 1' '-w $audiofilefolder$audiofile$dateityp');
  Log 1, "voipcall espeak returned: $return_espeak";
  ####### sox auführen #######
  $return_sox .= qx(sox '$audiofilefolder$audiofile$dateityp' '-b 16' '-c 1' '-r 8000' '$audiofilefolder$audiofile$audiofileextentin$dateityp');
  Log 1, "voipcall sox returned: $return_sox";

  ####### sipcmd auführen #######
  #system "echo sipcmd -P $protocol -u $konto -c '$passwrd' -w $provider -x 'c$callnumber;ws10000;$audiofilefolder$audiofile$audiofileextentin$dateityp;h'";
  $return_sipcmd .= qx(sipcmd -P $protocol -u $konto -c '$passwrd' -w $provider -x 'c$callnumber;ws1000;v$audiofilefolder$audiofile$audiofileextentin$dateityp;h' &);
  #system "sipcmd -P $protocol -u $konto -c '$passwrd' -w $provider -x 'c$callnumber;ws1000;v$audiofilefolder$audiofile$audiofileextentin$dateityp;h' &";
  $return_sipcmd =~ s,[\r\n]*,,g;    # remove CR from return-string
  ###### Prüfung ob die Konsolenausgabe von sipcmd die in die Variable $return_sipcmd geleitet wurde ein bestimmtes Wort enthält
  if(index($return_sipcmd,$clearcallident) > 0){
    Log 1, "voipcall sipcmd returned: call finished correctly";
  }
  else{
    Log 1, "voipcall sipcmd returned: call failed";
  }

  ####### Bereingung von nicht benötigten Dateien #######
  system "rm '$audiofilefolder$audiofile$dateityp' &";
  system "rm '$audiofilefolder$audiofile$audiofileextentin$dateityp' &";
  Log 1, "voipcall cleaning: nicht benoetigte Dateien wurden geloescht";
  Log 1, "-------- voipcall end --------";
}


spooy99

FHEM auf Debian unter Hyper-V, HMLAN und KNX
Sonst: Fritzbox, Yamaha RX-V2065, Fröling S4 per MQTT, Enigma, Robonect, Hue, LG