RaspberryPiでひかり電話の着信音をmp3で鳴らす

ALL
スポンサーリンク

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 strict;
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 – デバプラ

コメント

  1. Lookupper より:

    Firefox57にLookupperを対応して頂きたいです。

  2. 初心者 より:

    始めまして
    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.

  3. パソコン鳥 より:

    すみません、こちらのミスです。
    プログラムがブラウザで正しく表示されていませんでした。
    15行目を次のように修正してください。
    while( ){
    記事のほうは訂正しました。

  4. 初心者 より:

    かなり昔の記事でしたので、対応いただけないかと思っていたのですが
    早々に対応していただきありがとうございました。
    早速試したところ、無事動作しました!!
    このプログラムを元に、いろいろ試してみます。
    ありがとうございました。