RaspberryPi でひかり電話の着信時に mp3 の着信音を鳴らします。
(PC上のLinuxでもできます)
下記の記事で説明した、ひかり電話にかかってきた電話番号の取得を使っています。
「動作確認」までの設定を事前に行っておいて下さい。
Linux でひかり電話にかかってきた電話番号を取得する
まず、RaspberryPi で mp3を鳴らす mpg321 をインストールします。
sudo apt-get install mpg321
一般ユーザでも mp3 を鳴らせるように次のコマンドを実行します。
sudo chmod o+rw /dev/snd/*
再起動で設定が消えるので、再起動の度に実行するようにしてください。
これをしないと、mpg321 実行時に
Can’t find a suitable libao driver. (Is device in use?)
とエラーになります。
以上の準備ができたら、次のスクリプトを実行します。
スクリプト内でmp3ファイルを指定しているので、お持ちのファイル名に変更しておいて下さい。
perl mp3_tyakushinon.pl
と実行すると、着信の度に mp3の着信音が鳴ります。
(RaspberryPi にスピーカをつなげておいて下さいね)
電話をかけてきた側が切るか、自宅内の電話をとった場合(留守電の応答も含みます)、鳴っていた着信音は止まります。
スクリプト内の xxxxxxxxxxx , yyyyyyyyyyy の部分を電話番号に変えると、番号ごとに着信音を変えることができます。
mp3_tyakushinon.pl
use warnings;
use utf8;
use IO::Handle;
STDOUT->autoflush(1);
binmode(STDOUT, “:utf8”);
my( $number , $mp3name );
open( IN , ‘baresip 2>&1|’ );
while( <IN> ){
if( $_ =~ /from: (\d+) sip/ ){
$number = $1;
if( $number eq “xxxxxxxxxxx” ){
$mp3name = “file1.mp3”;
}elsif( $number eq “yyyyyyyyyyy” ){
$mp3name = “file2.mp3”;
}else{
$mp3name = “file3.mp3”;
}
system( “mpg321 $mp3name > /dev/null 2>&1 &” );
}elsif( $_ =~ /sip:(\d+)\@.+ session closed/ ){
system( “killall mpg321” );
}
}
close( IN );
>
参考
Raspberry Piで音楽(wav/mp3)ファイルを再生する方法 python編 – Qiita
Raspberry Pi 2からBluetoothでスピーカーに音を飛ばす – yagi.tc
Raspberry Piで手作り目覚まし時計!ストップボタン編」 | Device Plus – デバプラ
コメント
Firefox57にLookupperを対応して頂きたいです。
始めまして
HPを参考にさせていただいています。
baresipの動作や、MP3を鳴らすところまではできたのですが、
perlのスクリプトを実行すると、下記のエラーがでます。
なにが原因か教えていただけないでしょうか?
Use of uninitialized value $_ in pattern match (m//) at mp3_tyakushinon.pl line 15.
Use of uninitialized value $_ in pattern match (m//) at mp3_tyakushinon.pl line 25.
すみません、こちらのミスです。 ){
プログラムがブラウザで正しく表示されていませんでした。
15行目を次のように修正してください。
while(
記事のほうは訂正しました。
かなり昔の記事でしたので、対応いただけないかと思っていたのですが
早々に対応していただきありがとうございました。
早速試したところ、無事動作しました!!
このプログラムを元に、いろいろ試してみます。
ありがとうございました。