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

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

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 2

なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー)

この記事へのコメント

Lookupper
2017年11月18日 09:12
Firefox57にLookupperを対応して頂きたいです。
初心者
2019年11月05日 00:11
始めまして

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.


パソコン鳥
2019年11月05日 18:31
すみません、こちらのミスです。
プログラムがブラウザで正しく表示されていませんでした。
15行目を次のように修正してください。
while( ){

記事のほうは訂正しました。
初心者
2019年11月05日 22:23
かなり昔の記事でしたので、対応いただけないかと思っていたのですが
早々に対応していただきありがとうございました。

早速試したところ、無事動作しました!!

このプログラムを元に、いろいろ試してみます。

ありがとうございました。

この記事へのトラックバック