SNOM: Unterschied zwischen den Versionen
Fabian (Diskussion | Beiträge) K (Kategorien gesetzt) |
K (Typos/Spelling) |
||
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Durchsage == | == Durchsage == | ||
Ausgangslage: Ein FHEM mit funktionierender Sprachausgabe (Text2Speech) über den angeschlossenen Lautsprecher. | Ausgangslage: Ein FHEM mit funktionierender Sprachausgabe (Text2Speech) über den angeschlossenen Lautsprecher. | ||
Ziel: Die gleiche Durchsage auch auf allen SNOM 370 | Ziel: Die gleiche Durchsage auch auf allen SNOM 370 Telefonen abspielen. | ||
Da die Snom-Geräte Audiomulticast unterstützen kommt dieses hier zum Einsatz. | Da die Snom-Geräte Audiomulticast unterstützen kommt dieses hier zum Einsatz. | ||
Aktiviert wird es in den Einstellungen des Telefons. Hierzu muss am Telefon mit dem Knopf '''Settings''' das Einstellungsmenü aufgerufen werden. Hier kann man über den Eintrag '''Wartung''' und dann den Eintrag '''Administratormodus''' das Webfrontend freischalten. | Aktiviert wird es in den Einstellungen des Telefons. Hierzu muss am Telefon mit dem Knopf '''Settings''' das Einstellungsmenü aufgerufen werden. Hier kann man über den Eintrag '''Wartung''' und dann den Eintrag '''Administratormodus''' das Webfrontend freischalten. | ||
Nun geht es vom PC aus mit dem Browser weiter. Dazu die IP des Telefons eingeben und unter ''' | Nun geht es vom PC aus mit dem Browser weiter. Dazu die IP des Telefons eingeben und unter '''Erweitert''' den Reiter '''SIP/RTP''' anwählen. | ||
Ganz unten gibt es nun eine Tabelle namens '''Multicast''' wo wir die '''Multicast Unterstützung''' auf '''An''' setzen. Darunter geben wir die Multicast IP Adresse sowie den dazugehörigen Port ein. Als Multicast IP kann man sich irgendwas im Range 224.0.0.0 - 239.255.255.255 aussuchen. Hier gibt es keine Abhängigkeit vom lokalen Subnetz - Wieso, Weshalb und Warum findet ihr in den RFC's [https://tools.ietf.org/html/rfc5771]. | Ganz unten gibt es nun eine Tabelle namens '''Multicast''' wo wir die '''Multicast Unterstützung''' auf '''An''' setzen. Darunter geben wir die Multicast IP Adresse sowie den dazugehörigen Port ein. Als Multicast IP kann man sich irgendwas im Range 224.0.0.0 - 239.255.255.255 aussuchen. Hier gibt es keine Abhängigkeit vom lokalen Subnetz - Wieso, Weshalb und Warum findet ihr in den RFC's [https://tools.ietf.org/html/rfc5771]. | ||
Dann geht es auf dem Raspberry Pi weiter - hier benötigt man FFMPEG. Ihr müsst es selbst kompilieren da in dem | Dann geht es auf dem Raspberry Pi weiter - hier benötigt man FFMPEG. Ihr müsst es selbst kompilieren da in dem Raspbian Paket keine Filter eingebaut sind. Dazu findet ihr alles unter [http://www.jeffreythompson.org/blog/2014/11/13/installing-ffmpeg-for-raspberry-pi/]. | ||
Den ersten Test startet ihr mit folgendem Befehl: Bitte denkt daran die IP, den Port sowie die MP3 Datei (auf eine vorhandene) anzupassen. | Den ersten Test startet ihr mit folgendem Befehl: Bitte denkt daran die IP, den Port sowie die MP3 Datei (auf eine vorhandene) anzupassen. | ||
Zeile 21: | Zeile 21: | ||
Damit das Text2Speech Modul ein passendes Notify abwirft müsst ihr an den Quellcode von dem Modul: | Damit das Text2Speech Modul ein passendes Notify abwirft müsst ihr an den Quellcode von dem Modul: | ||
Dazu öffnet ihr die Datei 98_Text2Speech.pm und springt auf Zeile 619 - | Dazu öffnet ihr die Datei 98_Text2Speech.pm und springt auf Zeile 619 - das ist das Ende der Routine ''sub Text2Speech_BuildMplayerCmdString($$) {'' und fügt vor dem '''return $cmd;''' folgende Zeile ein: | ||
readingsSingleUpdate($hash, "file", $file, 1); | readingsSingleUpdate($hash, "file", $file, 1); | ||
Nun wird bei jedem Zusammenbau des Mplayer Kommandos der Dateiname an FHEM übergeben und kann dort über ein Notify ausgewertet werden. | Nun wird bei jedem Zusammenbau des Mplayer Kommandos der Dateiname an FHEM übergeben und kann dort über ein Notify ausgewertet werden. | ||
Zeile 40: | Zeile 40: | ||
[[Kategorie:Code Snippets]] | [[Kategorie:Code Snippets]] | ||
Aktuelle Version vom 6. Januar 2019, 20:08 Uhr
Durchsage
Ausgangslage: Ein FHEM mit funktionierender Sprachausgabe (Text2Speech) über den angeschlossenen Lautsprecher. Ziel: Die gleiche Durchsage auch auf allen SNOM 370 Telefonen abspielen.
Da die Snom-Geräte Audiomulticast unterstützen kommt dieses hier zum Einsatz.
Aktiviert wird es in den Einstellungen des Telefons. Hierzu muss am Telefon mit dem Knopf Settings das Einstellungsmenü aufgerufen werden. Hier kann man über den Eintrag Wartung und dann den Eintrag Administratormodus das Webfrontend freischalten. Nun geht es vom PC aus mit dem Browser weiter. Dazu die IP des Telefons eingeben und unter Erweitert den Reiter SIP/RTP anwählen. Ganz unten gibt es nun eine Tabelle namens Multicast wo wir die Multicast Unterstützung auf An setzen. Darunter geben wir die Multicast IP Adresse sowie den dazugehörigen Port ein. Als Multicast IP kann man sich irgendwas im Range 224.0.0.0 - 239.255.255.255 aussuchen. Hier gibt es keine Abhängigkeit vom lokalen Subnetz - Wieso, Weshalb und Warum findet ihr in den RFC's [1].
Dann geht es auf dem Raspberry Pi weiter - hier benötigt man FFMPEG. Ihr müsst es selbst kompilieren da in dem Raspbian Paket keine Filter eingebaut sind. Dazu findet ihr alles unter [2].
Den ersten Test startet ihr mit folgendem Befehl: Bitte denkt daran die IP, den Port sowie die MP3 Datei (auf eine vorhandene) anzupassen.
ffmpeg -re -i "/opt/fhem/cache/d08c473c8d5f7f1b7ac252ce80d0b12a.mp3" -filter_complex 'aresample=8000,asetnsamples=n=160,volume=0.25' -acodec pcm_mulaw -ac 1 -vn -f rtp rtp://IP:PORT
Um es in FHEM aufrufen zu dürfen benötigt ihr einen SUDO Eintrag:
fhem ALL=NOPASSWD: /usr/local/bin/ffmpeg *
Unter FHEM ist es z.B. aus einem Notify wie folgt ansprechbar:
system('ffmpeg -re -i /opt/fhem/"' . $value . '" -filter_complex "aresample=8000,asetnsamples=n=160,volume=0.25" -acodec pcm_mulaw -ac 1 -vn -f rtp rtp://IP:PORT');
Damit das Text2Speech Modul ein passendes Notify abwirft müsst ihr an den Quellcode von dem Modul: Dazu öffnet ihr die Datei 98_Text2Speech.pm und springt auf Zeile 619 - das ist das Ende der Routine sub Text2Speech_BuildMplayerCmdString($$) { und fügt vor dem return $cmd; folgende Zeile ein:
readingsSingleUpdate($hash, "file", $file, 1);
Nun wird bei jedem Zusammenbau des Mplayer Kommandos der Dateiname an FHEM übergeben und kann dort über ein Notify ausgewertet werden.
Nun noch das Notify anlegen:
MyTTS { my $command = (substr($EVENT, 0, 4));; my $value = (substr($EVENT, 6,(length($EVENT)-1)));; Log 1, "$EVENT";; if($command eq "file") { Log 1, "$value";; system('ffmpeg -re -i /opt/fhem/"' . $value . '" -filter_complex "aresample=8000,asetnsamples=n=160,volume=0.25" -acodec pcm_mulaw -ac 1 -vn -f rtp rtp://IP:PORT'); } }