SNOM: Unterschied zwischen den Versionen

Aus FHEMWiki
K (Typos/Spelling)
 
(3 dazwischenliegende Versionen von 3 Benutzern werden 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 Telefonden abspielen.
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 '''Ewetiert''' den Reiter '''SIP/RTP''' anwählen.
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 raspian Paket keine Filter eingebaut sind. Dazu findet ihr alles unter [http://www.jeffreythompson.org/blog/2014/11/13/installing-ffmpeg-for-raspberry-pi/].
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 - Dass ist das Ende der Routine ''sub Text2Speech_BuildMplayerCmdString($$) {'' und fügt vor dem '''return $cmd;''' folgende Zeile ein:
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 35: Zeile 35:
     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');
     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');
   }
   }
}


}
[[Kategorie:Code Snippets]]

Aktuelle Version vom 6. Januar 2019, 21: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');
 }
}