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 (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 (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
Solange es sip-clients gibt, die man per Befehlszeile bedienen kann, braucht es dazu kein eigenes Modul.
Habe dazu das gefunden:
http://www.jens-bretschneider.de/fhem-ruft-fritzbox/#more-705 (http://www.jens-bretschneider.de/fhem-ruft-fritzbox/#more-705)
und natürilich:
https://forum.fhem.de/index.php/topic,40219.0.html (https://forum.fhem.de/index.php/topic,40219.0.html)
Oder:
https://knx-user-forum.de/forum/supportforen/openhab/37542-%E2%88%9A-anruf-bei-event-%C3%BCber-fritzbox (https://knx-user-forum.de/forum/supportforen/openhab/37542-%E2%88%9A-anruf-bei-event-%C3%BCber-fritzbox)
Aber das mit der Sprachnachricht absetzen ist wohl nicht so einfach zu machen.
http://sipcmd.sourceforge.net
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 --------";
}
Hallo, warum nicht mit dem Modul SIP von Wzut:
siehe https://forum.fhem.de/index.php/topic,67443.0.html
(https://forum.fhem.de/index.php/topic,67443.0.html)
oder https://wiki.fhem.de/wiki/SIP-Client
(https://wiki.fhem.de/wiki/SIP-Client)